Android progress bar example

In Android, progress bar is useful to tell user that the task is takes longer time to finish.

In this tutorial, we show you how to display a progress bar dialog to tell user that your task is running, and also how to increase the progress bar status until the task is completed.

Note
Refer to this Android ProgressBar JavaDoc for detail explanation.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1. Add a Button

Open “res/layout/main.xml” file, just add normal button for demonstration.

File : res/layout/main.xml


<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStartProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Download File" />
    
</LinearLayout>

2. Code Code

The key to use progress bar is using “Thread” to run your time consume task and another “Thread” to update the progress bar status accordingly. Read the code’s comment, it should be self-explanatory.

File : MyAndroidAppActivity.java


package com.mkyong.android;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

	Button btnStartProgress;
	ProgressDialog progressBar;
	private int progressBarStatus = 0;
	private Handler progressBarHandler = new Handler();

	private long fileSize = 0;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		addListenerOnButton();

	}

	public void addListenerOnButton() {

		btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
		btnStartProgress.setOnClickListener(
                 new OnClickListener() {

		   @Override
		   public void onClick(View v) {

			// prepare for a progress bar dialog
			progressBar = new ProgressDialog(v.getContext());
			progressBar.setCancelable(true);
			progressBar.setMessage("File downloading ...");
			progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			progressBar.setProgress(0);
			progressBar.setMax(100);
			progressBar.show();

			//reset progress bar status
			progressBarStatus = 0;
				
			//reset filesize
			fileSize = 0;
				
			new Thread(new Runnable() {
			  public void run() {
				while (progressBarStatus < 100) {

				  // process some tasks
				  progressBarStatus = doSomeTasks();

				  // your computer is too fast, sleep 1 second
				  try {
					Thread.sleep(1000);
				  } catch (InterruptedException e) {
					e.printStackTrace();
				  }

				  // Update the progress bar
				  progressBarHandler.post(new Runnable() {
					public void run() {
					  progressBar.setProgress(progressBarStatus);
					}
				  });
				}

				// ok, file is downloaded,
				if (progressBarStatus >= 100) {

					// sleep 2 seconds, so that you can see the 100%
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}

					// close the progress bar dialog
					progressBar.dismiss();
				}
			  }
		       }).start();

	           }

                });

        }

	// file download simulator... a really simple
	public int doSomeTasks() {

		while (fileSize <= 1000000) {

			fileSize++;

			if (fileSize == 100000) {
				return 10;
			} else if (fileSize == 200000) {
				return 20;
			} else if (fileSize == 300000) {
				return 30;
			}
			// ...add your own

		}

		return 100;

	}

}

P.S The "doSomeTasks" method is just a file size download simulator, just replace this method with your long running task.

3. Demo

Run the application.

1. Result, a single button.

android progress bar demo1

2. Click on the button, it will prompt a "progress bar dialog" to show the current download progress.

android progress bar demo2

3. Task is completed, progress bar will show 100%, and close automatically.

android progress bar demo3

Download Source Code

Download it - Android-ProgressBar-Example.zip (15 KB)

References

  1. Android ProgressBar Example
  2. Android ProgressDialog JavaDoc
  3. Another Android ProgressBar Example

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
lokendra
Guest
lokendra

how can we fill progress on circular progress bar programatacly

Praveen Aanjna
Guest
Praveen Aanjna

for more solution visit this

http://www.freedu.in/quiz

hlman
Guest
hlman

thanks for the tutorial..

hlman
Guest
hlman

Very thanks to you..
Nice tutorial

Kim
Guest
Kim

This is extremely useful. One question: is there a way to make the progressBar “modal”. Right now, in my implementation of it, if the user taps outside the progressBar, it disappears and the main activity returns.

yagnesh
Guest
yagnesh

use function of progressDialog setCancelable(false)

Sovankiry
Guest
Sovankiry
Hyder
Guest
Hyder

Thanks. I want to get battery status in ProgressBar. I searched in web but no code is available.
Thanks for tell how to use progress bar.

houssemzaier
Guest
houssemzaier

Simple nice and clear !
Thanks Man

Pavan Kumar
Guest
Pavan Kumar
Bharat
Guest
Bharat

Good that you watermark your images. Some guy has plagiarized your article on his blog without giving credit : http://androidforbeginner.blogspot.com/2012/11/android-progress-bar-example.html

Ahsan
Guest
Ahsan
mayank
Guest
mayank

sir,can we hide data from sd card. when we will put our sd card to other phone it show blank data.can it possible in android…

Kulbhushan
Guest
Kulbhushan

in do some task while is necessory??

trackback
??????Android???????(ProgressBar) | ???

[…] Android progress bar example […]

Mahbubur R Aaman
Guest
Mahbubur R Aaman

Excellent Tutorial. Want a tutorial on ProgressBar based on DialogFragment.

bbb
Guest
bbb

no u cant…

monty
Guest
monty

Nice tutorial but it will work when i rotate the device.i am working on spinner progress dialog ,it works fine in any one mode (land or port) but after rotating the device ,it dismiss, so does it will work.

Plugie
Guest
Plugie

Why doesn’t the progress reset if I call the second time ?

Ganesh
Guest
Ganesh

Thanks it is very usefull for me now….
Thank once again.

trackback
HTML und CSS App redirect - Android-Hilfe.de

[…] […]

PRATHAP
Guest
PRATHAP

Thank you very much…it is very help me.
But i want to play a local video with a upload button , help me

Stefano
Guest
Stefano

Hi, thank you very much for this example.

Now: suppose I want to display a new activity after the file download is complete (e.g.. after progress bar dismissal): what code should I insert after “}).start();” and before the .startActivity of a new Intent ?

Thanks

eduardo
Guest
eduardo

This is a progressdialog, not a progressbar! They are two different things!

Santosh
Guest
Santosh

Thanks helps a lot….

Vishnu Suresh
Guest
Vishnu Suresh

Thanks for the post.it helped me a lot.Keep posting more…

trackback
How to Develop Android Apps | Kindle Android Apps and Covers

[…] which objects were touched, what is enabled or disabled. A nice custom progress bar tutorial see hereMake it UniqueRespect your users and offer them a unique visual experience with a clean presentation […]

arkiver
Guest
arkiver

If I have to insert a Toast which displays, “file downloaded successfully”. Which is a good place to insert that Toast in the above code ?

yagnesh
Guest
yagnesh

after it completes 100 in progressStatus

Viet Cuong
Guest
Viet Cuong

Thank you very much :X

chathuranga
Guest
chathuranga

thanks a lot!!! very useful. thanks again!

Salim
Guest
Salim

Thank you very much…it help me