我使用的是Nexus 5X模拟器,密度为420 dpi,屏幕尺寸为1080x1920 px。我将原始大小的位图加载到ImageView中。在磁盘上,位图的大小为1.3 MB和1280x851 px。我的ImageView尺寸是宽度:全屏,高度:全屏。我的图像具有32位色深=每个像素4个字节。我计算出内存的预期大小为1080x1920x4 = 8.29 MB。
当我运行代码并加载图像时,它在内存中的大小约为30MB。原因是什么?如何调整计算以获得正确的估计?我当然知道将缩小图像加载到一个小容器中的方法,但是我试图弄清楚如何计算完整图像的大小。
谢谢
我计算出内存的预期大小为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。