添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
基本使用:
//其中this可以是Application,Activity或Fragment,
//this是什么决定了Glide的生命周期,this销毁Glide也会停止加载图片
Glide.with(this).load(url).into(imageView);
Glide还可以以各种形式load图片:
// 加载本地图片
File file = new File("xxx");
Glide.with(this).load(file).into(imageView);
// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);
// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
占位图和错误图
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.into(imageView);
缓存
Glide.with(this)
.load(url)
.skipMemoryCache(true) //不使用内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE) //不使用硬盘缓存
.into(imageView);
其中硬盘缓存策略有4种:
DiskCacheStrategy.NONE:不使用硬盘缓存
DiskCacheStrategy.SOURCE:只用硬盘缓存原始图片
DiskCacheStrategy.RESULT:表示只缓存转换过后的图片(默认选项)
DiskCacheStrategy.ALL:用硬盘缓存原始图片和转换过后的图片
指定图片格式:
Glide.with(this)
.load(url)
.asBitmap() //加载静态图,对于Gif只加载第一帧
//.asGif() //加载动态图,对于静态图抛异常
.into(imageView);
指定图片大小
Glide.with(this)
.load(url)
.override(100, 100)
.into(imageView);
返回Drawable对象:
Glide.with(this).load(url).into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable res, GlideAnimation<? super GlideDrawable> animation) {
}
});
返回Bitmap对象:
Glide.with(getApplication()).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
}
});
preload()方法默认是预加载的原始图片大小,所以要将diskCacheStrategy的缓存策略指定成DiskCacheStrategy.SOURCE,否则容易出现预加载完成之后还是要从网络上去请求图片这种现象。
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.preload();
使用图片时也需要将硬盘缓存策略指定成DiskCacheStrategy.SOURCE,以保证Glide会去读取刚才预加载的图片缓存。
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(imageView);
preload的原理是使用了一个PreloadTarget,而在onResourceReady方法中只有空实现
Glide.with(this)
.load(url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target,
boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model,
Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imageView);
implementation 'com.github.bumptech.glide:glide:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
新增了RequestOptions 类,Glide4将部分API功能封装在RequestOptions 中,在通过apply方法,传递给Glide使用
RequestOptions options = new RequestOptions();
options.placeholder(R.drawable.ic_launcher_background);
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(false)
.override(Target.SIZE_ORIGINAL)
.override(200,200)
Glide.with(this.getApplicationContext())
.load(url)
.apply(options)
.into(mImage);