本文概述
- 10.Mirage
- 9.Android Image Cache
- 8.Shutterbug
- 7.Slight
- 6.Ion
- 5.Android Smart Image View
- 4.Android Universal Image Loader
- 3.Facebook的Fresco
- 2.Picasso
- 1.Glide
- 图像加载和缓存库
如今, 不加载图像的应用程序很奇怪而且很无聊。知道如何在移动应用程序中显示图像是每个开发人员最常见的任务之一。但是, 由于你对应用进行编码以处理图像的方式, 与每个人合作的方式将有所不同。例如, 网站开发人员无需担心图像缓存, 因为浏览器会自动执行此操作, 但是对于android开发人员来说, 通常会一次又一次地加载图像(如果我们从远程/网络源进行交谈)而不会确实表现不错。如果你希望在应用程序上有效显示图像, 则需要注意图像缓存。
在此顶部, 我们将与你分享10个最不重要的图像缓存库, 以提高Android应用程序的性能和加载时间。
10.Mirage
Mirage是由The Climate Corporation的Android团队开发的图像加载库, 用于加载, 缓存和同步以供离线使用图像。创建该系统的主要考虑因素是允许显式同步图像以供离线使用。像Picasso这样的库无法满足我们的要求, 因为如上所述:” Picasso没有磁盘缓存。它委托给任何HTTP客户端”。
9.Android Image Cache
图像下载和缓存器, 还知道如何有效地生成和检索各种大小的缩略图。该库具有:
- 轻松集成到内容提供商支持的应用程序中, 提供了一个适配器, 可以从游标读取本地和Web URL
- 根据一项下载的资产自动生成和缓存多种尺寸的图像
- 提供磁盘缓存和内存缓存
- 自动磁盘缓存管理;无需任何设置, 但可以根据需要微调参数
- 旨在与你现有的设置配合使用:无需扩展自定义应用程序或活动
- 游标适配器为每个ImageView支持多个图像字段;跳过为空或为空的字段
- 游标适配器在加载游标时具有自动进度条
8.Shutterbug
Shutterbug是一个Android库, 可让你获取远程图像并缓存它们。它特别适用于在列表或网格中显示远程图像, 因为它包含ImageView的便捷子类(FetchableImageView), 使实现成为一类。
实现了双重内存和磁盘缓存。它利用了两个Android类的反向移植:用于内存部分的LruCache和用于磁盘部分的DiskLruCache。 LruCache是API级别12引入的, 但是我们在这里将其作为独立类提供, 因此你可以在较低级别的API下使用该库。 LruCache和DiskLruCache均根据Apache软件许可2.0获得许可。
Shutterbug的灵感来自SDWebImage, 它在iOS上执行相同的操作。它使用相同的结构和接口。熟悉iOS上的SDWebImage的人会对Android上的Shutterbug感到宾至如归。
7.Slight
Sligh是一个简单, 示例且灵活的库, 用于在用Kotlin编写的Android上加载, 缓存和显示图像。
6.Ion
ION是一个Android异步网络和图像加载库。该库具有:
- 异步下载:
- 将图像转换为ImageViews或Bitmaps(也支持动画GIF)
- JSON(通过Gson)
- 弦乐
- 档案
- 使用Gson的Java类型
- 易于使用的Fluent API, 专为Android设计
- 呼叫活动结束时自动取消操作
- 将调用管理回UI线程
- 所有操作都将返回Future并可以取消
- HTTP POST / PUT:
- 文字/纯文字
- application / json-JsonObject和POJO
- 应用程序/ x-www-form-urlencoded
- 多部分/表单数据
- HTTP功能和优化的透明用法:
- SPDY和HTTP / 2
- 快取
- Gzip / Deflate压缩
- 通过HTTP连接进行连接池/重用:保持活动状态
- 如果服务器具有多个IP地址, 则使用来自服务器的最佳/稳定连接
- 饼干
- 查看收到的标题
- 分组和取消请求
- 下载进度回调
- 支持文件:/, http:/和内容:/ URI
- 请求级别的日志记录和性能分析
- 支持像Charles Proxy这样的代理服务器进行请求分析
- 基于NIO和AndroidAsync
- 能够使用自签名SSL证书
5.Android Smart Image View
SmartImageView是Android标准ImageView的直接替代, 它还允许从URL或用户的通讯录中加载图像。图像被高速缓存到内存和磁盘, 以实现超快速加载。该库具有:
- 直接替换ImageView
- 从URL加载图像
- 从手机的通讯录中加载图像
- 图像的异步加载, 加载发生在UI线程之外
- 图像被缓存到内存和磁盘以进行超快速加载
- SmartImage类很容易扩展以从其他来源加载
4.Android Universal Image Loader
UIL是一个功能强大且灵活的库, 用于在Android上加载, 缓存和显示图像。 UIL旨在为图像加载, 缓存和显示提供功能强大, 灵活且高度可定制的工具。它提供了许多配置选项, 并且可以很好地控制图像加载和缓存过程。该库具有:
- 多线程映像加载(异步或同步)
- 广泛定制ImageLoader的配置(线程执行器, 下载器, 解码器, 内存和磁盘缓存, 显示图像选项等)
- 每个显示图像调用都有许多自定义选项(存根图像, 缓存开关, 解码选项, 位图处理和显示等)
- 内存和/或磁盘(设备的文件系统或SD卡)中的图像缓存
- 监听加载过程(包括下载进度)
- 支援Android 2.0以上版本。
3.Facebook的Fresco
一个用于管理图像及其使用的内存的Android库。Fresco负责图像的加载和显示, 因此你不必这样做。它将从网络, 本地存储或本地资源加载图像, 并显示占位符, 直到图像到达为止。它具有两个级别的缓存;一个在内存中, 另一个在内部存储器中。在Android 4.x及更低版本中, Fresco将图像放置在Android内存的特殊区域中。这使你的应用程序运行得更快-并减少了发生可怕的OutOfMemoryError的频率。Fresco还支持:
- 渐进式JPEG流
- 动画GIF和WebP的显示
- 广泛定制图像加载和显示
- 以及更多!
你可以在他们的网站上找到更多信息。
2.Picasso
Picasso(Picasso)是功能强大的Android图片下载和缓存库。图像为Android应用程序增加了急需的上下文和视觉效果。 Picasso允许在你的应用程序中轻松加载图像-通常只需一行代码!Picasso会自动处理Android上许多常见的图片加载陷阱:
- 在适配器中处理ImageView回收和下载取消。
- 复杂的图像转换, 使用最少的内存。
- 自动内存和磁盘缓存。
自动检测到适配器的重新使用, 并且先前的下载被取消。如果你想贡献代码, 可以通过在GitHub上进行分叉并发送请求请求来完成。
1.Glide
Glide是适用于Android的快速有效的开源媒体管理和图像加载框架, 它将媒体解码, 内存和磁盘缓存以及资源池包装到一个简单易用的界面中。 Glide支持获取, 解码和显示视频静止图像, 图像和动画GIF。 Glide包含灵活的API, 允许开发人员插入几乎所有网络堆栈。默认情况下, Glide使用基于自定义HttpUrlConnection的堆栈, 但还包括实用程序库, 它们可以插入Google的Volley项目或Square的OkHttp库。
Glide的主要重点是使任何种类的图像列表尽可能平滑和快速地滚动, 但是Glide在几乎所有需要获取, 调整大小和显示远程图像的情况下也有效。 Glide考虑了Android上图像加载性能的两个关键方面:
- 图像解码的速度。
- 解码图像时产生的垃圾数量。
为了使用户对应用程序有很好的体验, 图像不仅必须快速出现, 而且还必须这样做, 而又不会引起主线程I / O过多的垃圾和卡顿或过多的垃圾回收。
Glide采取了许多步骤来确保图像在Android上的加载既尽可能快速又平滑:
- 智能, 自动的下采样和缓存可最大程度地减少存储开销和解码时间。
- 大量重复使用字节数组和位图之类的资源可以最大程度地减少昂贵的垃圾回收和堆碎片。
- 深度生命周期集成可确保仅对活动片段和活动的请求进行优先级排序, 并确保应用程序在必要时释放资源, 以避免在后台被杀死。
图像加载和缓存库
Fresco
由Kotlin Coroutines支持的Android图像加载库。线圈为:
- 快速:Coil执行了许多优化, 包括内存和磁盘缓存, 对内存中的图像进行下采样, 重新使用位图, 自动暂停/取消请求等等。
- 轻量级:Coil在你的APK中增加了约1500种方法(对于已经使用OkHttp和Coroutines的应用程序), 与Picasso相当, 远小于Glide和Fresco。
- 易于使用:Coil的API利用Kotlin的语言功能来简化和最小化样板。
- 现代的:Coil是Kotlin的第一名, 并使用包括Coroutines, OkHttp, Okio和AndroidX Lifecycles在内的现代库。
Coil是以下名称的缩写:Coroutine Image Loader。
如果你知道另一个适用于Android的出色图像缓存库, 请在评论框中与社区共享。