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