当前位置:操作系统 > 安卓/Android >>

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.zzzyk.com
 = (ProgressBar) findViewById(R.id.progress_horizontal);
setProgress(progressHorizontal.getProgress() * 100);
setSecondaryProgress(progressHorizontal.getSecondaryProgress()
 * 100);

...
progressHorizontal.incrementProgressBy(-1);
...
progressHorizontal.incrementSecondaryProgressBy(-1);

 \


 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,