前言
Glide 4相对于Glide 3改动非常大,尤其是aip的调用。
Glide4.0的用法
总结一下Glide4.0的用法
基本用法
Glide.with(this).load(url).into(ivTest);
占位图
RequestOptions options = new RequestOptions()
.placeholder(R.drawable.sishen);
Glide.with(this)
.load(url)
.apply(options)
.into(ivTest);
先创建了一个RequestOptions对象,然后调用它的placeholder()方法来指定占位图,再将占位图片的资源id传入到这个方法中。最后,在Glide加载之前调用apply()方法传入RequestOptions。
错误占位图
RequestOptions options = new RequestOptions()
.placeholder(R.drawable.sishen)
.error(R.drawable.error) ;
Glide.with(this)
.load(url)
.apply(options)
.into(ivTest);
只要在构建RequestOptions设置error就可以。
在Glide 4中引入了RequestOptions,把设置缓存机制 ,占位图等操作移到了RequestOptions里。
制定图片大小
Glide会自动根据ImageView的大小来决定图片的大小,如果有这样的需求必须指定一个图的大小可以通过RequestOptions指定。
RequestOptions options = new RequestOptions()
.override(200, 200);
使用override()方法指定了一个图片的尺寸,Glide只会将图片加载成200*100像素的尺寸。
缓存机制
缓存分为内存缓存和硬盘缓存。
Glide是自动开启内存缓存的。如果需要禁用
RequestOptions options = new RequestOptions()
.skipMemoryCache(true);
硬盘缓存有几个参数
- DiskCacheStrategy.NONE: 表示不缓存任何内容。
- DiskCacheStrategy.DATA: 表示只缓存原始图片。
- DiskCacheStrategy.RESOURCE: 表示只缓存转换过后的图片。
- DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。
- DiskCacheStrategy.AUTOMATIC: 表示让Glide根据图片资源智能地选择使用哪一种缓存策略(默认选项)。
RequestOptions options = new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.DiskCacheStrategy.AUTOMATIC);
加载格式
Glide会自动判断图片的格式,自动显示gif图。如果需要指定格式,通过以下方法
静态图:
Glide.with(this)
.asBitmap()
.load("http://guolin.tech/test.gif")
.into(imageView);
//如果你传入的还是一张GIF图的话,Glide会展示这张GIF图的第一帧,而不会去播放它。
gif图:
Glide.with(this)
.asGif()
.load("http://guolin.tech/test.gif")
.into(imageView);
图片交换
Glide加载图片可以进行一些变换的操作。比如圆角,模糊等。
添加图片变换的用法非常简单,我们只需要在RequestOptions中串接transforms()方法,并将想要执行的图片变换操作作为参数传入transforms()方法即可;
RequestOptions options = new RequestOptions()
.transforms(...);
Glide.with(this)
.load(url)
.apply(options)
.into(imageView);
至于具体要进行什么样的图片变换操作,这个通常都是需要我们自己来写的。不过Glide已经内置了几种图片变换操作,我们可以直接拿来使用,比如CenterCrop、FitCenter、CircleCrop等。所有的内置图片变换操作其实都不需要使用transform()方法,Glide为了方便我们使用直接提供了现成的API:
RequestOptions options = new RequestOptions()
.centerCrop();
RequestOptions options = new RequestOptions()
.fitCenter();
//圆形化裁剪
RequestOptions options = new RequestOptions()
.circleCrop();
简单的使用大致就这些,Glide很强大以上一些使用基本满足日常使用。
我做了一个ImageUtils的工具类,传送门
本文的部分代码来自郭霖的博客 传送门
资料
Glide强大的图片变换功能
glide-transformations 开源库
Glide 4.0 详解