Android 安卓&x27;可抽出式&x27;文件夹选择问题

Android 安卓&x27;可抽出式&x27;文件夹选择问题,android,Android,我目前正在构建一个Android应用程序(一个游戏)。我已经创建了所有图像的ldpi、mdpi和hdpi(所有这些图像的尺寸都经过了适当的计算) 当我在三星S3上测试游戏时,下面代码的值是2.0 getResources().getDisplayMetrics().density; 这是正确的,应用程序中使用的所有图像都是从drawable hdpi文件夹中自动选择的 然而,当我在我的GoogleNexusOne上测试应用程序时,上面的代码计算结果为1.5(正确),但是来自drawable h

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

当我在三星S3上测试游戏时,下面代码的值是2.0

getResources().getDisplayMetrics().density;
这是正确的,应用程序中使用的所有图像都是从drawable hdpi文件夹中自动选择的

然而,当我在我的GoogleNexusOne上测试应用程序时,上面的代码计算结果为1.5(正确),但是来自drawable hdpi文件夹的图像仍然会被自动选择

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

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inScaled = false;
Bitmap exampleBitmap = BitmapFactory.decodeResource(gamePanel.getResources(), R.drawable.example, bmpFactoryOptions);
编辑:删除第二行仍然无法解决问题

我做错什么了吗?如果是,什么?或者,是否有解决办法


非常感谢。

我非常确定S3(2.0密度)是xhdpi,而NexusOne(1.5密度)是hdpi。1.0是参考密度(mdpi)。最有可能发生的情况是,由于您没有提供xhdpi资源,S3正在退回到hdpi文件夹,而NexusOne正在正确地从hdpi文件夹中取出。

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

三星Galaxy SIII是一款xhdpi设备

NexusOne是一款HDPI设备

参考:


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

三星Galaxy SIII是一款XHDPI设备

NexusOne是一款HDPI设备

参考:


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

Aha!我没有意识到2.0链接到xhdpi(我愚蠢地假设1.0链接到ldpi)。非常感谢您及时的回复,您为我省去了很多挫折。@WillManson 1.0表示比率为1,MDPI是“基准”分辨率。这里有一个图片来解释:啊哈!我没有意识到2.0链接到xhdpi(我愚蠢地假设1.0链接到ldpi)。非常感谢您及时的回复,您为我省去了很多挫折。@WillManson 1.0表示比率为1,MDPI是“基准”分辨率。这里有一幅图片要解释:感谢你简洁地澄清了这个问题。参考资料为我提供了大量额外的细节。文章底部的图片特别有用。我会给你“最佳答案”,因为引用的文章可能最适用于与像素密度相关的一般问题(适用于将来搜索答案的人)。感谢你简洁地澄清了这个问题。参考资料为我提供了大量额外的细节。文章底部的图片特别有用。我会给你“最佳答案”,因为引用的文章可能最适用于与像素密度相关的一般问题(适用于将来搜索答案的人)。