有一张尺寸为 72*72 像素的图片,其采用 ARGB8888 格式存储,现将其置于某应用的 drawable-xxhdpi 目录中,在屏幕密度为 xhdpi 的手机上运行此应用。 问:此图片不经过采样直接加载后将占用多少 byte 内存()
Bitmap.Config 有四种枚举类型。
通道类型后数字表示每个通道占的大小
各资源文件对应屏幕密度(每英寸的像素点)
ldpi | mdpi | hdpi | xhdpi | xxhdpi |
---|---|---|---|---|
120 | 160 | 240 | 320 | 480 |
注意:实际加载的像素不一定等于原图像素,如资源目录屏幕密度与目标机器不匹配,将按比例缩放
此类问题公式如下:
类型占用比特 x 图片原像素宽 x(目标机器屏幕密度/资源文件夹代表屏幕密度)x 图片原像素高 x(目标机器屏幕密度/资源文件夹代表屏幕密度)
4 * 72 * (320/480) * 72 * (320/480)= 9216 byte
这也是为什么在开发中往往尽可能配齐多个资源文件夹,在高分别率的机器上使用低分辨率资源文件夹的资源有可能导致占用内存翻倍,甚至翻数倍