图片(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


更多相关文章

  1. Android 保存图片到图库
  2. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存
  3. ProgressBar:自定义旋转图片
  4. Android 定时器实现图片的变换
  5. android studio 小技巧之 图片预览
  6. android获取网络图片的用法 BitmapFactory.decodeByteArray
  7. Android 图片显示与屏幕适配的问题

随机推荐

  1. MySQL添加列、删除列,创建主键等常用操作
  2. 如何导出存储过程、函数、包和触发器的定
  3. 【Linux】Linux文件之/etc/fstab
  4. Shell中截取字符串的用法小结
  5. 在Oracle中,如何得到真实的执行计划?
  6. Jira/Confluence的备份、恢复和迁移
  7. 3-1 函数和装饰器
  8. 【DB笔试面试352】在Oracle数据库中,哪些
  9. 什么是CRUD( What is CRUD)
  10. SYSAUX表空间占用过大情况下的处理(AWR信