Glide图片加载回调

1、方法一:设置图片中监听

  使用的是SimpleTarget类,他继承自BaseTarget,需要重写onResourceReady方法,onResourceReady方法表示加载完成后的回调,下面列举了返回为Drawable和Bitmap两种形式的回调,除了支持回调onResourceReady,还支持如下回调:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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表示加载图片完成后回调。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
            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、方法三:设置图片中监听

        如果说方法一、方法二回调的接口数偏少,不能完全满足要求,那么方法三可谓丰富,用包含了如下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        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);
                    }
                })
 

 以上三种方法第一种最常用,后面两种方法不太常用,尤其是第三种,回调方法特别多

 

下面看看项目中的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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("走程序", "图图下载完了没?---失败");
                                }
                            }
                    );<br><br>leilei tua

  这样就可以处理下载完图片的逻辑了

posted @   WidgetBox  阅读(6837)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示