在Android中暂停和恢复倒数计时器和进度条?
问题描述:
我想提出一个简单的应用程序,它使用倒计时定时器,循环 进度条和3个按钮开始,暂停和Resume.What我想 做的就是当一个特定的活动开始,我按下暂停存储 计时器暂停并从该点继续前进的时间 forward.But问题是倒计时timmer不停止,因此如果我在7秒暂停7秒进度条停止在7秒,但当我按 恢复它从倒数计时器的值在那个时刻开始。这是我试图实现的代码。在Android中暂停和恢复倒数计时器和进度条?
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();
}
我是新手编程,所以任何帮助或建议表示赞赏。谢谢。
答
请参阅本:
How to clear CountDownTimer from onTick method?
我不知道你可以从仍然从内部onTick()方法倒计时关闭计时器。
为CountDownTimer创建一个gloabl引用,并仅从该引用上的clickListeners调用start()或cancel()。
是的我已经倒计时器global.I使用相同的倒数计时器为3种不同的方法.neck_rotation(),hand_rotation()和跳转(),所以当用户点击开始第一个方法被调用和开每种方法完成后都有10秒的休息时间。 – AndroidNewBee
就像我看到的那样,当您按btnResume时您正在创建一个新的CountDownTimer,并且您还将mCountDownTimer作为另一个CountDownTimer的引用。这是为什么 ?继续使用onClick()的mCountDownTimer。无论如何,不应该在onTick()函数中调用cancel()函数。 – Gil
是的,你可以帮助吗?你可以举一个例子或什么? – AndroidNewBee