Android Universal Image Loader 学习笔记(一)
2015-08-25 22:30
316 查看
1. 功能介绍
1.1 Android Universal Image Loader
Android Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文简称为UIL。
简单的说 UIL 就做了一件事——获取图片并显示在相应的控件上。
1.2 基本使用
1.2.1 初始化添加完依赖后在
Application或
Activity中初始化
ImageLoader,如下:
public class YourApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) // 添加你的配置需求 .build(); ImageLoader.getInstance().init(configuration); } }
其中 configuration 表示
ImageLoader的配置信息,可包括图片最大尺寸、线程池、缓存、下载器、解码器等等。
1.2.2 Manifest 配置
<manifest> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name=".YourApplication" …… > …… </application> </manifest>
添加网络权限。如果允许磁盘缓存,需要添加写外设的权限。
1.2.3 下载显示图片
下载图片,解析为 Bitmap 并在 ImageView 中显示。
imageLoader.displayImage(imageUri, imageView);
下载图片,解析为 Bitmap 传递给回调接口。
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { // 图片处理 } });
以上是简单使用,更复杂 API 见本文
详细设计。
1.3 特点
可配置度高。支持任务线程池、下载器、解码器、内存及磁盘缓存、显示选项等等的配置。包含内存缓存和磁盘缓存两级缓存。
支持多线程,支持异步和同步加载。
支持多种缓存算法、下载进度监听、ListView 图片错乱解决等。
2. 总体设计
2.1. 总体设计图
上面是 UIL 的总体设计图。整个库分为
ImageLoaderEngine,
Cache及
ImageDownloader,
ImageDecoder,
BitmapDisplayer,
BitmapProcessor五大模块,其中
Cache分为
MemoryCache和
DiskCache两部分。
简单的讲就是
ImageLoader收到加载及显示图片的任务,并将它交给
ImageLoaderEngine,
ImageLoaderEngine分发任务到具体线程池去执行,任务通过
Cache及
ImageDownloader获取图片,中间可能经过
BitmapProcessor和
ImageDecoder处理,最终转换为
Bitmap交给
BitmapDisplayer在
ImageAware中显示。
2.2. UIL 中的概念
简单介绍一些概念,在4. 详细设计中会仔细介绍。
ImageLoaderEngine:任务分发器,负责分发
LoadAndDisplayImageTask和
ProcessAndDisplayImageTask给具体的线程池去执行,本文中也称其为
engine,具体参考
4.2.6 ImageLoaderEngine.java。
ImageAware:显示图片的对象,可以是
ImageView等,具体参考
4.2.9 ImageAware.java。
ImageDownloader:图片下载器,负责从图片的各个来源获取输入流, 具体参考
4.2.22 ImageDownloader.java。
Cache:图片缓存,分为
MemoryCache和
DiskCache两部分。
MemoryCache:内存图片缓存,可向内存缓存缓存图片或从内存缓存读取图片,具体参考
4.2.24 MemoryCache.java。
DiskCache:本地图片缓存,可向本地磁盘缓存保存图片或从本地磁盘读取图片,具体参考
4.2.38 DiskCache.java。
ImageDecoder:图片解码器,负责将图片输入流
InputStream转换为
Bitmap对象, 具体参考
4.2.53 ImageDecoder.java。
BitmapProcessor:图片处理器,负责从缓存读取或写入前对图片进行处理。具体参考
4.2.61 BitmapProcessor.java。
BitmapDisplayer:将
Bitmap对象显示在相应的控件
ImageAware上, 具体参考
4.2.56 BitmapDisplayer.java。
LoadAndDisplayImageTask:用于加载并显示图片的任务, 具体参考
4.2.20 LoadAndDisplayImageTask.java。
ProcessAndDisplayImageTask:用于处理并显示图片的任务, 具体参考
4.2.19 ProcessAndDisplayImageTask.java。
DisplayBitmapTask:用于显示图片的任务, 具体参考
4.2.18 DisplayBitmapTask.java。
3. 流程图
上图为图片加载及显示流程图,在 uil 库中给出,这里用中文重新画出。
4. 详细设计
4.1 类关系图
相关文章推荐
- Android 存储:SD卡剩余空间的检测
- Android Studio Debug
- Android下多个Activity 使用同一个SlidingMenu
- android WIFI 调试
- Android Canvas绘图详解
- Android调用系统拨号功能
- 利用属性动画制作下拉显示更多的效果
- Android学习0825<七>(ListView和Adapter拓展)
- Android-简单刮刮乐实现
- Android基础入门教程——2.3.12 Date & Time组件(下)
- android activity
- Android:检测SD卡
- 删除Android system目录下文件的方法
- android5.0 音乐播放,加载extractor
- android学习 在一个活动中关闭所有的活动ActivityCollector
- android使用全局变量的两种方法
- 自定义可点击 富文本组件
- 0825Android基础ListView自定义Adapter优化
- Android Studio开发入门-引用jar及so文件
- 【请求加密】android ios java后台通用DES base64加密