为什么getWidth()和getHeight()返回的值会使实际图像尺寸加倍?

时间:2015-03-08 14:02:39

标签: java android bitmap android-studio

我正在为Android开发,我的程序涉及很多位图图像 - 这些是使用BitmapFactory设置的。我的一个图像是80x30,我用以下指令将它分配给Bitmap变量:

bmapImg = BitmapFactory.decodeResource(currContext.getResources(), R.drawable.brick);

然后我使用说明

myImgWidth = bmapImg.getWidth();

myImgWidth被评估为160而不是80.同样,当我运行

myImgHeight = bmapImg.getHeight();

myImgHeight被评估为60而不是30.我已经查看了有关这些方法的StackOverflow上的其他问题,但所有这些问题都是关于getWidth()和getHeight()返回0.我做错了什么,或者有没有理由说明为什么这些函数会返回实际图像尺寸的两倍?

3 个答案:

答案 0 :(得分:2)

您使用decodeResource,因此图片会根据您的DPI进行缩放。要将其缩放到您需要的大小,请将其放在不同的文件夹中。如果比例因子是2,我建议你需要drawable_xhdpi。

请记住,它将在具有不同屏幕密度的设备上进行缩放。

要完全避免缩放,您可以将图像置于资源文件夹中。例如。

答案 1 :(得分:0)

关于运行应用程序的屏幕的全部内容。这些方法返回的值是图像在当前屏幕上显示的像素。如果您在mdpi屏幕上运行,并且分别使用80dp和30dp作为其尺寸,则它们将以图像的分辨率返回1:1的值。我敢打赌你可能在xhdpi屏幕上运行你的应用程序并且没有该密度桶的资源

答案 2 :(得分:0)

如其他答案中所述,图像会根据您检查的设备调整大小。

如果您不希望Android根据DPI调整图片大小,我建议您在项目的 drawable-nodpi 文件夹中添加图片