進度條ProgressBar是一個經常用到的組件,它的使用也很簡單,隻需要把進度條顯示在前臺,然後在後臺啟動一個線程,根據需要修改進度條的狀態。我們來看一個例子,該程序運行效果如下圖所示:
該程序主佈局文件main.xml內容如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://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(); } }