android提供了一个计时器组件——Chronometer,继承自TextView。显示的是某个时间点开始以及之后的时间增加。
在XML中配置:
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Chronometer的几个主要的方法:
//开始
mChronometer.start();
//停止
mChronometer.stop();
//设置初始值(重置)
mChronometer.setBase(long base);
//事件监听器,时间发生变化时可进行操作
mChronometer.setOnChronometerTickListener();
//设置格式(默认"MM:SS"格式)
mChronometer.setFormate("%s");
假设计时器每过10S重置:
mChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
//SystemClock.elapsedRealtime()系统当前时间
//chronometer.getBase()记录计时器开始时的时间
if ((SystemClock.elapsedRealtime() - chronometer.getBase()) > 10*1000 ){
mChronometer.setBase(SystemClock.elapsedRealtime());
}
}
});
由于Chronometer继承于TextView,所以如果要设置单独SS的格式时可以:
int current = 0;
mChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (current > 4){
current = 0;
}
current ++;
chronometer.setText(current + "");
}
});
如果要设置格式为("HH:MM:SS")则可以通过算法去转换该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;
}