简介
本文将记录图片加载有关优化以及开源框架的学习和使用,图片加载这一块也是常使用的老难重点了,有必要把这块好好的搞清除,后面可以坦然面对这些问题。
图片存储优化方式
加载一张图片耗费的内存资源 = 宽度 * 高度 * 每个像素占用的内存大小
从这里可以统筹使用: 尺寸压缩,质量压缩,内存重用
Bitmap的内存管理
在Andorid3.0以前,像素数据的支持保存在本地内存地址,bitmap本身是存储在dalvik堆中的,意味着程序员需要调用bitmap.recycle()来对bitmap进行回收。
在Android3.0以后,像素数据和位图都存储在Dalvik堆中,3.0后bitmap不被使用dalvik堆会自动回收。
Android 图标放置的位置
当在分辨率为xxhdi的手机内加载一张图片时,搜索图片进行加载的顺序是 xxhdpi -> xxxhdpi ->nodpi -> xhdpi -> hdpi
也就是说会先从对应分辨率的文件下搜索,如果没有然后由高向低搜索进行加载。记住找到了还会进行缩放。
同一张图片放在不同的资源目录下,会生成不同大小的bitmap
图片加载过程
内存缓存,通过构建hashmap,以图片的url为键,以bitmap为值进行缓存存储
文件缓存 通过url去寻找对应文件中的
如果还没有就去网络请求
图片加载
inJustDecodeBounds = true,在不加载内存的情况下获得图片的宽高
insampleSize 图片的压缩比
通过rgb_565来替换argb_8888可以降低图片内存占用
内存重用:inBitmap 假如已经加载过了就可以进行获取
/**
* 加载压缩图片---
*/
private void loadPic() {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(),R.drawable.flower,options);<