android 之Bitmap 内存大小计算

android 之Bitmap 内存大小计算_第1张图片
QQ截图20180426154121.png

想要知道一个Bitmap 占用多大内存 我们只需要调用getByteCount方法就可以了,但是不可能每次都将图片塞到项目中然后把运行看吧,所以我们必须要学会占卜的技能,精准计算它放进来所占内存来考虑是否放它.

我们测试手机华为mate8 分辨率 1080* 1920,densityDpi 480
测试图片720*1280 放置在xhdpi中

首先必须明白下面的尺寸对应关系

屏幕DPI的对应关系

density 1 1.5 2 3 3.5 4
densityDpi 160 240 320 480 560 640

资源文件夹DPI中对应关系

Android手机屏幕标准 对应图标尺寸标准 屏幕密度 比例
xxxhdpi 3840*2160 192*192 640 16
xxhdpi 1920*1080 144*144 480 12
xhdpi 1280*720 96*96 320 8
hdpi 480*800 72*72 240 6
mdpi 480*320 48*48 160 4
ldpi 320*240 36*36 120 3

https://blog.csdn.net/u010652002/article/details/72676723
源码追踪我们参考上面博客
通道透明ARGB_8888(也就是我们最常用的 Bitmap 的格式)的一个像素占用 4byte,那么 rowBytes 实际上就是 4*width bytes。

屏幕densityDpi(480)
xhdpiDpi (320)

bitmapWidth * densityDpi / xhdpiDpi

bitmapHeight * densityDpi / xhdpiDp

  • 4
    = 8294400B 差不多7.9M左右

总内存: 8294400
view width: 1080
view height: 1572
bitmap width: 1080
bitmap height:1080
density: 3.0
dpi: 480

scaledWidth = int( 720* 480/ 320f + 0.5) = 1080
scaledHeight = int( 1280* 480 / 320f + 0.5) = 1920

你可能感兴趣的:(android 之Bitmap 内存大小计算)