0

我目前正在构建一个 Android 应用程序(游戏)。我已经创建了所有图像的 ldpi、mdpi 和 hdpi(所有这些图像的尺寸都已适当计算)。

当我在三星 S3 上测试游戏时,以下代码的值为 2.0。

getResources().getDisplayMetrics().density;

这是正确的,应用程序中使用的所有图像都是从 drawable-hdpi 文件夹中自动选择的。

但是,当我在我的 Google Nexus One 上测试应用程序时,上述代码的计算结果为 1.5(正确),但仍会自动选择 drawable-hdpi 文件夹中的图像。

作为参考,我以这种方式加载位图:

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inScaled = false;
Bitmap exampleBitmap = BitmapFactory.decodeResource(gamePanel.getResources(), R.drawable.example, bmpFactoryOptions);

编辑:删除第二行仍然不能解决问题。

难道我做错了什么?如果是这样,是什么?或者,是否有解决方法?

提前谢谢了。

4

2 回答 2

4

三星 Galaxy SIII 是一款 XHDPI 设备。

Nexus One 是一种 HDPI 设备。

参考:

http://blog.blundellapps.com/list-of-android-devices-with-pixel-density-buckets/

因此,因为您没有 XHDPI 资源,它使用下一个最接近的 SIII (hdpi)。

于 2012-06-05T15:59:26.840 回答
1

我相当肯定 S3(2.0 密度)是 xhdpi,而 Nexus One(1.5 密度)是 hdpi。1.0 是参考密度 (mdpi)。最有可能发生的是 S3 回退到 hdpi 文件夹,因为您没有提供 xhdpi 资源,并且 Nexus One 正确地从 hdpi 文件夹中提取。

于 2012-06-05T15:56:19.823 回答