Tuesday 28 July 2015

Android Download Progress Bar

fanxtea.blogspot.com

Android Download Progress Bar

By Fanxtea | 1 Januari 2015



Di dalam Android, bar progress sangat berguna untuk memberi tahu user dimana sesuatu tugas itu mengambil masa yang lama untuk selesai.

Di dalam tutorial, saya akan menunjukkan bagaimana untuk memaparkan bar dialog progress untuk memberitahu user yang tugas masih berjalan, dan juga bagaimana untuk meningkatkan status bar progress sehingga tugas selesai.

  1. Tambah butang
  2. Buka fail "res/layout/activity_main.xml" dan tambah satu butang biasa untuk demo

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnStartProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Muat Turun Fail" /> </LinearLayout>


  3. Kod
  4. Kunci untuk menggunakan progress bar ialah menggunakan "Thread" untuk menjalankan masa mengambil tugas anda dan satu lagi "Thread" untuk mengemaskini status progress bar dengan sewajarnya.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.widget.Button; 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 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } public void addListenerOnButton() { btnStartProgress = (Button) findViewById(R.id.btnStartProgress); btnStartProgress.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // prepare for a progress bar dialog progressBar = new ProgressDialog(v.getContext()); progressBar.setCancelable(true); progressBar.setMessage("Muat turun fail ..."); progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressBar.setProgress(0); progressBar.setMax(100); progressBar.show(); //reset progress bar status progressBarStatus = 0; //reset filesize fileSize = 0; new Thread(new Runnable() { public void run() { while (progressBarStatus < 100) { // process some tasks progressBarStatus = doSomeTasks(); // your computer is too fast, sleep 1 second try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // Update the progress bar progressBarHandler.post(new Runnable() { public void run() { progressBar.setProgress(progressBarStatus); } }); } // ok, file is downloaded, if (progressBarStatus >= 100) { // sleep 2 seconds, so that you can see the 100% try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } // close the progress bar dialog progressBar.dismiss(); } } }).start(); } }); } // file download simulator... a really simple public int doSomeTasks() { while (fileSize <= 1000000) { fileSize++; if (fileSize == 100000) { return 10; } else if (fileSize == 200000) { return 20; } else if (fileSize == 300000) { return 30; } // ...add your own } return 100; } }

  5. Demo
  6. Run aplikasi.

    Klik butang "Muat Turun Fail".

    Progress bar akan muncul dan menunjukkan progress muat turun anda.