转自:https://www.jianshu.com/p/9630285e7cc7
作者:babybus_superdo
android提供了一个计时器组件——Chronometer,继承自TextView。显示的是某个时间点开始以及之后的时间增加。
在XML中配置:
Chronometer的几个主要的方法:
//开始mChronometer.start();//停止mChronometer.stop();//设置初始值(重置)mChronometer.setBase(longbase);//事件监听器,时间发生变化时可进行操作mChronometer.setOnChronometerTickListener();//设置格式(默认"MM:SS"格式)mChronometer.setFormate("%s");
假设计时器每过10S重置:
mChronometer.setOnChronometerTickListener(newOnChronometerTickListener() {@OverridepublicvoidonChronometerTick(Chronometer chronometer){//SystemClock.elapsedRealtime()系统当前时间//chronometer.getBase()记录计时器开始时的时间if((SystemClock.elapsedRealtime() - chronometer.getBase()) >10*1000){ mChronometer.setBase(SystemClock.elapsedRealtime()); } } });
由于Chronometer继承于TextView,所以如果要设置单独SS的格式时可以:
intcurrent =0;mChronometer.setOnChronometerTickListener(newOnChronometerTickListener() {@OverridepublicvoidonChronometerTick(Chronometer chronometer){if(current >4){ current =0; } current ++; chronometer.setText(current +""); }});
如果要设置格式为("HH:MM:SS")则可以通过算法去转换该current:
chronometer.setText(FormatMiss(current));publicstaticStringFormatMiss(int time){Stringhh=time/3600>9?time/3600+"":"0"+time/3600;Stringmm=(time%3600)/60>9?(time%3600)/60+"":"0"+(time%3600)/60;Stringss=(time%3600) %60>9?(time%3600) %60+"":"0"+(time%3600) %60;returnhh+":"+mm+":"+ss; }