美文网首页Android知识Android开发Android技术知识
Android:CountDownTimer 实现倒计时功能

Android:CountDownTimer 实现倒计时功能

作者: DoubleThunder | 来源:发表于2016-11-12 02:12 被阅读768次

    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 实现倒计时功能

        本文链接:https://www.haomeiwen.com/subject/hhxqpttx.html