【发布时间】:2010-10-28 12:11:01
【问题描述】:
我正在构建一个小应用程序,它使用扩展了 surfaceholder.callback 的 surfaceview 类。它的实现就像 lunarlander 示例一样。我的问题是我使用的每种类型的模拟器(低、中或高密度)似乎并没有真正将屏幕的密度或分辨率更改为我所期望的。我最近询问了this question 关于堆栈溢出的问题,我突然意识到我没有对那个函数做任何错事,问题是不知何故我使用的任何模拟器都在中等密度下得到了认可。
高密度模拟器屏幕显示非常像素化的图像。中等密度的模拟器图像看起来很棒。低密度仿真器图像看起来像素化,但没有 hdpi 差。
我在每个模拟器上做了一个 mySurfaceHolder.getSurfaceFrame() 并想出了这个:
- WVGA800 - 480x800 - hdpi - 生成表面 320 x 508
- 默认 (HVGA) - mdpi - 生成 320 x 455 的表面
- QVGA - 240x320 - ldpi - 生成表面 320 x 402
这些表面不应该分别为 480x800、320x480 和 240x320 吗?编辑:320x455 是有道理的,其余的可能在标题栏中占据。但是低/高呢?
所以,我不确定我的问题是否是:
我如何设置模拟器。 – 我使用 HVGA、QVGA、WVGA800 和 WVGA854 标准设置(无 自定义分辨率)
surfaceview 类中的代码有问题。请注意,我没有手动设置大小,我依赖从这个回调方法返回的大小:
.
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
thread.setSurfaceSize(width, height);
}
有什么想法吗?一如既往,感谢您的所有帮助!
【问题讨论】:
标签: java android eclipse android-emulator surfaceview