【问题标题】:How to show progressbar using Volley/ Glide/Picasso or other , while image downloading from server如何在从服务器下载图像时使用 Volley/Glide/Picasso 或其他显示进度条
【发布时间】:2023-04-06 17:52:01
【问题描述】:

我想使用 Volley/Glide/Picasso 或其他网络调用库显示进度条(显示百分比)。有很多解决方案,但不是 Volley/Glide/Picasso,如何在下载前获取文件图像大小和剩余时间大小,以便我可以显示进度条。

使用毕加索。

Picasso.with(MainActivity.this).load(server_url).into(image_download);

使用滑翔

 GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);

【问题讨论】:

    标签: android android-volley picasso android-glide image-loading


    【解决方案1】:

    使用滑行试试这个

    progressBar = (ProgressBar)findViewById(R.id.progressBar);
    progressBar.setVisibility(View.VISIBLE);
            Glide.with(context)
                    .load(imageUrl)
                    .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(imageview);
    

    Picasso

    Picasso.with(context)
                .load(imageUrl)
                .into(imageview, new com.squareup.picasso.Callback() {
                            @Override
                            public void onSuccess() {
                                //do something when picture is loaded successfully
                                 progressBar.setVisibility(View.GONE);
    
                            }
    
                            @Override
                            public void onError() {
                                //do something when there is picture loading error
                            }
                        });
    

    AsyncTask

    public class DownloadImage extends AsyncTask<String, Integer, Bitmap> {
        ImageView bmImage;
        ProgressBar progressBar;
    
        public DownloadImage(ImageView bmImage, ProgressBar progressBar) {
            this.bmImage = bmImage;
            this.progressBar = progressBar;
        }
    
        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.d("Error", e.getStackTrace().toString());
    
            }
            return mIcon11;
        }
    
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            progressBar.setProgress(values[0]);
        }
    
        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }
    

    这样使用

     new DownloadImage(imamgeview,progressBar).execute(url);
    

    【讨论】:

    • 我需要在下载时显示文件大小,例如“下载 75/100 %
    • @M.ArslanKhan 比你有。使用 asynctask 从 url 加载图像
    • 但我的问题还是一样,我如何在下载时通过 Picasso 获取文件大小,以便在下载时显示和更新
    • 非常感谢,我怎样才能在 AsyncTask 中获得图像的确切大小,例如显示 100kb/1700kb 下载
    • @M.ArslanKhan 使用它来查找图像的大小stackoverflow.com/a/37365690/7666442
    【解决方案2】:

    您可以使用目标 ImageView 和进度条创建布局。加载开始/结束后,您可以隐藏或显示您的进度。 其他例子link

    【讨论】:

    • 下载时需要显示文件大小(比如显示百分比)
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2011-03-02
    • 2016-05-20
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多