ProgressBar, ProgressDialog

参考:[url]http://blog.csdn.net/Android_Tutor/article/details/5695170[/url]

【详解】Android[color=red][b] ProgressBar, ProgressDialog[/b][/color] 进度条 进度条对话框
[url]http://www.oschina.net/question/157182_37992[/url]
在android中,通常我们无法在单独的线程中更新UI,而要在主线程中,这也就是为什么我们要使用 Handler了,当handler收到消息中,它会把它放入到队列中等待执行,通常来说这会很快被执行。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />


<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<ProgressBar
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示进度条" />

</LinearLayout>


package com.pandy.progress;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

public class ProgressBarDemoActivity extends Activity {
/** Called when the activity is first created. */
private ProgressBar progressBar1,progressBar2;
private Button button1;

protected static final int STOP = 0x10000;
protected static final int NEXT = 0x10001;
private int iCount = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

progressBar1 = (ProgressBar)findViewById(R.id.progressBar1);
progressBar2 = (ProgressBar)findViewById(R.id.progressBar2);
button1 = (Button)findViewById(R.id.button1);

progressBar1.setIndeterminate(false);
progressBar2.setIndeterminate(false);

progressBar1.setVisibility(View.GONE);
progressBar2.setVisibility(View.GONE);

button1.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressBar1.setVisibility(View.VISIBLE);
progressBar2.setVisibility(View.VISIBLE);
final int max = 100;

progressBar1.setMax(max);
progressBar1.setProgress(0);
progressBar2.setProgress(0);
//创建线程
Thread t = new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0; i<max; i++){
try {
iCount = (i+1)*1;
Thread.sleep(10);
if(iCount>=max){
Message msg = new Message();
msg.what=STOP;
//传递消息
mHandler.sendMessage(msg);
}else{
Message msg = new Message();
msg.what=NEXT;
//传递消息
mHandler.sendMessage(msg);
}

} catch (Exception e) {
// TODO: handle exception
Log.i("ProgressBarDemoActivity", "ProgressBarDemoActivity-------------");
}

}

}

});
//启动线程
t.start();

}

});

}
//消息处理
private Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case STOP:
progressBar1.setVisibility(View.GONE);
progressBar2.setVisibility(View.GONE);
Thread.currentThread().interrupt();
break;
case NEXT:
if(!Thread.currentThread().isInterrupted()){
progressBar1.setProgress(iCount);
progressBar2.setProgress(iCount);
}
break;
}
};

};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值