图片的动态加载,在android的很多应用开发中都会用上,那如何才可以设计出用户体验最好的图片加载模块呢,今天就带大家了解开源Xutils快速开发框架的图片加载模块吧,当然在后面也会分析当前最火的图片加载源码:universal-image-loader。
流程图:
使用类流程:
代码流程图:
BitmapUtils的优点:
1.
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
2. 支持加载网络图片和本地图片;
3.内存管理使用lru算法,更好的管理bitmap内存;
4.可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等.
仔细阅读网址:http://blog.csdn.net/ljx19900116/article/details/43482073。里面大概的分析了一下所用到的类的大概功能。
在开始了解开源代码的时候,我们最好先对图片的动态加载的过程有一个清晰的思路,这样我们才可以更快更深入的了解别人代码。
图片动态加载的流程:
当我们开始动态加载app中的各种图片资源时,首先,我们会根据自己的需要,配置图片加载的各种信息(BitmapGlobalconfig,BitmapDisplayConfig),我们接着从缓存中读取是否有图片信息,缓存分为内存缓存(lrumemorycache)和硬盘缓存(lrudiskcache),当然我们需要了解把图片信息放在内部存储还是外部存储时,他们存储的算法是什么(lru),文件命名有什么区别(MD5和hashcode),用到了什么类(dislrucache,hashmap和lrucache),为什么要用这种方法。接着,如果在手机的缓存中没有图片的信息,我们就在任务队列中添加任务,等待线程池执行图片请求,最后当图片从网络中下载后,在放入缓存中。(附加:在查看开源代码时,多点了解别人代码的代码层次切分,用到了那些设计模式,接口的多态如何处理的,什么时候使用枚举列等等)