先上下地址:
开始
首先gradle添加依赖
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
}
照着文档调用
GlideApp.with(this).load(R.mipmap.ic_launcher).into(binding.ivPic);
然后你会发现,嗯没错,GlideApp找不到,只有Glide。
这里需要新建class 继承AppGlideModule,如下:
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
/**
* create by zj on 2018/12/26
*/
@GlideModule
public final class MyGlideAppConfig extends AppGlideModule {
}
可以调用啦。
运行下看下效果
除了加载应用内图片外还有其他的类型;
//应用图片
GlideApp.with(this).load(R.mipmap.ic_launcher).into(binding.ivPic);
//网络图片
// GlideApp.with(this).load(URL).into(binding.ivPic);
//加载gif 应用图片
// GlideApp.with(this).load(R.drawable.gif_test).placeholder(R.mipmap.ic_launcher).into(binding.ivPic);
//加载gif 网络图片
// GlideApp.with(this).load(URL_GIF).diskCacheStrategy(DiskCacheStrategy.ALL) .into(binding.ivPic);
如上所示,网络图片以及gif图等,
需要说一点,加载网络gif时,需要添加缓存策略,这里我使用的DiskCacheStrategy.ALL,否则加载出来的只是一张图片。
这样gif加载出来后是一直重复播放的,可能有人会问如何只播放一次呢?
上代码:
//设置gif 播放次数
GlideApp.with(this).load(URL_GIF).diskCacheStrategy(DiskCacheStrategy.ALL).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
GifDrawable gifDrawable= (GifDrawable) resource;
gifDrawable.setLoopCount(1);
binding.ivPic.setImageDrawable(gifDrawable);
gifDrawable.start();
}
});
看下效果:
另外可以看下gifdrawable的其他方法:
这里就不多说这些方法,大家感兴趣可以一个一个试试。
指定图片格式
Glide中可以指定图片的格式,主要有下面几个:
另外4.0之后指定图片格式需要在load之前。
有人会问了,上面加载gif图时,没有指定格式,不是已经加载出来了吗?
没错。Glide会自动判断,是不是很爽?
所以用的时候一般就不带了,但是你带了但是用的不对就有问题了,例如
private final static String URL="https://raw.githubusercontent.com/zhjingjing/GlideTest/master/image/image_test.jpeg";
GlideApp.with(this).asGif().load(URL).diskCacheStrategy(DiskCacheStrategy.NONE).placeholder(R.mipmap.ic_launcher).error(R.drawable.error).into(binding.ivPic);
指定gif格式,但是加载url是一张静态图片,加载结果就会有问题了:
好了,到这里Glide的基础用法基本上已经介绍完成。