android物流进度条,Android 进度条ProgressBar和消息传递Handler

[android]代码库import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;

/**

* 进度条ProgressBar,消息传递Handler

*/

public class EX04_17 extends Activity {

private TextView mTextView01;

private Button mButton01;

private ProgressBar mProgressBar01;

public int intCounter = 0;

/* 自定义Handler讯息代码,用以作为识别事件处理 */

protected static final int GUI_STOP_NOTIFIER = 0x108;

protected static final int GUI_THREADING_NOTIFIER = 0x109;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mButton01 = (Button) findViewById(R.id.myButton1);

mTextView01 = (TextView) findViewById(R.id.myTextView1);

mProgressBar01 = (ProgressBar) findViewById(R.id.myProgressBar1);

mProgressBar01.setIndeterminate(false);

mButton01.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

mTextView01.setText(R.string.str_progress_start);

/* 将隐藏的ProgressBar显示出来 */

mProgressBar01.setVisibility(View.VISIBLE);

/* 指定Progress为最多100 */

mProgressBar01.setMax(100);

/* 初始Progress为0 */

mProgressBar01.setProgress(0);

/* 起始一个线程 */

new Thread(new Runnable() {

public void run() {

/* 预设0至9,共执行10次的循环叙述 */

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

try {

intCounter = (i + 1) * 20;

Thread.sleep(1000);

/* 当Thread执行5秒后显示执行结束 */

if (i == 4) {

/* 以Message对象,传递参数给Handler */

Message m = new Message();

/* 以what属性指定User自定义 */

m.what = EX04_17.GUI_STOP_NOTIFIER;

EX04_17.this.myMessageHandler

.sendMessage(m);

break;

} else {

Message m = new Message();

m.what = EX04_17.GUI_THREADING_NOTIFIER;

EX04_17.this.myMessageHandler

.sendMessage(m);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}).start();

}

});

}

/* Handler建构之后,会聆听传来的讯息代码 */

Handler myMessageHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

/* 当取得识别为 离开线程时所取得的讯息 */

case EX04_17.GUI_STOP_NOTIFIER:

/* 显示执行终了 */

mTextView01.setText(R.string.str_progress_done);

/* 设定ProgressBar Widget为隐藏 */

mProgressBar01.setVisibility(View.GONE);

Thread.currentThread().interrupt();

break;

/* 当取得识别为 持续在线程当中时所取得的讯息 */

case EX04_17.GUI_THREADING_NOTIFIER:

if (!Thread.currentThread().isInterrupted()) {

mProgressBar01.setProgress(intCounter);

/* 将显示进度显示于TextView当中 */

mTextView01

.setText(getResources().getText(

R.string.str_progress_start)

+ "("

+ Integer.toString(intCounter)

+ "%)\n"

+ "Progress:"

+ Integer.toString(mProgressBar01

.getProgress())

+ "\n"

+ "Indeterminate:"

+ Boolean.toString(mProgressBar01

.isIndeterminate()));

}

break;

}

super.handleMessage(msg);

}

};

}

694748ed64b9390909c0d88230893790.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值