我的android应用程序drawable文件夹中有一个jpg图像,分辨率为1000x600。 我将该图像加载到像这样的位图
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
在此之后我打电话给bitMap .getWidth()
,它返回1500.它怎么样?以及如何获得正确的图像宽度和高度?
答案 0 :(得分:38)
这可能是因为密度不同。您的资源可能存储在中密度文件夹中,但您的设备是hdpi。中密度为160dpi,高密度为240dpi。因此,您的位图缩放到原来的1.5倍。有关详细信息,请参阅document on multiple screens。
如果没有正确密度的资源,系统会加载默认资源并根据需要向上或向下缩放以匹配当前屏幕的密度。
如果您打算将其用于高密度,请将其放入drawable-hdpi而不是drawable或drawable-mdpi。
<强>更新强>
如果您想要忽略密度,请将其放在drawable-nodpi文件夹中。同样来自同一个文档:
避免预缩放的最简单方法是将资源放在具有nodpi配置限定符的资源目录中。例如:
res/drawable-nodpi/icon.png
当系统使用此文件夹中的icon.png位图时,它不会根据当前设备密度对其进行缩放。