How to Show Progress Dialog in Android?

Here is source code of the Program to Demonstrate Progress Dialog in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.

The following program demonstrates Progress Dialog which is simply an extension to Android’s Alert Dialog Box.A Progress Dialog Box typically displays a progress bar beneath a message text box. This can be used to keep users informed of the ongoing progress of a time-consuming operation.

Here i have used a Handler class in Android which registers to a thread and provides a simple channel to send data and receive data to the associated thread via its sendMessage() and obtainMessage() . Here i have set the intial progress value to 0 and max value to 100 , u can set them as u like and incremented the progress by 20 by sending message to my Handler handle and check if the current progress of my progress dialog is equal to the max set when this happens we dismiss the dialog.

MainActivity.java

package com.example.progressdialog;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            ProgressDialog progressdialog;
 
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                progressdialog = new ProgressDialog(MainActivity.this);
                progressdialog.setMessage("Loading....");
                progressdialog.setTitle("Please Wait..");
                progressdialog.setProgressStyle(progressdialog.STYLE_HORIZONTAL);
                progressdialog.setProgress(0);
                progressdialog.setMax(100);
                progressdialog.show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        try {
                            while (progressdialog.getProgress() <= progressdialog.getMax()) {
                                Thread.sleep(1000);
                                handle.sendMessage(handle.obtainMessage());
                                if (progressdialog.getProgress() == progressdialog.getMax()) {
                                    progressdialog.dismiss();
                                }
                            }
                        } catch (Exception e) {
                        }
                    }
                }).start();
            }
 
            Handler handle = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    // TODO Auto-generated method stub
                    super.handleMessage(msg);
                    progressdialog.incrementProgressBy(20);
                }
            };
        });
    }
 
    @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;
    }
 
}

Activity_Main.xml

advertisement
advertisement
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="80dp"
        android:text="Launch" />
</RelativeLayout>

Screenshot_2013-11-11-22-53-22

Screenshot_2013-11-11-22-53-28

Sanfoundry Global Education & Learning Series – 100+ Java Android Tutorials.

If you wish to look at all Tutorials, go to Java Android Tutorials.

If you find any mistake above, kindly email to [email protected]

advertisement
advertisement
Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & discussions at Telegram SanfoundryClasses.