Glide介绍
在谷歌2014开发者大会上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
Glide不仅可以显示图片,还可以加载GIF动态图,因此被广泛使用。
Glide的使用
导入库
Glide发布在jcenter上。在项目中添加依赖非常简单:
1 2 3 |
dependencies { compile 'com.github.bumptech.glide:glide:3.5.2' } |
调用方法
1 2 3 |
Glide.with(context) .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg") .into(ivImg); |
Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。
将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载。所以我建议传参的时候传递Activity 和 Fragment给Glide,而不是Context。
Glide的配置
我们需要写一个类继承GlideModule,然后对Glide进行一些统一的配置,如:图片缓存的位置,图片缓存消耗的最大内存,图片保存的方式等。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class GlideConfiguration implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // Glide图片默认的存储方式是RGB_565,此方法修改图片保存质量。 builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); } @Override public void registerComponents(Context context, Glide glide) { // register ModelLoaders here. } } |
然后在AndroidManifest.xml中将GlideModule定义为meta-data
1 2 |
<meta-data android:name="com.inthecheesefactory.lab.glidepicasso.GlideConfiguration" android:value="GlideModule"/> |
Glide常用属性
其他常用配置信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#设置图片大小 .override(300, 200); #Center Cropping .centerCrop();</pre> #Transforming 设置圆形图片 .transform(new CircleTransform(context)) #设置占位图或者加载错误图: .placeholder(R.drawable.placeholder) .error(R.drawable.imagenotfound) |
有许多可以配置的选项,比如大小,缓存的磁盘位置,最大缓存空间,位图格式等等。可以在这个页面查看这些配置 Configuration 。
Glide的内存消耗
内存是图片类工具无法迈过的一个坎。最后我们来看看Glide内存开销图。
因为Glide可以自动计算出任意情况下的ImageView大小。在进行图片加载的时候,会加载的和ImageView大小是一致的图,因此所占用内存非常小。
Glide的本地缓存
默认Glide只缓存的是跟ImageView尺寸相同的。
不过,你可以改变这种行为,让Glide既缓存全尺寸又缓存其他尺寸:
1 2 3 4 |
Glide.with(this) .load("http://nuuneoi.com/uploads/source/playstore/cover.jpg") .diskCacheStrategy(DiskCacheStrategy.ALL) .into(ivImgGlide); |
下次在任何ImageView中加载图片的时候,全尺寸的图片将从缓存中取出,重新调整大小,然后缓存。
未经允许不得转载:Python在线学习 » Google推荐的图片加载库Glide