activity_main.xml
<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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:padding="20dp" android:text="async_task" tools:context=".MainActivity" /> <ProgressBar android:id="@+id/progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_marginTop="34dp" /> <Button android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/progress" android:layout_centerHorizontal="true" android:layout_marginTop="40dp" android:minWidth="120dp" android:text="Start Button" /> <TextView android:id="@+id/txt_percentage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/progress" android:text="downloading 0%" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout>
MainActivity.java
package in.blogspot.kantapp.asynctaskinandroidwithprogressbar; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends Activity { Button btn_start; ProgressBar progressBar; TextView txt_percentage; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_start = (Button) findViewById(R.id.btn_start); progressBar = (ProgressBar) findViewById(R.id.progress); txt_percentage = (TextView) findViewById(R.id.txt_percentage); btn_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { btn_start.setEnabled(false); new ShowDialogAsyncTask().execute(); } }); } private class ShowDialogAsyncTask extends AsyncTask<Void, Integer, Void> { int progress_status; @Override protected void onPreExecute() { // update the UI immediately after the task is executed super.onPreExecute(); progress_status = 0; txt_percentage.setText("downloading 0%"); } @Override protected Void doInBackground(Void... params) { while (progress_status < 100) { progress_status += 2; publishProgress(progress_status); SystemClock.sleep(300); } return null; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progressBar.setProgress(values[0]); txt_percentage.setText("downloading " + values[0] + "%"); } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); txt_percentage.setText("download complete"); btn_start.setEnabled(true); } } }
No comments:
Post a Comment