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

Chronometer念:

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

先认识一个单词吧。

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

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


定义一个这样的控件:

    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类型的。

就是这些了。



你可能感兴趣的:(小结)