ProgressBar is a dialog box which gives the current status of Activity on Android such as downloading and uploading of files. Here, we are using ProgressDialog box, which is a sub-class of AlertDialog box which helps us to show the progress bar.
It has following method setCancelable(bool), SetMessage(string), setProgressStyle(style), setProgress(int) , setMax(int) and finally use show() to show the controls.
Attributes
android: indeterminate: It allows to determine the indeterminate mode
android: Max: We can set the maximum limit of a progress bar
android: Progress: Defines the initial and final value of progress bar between 0 to 100
android:progressDrawable: Uses a drawable object for the progress bar
android:minorForRtl: When mirror mode for RTL(right to left) is enabled then drawable is associated
android:secondaryProgress: Defines the secondary progress value between 0 to 100.
android:animationResolution: To Switch between two frames in milliseconds
Methods
getMin(): To get the minimum value of progress bar
setMin(): To set the minimum value of progress bar
getMax(): To get the maximum value of progress bar
setMax(): To set the maximum value of progress bar
getProgress(): To get the update value of a progress bar
setProgress(): We have set initial and updated value of the progress bar
isAnimating(): It checks whether progress bar is animating or not
incrementProgressBy():Increase the progress bar value on specified value.
drawableStateChanged(): Whenever the change of view state occurs, the impact is reflected in the drawable
onAttachedToWindow(): It is called when view is attached to window
onSizeChanged(): It receives four integer parameters which describe the change of state in progress bar window
Android_Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mapsample.msclient009.progressbar">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Main_Activity.xml
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mapsample.msclient009.progressbar.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ProgressBar
android:layout_marginTop="20dp"
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/btn"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Progress-Status" />
</LinearLayout>
</LinearLayout>
Main_Activity.java
package com.mapsample.msclient009.progressbar; 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 { ProgressDialog pdbar; Button btn; int status = 0; Handler progresHandler = new Handler ( ); long FSize = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_main ); progressChanged(); } public void progressChanged() { btn =(Button)findViewById ( R.id.btn ); btn.setOnClickListener ( new View.OnClickListener ( ) { @Override public void onClick(View v) { pdbar = new ProgressDialog ( v.getContext () ); pdbar.setCancelable (true ); pdbar.setMessage ("Downloading progress..." ); pdbar.setProgressStyle (pdbar.STYLE_HORIZONTAL ); pdbar.setProgress ( 0 ); pdbar.setMax (100); pdbar.show (); status = 0; FSize = 0; new Thread ( new Runnable ( ) { @Override public void run() { while (status<100) { status = checkStatus(); try{Thread.sleep ( 1000 );}catch (Exception e){e.printStackTrace ();} progresHandler.post ( new Runnable ( ) { @Override public void run() { pdbar.setProgress ( status ); } } ); } if(status>=100) { try{Thread.sleep ( 1000 );}catch(Exception e){e.printStackTrace ();} pdbar.dismiss (); } } } ).start (); } } ); } public int checkStatus() { while (FSize <= 5000) { FSize++; if (FSize == 500) return 15; else if (FSize == 1000) return 30; else if (FSize == 2000) return 45; else if (FSize==3000) return 100; } return 100; } }
Launch Your APP
Leave Comment