I want to show a progress bar showing percentage completed while my app is downloading some big files over the internet.
something like this :

- 1,978
- 23
- 33

- 79
- 2
- 8
-
this is the customized one. – Chintan Soni Dec 20 '13 at 03:54
-
Have you made this @Hieu le – Manu May 07 '14 at 12:37
4 Answers
You can acheive this by using a progress bar in two ways.
1.Add a progress bar(the circle one) to act as a loading indicator.
To do this simple show a progress bar on start of the image download thread progressbar.show();
After the download is finished dismiss the progressbar progressbar.dismiss();
You can use AsyncTask for this
Refer this link
2.Add a progress bar(the rectangular bar type) to show the progress of the download or what ever it may be.
I would recomend you to go through this link..
xml file code:
<ProgressBar
android:id="@+id/xml_reg_progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/common_left_right_margin"
android:layout_marginRight="@dimen/common_left_right_margin"
android:layout_marginTop="@dimen/reg_ph_linear_top_margin"
/>
you can change progressbar style as per your requirement.
this is java file code:
protected static final int TIMER_RUNTIME = 180000; // in ms --> 10s
private ProgressBar progressTimer;
public void startTimer() {
final Thread timerThread = new Thread() {
@Override
public void run() {
mbActive = true;
try {
int waited = 0;
while (mbActive && (waited < TIMER_RUNTIME)) {
sleep(1000);
if (mbActive) {
waited += 1000;
updateProgress(waited);
}
}
} catch (InterruptedException e) {
// do nothing
} finally {
onContinue();
}
}
};
timerThread.start();
}
Handler handler = new Handler();
private void onContinue() {
handler.post(new Runnable() {
@Override
public void run() {
txtCallContactUsNumber
.setText(CommonVariable.CallForSupporMessage
+ contactInfo.MobileNo);
}
});
}
public void updateProgress(final int timePassed) {
if (null != progressTimer) {
// Ignore rounding error here
final int progress = progressTimer.getMax() * timePassed
/ TIMER_RUNTIME;
handler.post(new Runnable() {
@Override
public void run() {
Log.i("timePassed", "timePassed=" + timePassed);
DateFormat formatter = new SimpleDateFormat("mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timePassed);
String timer = formatter.format(calendar.getTime());
formatter.setTimeZone(java.util.TimeZone.getTimeZone("GMT"));
txtTimerCount.setText(formatter.format(timePassed));
}
});
progressTimer.setProgress(progress);
}
}
in my code this will call 1 second and get progress increment every 1 second.

- 10,966
- 5
- 25
- 51
Check these links:
http://examples.javacodegeeks.com/android/core/ui/progressdialog/android-progressdialog-example/
Clearly, explains how to implement the ProgressBar
or ProgressDialog
Here's a good library for customized ProgressDialog:

- 1
- 1

- 24,761
- 25
- 106
- 174
-
ProgressDialog has been deprecated since API Level O https://developer.android.com/reference/android/app/ProgressDialog.html – Dika Apr 03 '18 at 17:19
You should be using Progress bar. I assume for downloading file you are using Asynctask, if you are not then i recommend you to do that. Async task has has two more cool methods apart from the
doInBackground()
They are
preExecute and postExecute
You can override these method, now create a simple progress bar and start it in preExecute and end it in postExecute method. Here is the working LINK

- 1,978
- 23
- 33