Glide是Android加载图片的一个框架。
常用加载图片到imageView:Glide.with(this).load(url).into(ImageView imageview).
当加载失败时一般情侣下会默认调用Glide.error()方法,只需要在error方法中放一个默认图片即可,但当我们需要设置的默认图片是网络图片或者是手机本地图片时,这个方法行不通。
解决办法:Glide为我们提供了listener()方法,onException是图片加载异常回调,将它设置为false时会调用Glide默认的error方法,需要将它设置为true,然后调用我们自己设置的图片加载异常处理,onResourceReady是加载成功的处理。
1、首先给定一个你要获取图片路径
final String path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"Anycctv"+File.separator+device.deviceUid+".jpg";//这是我自己的本地路径,换成你自己的
2、使用listener方法进行监听
DrawableTypeRequest<Uri> request = Glide.with(this).load(uri);
request.listener(new RequestListener<Uri, GlideDrawable>() {
@Override
public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
dismissLoading();
//showToast("ex="+e.getMessage());
Glide.with(UlifeplusApp.app).load(path)
.placeholder(mIvPicture.getDrawable())
.signature(new StringSignature(signature))
.crossFade(300)
.error(R.drawable.ic_fg_device_item)
.into(mIvPicture);
return true;
}
@Override
public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
dismissLoading();
//showToast("succ");
return false;
}
})
.crossFade()
.override(Utils.getRealSize(this).x, getResources().getDimensionPixelSize(R.dimen.w_480px))
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.into(mIvPicture);
小礼物走一走,来简书关注我