Android:CountDownTimer 实现倒计时功能

Android:CountDownTimer 实现倒计时

标签(空格分隔): Android,CountDown,CountDownTimer


Step00. 官方

CountDownTimer:定时执行在一段倒计时,在倒计时执行过程中会在固定间隔时间得到具体的通知。
官方文档:https://developer.android.com/reference/android/os/CountDownTimer.html
中文翻译:http://www.cnblogs.com/over140/archive/2011/12/20/2294220.html

Step01.简单的使用

使用:我们设置一个 30 秒的倒计时,在一个 textview 中显示具体剩余时间。当执行结束时。显示“完成”。

CountDownTimer countDownTimer = new CountDownTimer(30*1000, 1000) {
     public void onTick(long millisUntilFinished) {
        mTextField.setText("剩余时间: " + millisUntilFinished / 1000 + "秒");
     }

     public void onFinish() {
         mTextField.setText("完成!");
     }
  }

执行: countDownTimer.start();
取消: countDownTimer.cancel();
当执行取消后(cancel),再次启动(start)会重新开始倒计时。而不是上次取消时的剩余时间。

Step02. 暂停(Pause)

首先是需要重写初始化

//millisInFuture 倒计时时长单位毫秒
public void initCountDownTimer(long millisInFuture) {
    mCountDownTimer = new CountDownTimer(millisInFuture, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            curTime = millisUntilFinished;//当前剩余时间;
            mTimerTv.setText(TimeTools.getCountTimeByLong(millisUntilFinished));
        }

        public void onFinish() {
            mTimerTv.setText("完成!");
        }
    };
}

暂停或者是继续播放

//isPause 暂停标记,默认为false.
if (!isPause) {
    isPause = true;
    mCountDownTimer.cancel();
} else {//继续播放
    if (curTime != 0) {
        //将上次当前剩余时间作为新的时长
        initCountDownTimer(curTime);
        mCountDownTimer.start();
        isPause = false;
    }
}

step03.源码

Github Code

你可能感兴趣的:(Android:CountDownTimer 实现倒计时功能)