库的使用之Glide
问题
主要解决图片加载问题。
- 图片占用内存回收及时,能减少因内存不足造成的崩溃,生命周期和Activity/Fragment一致。
- 默认Bitmap格式是RGB_565,减少内存资源占用。
- 支持圆形图片、圆角图片、高斯模糊等效果
使用
- 引用
implementation 'com.github.bumptech.glide:glide:4.15.1'
// 提供 高斯模糊,如果不需要可以不用依赖
implementation 'jp.wasabeef:glide-transformations:4.3.0'
// Glide注解依赖
annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
- 基本使用
MultiTransformation multiTransformation = new MultiTransformation(new BlurTransformation(60));
Glide.with(context)
.load("http://png.test.com/a.png")//图片地址 网络地图/文件地址/资源ID
.centerCrop()//会缩放图片让图片充满整个ImageView的边框,然后裁掉超出的部分,
//ImageVIew会被完全填充满,但是图片可能不能完全显示出。
.fitCenter()//会缩放图片让两边都相等或小于ImageView的所需求的边框。
//图片会被完整显示,可能不能完全填充整个ImageView。
.placeholder(errorRes)//占位图
.error(errorRes)//加载错误图
.fallback(errorRes)// url为空的占位图
.circleCrop()
.dontAnimate()//取消动画
.override(100,100)//加载图片尺寸,节省内存
.transform(GenericTransitionOptions.with(R.anim.test))//设置自定义动画
.transform(new CircleCrop())// 加载圆形图片
.transform(new RoundedCorners(30))//加载圆角为30的图片
.transform(new GranularRoundedCorners(30f,80f,80f,30f))//加载4个圆角不同的图片
.transform(new Rotate(90))//旋转90度
.diskCacheStrategy(DiskCacheStrategy.ALL)//设置缓存策略
// DiskCacheStrategy.ALL 缓存所有类型的图片 (默认行为)
// DiskCacheStrategy.NONE 什么也不缓存
// DiskCacheStrategy.SOURCE 只缓存全尺寸图. 上面例子里的1000x1000像素的图片
// DiskCacheStrategy.RESULT 只缓存最终降低分辨后用到的图片
.apply(RequestOptions.bitmapTransform(multiTransformation))//高斯模糊
.into(imageView);
- 全局配置
@GlideModule
public class MyAppModule extends AppGlideModule {
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
super.applyOptions(context, builder);
}
}
//定义一个频繁使用的选项集合
@GlideExtension
public class MyAppExtension {
private MyAppExtension(){}
@GlideOption
public static BaseRequestOptions<?>defaultImg(BaseRequestOptions<?> options){
return options.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.fallback(R.drawable.fallback);
}
}
// 编译一下 就可以使用GlideApp
GlideApp.with(context).load(url).defaultImg().into(imageView);