Android Progress Dialog is a UI which shows the progress of a task like you want user to wait until the previous lined up task is completed and for that purpose you can use progress dialog. The best example is you see when downloading or uploading any file.
In this tutorial I will demonstrate both the Ring and the Bar style(Horizontal) ProgressDialog component and will also use the special tools like Handler to update the value of the bar format.
ProgressDialog progressDialog = new ProgressDialog(this);
1. setTitle(CharSequence title) – This component is used to set the title of the progress dialog.
// Setting Title progressDialog.setTitle("ProgressDialog");
2. setMessage(CharSequence message) – This component displays the required message in the progress dialog.
// Setting Message progressDialog.setMessage("Loading...");
3. setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) – This is used for setting the horizontal style of the progress dialog.
// Progress Dialog Style Horizontal progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
4. setProgressStyle(ProgressDialog.STYLE_SPINNER) – This is used for setting the spinner style of the progress dialog.
// Progress Dialog Style Spinner progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
5. setMax(int max) – This method sets the maximum value of the progress dialog.
// Progress Dialog Max Value progressDialog.setMax(100);
6. getMax() – This method return the maximum value of the progress dialog, basically this method is used while applying condition over the progress dialog.
// Fetching max value progressDialog.getMax();
7. getProgess() – This returns current progress of the progress dialog in numeric.
// Fetching current progress progressDialog.getProgress();
8. incrementProgressBy(int diff) – This method increments the progress dialog value with the defined value.
// Incremented By Value 2 progressDialog.incrementProgressBy(2);
9. setCancelable(boolean cancelable) – This method has boolean value i.e true/false. If set to false it allows to cancel the dialog box by clicking on area outside the dialog default it is true if method is not used.
// Cannot Cancel Progress Dialog progressDialog.setCancelable(false);
10. dismiss() – This method dismiss the progressdialog.
//Dismiss the dialog progressDialog.dismiss();
Below is the example of Progress Dialog in which the functionality of ProgressDialog is defined over the buttons click. In this example we have used a simple buttons and over that button click the ProgressDialog will appear.
Below you can download code, see final output and step by step explanation of ProgressDialog example in Android Studio.
Step 1: Create a new project and name it ProgressDialogExample.
Step 2: Open res -> layout -> activity_main.xml (or) main.xml and add following code:
Here define two buttons
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="com.example.progessdialogexample.MainActivity" android:elevation="1dp"> <Button android:text=" Click To View Ring Progress Dialog..." android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="171dp" android:id="@+id/button" style="@android:style/Widget.DeviceDefault.Button.Inset" android:textStyle="normal|bold" android:textSize="15sp" android:textColor="@android:color/background_dark" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <Button android:text=" Click To View Progress Dialog..." android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.DeviceDefault.Button.Inset" android:layout_marginTop="49dp" android:textSize="15sp" android:id="@+id/button2" android:textStyle="normal|bold" android:textColor="@android:color/background_dark" android:layout_below="@+id/button" android:layout_centerHorizontal="true" /> </RelativeLayout>
Step 3 : Now open app -> java -> package -> MainActivity.java and add the below code.
In this we added the progress dialog functionality on the button click having onclicklistener. The two buttons both are displaying different type of progress dialog which is set using setProgressStyle i.e spinner or horizontal bar.
package com.example.progessdialogexample; import android.app.ProgressDialog; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { Button b1, b2; ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); b2 = (Button) findViewById(R.id.button2); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setMessage("Loading..."); // Setting Message progressDialog.setTitle("ProgressDialog"); // Setting Title progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // Progress Dialog Style Spinner progressDialog.show(); // Display Progress Dialog progressDialog.setCancelable(false); new Thread(new Runnable() { public void run() { try { Thread.sleep(10000); } catch (Exception e) { e.printStackTrace(); } progressDialog.dismiss(); } }).start(); } }); b2.setOnClickListener(new View.OnClickListener() { Handler handle = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); progressDialog.incrementProgressBy(2); // Incremented By Value 2 } }; @Override public void onClick(View v) { progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setMax(100); // Progress Dialog Max Value progressDialog.setMessage("Loading..."); // Setting Message progressDialog.setTitle("ProgressDialog"); // Setting Title progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // Progress Dialog Style Horizontal progressDialog.show(); // Display Progress Dialog progressDialog.setCancelable(false); new Thread(new Runnable() { @Override public void run() { try { while (progressDialog.getProgress() <= progressDialog.getMax()) { Thread.sleep(200); handle.sendMessage(handle.obtainMessage()); if (progressDialog.getProgress() == progressDialog.getMax()) { progressDialog.dismiss(); } } } catch (Exception e) { e.printStackTrace(); } } }).start(); } }); } }
Output:
Now start the AVD in Emulator and run the App. You will see two button. Click on them and see the different ProgressDialog in android.
Premium Project Source Code:
how can we set when the data load the progress Dialog will dismissed automatically
Nice explaination here.
Handler handle = new Handler() {
public void handleMessage() {
super.handleMessage(android.os.Message.obtain());
dialog.incrementProgressBy(2); // Incremented By Value 2
}
};
handleMessage() may not be called