Universal-ImageLoader是一个第三方开源库,主要用来异步加载图片、缓存图片、和图片显示。(获取图片显示在相应的控件上)
官网地址:https://github.com/nostra13/Android-Universal-Image-Loader
优点:
1、支持多线程下载图片。图片来源可以是网络、本地文件夹、assets和drawable
2、支持随意配置ImageLoader
3、支持图片的内存存储,文件系统存储或者SD卡存储
4、支持图片下载过程的监听
5、较好的控制图片加载的过程。例如暂停图片加载、重新开始图片加载
7、提供在较慢的网络下对图片进行加载
原理:
相关概念:
mageLoaderEngine:任务分发器,负责分发LoadAndDisplayImageTask和ProcessAndDisplayImageTask给具体的线程池去执行
ImageAware:显示图片的对象,可以是ImageView等。
ImageDownloader:图片下载器,负责从图片的各个来源获取输入流, 。
Cache:图片缓存,分为MemoryCache和DiskCache两部分。
MemoryCache:内存图片缓存,可向内存缓存缓存图片或从内存缓存读取图片。
DiskCache:本地图片缓存,可向本地磁盘缓存保存图片或从本地磁盘读取图片。
ImageDecoder:图片解码器,负责将图片输入流InputStream转换为Bitmap对象。
BitmapProcessor:图片处理器,负责从缓存读取或写入前对图片进行处理。
BitmapDisplayer:将Bitmap对象显示在相应的控件ImageAware上。
LoadAndDisplayImageTask:用于加载并显示图片的任务。
ProcessAndDisplayImageTask:用于处理并显示图片的任务,。
DisplayBitmapTask:用于显示图片的任务。
使用步骤:
1、gradle配置