Android异步图片加载库

    |     2015年12月22日   |   网络通讯   |     0 条评论   |    2026

异步加载、缓存、显示网络图,不必每次从零写。下面对比 Universal-Image-Loader、Picasso、Android-ImageCache-Warmtel、Glide 和 Fresco,方便按项目选型。


一、Android-Universal-Image-Loader

开源 UI 组件,目标是可复用的异步图片加载、缓存和显示。

20151222213145

特点:

  • 多线程图片加载
  • 异步加载缓存:内存(软引用)+ 本地
  • 可配置线程池、HTTP、内存/磁盘缓存、显示选项等
  • 加载过程可监听和事件处理
  • 圆角、加载完成动画等显示选项

用法:Android-Universal-Image-Loader: 可重复使用的仪器为异步图片加载,缓存和显示

开源地址:https://github.com/nostra13/Android-Universal-Image-Loader


二、Picasso

Square 开源的图形缓存库,地址 http://square.github.io/picasso/,负责下载和缓存。用法很短:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
  • Adapter 里回收并取消当前下载
  • 用尽量少的内存做复杂变换
  • 自动内存 + 硬盘缓存
  • 缩放、旋转等变换,也可自定义
  • 网络或本地资源都能加载

用法:Android图片下载缓存库picasso解析

gitHub地址:https://github.com/square/picasso


三、Android-ImageCache-Warmtel

极简单的网络图片异步加载库,只有一个实现类:

AsyncMemoryFileCacheImageLoader.getInstance(context).loadBitmap(getResources(), picUrl, imageView);
  • 异步网络加载图片
  • LruCache 内存缓存
  • DiskLruCache 文件缓存
  • 多任务同步执行
  • 高效大图处理
  • ListView / GridView 滚动错乱处理

源码Demo下载


四、Glide 与 Fresco

泰国谷歌开发者论坛上介绍的 Glide(作者 bumptech),大量用在 Google 开源项目里,包括 2014 年 I/O 官方 App。和 Picasso 约 90% 相似,细节不同:支持 Gif、缩略图、本地视频解码、请求与动画生命周期、渐显、OkHttp / Volley;默认 HttpUrlConnection。

导入库:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.5.2'
    compile 'com.android.support:support-v4:22.0.0'
}

详细分析 github地址:https://github.com/bumptech/glide

Fresco 内部大量建造者、单例、静态工厂、生产/消费者。加载路径大致是:异步拿输入流 → 读写转成 EncodedImage → Decode 成 Bitmap → Handler 回 UI → IO 写入硬盘缓存。

详细分析 Fresco官方文档

库 特点
UIL 可配置线程池、双缓存、显示选项与监听
Picasso 一行 API,Adapter 取消下载,内存/磁盘缓存
Warmtel 单类封装 Lru + DiskLru,处理列表错乱
Glide 接近 Picasso,另有 Gif、生命周期、缩略图
Fresco 流水线复杂,EncodedImage → Bitmap → 磁盘

一句话总结:要一行 API 用 Picasso / Glide;要可配置选 UIL;要极简双缓存看 Warmtel;要完整流水线再上 Fresco。

转载请注明来源:Android异步图片加载库
本文链接地址:https://ai.zhousir.top/?p=1071
回复 取消