在某项延续性工作的进展过程中为了不让用户觉得程序失去响应,需要有个活动的进度条,表示此过程正在进行中,从而更友好的提高了用户的界面的友好性。
在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。

XML重要属性与ProgressBar方法

@android:style/Widget.ProgressBar.Horizontal:水平进度条
@android:style/Widget.ProgressBar.Inverse:普通大小的进度的环形条
@android:style/Widget.ProgressBar.Large
@android:style/Widget.ProgressBar.Small
android:max:设置该进度条的最大值
android:progress:设置该进度条的已完成进度
android:progressDrawable:设置该进度条的轨道对应的Drawabled对象
android:indeterminate():指示进度条是否在不确定模式下,值为true
android:indeterminateDrawable:设置绘制不显示进度的进度条的Drawable对象
android:indeterminateDuration:设置不精确显示进度的持续时间


样式:

Android中ProgressBar进度条_android

XML布局文件:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- 定义一个大环形进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Large"/>
<!-- 定义一个普通大小的进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!-- 定义一个小环形进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Small"/>
<ProgressBar
android:id="@+id/bar1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
style="@android:style/Widget.ProgressBar.Horizontal"/>
<ProgressBar
android:id="@+id/bar2"
android:max="100"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/my_bar"
style="@android:style/Widget.ProgressBar.Horizontal"/>
</LinearLayout>


Drawable对象的布局文件:


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 定义轨道的背景 -->
<item android:id="@android:id/background"
android:drawable="@drawable/no"/>
<!-- 定义轨道上已经完成部分的样式 -->
<item android:id="@android:id/progress"
android:drawable="@drawable/ok"/>
</layer-list>


主程序:


package com.example.progressbardemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
final static int count = 100;
int loc = 0;//记录当前完成进度
ProgressBar bar1,bar2;
Handler myhHandler = new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.what == 101){
bar1.setProgress(loc);
bar2.setProgress(loc);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bar1 = (ProgressBar) findViewById(R.id.bar1);
bar2 = (ProgressBar) findViewById(R.id.bar2);
new Thread(){
public void run(){
while(loc<count){
int l = loc;
loc = work(l);
myhHandler.sendEmptyMessage(101);
}
}
}.start();
}
/**
* 创建一个耗时的操作
* */
public int work(int l){
l++;
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
return l;
}
}