進程條ProgressBar可以用來顯示某個操作(比如下載檔案)當前的進度,應用可以根據操作的進度改變進程條的長度。Android 中的進程條還支援一個輔助的進度條來顯示莫個中間操作的進度,比如說解壓一個檔案包,主進度條可以顯示整個檔案包的解壓進度,輔助進度條可以顯示當前正在解壓的檔案的進度。
對於一些無法事Crowdsourced Security Testing道操作所需時間,可以將ProgressBar 設定成”indeterminate” 模式,此時進度條可以顯示一個不斷轉動的滾輪或是一個水平的進度條。
在Layout中定義ProgressBar,如本例:
[html]
<ProgressBar android:id=”@+id/progress_horizontal”
style=”?android:attr/progressBarStyleHorizontal”
android:layout_width=”200dip”
android:layout_height=”wrap_content”
android:max=”100″
android:progress=”50″
android:secondaryProgress=”75″ />
<ProgressBar android:id=”@+id/progress_horizontal”
style=”?android:attr/progressBarStyleHorizontal”
android:layout_width=”200dip”
android:layout_height=”wrap_content”
android:max=”100″
android:progress=”50″
android:secondaryProgress=”75″ />
ProgressBar 預設顯示為 Spinning Wheel (時間未定模式),如果需使用水平進度條,將其模式設為progressBarStyleHorizontal。(或style=”@android:style/Widget.ProgressBar.Horizontal) 如果你需要明確指定進度條當前進度值,必須使用水平進度條風格。
另外一個常見的風格為Widget.ProgressBar.Small,表現為一個小號的旋轉滾輪,應用中可以用來表示一個延時的操作(如下載)
ProgressBar 支援的風格有如下幾種:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse
如果使用attr 則可以使用如下attr:
progressBarStyle
progressBarStyleHorizontal
progressBarStyleInverse
progressBarStyleLarge
progressBarStyleLargeInverse
progressBarStyleSmall
progressBarStyleSmallInverse
progressBarStyleSmallTitle
其中Inverse 表示以反色顯示進度條。
本例介紹了ProgressBar 的基本用法,可以通過按鈕來修改進度條的進度值(同時使用了兩個進度條:主進度條和輔助進度條)。
要注意的是Activity 本身也提供了幾個和進度條相關的方法(顯示在標題列中),可以控制標題列中顯示的進度條顯示。
setProgress(int progress)
setProgressBarIndeterminate(boolean indeterminate)
setProgressBarIndeterminateVisibility(boolean visible)
setProgressBarVisibility(boolean visible)
而對於ProgressBar 本身則是通過incrementProgressBy 和 incrementSecondaryProgressBy 來修改進度條當前顯示的值。
[java]
final ProgressBar progressHorizontal
= (ProgressBar) findViewById(R.id.progress_horizontal);
setProgress(progressHorizontal.getProgress() * 100);
setSecondaryProgress(progressHorizontal.getSecondaryProgress()
* 100);
...
progressHorizontal.incrementProgressBy(-1);
...
progressHorizontal.incrementSecondaryProgressBy(-1);
final ProgressBar progressHorizontal www.2cto.com
= (ProgressBar) findViewById(R.id.progress_horizontal);
setProgress(progressHorizontal.getProgress() * 100);
setSecondaryProgress(progressHorizontal.getSecondaryProgress()
* 100);
...
progressHorizontal.incrementProgressBy(-1);
...
progressHorizontal.incrementSecondaryProgressBy(-1);