Glide使用心得——加载图片出现浅绿色背景问题和Glide加载完成的监听设置


目前来说做Android开发,就图片加载框架来说,主流的都有Picasso、Glide、Fresco、Universal-Image-Loader等。

介绍:

Picasso:主要是将网络缓存那块交给OkHttp来处理,全尺寸缓存(只缓存一种)

Glide:缓存的是跟ImageView尺寸相同的(即56*56和128*128是两个缓存)

Fresco:将图片放到Ashmem区,图片不显示时内存占用自动释放,APP更加流畅

Universal-Image-Loader:很好地解决了图片错乱,OOM等问题

今天主要来说一下在开发中使用Glide的两个小问题:

1.使用Glide加载图片的时候会出现浅绿色的背景,一般图片还好,看不太明显,但是对于无背景图片的话就显得特别扎眼。有两种解决方案:

其一:Glide.with(context).load(url)
           .diskCacheStrategy(DiskCacheStrategy.SOURCE)//是将图片原尺寸缓存到本地
           .into(imageview);

其二:如果加上这一句代码图片仍然没有解决,可以将Bitmap的格式改为ARGB_8888
           首先创建一个 GlideConfiguration类去实现GlideModule,修改Bitmap的格式
           publicclassGlideConfigurationimplementsGlideModule{ 
        @Override

publicvoidapplyOptions(Context context, GlideBuilder builder) {                    

 builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); 
           
              @Override

      publicvoidregisterComponents(Context context, Glide glide) { } 
         }
   然后在AndroidManifest.xml中加入:
           

2.设置Glide加载完成监听

baseGlide(object, url).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).placeholder(defID).error(errID)

.into(new GlideDrawableImageViewTarget(imageview) {
    @Override
    public void onResourceReady(GlideDrawable drawable, GlideAnimation anim) {
        super.onResourceReady(drawable, anim);
        //图片加载完成的操作
    }

    @Override
    public void onLoadFailed(Exception e, Drawable errorDrawable) {
        super.onLoadFailed(e, errorDrawable);
        //图片加载失败的操作
    }
}
);

Glide中还有很多很好用的功能,这次就先提及这两个,希望对大家能有所帮助。