Android 开源框架Universal-Image-Loader 学习
来源:互联网 发布:外卖送餐员用什么软件 编辑:程序博客网 时间:2024/05/17 08:49
源码地址:https://github.com/nostra13/Android-Universal-Image-Loader
一、
主要功能:多线程下载图片
根据用户需求配置ImageLoader(线程池、下载器、内存存储策略,磁盘存储策略、图片显示配置)
图片下载过程可监听(下载结果和下载进度)
设置图片圆角
二、
简单流程图:
三、
如何使用Universal-Image-Loader(git上面有例子参考那个就ok了)
1、 从git上下载源项目 把library做为module导入自己的项目,并关联
2、 添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3、 在Application中配置并初始化设置该类(根据个人需要来配置)
ImageLoaderConfiguration.Builderconfig =new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY- 2); //设置线程低优先等级(不能抢资源)
config.denyCacheImageMultipleSizesInMemory(); //一张图片可以按不同规格存储
config.diskCacheFileNameGenerator(newMd5FileNameGenerator());
config.diskCacheSize(50* 1024*1024);//50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs();//Remove for release app
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
4、图片的各种格式DisplayImageOptions 的设置
options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) .showImageForEmptyUri(R.drawable.ic_empty) .showImageOnFail(R.drawable.ic_error) .cacheInMemory(true) .cacheOnDisk(true) .considerExifParams(true) .displayer(new CircleBitmapDisplayer(Color.WHITE, 5)) .build();
5、 图片加载
ImageLoader.getInstance().displayImage(IMAGE_URLS[position], holder.image, options, animateFirstListener);
四、Universal-Image-Loader内存缓存
缓存方式主要有3种(源码里面注释说的很清楚)
采用强引用缓存
/** * A cache that holds strong references to a limited number of Bitmaps. Each time a Bitmap is accessed, it is moved to * the head of a queue. When a Bitmap is added to a full cache, the Bitmap at the end of that queue is evicted and may * become eligible for garbage collection.<br /> * <br /> * <b>NOTE:</b> This cache uses only strong references for stored Bitmaps. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.8.1 */public class LruMemoryCache implements MemoryCache {
采用弱引用缓存
/** * Memory cache with {@linkplain WeakReference weak references} to {@linkplain android.graphics.Bitmap bitmaps}<br /> * <br /> * <b>NOTE:</b> This cache uses only weak references for stored Bitmaps. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.5.3 */public class WeakMemoryCache extends BaseMemoryCache {
强引用和弱引用结合
/** * Limited {@link Bitmap bitmap} cache. Provides {@link Bitmap bitmaps} storing. Size of all stored bitmaps will not to * exceed size limit. When cache reaches limit size then cache clearing is processed by FIFO principle.<br /> * <br /> * <b>NOTE:</b> This cache uses strong and weak references for stored Bitmaps. Strong references - for limited count of * Bitmaps (depends on cache size), weak references - for all other cached Bitmaps. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.0.0 */public class FIFOLimitedMemoryCache extends LimitedMemoryCache {
个人在做项目的时候没有使用上述缓存方式,而是使用android自带的LruCache替换了,主要是听说android倾向于回收上述缓存里面的东西(没测过,不知道是不是真的。。),还有LruCache毕竟是google的,很成熟了。
五、Universal-Image-Loader磁盘缓存
现在的版本使用了DiskLruCache
总结:Universal-Image-Loader提供了一个很好的图片下载、缓存于一身的框架,如果可以使用就直接使用,如因项目限制的话,可以参考它来自己封装一个库来实现该功能,最主要的还是学习了别人如何设计、实现的的,比自己想出来的好多了(虽然自己写的 功能上也可以用。。。)
- Android开源框架Universal-Image-Loader学习
- Android 开源框架Universal-Image-Loader 学习
- Android开源框架Universal-Image-Loader
- 开源框架Android-Universal-Image-Loader
- Android 开源框架Universal-Image-Loader
- Android开源框架Universal-Image-Loader
- Android 开源框架Universal-Image-Loader
- Android开源框架 universal-Image-Loader
- android Universal-Image-Loader框架学习
- android Universal-Image-Loader框架学习
- Android开源框架之Android-Universal-Image-Loader
- Android异步加载图片开源框架Universal-Image-Loader
- Android 开源框架Universal-Image-Loader完全解析
- Android 开源框架Universal-Image-Loader完全解析
- Android开源框架Universal-Image-Loader详解
- Android 开源框架Universal-Image-Loader完全解析
- Android 开源框架Universal-Image-Loader的使用
- Android 开源框架Universal-Image-Loader实例分析
- 面向对象设计思想与常见设计模式小结
- jQuery 对象绑定新方法(插件的实现)
- Marvell 8686 SDIO WIFI 内核配置
- (十三)洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】
- HTTP文件下载原理
- Android 开源框架Universal-Image-Loader 学习
- IO 模型简介(理解阻塞、非阻塞、同步、异步)
- 使用高通Vuforia开发AR增强现实游戏之Single Image Target单一图片识别(一)
- KMP算法
- 算法(2)线性表
- Android 搜索 把软键盘上的回车键改为搜索
- 建议慎用boost::weak_ptr来避免智能指针循环引用
- c语言基本出具类型的取值范围
- AngularJS的一种参数传递方法