第一步
module - builde.gradle - dependencies 添加
api 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
project - repositories
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
第二步
创建 AppGlideModule
@GlideModule
public class GlideConfigModule extends AppGlideModule {
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
//修改默认配置,如缓存配置
// //磁盘缓存配置(默认缓存大小250M,默认保存在内部存储中)
//
// //设置磁盘缓存保存在外部存储,且指定缓存大小
// builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, diskCacheSize);
// //设置磁盘缓存保存在自己指定的目录下,且指定缓存大小
// builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() {
// @Override
// public File getCacheDirectory() {
// return diskCacheFolder;
// }
// }, diskCacheSize);
//
//
// //内存缓存配置(不建议配置,Glide会自动根据手机配置进行分配)
//
// //设置内存缓存大小
// builder.setMemoryCache(new LruResourceCache(memoryCacheSize));
// //设置Bitmap池大小
// builder.setBitmapPool(new LruBitmapPool(bitmapPoolSize));
}
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
//替换组件,如网络请求组件
}
}
第三步
rebuild一下,如果正常没报错。那么代码中可以引用到GlideApp这个类。没用就make project
GlideApp.with(fragment)
.load(myUrl)
.placeholder(R.drawable.placeholder)
.fitCenter()
.into(imageView);
第四步
创建MyGlideExtension
@GlideExtension
public class MyGlideExtension {
/**
* 默认占位图
*/
private static final int ICON_DEFAULT_PLACEHOLDER = R.drawable.vy_icon_placeholder_common;
private MyGlideExtension() {
} // utility class
@NonNull
@GlideOption
public static BaseRequestOptions<?> applyAvatarImage(BaseRequestOptions<?> options) {
return options
.centerCrop()
.placeholder(R.drawable.vy_icon_placeholder_avatar)
.error(R.drawable.vy_icon_placeholder_avatar)
.circleCrop()
.format(DecodeFormat.PREFER_RGB_565);
}
}
第五步
工程再次Rebulid一下,没用就make project
第六步 拓展方法的使用
// 平时加载图片是这样
/**
* 头像加载
*/
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.drawable.vy_icon_placeholder_avatar)
.circleCrop()
.error(R.drawable.vy_icon_placeholder_avatar)
.format(DecodeFormat.PREFER_RGB_565);
Glide.with(this)
.load(url)
.apply(options)
.into(iv);
// 现在是这样
GlideApp.with(this)
.load(url)
.applyAvatarImage()
.into(iv);
总结
以上的一顿操作其实其实就是为了少写点代码,偷偷懒总是好的嘛。增加点代码复用行,便于团队开发时的代码维护。
网友评论