使用Glide库设置完成图像加载后进度条的可见性

 苏汉文健康_706 发布于 2022-12-19 16:19

嗨我想要一个图像的进度条,它将在图像加载时显示,但是当图像加载完成时我想将它设置为消失.早些时候,我正在使用Picasso库.但我不知道如何将它与Glide库一起使用.我知道有一些资源就绪功能,但我不知道如何使用它.谁能帮我?

毕加索图书馆代码

Picasso.with(mcontext).load(imgLinkArray.get(position).mUrlLink)
       .into(imageView, new Callback() {
           @Override
           public void onSuccess() {
               progressBar.setVisibility(View.GONE);
           }

           @Override
           public void onError() {
           }
        })
;

现在我如何用Glide做到这一点?

Glide.with(mcontext).load(imgLinkArray.get(position).mUrlLink)
     .into(imageView);

我可以通过Glide加载图像,但是progressBar.setVisibility(View.GONE);如果图像被加载,我怎么能在代码中写一些东西呢?

6 个回答
  • 问题相当陈旧,我不知道在那些时候滑行的情况是什么,但是现在可以用听众轻松完成(不像选择的答案中提出的那样正确).

    progressBar.setVisibility(View.VISIBLE);
    Glide.with(getActivity())
         .load(args.getString(IMAGE_TO_SHOW))
         .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) {
                 progressBar.setVisibility(View.GONE);
                 return false;
             }
         })
         .into(imageFrame)
    ;
    

    如果想要自己处理动画之类的东西,则返回true;如果想要滑动以处理它们,则返回false.

    2022-12-19 16:19 回答
  • 上面的解决方案也适用于我,但是当我使用asBitmap()下载图像时.这是行不通的.

    我们需要使用BitmapImageViewTarget

    Glide.with(this) .load(imageURL)
     .asBitmap()
     .placeholder(R.drawable.bg)
     .into(new BitmapImageViewTarget(imageView) {
                @Override
                public void onResourceReady(Bitmap  drawable, GlideAnimation anim) {
                    super.onResourceReady(drawable, anim);
                    progressBar.setVisibility(View.GONE);
                }
            });
    

    2022-12-19 16:22 回答
  • 在例外中再次显示条件 ProgressBar

     Glide.with(context)
        .load(image_url)
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                if(e instanceof UnknownHostException)
                    progressBar.setVisibility(View.VISIBLE);
                return false;
            }
    
            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }
        })
        .into(imageView);
    

    2022-12-19 16:22 回答
  • 我的回答是基于过时的API.请参阅此处获取最新答案.

    2022-12-19 16:22 回答
  • 不建议使用GlideDrawable,请使用简单的Drawable

    RequestOptions requestOptions = new RequestOptions();
    requestOptions.placeholder(R.drawable.placeholder);
    requestOptions.error(R.drawable.error);
    
    Glide.with(getContext())
                     .setDefaultRequestOptions(requestOptions)
                     .load(finalPathOrUrl)
                     .listener(new RequestListener<Drawable>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                                progressBar.setVisibility(View.GONE);
                                return false;
                            }
    
                            @Override
                            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                                progressBar.setVisibility(View.GONE);
                                return false;
                            }
                        })
                     .into(mImageView);
    

    2022-12-19 16:22 回答
  • 如果你想在KOTLIN中这样做,你可以尝试这样:

        Glide.with(context)
                .load(url)
                .listener(object : RequestListener<Drawable> {
                    override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
                        //TODO: something on exception
                    }
                    override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
                        Log.d(TAG, "OnResourceReady")
                        //do something when picture already loaded
                        return false
                    }
                })
                .into(imgView)
    

    2022-12-19 16:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有