Glide图片加载回调
1、方法一:设置图片中监听
使用的是SimpleTarget类,他继承自BaseTarget,需要重写onResourceReady方法,onResourceReady方法表示加载完成后的回调,下面列举了返回为Drawable和Bitmap两种形式的回调,除了支持回调onResourceReady,还支持如下回调:
Glide.with(mContext) .load("url") .into(new SimpleTarget<GlideDrawable>() { @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { //加载完成后的处理 imageView.setImageDrawable(resource); } }); Glide.with(mContext) .load("url") .asBitmap() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { //加载完成后的处理 imageView.setImageBitmap(resource); } });
2、方法二:加载过程中监听
和上面的比较类似,也包含onResourceReady为Drawable、Bitmap两种形式。RequestListener表示请求过程中间的监听,他仅有这两个回调方法:onException方法表示加载异常,即请求图片发生异常回调;onResourceReady表示加载图片完成后回调。
Glide.with(mContext) .load("url") .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } }) .into(imageView); Glide.with(mContext) .load("url") .asBitmap() .listener(new RequestListener<String, Bitmap>() { @Override public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Bitmap resource, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } }) .into(imageView); }
3、方法三:设置图片中监听
如果说方法一、方法二回调的接口数偏少,不能完全满足要求,那么方法三可谓丰富,用包含了如下方法:
Glide.with(mContext) .load("url") .into(new GlideDrawableImageViewTarget(imageView) { @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) { super.onResourceReady(resource, animation); } }); Glide.with(mContext) .load("url") .asBitmap() .into(new BitmapImageViewTarget(imageView) { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { super.onResourceReady(resource, glideAnimation); } }) ;
以上三种方法第一种最常用,后面两种方法不太常用,尤其是第三种,回调方法特别多
下面看看项目中的用法
Glide.with(ThinksnsActivity.this.getApplicationContext()).load(img_url).diskCacheStrategy(DiskCacheStrategy.ALL).into( new GlideDrawableImageViewTarget(iv_launcher) { @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { super.onResourceReady(resource, glideAnimation); Log.i("走程序", "图图下载完了"); PreferenceUtils.put("launcher_pic_is_download", launcher_pic_is_download); } @Override public void onLoadFailed(Exception e, Drawable errorDrawable) { Log.i("走程序", "图图下载完了没?---失败"); } } );
leilei tua
这样就可以处理下载完图片的逻辑了