我正在为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.我做错了什么,或者有没有理由说明为什么这些函数会返回实际图像尺寸的两倍?
答案 0 :(得分:2)
您使用decodeResource
,因此图片会根据您的DPI进行缩放。要将其缩放到您需要的大小,请将其放在不同的文件夹中。如果比例因子是2,我建议你需要drawable_xhdpi。
请记住,它将在具有不同屏幕密度的设备上进行缩放。
要完全避免缩放,您可以将图像置于资源文件夹中。例如。
答案 1 :(得分:0)
关于运行应用程序的屏幕的全部内容。这些方法返回的值是图像在当前屏幕上显示的像素。如果您在mdpi屏幕上运行,并且分别使用80dp和30dp作为其尺寸,则它们将以图像的分辨率返回1:1的值。我敢打赌你可能在xhdpi屏幕上运行你的应用程序并且没有该密度桶的资源
答案 2 :(得分:0)
如其他答案中所述,图像会根据您检查的设备调整大小。
如果您不希望Android根据DPI调整图片大小,我建议您在项目的 drawable-nodpi 文件夹中添加图片