概述
图片(Bitmap)占用内存计算公式:
图片长度 * 图片宽度 * 单位像素占用的字节数
单位像素占用的字节数与图片解码方式有关:
https://developer.android.com/reference/android/graphics/Bitmap.Config.html
ALPHA_8:只存储透明度,不存储颜色值,单位像素占用一个字节。
ARGB_4444:在Android API13已弃用,因为配置的图片质量差,目前用ARGB_8888代替。
ARGB_8888:单位像素占用四个字节
每个通道用8个bit存储,共256种可能值。这种配置非常灵活和高质量,推荐使用!!!
RGB_565:只存储颜色值,而不存储透明度,每个像素占用2个字节。
注意:
1、如果图片没有透明通道,建议使用RGB_565,因为使用ARGB_8888明显浪费了内存,当图片很多时容易出现OOM,从网上下载的图片建议使用RGB_565;
2、Android默认的解码方式是ARGB_8888
延伸:(密度和像素的关系)
DisplayMetrics中的两个变量density、densityDpi,官方文档:
简单说,density 的数值是 1dp=density px,densityDpi 是屏幕上每英寸对应多少个点(不是像素点pixel)
在DisplayMetrics中:
densityDpi = 160 * density
Android R而source:
我们新建一个Android项目后应该可以看到很多drawable文件夹,分别对应不同的dpi
drawable-ldpi (dpi=120, density=0.75)
drawable-mdpi (dpi=160, density=1)
drawable-hdpi (dpi=240, density=1.5)
drawable-xhdpi (dpi=320, density=2)
drawable-xxhdpi (dpi=480, density=3)
计算一张图片(268 * 268)在不同资源目录下占用内存情况:
打印结果:
参考链接:
http://sodino.com/2015/05/25/check-bitmap-size/
http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=498
最后
以上就是怡然黑夜为你收集整理的Android计算图片占用内存的全部内容,希望文章能够帮你解决Android计算图片占用内存所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复