程序在处理某些大的数据时,在加载这些数据时会一直停在某一界面,此时最好使用进度条。在Android系统中有两种进度条:一种是圆形进度条;另一种是方形进度条。进度条的用处很多,如在登录时,有可能比较慢,可以通过进度条进行提示,同时也可以对窗口设置进度条。下面我们来分析进度条的不同类型,如图5.4所示。

  要实现这个效果图,先来看一看布局,代码如下所示:

<?xml version=”l .0″ encoding:=,’utf-8n?> —-—

<LinearLayout xmlns:android=Hhttp://schemas.android.com/apk/res/android”

android: lay out _width=Hfill_parent,’

android;i丄 Laarent” 

i android:background^”#©88865”

android:orientation=”verticaln >

<TextView

android:layout_width=nfill_parent”

android:layout_height=”wrap_Gcmtent”

android:textCotor=”#000000”

android:textsize=”18dip”

android:text=n进度条实例” />

<ProgressBar

android:id=n@+id/pBar”

android:丄ayout_widtihi230dip”

android:layout_height=”wrap_content”

style=n?android:attr/progressBarStyleHorizontal” //进度条的样式

/>

<ProgressBar

android:id=”@+id/pBar01″

android: layout_-width=”wrap_content”

android:layout_height=”wrap_content”

style=”?android:attr/progressBarStyleLarge”

* android:max=”100″

android:progress=”40″

android: secondary Progress=M 7 01′

/>

<Button

android: i^’^+id/button*’

android:layout_width=nwrap_content”

android:layout_height=”wrap_content”

android: text=H^in M

/>

c/LineaXLayout〉  –

在上述布局文件中,id为pBar表示的是方形进度条,通过属性

style=”?android:attr/progressBarStyleHorizontal”iS行设置;pBarOl 则是圆形的进度条,通过属性

style=”?android:attr/progressBarStyleHorizontal”设置,android: max 设置的是它的最大值,

android:progress属性设置的是当前值。进度条可以通过线程来控制它的值的变化,下面我们通

过单击按钮来增加它的值,如图5.5所示。通过单击按钮和线程的控制,进度条的值就会增加

到最大,下面来看一下实现的代码。

按钮事件,通过单击按钮控制进度条值的增加。

button.setdnClickListener(new OnClickListener()

public void onClick(View v) {

progressBar.setMax(100);

〃疫覽进度条当前的值 //设置最大值

progressBar.setprogress(0);

.new Sgg ;

));}

通过一f类实现Runnable接口,控制进度条值的改变,并且当达到最大时,发送一个

Message进行提示。

门^

class changevalue implements Runnable{

public void run() {

for (int i =- 0; i < 10; i++) {

try {

counter = (i+1)*20;

Thread,sleep(1000);

if (i==4){

Message msg = new Message();

msg.what = STOP_BAR;

handler.sendMessage(msg);

break;

}else{

Message message = new Message();

message.what = NOTIFITION;

handler,sendMessage(message);

}

} catch (IntemptedException e) {

e.printStackTrace();

//賛收上面传来的值,并做相应的处理 ;

private Handler handler = new Handler(){

public void handleMessage(Message msg) {

switch (msg.what) {

case STOP_BAR:

Toast .makeText (ProgressBarDemoActivity. this,”已经是最大值”

Toast.LENGTH_SHORT),show(); ;

Thread. currentThread () . interrvpt () ; //中断线程 :

break;

case NOTIFITION: :

progressBar.setProgress(counter);

setProgress (counter*100); 〃设置标题栏进度条的值

break;

default:

break;

} :

} :

} :