大飞

大飞 关注TA

挑战一切!

大飞

大飞

关注TA

挑战一切!

  •  世界的顶端
  • 混口饭吃
  • 写了333,609字

该文章投稿至Nemo社区   Android  板块 复制链接


关于Glide的几个知识点

发布于 2017/09/06 22:54 1,817浏览 0回复 2,340

1.glide 默认图片编码是使用PREFER_RGB_565 所以占用内存很小,但是可能会导致图片失真,变绿

  对于不是很大的图片可以设置为PREFER_ARGB_8888,如下使用

public static void display(Context context, ImageView imageView, String url) {
if (imageView == null) {
throw new IllegalArgumentException("argument error");
}
Glide.with(context).load(url)
.asBitmap()
.format(DecodeFormat.PREFER_ARGB_8888)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.mipmap.img_one_bi_one)
.error(R.mipmap.img_one_bi_one)
.into(imageView);
}

  2.等比例加载图片


/**
* 自适应宽度加载图片。保持图片的长宽比例不变,通过修改imageView的高度来完全显示图片。
*/
public static void loadIntoUseFitWidth(Context context, final ImageView imageView,final String imageUrl ) {
Glide.with(context)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener() {
@Override
public boolean onException(Exception e, String model, Target target, boolean isFirstResource) {
return false;
}

@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target target, boolean isFromMemoryCache, boolean isFirstResource) {
if (imageView == null) {
return false;
}
if (imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
}
ViewGroup.LayoutParams params = imageView.getLayoutParams();
int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
float scale = (float) vw / (float) resource.getIntrinsicWidth();
int vh = Math.round(resource.getIntrinsicHeight() * scale);
params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
imageView.setLayoutParams(params);
return false;
}
})
.placeholder(R.mipmap.img_one_bi_one)
.error(R.mipmap.img_one_bi_one)
.into(imageView);
}

3.适当的时候清除缓存

在主线程执行Glide.get(getApplicationContext()).clearMemory();

比如我在activity和fragmentoncreate加入 和在recyclerview滚动结束后加入大大的释放了内存

本文标签
 {{tag}}
点了个评