進度條ProgressBar是一個經常用到的組件,它的使用也很簡單,只需要把進度條顯示在前台,然後在後台啟動一個線程,根據需要修改進度條的狀態。我們來看一個例子,該程式運行效果如所示:
該程式主布局檔案main.xml內容如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge"/> <ProgressBar android:id="@+id/progressBar3" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleSmall"/> <ProgressBar android:id="@+id/progressBar4" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100" android:progress="0" android:secondaryProgress="70"/> <ProgressBar android:id="@+id/progressBar5" style="@android:style/Widget.ProgressBar.Large" android:layout_width="match_parent" android:layout_height="wrap_content"/> <ProgressBar android:id="@+id/progressBar6" style="@android:style/Widget.ProgressBar.Small" android:layout_width="match_parent" android:layout_height="wrap_content"/> <ProgressBar android:id="@+id/progressBar7" android:max="100" android:progress="0" android:secondaryProgress="70" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
主Activity檔案內容如下:
package com.liuhaoyu;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends Activity {private ProgressBar pb1, pb2, pb3, pb4, pb5, pb6, pb7;private Handler PbHandler;private int progress = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pb1 = (ProgressBar)findViewById(R.id.progressBar1); pb2 = (ProgressBar)findViewById(R.id.progressBar2); pb3 = (ProgressBar)findViewById(R.id.progressBar3); pb4 = (ProgressBar)findViewById(R.id.progressBar4); pb5 = (ProgressBar)findViewById(R.id.progressBar5); pb6 = (ProgressBar)findViewById(R.id.progressBar6); pb7 = (ProgressBar)findViewById(R.id.progressBar7); PbHandler = new Handler(){ public void handleMessage(Message msg){ if(msg.what == 0x0){ pb4.setProgress(progress); pb7.setProgress(progress); } else { Toast.makeText(MainActivity.this, "任務執行成功!", Toast.LENGTH_SHORT).show(); pb1.setVisibility(View.GONE); pb2.setVisibility(View.GONE); pb3.setVisibility(View.GONE); pb4.setVisibility(View.GONE); pb5.setVisibility(View.GONE); pb6.setVisibility(View.GONE); pb7.setVisibility(View.GONE); } } }; new Thread(new Runnable() {public void run() {while (true) {progress += Math.random()*10;try{Thread.sleep(200);}catch(InterruptedException e){e.printStackTrace();}Message m = new Message();if(progress < 100){m.what = 0x0;PbHandler.sendMessage(m);}else{m.what=0x1;PbHandler.sendMessage(m);break;}}}}).start(); }}