在Android中暂停和恢复倒计时器和进度条?

时间:2016-06-21 07:38:26

标签: java android timer progress-bar countdowntimer

  

我正在制作一个使用倒数计时器Round的简单应用程序   进度条和3个按钮开始,暂停和恢复。我想要的是什么   做的是当特定活动开始时我按暂停它存储   计时器暂停并从该点恢复的时间   但问题是倒计时器不会停止,如果我   在7秒暂停,进度条在7秒停止,但是当我按下时   恢复它从计数器倒计时器值开始   那一刻。这是我想要实现的代码。

  btnPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //When user request to pause the CountDownTimer
                isPaused = true;

                //Enable the resume and cancel button
                btnResume.setEnabled(true);
                //Disable the start and pause button
                btnStart.setEnabled(false);
                btnPause.setEnabled(false);
            }
        });



btnResume.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //Disable the start and resume button

        btnStart.setEnabled(false);
        btnResume.setEnabled(false);
        //Enable the pause and cancel button
        btnPause.setEnabled(true);

        //Specify the current state is not paused and canceled.
        isPaused = false;
        isCanceled = false;
        mCountDownTimer.start();
}
    });

这是倒数计时器的代码。

 private void neck_rotations()
    {
        neckRotation = true;
        mCountDownTimer = new CountDownTimer(NECK_ROTATION_TIME, 1000)
        {
            @Override
            public void onTick(long millisUntilFinished)
            {

                if (isPaused || isCanceled)
                {
                    paused_at = (int) (millisUntilFinished / 1000);

                } else
                {
                    timeRemaining = (int) (millisUntilFinished / 1000);
                    donutProgress.setMaxValue(NECK_ROTATION_TIME / 1000);
                    donutProgress.setValueAnimated((int) timeRemaining);
                    counter.setText(String.valueOf(timeRemaining));

                }

            }

            @Override
            public void onFinish()
            {
                response = "Jumps";
                rest(response);

            }
        };
        mCountDownTimer.start();
    }

我是编程新手,所以感谢任何帮助或建议。谢谢。

1 个答案:

答案 0 :(得分:1)

请参阅:

How to clear CountDownTimer from onTick method?

我不确定你是否可以禁用计时器从内部onTick()方法倒计时。

为CountDownTimer创建一个gloabl引用,并且只从该引用上的clickListeners调用start()或cancel()。