位图 getWidth 返回错误值
2022-09-02 03:05:12
我的Android应用程序可绘制文件夹中有一个jpg图像,分辨率为1000x600。我像这样将该图像加载到位图中
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
在此之后,我调用返回1500。怎么可能?如何获得图像的正确宽度和高度?bitMap .getWidth()
我的Android应用程序可绘制文件夹中有一个jpg图像,分辨率为1000x600。我像这样将该图像加载到位图中
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
在此之后,我调用返回1500。怎么可能?如何获得图像的正确宽度和高度?bitMap .getWidth()
这可能是因为密度不同。你的资源可能存储在中等密度的文件夹中,但你的设备是 hdpi。中密度为160dpi,高密度为240dpi。因此,您的位图将缩放到原来的 1.5 倍。有关详细信息,请参阅多个屏幕上的文档。
如果资源在正确的密度下不可用,系统将加载默认资源,并根据需要向上或向下缩放它们以匹配当前屏幕的密度。
如果您打算将其用于高密度,请将其放在可绘制的hdpi中,而不是可绘制或可绘制的mdpi中。
更新:
如果您希望它忽略密度,请将其放在可绘制的nodpi文件夹中。同样来自同一文档:
避免预缩放的最简单方法是使用 nodpi 配置限定符将资源放在资源目录中。例如:
res/drawable-nodpi/icon.png
当系统使用此文件夹中的图标.png位图时,它不会根据当前设备密度对其进行缩放。