Progress dialog box is mostly used component in all User Interfaces, when you want to display the progress of a task that is taking up some time. In this tutorial I am explaining how to show Progress Dialog Box in android to let the user know the progress. In this example we will use Thread to process the task in background and after completion of the task progress dialog will be closed.
Create Project:
Open eclipse IDE and create an android application project with name ProgressDialogBox and the package name com.tricksofit.progressdialogbox. Create a class MainActivity as main intent to start Activity and main layout activity_main.
Our manifest file will look like as below.
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tricksofit.progressdialogbox" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.tricksofit.progressdialogbox.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Main Layout:
Open main layout file and paste the below code.
activity_main.xml <?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/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ProgressDialog" /> </LinearLayout>
When you paste above code you may open graphical layout editor to preview User Interface.
Main Activity:
Now we have to write the code of the application to show the progress dialog box using ProgressDialog class. Now assume the task will take around some seconds and to do the task we will use thread. It takes the runnable object and process the task and after completion of the task progress dialog will dismiss.
MainActivity.java package com.tricksofit.progressdialogbox; import android.os.Bundle; import android.app.Activity; import android.app.ProgressDialog; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button progrssBtn = (Button) findViewById(R.id.button1); progrssBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { progressDialog = ProgressDialog.show(MainActivity.this, "Please wait ...", "Task in progress ...", true); progressDialog.setCancelable(true); new Thread(new Runnable() { @Override public void run() { try { //Do some stuff that take some time... Thread.sleep(3000); // Let's wait for some time } catch (Exception e) { } progressDialog.dismiss(); } }).start(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Run Application:
When you click ProgressDialog button on application you will see the dialog box will pop up with the message “Task in progress …”.
Progress Dialog Box in Bar style:
To show the Progress Dialog Box in Bar style need to use of some special tools like Handler to update the value of the bar format. For example we have a task that need some seconds to complete so after every interval we will update the progress using Handler and Runnable.
So for Bar style progress dialog box our Main Activity code will be as below:
MainActivity.java package com.tricksofit.progressdialogbox; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.app.ProgressDialog; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { ProgressDialog progressDialog; Handler _handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); _handler = new Handler(); Button progrssBtn = (Button) findViewById(R.id.button1); progrssBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { progressBarDialog(); } }); } public void progressBarDialog() { progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("Please wait ..."); progressDialog.setMessage("Task in progress ..."); progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL); progressDialog.setProgress(0); progressDialog.setMax(10); progressDialog.show(); new Thread(new Runnable() { @Override public void run() { try { // some stuff to do the task... while (progressDialog.getProgress() <= progressDialog.getMax()) { Thread.sleep(1000); _handler.post(new Runnable() { public void run() { progressDialog.incrementProgressBy(1); } }); if (progressDialog.getProgress() == progressDialog.getMax()) { progressDialog.dismiss(); } } } catch (Exception e) { e.printStackTrace(); } } }).start(); } }
And when you run the application the progress dialog box will look like as below: