Glide 新版中GlideApp(AppGlideModule)配置方法

Glide在4.0之后,我们使用的时候需要使用GlideApp这种调用方式,或者优化图片加载内存是会出现设置图片的格式为565来降低图片内存的占用。则可以使用设置全局Glide配置。

第一种,直接在app的主项目中使用:

在gradle中添加依赖:

   implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
    implementation 'jp.wasabeef:glide-transformations:4.3.0'

正常简单快捷使用 :

 Glide.with(mContext)
                .load(childNode.get(position).getPicture())
                .placeholder(R.color.colorPlaceholderColor)
                .error(R.mipmap.load_error)
                .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(7,0)))
                .into(imageView);

倘若需要设置全局Glide 配置 比如设置缓存图片大小,设置图片格式则如下:

1、(在主项目包)下新建 CouponModule,extends AppGlideModule:

@GlideModule
public class CouponModule extends AppGlideModule {
        @Override
    public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
        MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(BasicApplication.getInstance()).build();
        int defaultMemoryCacheSize = calculator.getMemoryCacheSize();
        int defaultBitmapPoolSize = calculator.getBitmapPoolSize();
        int defaultArrayPoolSize = calculator.getArrayPoolSizeInBytes();
        builder.setDefaultRequestOptions(
                new RequestOptions()
                        .format(DecodeFormat.PREFER_RGB_565));
        builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize/2));
        builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize/2));
        builder.setArrayPool(new LruArrayPool(defaultArrayPoolSize/2));
    }

}

里面的方法可以不做任何处理。
2、然后再清单文件中配置 (注: studio 4.0以上可以省略此处配置)


配置完成
配置后使用

 GlideApp.with(imageView).load(ConstantUtils.mBaseImgUrl.concat(childNode.get(position).getPicture()))
                .placeholder(R.color.colorPlaceholderColor)
                .error(R.mipmap.load_error)
                .into(imageView);

注意,此时使用的是GlideApp 而不是Glide.其他方法调用依旧。

在全局设置中将图片质量设置为565,如果遇到显示gif文件的时候,会出现gif图片周边出现黑框的问题,需要在加载图片时候,单独针对gif结尾的url将图片质量改回8888

        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder(R.drawable.ic_refresh_loading)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                .error(R.drawable.ic_refresh_bad_net);
        if(!TextUtils.isEmpty(url) && url.endsWith(".gif")) {
            options.format(DecodeFormat.PREFER_ARGB_8888);
        }
        GlideApp.with(context)
                .load(url)
                .apply(options)
                .into(imageView);
    

写在最后
如果按如上配置未生成GlideApp,则按一下查找问题
1、没有在继承AppGlideMoudle的类上添加@GlideModule 注解(类是final,这似乎并不是必要的)
2、没有添加注解的相关依赖库:

annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

3、自定义的类没有在应用包名之下:
官网是这么说的在你的应用程序里面必须包含一个AppGlideModule的实现,再仔细看下面package com.example.myapp, 注意这个类的存放位置一定是在你程序包名下面,不能在任何一个二级包里面。至于MyAppGlideModule命名可以随便命名。
4、还有一点,添加的依赖必须是在app中的build.gradle的文件中,即这两行依赖必须放在和自定义的类同一个模块中。
最后 Rebuild Project .
我遇到的问题是 第三条 自定义的类没有放在应用包名之下,导致没有GlideApp 生成。

写在最后 以上方式目的是节省重复代码。设置图片质量565减少图片加载所耗内存。

你可能感兴趣的:(Glide 新版中GlideApp(AppGlideModule)配置方法)