Android异步图片加载库
异步加载、缓存、显示网络图,不必每次从零写。下面对比 Universal-Image-Loader、Picasso、Android-ImageCache-Warmtel、Glide 和 Fresco,方便按项目选型。
一、Android-Universal-Image-Loader
开源 UI 组件,目标是可复用的异步图片加载、缓存和显示。
特点:
-
多线程图片加载 -
异步加载缓存:内存(软引用)+ 本地 -
可配置线程池、HTTP、内存/磁盘缓存、显示选项等 -
加载过程可监听和事件处理 -
圆角、加载完成动画等显示选项
用法:Android-Universal-Image-Loader: 可重复使用的仪器为异步图片加载,缓存和显示
开源地址:https://github.com/nostra13/Android-Universal-Image-Loader
二、Picasso
Square 开源的图形缓存库,地址 http://square.github.io/picasso/,负责下载和缓存。用法很短:
-
Adapter 里回收并取消当前下载 -
用尽量少的内存做复杂变换 -
自动内存 + 硬盘缓存 -
缩放、旋转等变换,也可自定义 -
网络或本地资源都能加载
gitHub地址:https://github.com/square/picasso
三、Android-ImageCache-Warmtel
极简单的网络图片异步加载库,只有一个实现类:
-
异步网络加载图片 -
LruCache 内存缓存 -
DiskLruCache 文件缓存 -
多任务同步执行 -
高效大图处理 -
ListView / GridView 滚动错乱处理
四、Glide 与 Fresco
泰国谷歌开发者论坛上介绍的 Glide(作者 bumptech),大量用在 Google 开源项目里,包括 2014 年 I/O 官方 App。和 Picasso 约 90% 相似,细节不同:支持 Gif、缩略图、本地视频解码、请求与动画生命周期、渐显、OkHttp / Volley;默认 HttpUrlConnection。
导入库:
详细分析 github地址:https://github.com/bumptech/glide
Fresco 内部大量建造者、单例、静态工厂、生产/消费者。加载路径大致是:异步拿输入流 → 读写转成 EncodedImage → Decode 成 Bitmap → Handler 回 UI → IO 写入硬盘缓存。
| 库 | 特点 |
|---|---|
| UIL | 可配置线程池、双缓存、显示选项与监听 |
| Picasso | 一行 API,Adapter 取消下载,内存/磁盘缓存 |
| Warmtel | 单类封装 Lru + DiskLru,处理列表错乱 |
| Glide | 接近 Picasso,另有 Gif、生命周期、缩略图 |
| Fresco | 流水线复杂,EncodedImage → Bitmap → 磁盘 |
一句话总结:要一行 API 用 Picasso / Glide;要可配置选 UIL;要极简双缓存看 Warmtel;要完整流水线再上 Fresco。
转载请注明来源:Android异步图片加载库







