Android关于Chronometer计时器的暂停继续计时

Chronometer念:

[krəˈnɑ:mɪtə(r)]
n. 精密计时器,航行表; 

先认识一个单词吧。

在开发的过程中,也可以用他来做计时操作。非常简单。

text_timer = (Chronometer) this.findViewById(R.id.text_timer);


定义一个这样的控件:

<Chronometer
    android:id="@+id/text_timer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="25dp"
    android:format="%s"
    android:textColor="#cccccc"
    android:textSize="30sp"
    android:textStyle="bold" />

接下来的使用更加方便,直接:

// 将计时器清零
text_timer.setBase(SystemClock.elapsedRealtime());
//开始计时
text_timer.start();

但是会遇到一个问题,也是我们的高能环节:

在你调用stop的时候,计时暂停,然后在调用start的时候,会发现时间不是从暂停的那个点来开始的,而是你一共开始计时的时间。

这时候就要我们来解决这个问题了。

具体解决思路:


暂停的时候,记录当前的时间,在点击开始,start之前,要将你一共开始计时的时间  减去  暂停了的时间。

关键就在于这个暂停了多长时间,暂停的时间就是我们一共计时的时间   减去   当时暂停的时间。

明了。

上代码:

case R.id.start_btn:
    if (mRecordTime != 0) {
        text_timer.setBase(text_timer.getBase() + (SystemClock.elapsedRealtime() - mRecordTime));
    } else {
        text_timer.setBase(SystemClock.elapsedRealtime());
    }
    text_timer.start();
    break;
case R.id.stop_btn:
    text_timer.stop();
    mRecordTime = SystemClock.elapsedRealtime();
    break;

mRecordTime是一个long类型的。

就是这些了。



  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值