目前来说做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中还有很多很好用的功能,这次就先提及这两个,希望对大家能有所帮助。