天天看點

菜鳥Android之——倒計時計時器

作為Android菜鳥的我,閑來無聊,玩起了手機上面的計時器打發時間,現在想起來确實是夠無聊的,菜鳥不服氣啊,我也來寫一個計時器。然後就興奮地撸起了這個TimeCount。

菜鳥Android之——倒計時計時器

        像上面一樣,我需要先在輸入框裡面輸入一個倒計時的秒數,然後擷取倒計時顯示在中間的一個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();
	}

}
           
菜鳥Android之——倒計時計時器

然後就可以愉快的跑起來了,菜鳥我也是蠻開心的。