A ProgressDialog is used for progress and  a text message .When we want the user to wait while some processing is taking place ,then we can use these dialogs. Example when some downloading is taking place we show a ProgressDialog until its complete.

It has two styles :

STYLE_HORIZONTAL-Creates a ProgressDialog with a horizontal progress bar.

STYLE_SPINNER-Creates a ProgressDialog with a circular, spinning progress bar.

Syntax:

ProgressDialog progressDialog;
ProgressDialog.show(  context,  "Title  of dialog",  "Loading (message)”); progressDialog.setCancelable(false);//can’t be cancelled on back press progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setProgress(100); // sets progress
incrementProgressBy(100);//int value used to progress ahead
progressDialog.show();//show dialog

We can implement a ProgressDialog using the follwing  three ways :

1. Using with handler

public class MainActivity extends Activity {
    @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ProgressDialog progressDialog = ProgressDialog.show(MainActivity.this, "Title ", "Loading...");                progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);         progressDialog.setCancelable(false);
    progressDialog.show();
    Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {                                     @Override
                                     public void run() {
                                          // this code runs after 4 sec                                           progressDialog.dismiss();                                                                                   }                         }, 4000);
         }
}

2. Using thread

public class SecondActivity extends Activity{
            @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ProgressDialog dialog=new ProgressDialog(SecondActivity.this);
        dialog.setTitle("Loading..");
        dialog.setMessage("Downloading source..");
        dialog.setProgress(100);
        dialog.setMax(5000);
        dialog.show();
        Thread splashThread = new Thread() {
                                    @Override
                                    public void run()
                                    {
                                                try
                                                {
                                                     sleep(5000);
                                                } catch (Exception e)

                                                {
                                                          e.printStackTrace();
                                                }
                                                finally {
                                                            finish();
                                                }
                                    }
                        };          /** END OF THREAD */
                        splashThread.start();
            }
}

3. Using async tasks

private class Operation extends AsyncTask<
String, Void, String>
{           @Override          
 protected String doInBackground(String... params)
{ // code to be executed in background thread
                for(int i=0;i<5;i++) {
 
                   try {       
                  Thread.sleep(1000);
                    } catch (InterruptedException e)
                 {      // TODO Auto-generated catch block  
                      e.printStackTrace();    
                 }             
            }  
               return "Executed";
           }  
              @Override  
         protected void onPostExecute(String result)
 { // runs on UI thread and updated UI after executing doInBackground
                progressDialog.dismiss();
           }
          @Override
           protected void onPreExecute() {
 ProgressDialog progressDialog = ProgressDialog.show(MainActivity.this, "Title ", "Loading...");
               progressDialog.show();
           }
           @Override
          protected void onProgressUpdate(Void... values) {
 // runs on UI thread and starts first
           }
    
}

Advantageof using handler is that it does’nt interfere with UI thread and are better than threads.

Whereas, Async Tasks are suitablr for  long task having to communicate with main thread..

Hence , now you can implement ProgressDialog in three different ways  .You can also refer to ProgressDialogDemo project attached as reference.

ProgressDialogDemo

Screenshot: