1

我正在构建一个使用扩展surfaceholder.callback 的surfaceview 类的小应用程序。它的实现就像 lunarlander 示例一样。我的问题是我使用的每种类型的模拟器(低、中或高密度)似乎并没有真正改变屏幕的密度或分辨率到我所期望的。我最近问了这个关于堆栈溢出的问题,我突然意识到我没有对那个函数做任何错误,问题是不知何故我使用的任何模拟器都在中等密度下得到了认可。

高密度仿真器屏幕显示非常像素化的图像。中等密度的模拟器图像看起来很棒。低密度仿真器图像看起来像素化,但不如 hdpi 糟糕。

我在每个模拟器上做了一个 mySurfaceHolder.getSurfaceFrame() 并想出了这个:

  • WVGA800 - 480x800 - hdpi - 生成表面 320 x 508
  • Default(HVGA) - mdpi - 生成一个 320 x 455 的表面
  • QVGA - 240x320 - ldpi - 生成表面 320 x 402

这些表面不应该分别是 480x800、320x480 和 240x320 吗?编辑:320x455 是有道理的,其余的可能在标题栏中占据。但是低/高呢?

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

  1. 我如何设置模拟器。– 我使用标准设置的 HVGA、QVGA、WVGA800 和 WVGA854(无自定义分辨率)

  2. 我在surfaceview 类中的代码有问题。请注意,我没有手动设置大小,我依赖于从这个回调方法返回的大小:

.

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

有什么想法吗?与往常一样,我感谢您的所有帮助!

4

2 回答 2

1
于 2010-10-28T14:42:48.053 回答
0

Surface 不显示工作区域?不包括状态栏和可能的应用程序标题栏。它可以给你下降而不是像素。

像素 = 下降 *(密度 / 160)

于 2010-10-28T13:23:20.807 回答