Android Glide图片加载框架使用过程中遇到的问题总结

目前android开发中常用的图片框架主要集中在ImageLoader,Picasso,Fresco,Glide,各框架之间的优劣网上有很多分析文章,在此不做单独分析,本文主要介绍在开发过程中使用Glide的时出现的问题,以及对应的解决方法。有关Glide的相关介绍推荐郭神的文章——Android图片加载框架最全解析

1.加载图片变绿

加载图片变绿,主要原因是图片压缩所致,使用webp显示图片时出现可能性也较高
解决方法:

  • 加载原图

    在使用Glide加载图片时,设置.diskCacheStrategy(DiskCacheStrategy.SOURCE)方法,加载原图

Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(iv_img);  
  • 设置Glide加载图片的编码格式

    Glide默认的bitmap编码格式为RGB565,我们可以通过修改默认的编码格式,来实现加载高清图片
    首先,创建GlideConfiguration实现GlideModule,修改Glide的编码格式为ARGB_8888

public class GlideConfiguration implements GlideModule{  
    @Override  
    public void applyOptions(Context context, GlideBuilder builder) {  
        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);  
    }  

    @Override  
    public void registerComponents(Context context, Glide glide) {  

    }  
} 

然后在AndroidManifext.xml文件中添加如下设置即可

<meta-data  
    android:name="com.xxx.xxx.GlideConfiguration"  
    android:value="GlideModule"/> 

2.与TouchImageView混合使用不显示图像

当我们使用开源缩放图片框架TouchImageView的时候,引入Glide导致图片不显示问题,这个问题在Glide的Issue#135上有说明,具体修改方法如下:

Glide.with(context).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
            yourImageView.setImageBitmap(resource);
        }
    });

3.混淆没有添加添加导致Crash

在引入Glide的时候,如果使用了混淆,而没有配置相应的Glide混淆内容,会导致java.lang.IllegalArgumentException: Unable to find GlideModule to find GlideModule implementation异常
解决方法是添加混淆文件,同时需要注意的是,如果单独配置了GlideModule,实现了GlideModule接口的类不能混淆,因为manifest中指明了包名+类名的,混淆了就找不到了

#Glide其他混淆信息 …
-keep public class * implements  com.bumptech.glide.module.GlideModule

后续遇到的问题,会持续在此记录,有不同的问题欢迎指正。

猜你喜欢

转载自blog.csdn.net/lhy349/article/details/79727897