Glide4.11.0 GlideApp的使用 GlideModule && GlideExtension 使用爬坑小结

第一步

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);

总结

以上的一顿操作其实其实就是为了少写点代码,偷偷懒总是好的嘛。增加点代码复用行,便于团队开发时的代码维护。

你可能感兴趣的:(Glide4.11.0 GlideApp的使用 GlideModule && GlideExtension 使用爬坑小结)