Android ApiDemos示例解析(182):Views->Progress Bar->1. Incremental

進程條ProgressBar可以用來顯示某個操作(比如下載文件)當前的進度,應用可以根據操作的進度改變進程條的長度。Android 中的進程條還支持一個輔助的進度條來顯示莫個中間操作的進度,比如說解壓一個文件包,主進度條可以顯示整個文件包的解壓進度,輔助進度條可以顯示當前正在解壓的文件的進度。

對於一些無法事先知道操作所需時間,可以將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.aiwalls.com
 = (ProgressBar) findViewById(R.id.progress_horizontal);
setProgress(progressHorizontal.getProgress() * 100);
setSecondaryProgress(progressHorizontal.getSecondaryProgress()
 * 100);


progressHorizontal.incrementProgressBy(-1);

progressHorizontal.incrementSecondaryProgressBy(-1);

 

 

You May Also Like