升级Glide4.x的问题汇总

问题一:Failed to find GeneratedAppGlideModule. You should include an annotationProcessor c

错误信息

W/Glide:
Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored

原因是:annotationProcessor ‘com.github.bumptech.glide:compiler:4.9.1’,这个依赖只在 glid封装库 中依赖,没有在主工程依赖。

因为我的glide是一个自己的封装库,封装库内有依赖annotationProcessor ‘com.github.bumptech.glide:compiler:4.9.0’,但主工程却没依赖,导致主工程中不能使用注解@GlideModule,这样就MyAppGlideModule没生效了,这样也导致LibraryGlideModule的所有子类无效。

@GlideModule
public class MyAppGlideModule extends AppGlideModule {
    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }
}

解决方法:主工程也依赖annotationProcessor 'com.github.bumptech.glide:compiler:4.9.1’即可

参考:
关于glide4.7.1使用找不到GlideApp的问题

问题二:GeneratedAppGlideModuleImpl is implemented incorrectly.

错误信息:
GeneratedAppGlideModuleImpl is implemented incorrectly. If you’ve manually implemented this class, remove your implementation. The Annotation processor will generate a correct implementation.
在这里插入图片描述
分析: 说你显示实现了GeneratedAppGlideModuleImpl,然而你并没有。

跟进错误点:
在这里插入图片描述
反射 调用GeneratedAppGlideModuleImpl的带参数(context)的构造方法,但是发现 你现在的GeneratedAppGlideModuleImpl是构造方法是无参数的,很显然自动生成有问题。

解决方法

再看看,引入的glide版本号是4.11.0,而compiler的版本号是4.9.0,尝试把compiler的版本号更为4.11.0,再试试,发现此时生成的GeneratedAppGlideModuleImpl是带参数(context)的构造方法了。
在这里插入图片描述
所以compiler的版本号 要和 glide 一致即可啦。问题解决。

问题三:透明背景的gif,显示黑色背景

透明背景的动图
问题:这张透明背景的Gif动图,使用Glide加载后,本该透明的地方变为黑色了。
原因:在配置RequestOptions的图片格式时, 我使用了format方法设置为DecodeFormat.PREFER_RGB_565。

RequestOptions options = new RequestOptions()
                .format(DecodeFormat.PREFER_RGB_565)

其中这个方法实现是:同时配置bitmap和Gif的格式。Gif图配置PREFER_RGB_565 透明底就会变黑底(因为PREFER_RGB_565没有透明通道)。源码如下

  public T format(@NonNull DecodeFormat format) {
    Preconditions.checkNotNull(format);
    return set(Downsampler.DECODE_FORMAT, format)
        .set(GifOptions.DECODE_FORMAT, format);
  }

解决方法:单独配置gif即可

        RequestOptions options = new RequestOptions()
                .format(DecodeFormat.PREFER_RGB_565)
                .set(GifOptions.DECODE_FORMAT,DecodeFormat.DEFAULT)

ok

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值