Welcome to Android ProgressBar Example. Today we’ll implement android ProgressBar
in our application. There are two types of progress bars : Horizontal and Circular. We’ll create both of these progress bar in android application.
Android ProgressBar
Android ProgressBar is a graphical view indicator that shows some progress. Android progress bar displays a bar representing the completing of the task. Progress bar in android is useful since it gives the user an idea of time to finish its task.
Using a ProgressBar
is a good user experience practice since it displays the status of progress of the given task (such as downloading an image) to the user.
Android ProgressBar attributes
Some important attributes used to describe a ProgressBar
are given below.
android:max
: We can set the maximum value of the ProgressBar using this attribute. By default the progress bar maximum value is 100android:indeterminate
: A boolean value is set depending on whether the time is determinate or not. Setting this attribute to false would show the actual progress. Else if it’s set to true a cyclic animation is displayed to show that progress is happeningandroid:minHeight
: It’s used to set the height of the ProgressBarandroid:minWidth
: It’s used to set the width of the ProgressBarandroid:progress
: It’s used to set the number by which the progress bar value will be incrementedstyle
: By default the progress bar will be displayed as a spinning wheel. If we want it to be displayed as a horizontal bar, we need to set the attribute as : style=”?android:attr/progressBarStyleHorizontal”
In this tutorial we’ll be creating a ProgressBar and increment its values by updating inside a thread. We’ll make the thread to sleep for 200 milliseconds after incrementing the values to show the progress slowly.
Android Progress Bar Example Project Structure
This project consists of a single Activity and layout that contains both the type of Progress Bar.
Android Progress Bar Code
The activity_main.xml contains a RelativeLayout as the parent view which contains a Horizontal ProgressBar and a Circular one along with a TextView to display the progress in numeric terms.
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="23dp" android:layout_marginTop="20dp" android:indeterminate="false" android:max="100" android:minHeight="50dp" android:minWidth="200dp" android:progress="1" /> <ProgressBar android:id="@+id/progressBar_cyclic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="50dp" android:minWidth="50dp" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/progressBar" android:layout_below="@+id/progressBar"/> </RelativeLayout> |
In the above layout, the horizontal progress bar values are updated by one as set in android:progress
. The circular progress bar runs continuously unless the activity stops.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package com.journaldev.progressbar; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private ProgressBar progressBar; private int progressStatus = 0; private TextView textView; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = (ProgressBar) findViewById(R.id.progressBar); textView = (TextView) findViewById(R.id.textView); // Start long running operation in a background thread new Thread(new Runnable() { public void run() { while (progressStatus < 100) { progressStatus += 1; // Update the progress bar and display the //current value in the text view handler.post(new Runnable() { public void run() { progressBar.setProgress(progressStatus); textView.setText(progressStatus+"/"+progressBar.getMax()); } }); try { // Sleep for 200 milliseconds. Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } |
In the above code the progressBar updates after every 200 milliseconds and the progress bar updates are set using setProgress()
. A handler is used to run the background thread. The thread runs until the progressStatus value reaches 100.
The image given below displays the output of a single instance of our application.
In this tutorial we’ve created a basic android ProgressBar. We have shown how to add a ProgressBar in a ProgressDialog in a later tutorial. You can download the final Android ProgressBar Project from the below link.
Reference: developer.android.com doc