关于图片加载出现OOM异常,是我们Android开发人员经常需要考虑的问题。最近把公司项目中用到的优化小技巧做一个总结出来,方便以后使用。
1、尽量压缩图片占用内存。
在使用Bitmap.Config这个变量的时候,它里面会有4个枚举值,分别是:
Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位
Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位
Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位
Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。
A:透明度
R:红色
G:绿
B:蓝
默认情况下,使用的是Bitmap.Config ARGB_8888。但是通过比较我们发现,该值是最占内存的。
Bitmap.Config ARGB_4444和Bitmap.Config RGB_565所占用的内存都只有它的一半。
Bitmap.Config RGB_565的优点在于,对图片本身的失真比较小,缺点是没有透明色,不能适用于有透明色的图片。前几天就碰到用Bitmap.Config RGB_565,背景出现大黑框的情况。
Bitmap.Config ARGB_4444刚好相反,有透明色,但是每一种色值却失真比较严重,一般情况下不推荐。
Bitmap.Config ALPHA_8占用内存和默认差不多,不推荐。