Android常用图片加载库介绍及对比

43次阅读

共计 1553 个字符,预计需要花费 4 分钟才能阅读完成。

前言
图片加载在 Android 开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而 Android 发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加载框架 & 以及他们之间的对比优缺点。
Android 主流图片加载库

Picasso
Glide
Fresco

介绍 & 对比
1.Picasso
Picasso 中文翻译为 ’ 毕加索 ’, 由 Square 公司开源的一个适用于 Android 的强大图像下载和缓存库.

功能介绍
图片的异步加载(最基础功能)
使用最少的内存完成复杂的图片转换,转换图片以适合所显示的 ImageView,来减少内存消耗
支持加载过程中和加载错误时显示对应图片
在 Adapter 中的回收不在视野的 ImageView 和取消已经回收的 ImageView 下载进程
支持加载多种数据源 网络、本地、资源、Assets 等
自动添加磁盘和内存二级缓存功能
支持优先级处理
支持飞行模式、并发线程数根据网络类型而变

Picasso 没有实现本地缓存功能,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。

*
与其他开源库对比

优点如下:

使用简单, 代码简洁
与 Square 公司的其他开源库如 Retrofit 或者 OkHttp 搭配使用兼容性会更好些,占用体积也会少些

缺点如下:

功能较为简单 - 图片加载;
性能(加载速度等等)较(Glide、Fresco)较差
自身无实现“本地缓存”

2.Glide
Glide 是由 Google 开源的一个图片加载库, 是一款快速高效的 Android 开源媒体管理和图像加载框架,它将媒体解码,内存和磁盘缓存以及资源池包装成简单易用的界面.

功能介绍
图片的异步加载(基础功能)
支持设置加载尺寸、设置加载中以及加载失败图片、设置加载动画、设置图文混排
多样式的媒体加载 (设置缩略图支持:先加载缩略图 然后在加载全图)
支持设置磁盘缓存策略、设置跳过内存缓存、清理缓存
生命周期集成 (然而还是有 bug)
与其他开源库对比

优点如下:

支持多样化媒体加载 Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图, 甚至是 Video
生命周期集成 通过设置绑定生命周期,我们可以更加高效的使用 Glide 提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来 (使用还是有 bug)
高效的缓存策略 1. 支持 Memory 和 Disk 图片缓存 2.Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,即 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸 3. 内存开销小,Glide 默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,占用内存要小一半

缺点如下:

使用方法复杂, 实现方法较多
使用较 Fresco 简单,但性能(加载速度 & 缓存)却比不上 Fresco

3.Fresco
Fresco 是由 Facebook 开源的用于管理图像及其使用内存的 Android 库
功能介绍

具体功能请前往官方文档查看优点如下

大大减少了 OOM 的发生,Facebook 在底层使用了 C ++ 技术解决图片缓存问题
使用简单, 几乎全部功能都能在 XML 文件中直接制定

缺点如下:

用法变得更加复杂了
依赖包更加大了 (2-3M)
底层设计 C ++ 等技术, 源码阅读更加困难

至此 Android 中主流的三大图片加载框架就介绍完毕了, 感谢阅读
免费获取安卓开发架构的资料(包括 Fultter、高级 UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)和一线互联网公司关于 android 面试的题目汇总可以加:936332305 / 链接:点击链接加入【安卓开发架构】

正文完
 0

Android常用图片加载库介绍及对比

43次阅读

共计 1520 个字符,预计需要花费 4 分钟才能阅读完成。

前言
图片加载在 Android 开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而 Android 发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加载框架 & 以及他们之间的对比优缺点。
Android 主流图片加载库

Picasso
Glide
Fresco

介绍 & 对比
1.Picasso
Picasso 中文翻译为 ’ 毕加索 ’, 由 Square 公司开源的一个适用于 Android 的强大图像下载和缓存库.

功能介绍
图片的异步加载(最基础功能)
使用最少的内存完成复杂的图片转换,转换图片以适合所显示的 ImageView,来减少内存消耗
支持加载过程中和加载错误时显示对应图片
在 Adapter 中的回收不在视野的 ImageView 和取消已经回收的 ImageView 下载进程
支持加载多种数据源 网络、本地、资源、Assets 等
自动添加磁盘和内存二级缓存功能
支持优先级处理
支持飞行模式、并发线程数根据网络类型而变

Picasso 没有实现本地缓存功能,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。

与其他开源库对比
优点如下:

使用简单, 代码简洁
与 Square 公司的其他开源库如 Retrofit 或者 OkHttp 搭配使用兼容性会更好些,占用体积也会少些

缺点如下:

功能较为简单 - 图片加载;
性能(加载速度等等)较(Glide、Fresco)较差
自身无实现“本地缓存”

2.Glide
Glide 是由 Google 开源的一个图片加载库, 是一款快速高效的 Android 开源媒体管理和图像加载框架,它将媒体解码,内存和磁盘缓存以及资源池包装成简单易用的界面.

功能介绍
图片的异步加载(基础功能)
支持设置加载尺寸、设置加载中以及加载失败图片、设置加载动画、设置图文混排
多样式的媒体加载 (设置缩略图支持:先加载缩略图 然后在加载全图)
支持设置磁盘缓存策略、设置跳过内存缓存、清理缓存
生命周期集成 (然而还是有 bug)
与其他开源库对比

优点如下:
支持多样化媒体加载
Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图, 甚至是 Video
生命周期集成
通过设置绑定生命周期,我们可以更加高效的使用 Glide 提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来 (使用还是有 bug)
高效的缓存策略
1. 支持 Memory 和 Disk 图片缓存 2.Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,即 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸 3. 内存开销小,Glide 默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,占用内存要小一半
缺点如下:

使用方法复杂, 实现方法较多
使用较 Fresco 简单,但性能(加载速度 & 缓存)却比不上 Fresco

3.Fresco
Fresco 是由 Facebook 开源的用于管理图像及其使用内存的 Android 库
功能介绍

具体功能请前往官方文档查看优点如下

大大减少了 OOM 的发生,Facebook 在底层使用了 C ++ 技术解决图片缓存问题
使用简单, 几乎全部功能都能在 XML 文件中直接制定

缺点如下:

用法变得更加复杂了
依赖包更加大了 (2-3M)
底层设计 C ++ 等技术, 源码阅读更加困难

至此 Android 中主流的三大图片加载框架就介绍完毕了, 感谢阅读
欢迎关注作者 darryrzhong, 更多干货等你来拿哟.
请赏个小红心!因为你的鼓励是我写作的最大动力!
更多精彩文章请关注

个人博客:darryrzhong
掘金
简书
SegmentFault
慕课网手记

正文完
 0