从Resource加载后位图宽度/高度不同

X-T*_*der 16 android pixel bitmap width

1.我是Android编码的新手:)

我所做的是从res/drawable-mdpi加载一个Bitmap

BitmapFactory.decodeResource(getResources(), R.drawable.cat_ground_01);
Run Code Online (Sandbox Code Playgroud)

在我注销Bitmap的宽度/高度后,它告诉我另一个值,然后Bitmap真的是.

有点难以放置Bitmaps pixelperfect,例如将脸部的位图与嘴位图重叠.

也许我只是缺少一些关于这个主题的知识:9我希望你能提供帮助.

xan*_*ndy 30

当你做Bitmapfactory.decodeResource()时,Android默认会选择"匹配"的dpi版本进行解码,你提到的代码中会发生什么:

  1. 您无法指定它是mdpi,hdpi还是其他任何内容,它将选择与正在运行的系统匹配的版本.即,如果您在mdpi设备上运行,它将解码mdpi版本; 在ldpi中,然后是ldpi版本.

  2. 假设您正在使用hdpi设备,但没有定义mdpi资源,它将采取您的mdpi资源,并且在解码期间,它将使其成为hdpi(即,它将您的mdpi位图放大到大约1.5倍); 再次,如果您的设备具有较低的分辨率,那么它将缩小图像

我想这就是你发生的事情.对于BitmapFactory,它实际上可以选择不缩放图像:

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html

将inScaled设置为false即可.


小智 10

你不能把资源放在nodpi文件夹中吗?

即res/drawable-nodpi

这就是我过去所做的.