Chronometer 计时器的实现




我要实现的功能是点击按钮开始工作,计时器开始计时,再点停止计时,再点一次接着之前的时间计时。我使用的是Chronometer 控件。


先看布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:gravity="center|bottom"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="在线时长"
        android:textColor="#fff"
        android:textSize="32sp" />

    <Chronometer
        android:id="@+id/timer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:textColor="#fff"
        android:textSize="32sp"
        android:format="00:00:00"/>

</LinearLayout>

定义一个总时间,秒为单位

private int totalTime = 0;

开始计时,调用Chronometer的监听事件

timer.start();
timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
    @Override
    public void onChronometerTick(Chronometer chronometer) {
        totalTime++;
        timer.setText(FormatTime(totalTime));
    }
});

规范时间的显示格式

public static String FormatTime(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;
}

停止计时

timer.stop();

我这里只是用到了开始和停止,如果想重置时间的话就设置它的base

timer.setBase(SystemClock.elapsedRealtime());

因为我需要显示时分秒,如果只是简易的计时器,不需要“时”,则没有必要调用监听,代码更简单。只要初始化Chronometer后,给它设置格式规范,然后调用开始和停止的方法,就可以实现计时器功能。

timer.setFormat("%s");



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值