作為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();
}
}
然後就可以愉快的跑起來了,菜鳥我也是蠻開心的。