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
這樣就可以處理下載完圖片的邏輯了
