Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么getWidth()和getHeight()返回的值是实际图像尺寸的两倍?_Java_Android_Bitmap_Android Studio - Fatal编程技术网

Java 为什么getWidth()和getHeight()返回的值是实际图像尺寸的两倍?

Java 为什么getWidth()和getHeight()返回的值是实际图像尺寸的两倍?,java,android,bitmap,android-studio,Java,Android,Bitmap,Android Studio,我是为Android开发的,我的程序涉及很多位图图像——这些都是使用BitmapFactory设置的。我的一个图像是80x30,我使用以下指令将其分配给位图变量: bmapImg = BitmapFactory.decodeResource(currContext.getResources(), R.drawable.brick); 当我使用说明书的时候 myImgWidth = bmapImg.getWidth(); myImgWidth被评估为160而不是80。同样,当我跑步时 myIm

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

bmapImg = BitmapFactory.decodeResource(currContext.getResources(), R.drawable.brick);
当我使用说明书的时候

myImgWidth = bmapImg.getWidth();
myImgWidth被评估为160而不是80。同样,当我跑步时

myImgHeight = bmapImg.getHeight();

myImgHeight被评估为60而不是30。我已经研究了与这些方法有关的StackOverflow的其他问题,但所有这些问题都是关于getWidth()和getHeight()返回0的。我是否做错了什么,或者这些函数返回的图像尺寸是实际图像尺寸的两倍是有原因的吗?

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

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


例如,为了完全避免缩放,您可以将图像放在“资源”文件夹中。

这完全取决于您在哪个屏幕上运行应用程序。这些方法返回的值是图像在当前屏幕上的像素。如果在mdpi屏幕上运行,并且分别使用80dp和30dp作为其尺寸,则它们将返回与图像分辨率成1:1的值。我敢打赌,您可能正在xhdpi屏幕上运行应用程序,并且没有用于该密度桶的资源。如其他答案中所述,图像大小将根据您检查的设备进行调整

如果您不希望android根据DPI调整图像大小,我建议您将图像添加到项目的drawable nodpi文件夹中