作为Android菜鸟的我,闲来无聊,玩起了手机上面的计时器打发时间,现在想起来确实是够无聊的,菜鸟不服气啊,我也来写一个计时器。然后就兴奋地撸起了这个TimeCount。

像上面一样,我需要先在输入框里面输入一个倒计时的秒数,然后获取倒计时显示在中间的一个TextView上,然后当我点开始计时的时候,就开始跑,停止的时候就停下来。这个简单的计时器就实现这简单的功能。
废话不多说,开始撸代码 90行代码实现。
public class MainActivity extends Activity implements OnClickListener {
private EditText inputTime;
private Button btn_getTime, btn_starTime, btn_stopTime;
private TextView time;
int timeNow = 0;
private Timer timer = null;
private TimerTask timerTask = null;
private void initView() {
inputTime = (EditText) findViewById(R.id.inputTime);
btn_getTime = (Button) findViewById(R.id.getTime);
btn_starTime = (Button) findViewById(R.id.starTime);
btn_stopTime = (Button) findViewById(R.id.stopTime);
time = (TextView) findViewById(R.id.time);
btn_getTime.setOnClickListener(this);
btn_starTime.setOnClickListener(this);
btn_stopTime.setOnClickListener(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.getTime:
timeNow = Integer.parseInt(inputTime.getText().toString());
time.setText(inputTime.getText().toString() + ":00");
break;
case R.id.starTime:
starTime();
break;
case R.id.stopTime:
stopTime();
break;
}
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
//在这里更新UI上面的倒计时信息
time.setText(msg.arg1 + ":00");
//为了继续倒计时,在此调用starTime()
starTime();
};
};
private void starTime() {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
if(timeNow == 0){
//这里当倒计时成为0的时候,让他停下来
timer.cancel();
}else{
//倒计时,让他每次减一秒
timeNow--;
//创建一个消息,并带上当前倒计时的秒数
Message message = handler.obtainMessage();
message.arg1 = timeNow;
//发送这个消息
handler.sendMessage(message);
}
}
};
//设置timer的延迟为1s
timer.schedule(timerTask, 1000);
}
private void stopTime() {
//让timer停下来
timer.cancel();
}
}
然后就可以愉快的跑起来了,菜鸟我也是蛮开心的。