android提供了一個計時器組件——Chronometer力细,繼承自TextView。顯示的是某個時間點開始以及之后的時間增加。
在XML中配置:
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Chronometer的幾個主要的方法:
//開始
mChronometer.start();
//停止
mChronometer.stop();
//設(shè)置初始值(重置)
mChronometer.setBase(long base);
//事件監(jiān)聽器扳躬,時間發(fā)生變化時可進行操作
mChronometer.setOnChronometerTickListener();
//設(shè)置格式(默認"MM:SS"格式)
mChronometer.setFormate("%s");
假設(shè)計時器每過10S重置:
mChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
//SystemClock.elapsedRealtime()系統(tǒng)當前時間
//chronometer.getBase()記錄計時器開始時的時間
if ((SystemClock.elapsedRealtime() - chronometer.getBase()) > 10*1000 ){
mChronometer.setBase(SystemClock.elapsedRealtime());
}
}
});
由于Chronometer繼承于TextView,所以如果要設(shè)置單獨SS的格式時可以:
int current = 0;
mChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (current > 4){
current = 0;
}
current ++;
chronometer.setText(current + "");
}
});
如果要設(shè)置格式為("HH:MM:SS")則可以通過算法去轉(zhuǎn)換該current:
chronometer.setText(FormatMiss(current));
public static String FormatMiss(int time){
String hh=time/3600>9?time/3600+"":"0"+time/3600;
String mm=(time% 3600)/60>9?(time% 3600)/60+"":"0"+(time% 3600)/60;
String ss=(time% 3600) % 60>9?(time% 3600) % 60+"":"0"+(time% 3600) % 60;
return hh+":"+mm+":"+ss;
}