1
使用BitmapRegionDecoder来加载超大图片。
图片加载优化:
异步请求:图片放在后台请求
图片缓存:对列表中的图片进行缓存
网络请求:使用OKHttp进行图片请求
懒加载:当图片呈现可视区域在进行加载
Android API17引入的一种提高bitmap渲染速度和质量的技术;mipmap目录下的图片默认会调用setHasMipMap()开启。一般情况下,启动图标会放在mipmap文件夹下。
质量压缩
减少图片一个像素所占用的内存大小
RGB_565一个像素点占用2个byte,ARGB_8888占用4个byte,使用前者可以减少内存占用(在Bitmap.Config中设置)
ImageView的大小对内存没有影响,图片是存储在Bitmap里面的,只要优化Bitmap才能优化图片内存。
inJustDecodeBounds:BitmapFactory.Options中的属性,设置为true可以在不加载图片进内存的前提下获取图片的宽高;
inSampleSize:大于或等于2可以降低图片的采样率,节省内存。
图片存储优化的方式。
PNG:无损压缩的图片,支持完整的透明通道,体积较大;
JPEG:有损压缩的图片,不支持透明通道;
WEBP:支持有损压缩和无损压缩,支持透明通道和多帧动画,是比较理想的图片格式;
Gif:支持多帧动画,但Android原生不支持记载,需要使用第三方库。
OOM只与最大内存限制有关,与系统剩余内存无关。
内存消耗变小、流畅度好、流量变少、APK包变小、用户体验好。
RGB_565一个像素占两个字节,ARGB_8888一个像素占4个字节,代码实现:options.inPreferredConfig设置
inSamplesize,图片的压缩比
injustDecodeBounds设置为true的意思是获取图片的宽高但不加载到内存
png -》 tiny png
图片优化好处:内存消耗变小、流畅度好、流量变少、APK包变小、用户体验
未压缩情况下条直接加载
如截图所示
如截图所示
如截图所示
如截图所示
如截图所示
如截图所示
找出三列传高度最小的一个
通过代码new出一个图片
在异步任务中加载图片,首先在Lrucache缓存中查找
自定义view第一部分