问题一: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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐