-1

I want to show progress bar(showing percentage) using Volley/ Glide/Picasso or other network call libraries. There are a lot of solutions but not by the Volley/ Glide/Picasso, how can I get file image size before downloading and with time remaining size so that I can show with the progress bar.

Use Picasso.

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

using Glide

 GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
Zoe
  • 27,060
  • 21
  • 118
  • 148
M.ArslanKhan
  • 3,640
  • 8
  • 34
  • 56

2 Answers2

2

Try this using glide

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

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

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

use like this

 new DownloadImage(imamgeview,progressBar).execute(url);
Goku
  • 9,102
  • 8
  • 50
  • 81
0

You can create layout with the target ImageView and progress bar. After load start/end you can hide or show your progress. Other examples link

Leonid Veremchuk
  • 1,952
  • 15
  • 27