Android Bitmap内存占用计算公式:
图片以格式ARGB_8888(每个像素需4字节,RGB_565则2字节)存储时的计算方式,
占用内存 = int(scaledWidth * scale + 0.5f) * int(scaledHeight * scale + 0.5f) *4(字节),
其中scaledWidth 为图片的像素宽度,scaledHeight为图片的像素高度,scale = targetDensityDpi / densityDpi
mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi | |
---|---|---|---|---|---|
densityDpi | 160 | 240 | 320 | 480 | 560 |
以targetDensityDpi = 160的屏幕密度手机为例,计算Bitmap内存占用如下:
图片位置:drawable-hdpi
图片格式:ARGB-8888
图片大小:400 * 400
宽度:int(400 * (160 / 240) + 0.5) = 267
高度:int(400 * (160 / 240) + 0.5) = 267
内存大小:267*267*4 = 285156B
图片位置:drawable-xhdpi
图片格式:ARGB-8888
图片大小:400 * 400
宽度:int(400 * (160 / 320) + 0.5) = 201
高度:int(400 * (160 / 320) + 0.5) = 201
内存大小:201*201*4 = 161604B