Chronometer集成自TextView,里面有個Handler負責定時更新ui。
其計時原理很簡單:通過setBase(long t)方法設置好baseTime之后,當start()時,每隔一秒,用當前SystemClock.elapsedRealtime()減baseTime,得到的逝去時間顯示在TextView中。
下面來個例子,這里除了start、stop功能,還利用setBase()添加個pause功能。
1 private Chronometer recordChronometer; 2 private long recordingTime = 0;// 記錄下來的總時間 3 4 public void onRecordStart() { 5 recordChronometer.setBase(SystemClock.elapsedRealtime() - recordingTime);// 跳過已經記錄了的時間,起到繼續計時的作用 6 recordChronometer.start(); 7 } 8 9 public void onRecordPause() { 10 recordChronometer.stop(); 11 recordingTime = SystemClock.elapsedRealtime() 12 - recordChronometer.getBase();// 保存這次記錄了的時間 13 } 14 15 public void onRecordStop() { 16 recordingTime = 0; 17 recordChronometer.setBase(SystemClock.elapsedRealtime()); 18 }