1

我遇到了 HDPI 屏幕问题(在三星 Galaxy S2 上测试)。

我有一个与 OES_draw_texture 1.1 扩展一起使用的纹理贴图。这适用于 MDPI 屏幕,无论大小(在 HTC Legend 和 Asus Transformer 平板电脑上测试)。纹理贴图裁剪正确,纹理显示正确。

但是,在 Galaxy S2(可能还有所有 HDPI 设备)上,纹理贴图没有正确裁剪。纹理贴图位于/drawable/目录下,minSdkVersion设置为4,所以Screen Compatibility不会开启。如果打开屏幕兼容性(通过将 minSdkVersion 设置为 3),它甚至在 S2 上也能正常工作,因为它正在模拟 MDPI 屏幕。

我的印象是,如果您要访问可绘制资源“a”,Android 会查看特定的密度文件夹(在本例中为 /drawable-hdpi/),如果未找到,则返回到 /drawable/ 或 /drawable -mdpi/. 但是,我无法找到支持这一点的文档。

我的问题如下:

  • Android 的资源搜索行为是什么?如果在 hdpi 中找不到资源,它实际上是否会退回到 mdpi?来源?
  • 为什么 OES_draw_texture GL-ES1.1 扩展无法正确裁剪?我怀疑它与px和dp有关;draw_texture 通常使用直接像素,但 Android 可能会尝试使用 dp 并因此将所有裁剪位置乘以 1.5,因为资源位于 /drawable/ 文件夹中?
  • 有没有办法强制 HDPI 设备在不使用屏幕兼容性的情况下模拟 MDPI?

任何对此的了解将不胜感激。

4

1 回答 1

2

从这里。 (加载纹理时)

// This will tell the BitmapFactory to not scale based on the device's pixel density:
// (Thanks to Matthew Marshall for this bit)
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;
于 2011-10-09T13:14:03.470 回答