新建了兩個線程一個用來顯示進度條,一個用來顯示計數。
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上的先人源代碼拼湊而成。