Android Chronometer(计时器)

android提供了一个计时器组件——Chronometer,继承自TextView。显示的是某个时间点开始以及之后的时间增加。
在XML中配置:

 

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;      
    }

你可能感兴趣的:(Android Chronometer(计时器))