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);
小禮物走一走,來簡書關注我