代码之家  ›  专栏  ›  技术社区  ›  user432209

Android模拟器无法模拟正确的密度或分辨率。可能是surfaceview实现问题

  •  1
  • user432209  · 技术社区  · 14 年前

    我正在构建一个小应用程序,它使用一个扩展surfaceholder.callback的surfaceview类。它的实现就像lunarlander示例一样。我的问题是,我使用的每种模拟器(低密度、中密度或高密度)似乎并没有真正改变屏幕的密度或分辨率,使之达到我的预期。我最近问 this question

    高密度仿真器屏幕显示非常逼真的图像。中等密度的仿真器图像看起来棒极了。低密度仿真器图像看起来很逼真,但没有hdpi那么糟糕。

    我在每个模拟器上都做了一个mySurfaceHolder.getSurfaceFrame(),并得出了以下结论:

    • 默认(HVGA)-mdpi-生成一个320 x 455的曲面
    • QVGA-240x 320-ldpi-生成一个320 x 402的表面

    所以,我不确定我的问题是:

    1. 我使用HVGA、QVGA、WVGA800和 带标准设置的WVGA854(否 自定义分辨率)

    .

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
        thread.setSurfaceSize(width, height);
    }
    

    有什么想法吗?一如既往,我感谢你的帮助!

    2 回复  |  直到 7 年前
        1
  •  1
  •   user432209    14 年前

    好吧,我猜这是android文档中的一个错误。

    问题是我使用的任何模拟器都被模拟为中等密度的屏幕,除非下面的行在Android清单文件中。所有资源默认为mdpi文件夹,从不从hpdi文件夹中提取。然后自动执行某种缩放操作,因为它将HDPI屏幕视为MDPI屏幕,从而解释了屏幕上的“像素化”图像。

      <supports-screens
            android:anyDensity="true"/>
    

    The documentation states:

    安卓:任意密度

    我使用的是API级别8,必须提供这条线来模拟高密度设置下的屏幕。

        2
  •  0
  •   yosh    14 年前

    表面没有显示工作区吗?不包括状态栏和应用程序标题栏。它可以给你倾斜而不是像素。

    像素=凹陷*(密度/160)