位图getWidth返回错误的值

nar*_*yan 20 java android

我的android应用程序drawable文件夹中有一个jpg图像,分辨率为1000x600.我将该图像加载到这样的位图

 Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
Run Code Online (Sandbox Code Playgroud)

在此之后我调用bitMap .getWidth()哪个返回1500.它怎么可能?以及如何获得正确的图像宽度和高度?

kab*_*uko 40

这可能是因为密度不同.您的资源可能存储在中密度文件夹中,但您的设备是hdpi.中密度为160dpi,高密度为240dpi.因此,您的位图缩放到原来的1.5倍.有关详细信息,请参阅多屏幕上文档.

如果资源的密度不正确,系统会加载默认资源并根据需要向上或向下缩放以匹配当前屏幕的密度.

如果您打算将其用于高密度,请将其放入drawable-hdpi而不是drawable或drawable-mdpi.

更新:

如果您希望它忽略密度,请将其放在drawable-nodpi文件夹中.同样来自同一个文档:

避免预缩放的最简单方法是将资源放在具有nodpi配置限定符的资源目录中.例如:

res/drawable-nodpi/icon.png
Run Code Online (Sandbox Code Playgroud)

当系统使用此文件夹中的icon.png位图时,它不会根据当前设备密度对其进行缩放.

  • 您可以将它们放在名为drawable-nodpi的文件夹中,如果您不希望它们缩放.更多信息:http://developer.android.com/guide/topics/resources/providing-resources.html (2认同)