从服务器下载图像时如何使用 Volley/ Glide/Picasso 或其他显示进度条

How to show progressbar using Volley/ Glide/Picasso or other , while image downloading from server

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

使用毕加索。

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

使用 Glide

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

您可以创建带有目标ImageView 和进度条的布局。加载 start/end 后,您可以隐藏或显示进度。 其他示例 link

使用滑行试试这个

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);