ProgressBar Android

To display the progress of work being done, the android progress bar dialog box can be displayed. It is mainly used to display the status of activities like downloading a file, analyzing the status of work, etc. The progress dialog for the dummy file download operation is demonstrated in the below example. Here, to show the progress bar, we are using android.app.ProgressDialog class. The AlertDialog class in Android has a subclass named ProgressDialog.

The methods like setProgress(), setMessage(), setProgressStyle(), setMax(), show(), etc are facilitated by the ProgressDialog class to work on progress bars. The Progress Dialog has a progress range of 0 to 10000.

Example: To display a progress bar in android:

ProgressDialog progressBar = new ProgressDialog(this);  
progressBar.setCancelable(true);//you can cancel it by pressing back button  
progressBar.setMessage("Uploading ...");  
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  
progressBar.setProgress(0);//initially progress is 0  
progressBar.setMax(100);//sets the maximum value 100  
progressBar.show();//displays the progress bar

Android Progress Bar Example by ProgressDialog:

In this example, we will create a progress bar using the ProgressDialog class.

activity_main.xml:
In the activity_main.xml file, we will drag one button from the pallet.

Activity class:(File: MainActivity.java)

In the MainActivity.java file, we will write the code to display the progress bar dialog box.

<?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:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity" >
 
   <Button
       android:id="@+id/button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="116dp"
       android:text="Upload" />
 
</RelativeLayout>
 
Activity class:
In the MainActivity.java file, we will write the code to display the progress bar dialog box.
 
File: MainActivity.java:
package com.example.radioapp;
 
import android.app.ProgressDialog;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
   Button btnStartProgress;
   ProgressDialog progressBar;
   private int progressBarStatus = 0;
   private Handler progressBarHandler = new Handler();
   private long fileSize = 0;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       addListenerOnButtonClick();
   }
   public void addListenerOnButtonClick() {
       btnStartProgress = findViewById(R.id.button);
       btnStartProgress.setOnClickListener(new View.OnClickListener(){
 
           @Override
           public void onClick(View v) {
               // creating progress bar dialog
               progressBar = new ProgressDialog(v.getContext());
               progressBar.setCancelable(true);
               progressBar.setMessage("Work in Progress ...");
               progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
               progressBar.setProgress(0);
               progressBar.setMax(100);
               progressBar.show();
               //reset progress bar and filesize status
               progressBarStatus = 0;
               fileSize = 0;
 
               new Thread(new Runnable() {
                   public void run() {
                       while (progressBarStatus < 100) {
                           // performing operation
                           progressBarStatus = doOperation();
                           try {
                               Thread.sleep(1000);
                           } catch (InterruptedException e) {
                               e.printStackTrace();
                           }
                           // Updating the progress bar
                           progressBarHandler.post(new Runnable() {
                               public void run() {
                                   progressBar.setProgress(progressBarStatus);
                               }
                           });
                       }
                       // performing operation if file is downloaded,
                       if (progressBarStatus >= 100) {
                           // sleeping for 1 second after operation completed
                           try {
                               Thread.sleep(1000);
                           } catch (InterruptedException e) {
                               e.printStackTrace();
                           }
                           // close the progress bar dialog
                           progressBar.dismiss();
                       }
                   }
               }).start();
           }//end of onClick method
       });
   }
   // checking how much file is downloaded and updating the file size
   public int doOperation() {
       //The range of ProgressDialog starts from 0 to 10000
       while (fileSize <= 10000) {
           fileSize++;
           if (fileSize == 1000) {
               return 10;
           } else if (fileSize == 2000) {
               return 20;
           } else if (fileSize == 3000) {
               return 30;
           } else if (fileSize == 4000) {
               return 40; // you can add more else if
           }
        /* else {
               return 100;
           }*/
       }//end of while
       return 100;
   }//end of doOperation
}

Output 1:

Output 2: