April
25th,
2016
图片加载是开发中最长用到的功能,列出目前github上star最多的几个开源库
1.Universal-Image-Loader
比较老的一个库,使用量也相当多,之前做过的项目很多都在使用这个库。使用感受:配置灵活,稳定可靠,功能齐全。作者已经停止更新和bug修复工作,不推荐继续使用。
2.Picasso
Picasso出自 square 公司,这个以画家毕加索命名的库,确实在使用上十分的优雅:
Picasso.with(context).load(url).into(view);
用起来就是这么简单。图片裁剪,圆角等功能也都支持,而去还可以开启debug模式查看图片是从网络,本地,还是缓存来的。配合 square 全家桶使用,兴许有加成。
3.Glide
Glide 是由google员工开发的,已用到多个google开源项目中
Glide 是在picasso的基础上开发的,所以使用风格与picasso极为相似
Picasso 默认Bitmap格式是 ARGB8888
,Glide默认的Bitmap格式是 RGB565
,比 ARGB8888
格式的内存开销要小一半
Picasso 默认缓存保存原始图每次加载时重新绘制。Glide 默认缓存保存的图片大小与imageview大小一致。Glide会对不同展示大小的同一图片分别下载缓存,可以通过
.diskCacheStrategy(DiskCacheStrategy.ALL)
缓存全尺寸图片,使加载变快,但需要更多的缓存空间。Glide支持 gif
。
4.Fresco
Fresco由 Facebook 出品, 当然也被用于 Facebook 自家的产品中,下面特性摘自Fresco官方中文文档
- 在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。
- 渐进式的JPEG图片格式已经流行数年了,渐进式图片格式先呈现大致的图片轮廓,然后随着图片下载的继续,呈现逐渐清晰的图片,这对于移动设备,尤其是慢网络有极大的利好,可带来更好的用户体验。
Fresco很强大,很复杂,库的大小比起上面3个要大很多,如果不是对图片加载有特别要求的,Glide足够了。
总结
根据实际需求选择工具才能事半功倍。