我使用的是Nexus 5X仿真器,密度为420 dpi,屏幕尺寸为1080x1920像素。我将原始大小的位图加载到ImageView中。在磁盘上,位图的大小为1.3 MB和1280x851像素。 我的ImageView尺寸为宽度:全屏,高度:全屏。我的图像具有32位颜色深度=每像素4个字节。我计算出内存中的预期大小为1080x1920x4 = 8.29 MB。
当我运行我的代码并加载我的图像时,它在内存中的大小约为30MB。这是什么原因以及如何调整我的计算以获得正确的估计?我当然知道将缩小图像加载到小容器中的方法,但我试图弄清楚如何计算完整图像的大小。
由于
答案 0 :(得分:4)
我计算出内存中的预期大小为1080x1920x4 = 8.29 MB。
屏幕尺寸与此无关。
res/drawable/
是res/drawable-mdpi/
的旧同义词。您表示您的图像是为-mdpi
设备设计的(~160 dpi),并且应该针对更高密度的设备进行上采样(并对-ldpi
设备进行下采样)。
Nexus 5X被归类为-xxhdpi
设备(~480 dpi)。这意味着原始图像的每个像素应映射到上采样图像中的9个像素(每个轴上480/160 = 3)。 1280 x 851 = 1089280像素* 9缩放系数* 4字节/像素= 39214080字节= 37.4MB。