新建了两个线程一个用来显示进度条,一个用来显示计数。
package com.fover;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class NotebookActivity extends Activity {
private int iCount;
private ProgressBar progress;
private TextView textView;
private int count;
// 设置case标识符
protected static final int STOP = 1;
protected static final int NEXT = 2;
protected static final int GOD = 3;
protected static final int BLESS = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获得控件
Button button = (Button) findViewById(R.id.game_button);
progress = (ProgressBar) findViewById(R.id.progressBar1);
Button button2 = (Button) findViewById(R.id.game_button2);
textView = (TextView) findViewById(R.id.textviewforcount);
button2.setOnClickListener(new timer());
// 设置progressbar的最大值
progress.setMax(100);
// 设置progressbar的初始值
progress.setProgress(0);
// 设置progressbar的可视情况
// progress.setVisibility(View.INVISIBLE); //不可见,但是progressbar依旧会占着位置
// GONE参数隐藏ProgressBar并且不占位置
progress.setVisibility(View.GONE);
// 设置按钮的监听
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 新建一个线程
Thread xx = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
try {
// 设置计数器
iCount = (i + 1) * 5;
// 设置线程的休眠时间
Thread.sleep(1000);
// 当值为19时,也就是progressbar的
// 进度条是100%的时候发送STOP信息给mHandler
if (i == 19) {
Message msg = new Message();
msg.what = STOP;
mHandler.sendMessage(msg);
// 当值不为19时,也就是进度条还没有达到百分百时候,发送NEXT信息给mHandler
} else {
Message msg = new Message();
msg.what = NEXT;
mHandler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
// 注意不要忘记这段代码
xx.start();
}
});
}
//此段方法同上,不做过多解释了
class timer implements OnClickListener {
@Override
public void onClick(View v) {
Thread cc = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
count = i;
Thread.sleep(1000);
if (i == 49) {
Message sng = new Message();
sng.what = GOD;
mHandler.sendMessage(sng);
} else {
Message sng = new Message();
sng.what = BLESS;
mHandler.sendMessage(sng);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
cc.start();
}
}
// 新建一个Handler
private Handler mHandler = new Handler() {
// 接收message信息
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
// 接收到STOP信息将处理:将进度条设置为不可视,同时在屏幕上输出提示信息
case STOP:
progress.setVisibility(View.GONE);
Toast.makeText(NotebookActivity.this, "进度条执行完毕",
Toast.LENGTH_SHORT).show();
break;
// 接收到NEXT信息将处理:将进度条设置为可见,同时设置进度条的进度
case NEXT:
if (!Thread.currentThread().isInterrupted()) {
progress.setVisibility(View.VISIBLE);
progress.setProgress(iCount);
}
break;
case GOD:
textView.setText("已经结束了,亲");
break;
case BLESS:
if (!Thread.currentThread().isInterrupted()) {
textView.setText("已经失去了" + count + "秒");
}
break;
default:
break;
}
}
};
}
如有问题欢迎指正。
PS:参考CSDN上的先人源代码拼凑而成。