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 } |