核心代码:
package com.zhh.counttime.android;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_inputtime;
private TextView tv_showtime;
private Button btn_gettime;
private Button btn_start;
private Button btn_stop;
private int time = 0;
Timer timer = null;
/**
* 接收消息
*/
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.arg1) {
case 0://当消息中的数据是0的时候
Toast.makeText(getBaseContext(), "已经是0了", 10).show();
break;
}
tv_showtime.setText(msg.arg1 + "");
startTimer();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化控件
myClick();//监听
}
/**
* 初始化控件
*/
private void init() {
et_inputtime = (EditText) findViewById(R.id.et_inputtime);
btn_gettime = (Button) findViewById(R.id.btn_gettime);
btn_start = (Button) findViewById(R.id.btn_start);
btn_stop = (Button) findViewById(R.id.btn_stop);
tv_showtime = (TextView) findViewById(R.id.tv_showtime);
}
/**
* 监听事件的方法
*/
private void myClick() {
//获取时间的监听
btn_gettime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String timeStr = et_inputtime.getText().toString().trim();
if (checkInt(timeStr)) {//正则表达式判断是否为正整数
tv_showtime.setText(timeStr);
tv_showtime.setTextSize(100);
time = Integer.parseInt(et_inputtime.getText().toString());
}
}
});
//开始计时的监听
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
}
});
//停止计时的监听
btn_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopTimer();
}
});
}
/**
* 开始计时
*/
private void startTimer() {
timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
if (time > 0) {
time--;
Message message = Message.obtain();//实例化消息对象
message.arg1 = time;
handler.sendMessage(message);
}
}
};
timer.schedule(task, 1000);//一秒执行一次
}
/**
* 停止计时
*/
private void stopTimer() {
timer.cancel();//取消执行
}
/**
*
*
*验证是否是正整数
*/
public boolean checkInt(String strInt) {
String strPattern = "^[0-9]*[1-9][0-9]*$"; //2012-10-11
Pattern p = Pattern.compile(strPattern);
Matcher m = p.matcher(strInt);
boolean isValid = m.matches();
if (!isValid) {
Toast.makeText(this, "时间必须为正整数", Toast.LENGTH_LONG).show();
}
return isValid;
}
}//class
源码下载: