Android Chronometer(计时器)

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;      
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,805评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,853评论 0 17
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 10,249评论 1 9
  • 1.NSTimer //暂停if ([timer isValid]) {[timer setFireDate:[N...
    俊月阅读 5,202评论 0 0
  • 早上醒来,刷刷社交,看到一个凌晨四点动态,心里“咯噔了一下”,翻开通讯录,366464找到了号码,却不知道到底该不...
    彪彪Cybor阅读 1,418评论 4 0

友情链接更多精彩内容