ProgressBar

Course- Android >

We can show the android advance bar exchange box to show the status of work being done e.g. downloading record, investigating status of work and so forth. 

In this case, we are showing the advance exchange for sham document download operation. 

Here we are utilizing android.app.ProgressDialog class to demonstrate the advance bar. Android ProgressDialog is the subclass of AlertDialog class. 

The ProgressDialog class gives techniques to take a shot at advance bar like setProgress(), setMessage(), setProgressStyle(), setMax(), appear() and so forth. The advance scope of Progress Dialog is 0 to 10000. 

How about we see a basic case to show advance bar in android.


ProgressDialog progressBar = new ProgressDialog(this);  
progressBar.setCancelable(true);//you can cancel it by pressing back button  
progressBar.setMessage("File downloading ...");  
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

Let's see a simple example to create progress bar using ProgressDialog class.

activity_main.xml

Drag one button from the pallete, now the activity_main.xml file will look like this:

File: activity_main.xml

<RelativeLayout xmlns:androclass="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/button1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignParentTop="true"  
        android:layout_centerHorizontal="true"  
        android:layout_marginTop="116dp"  
        android:text="download file" />   

RelativeLayout>  

Activity class

Let's write the code to display the progress bar dialog box.

File: MainActivity.java

package com.example.progressbar1;  
import android.app.Activity;  
import android.app.ProgressDialog;  
import android.os.Bundle;  
import android.os.Handler;  
import android.widget.Button;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
public class MainActivity extends Activity {  
    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 = (Button) findViewById(R.id.button1);  
        btnStartProgress.setOnClickListener(new OnClickListener(){  
           @Override  
           public void onClick(View v) {  
            // creating progress bar dialog  
            progressBar = new ProgressDialog(v.getContext());  
            progressBar.setCancelable(true);  
            progressBar.setMessage("File downloading ...");  
            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 filesize   
    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  
    @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;  
    }  
}