使用相同的按钮暂停 Android 倒数计时器
Pausing a Android countdowntimer with same button
我在 Android 中找到了很多关于如何暂停倒数计时器的示例,但是这些示例中的每一个都使用了不止一个按钮(暂停、恢复和取消)。
我想要一个按钮,当我按下它时计时器开始,然后当我再次按下它时它暂停(取消原始计时器,捕获计时器值)并在再次单击时恢复(从捕获的时间暂停以开始新的倒计时)。
有没有人有如何实现这一点的例子?我已经尝试过 if else 在按钮的 onClick 侦听器中循环。我有一个非常粗糙的半工作示例;
if (gameOn == 1) {
if((clkOnTimerBtn % 2)==0) {
isPaused = true; // PAUSE COUNTDOWN TIMER
resumeCountDownTimer(view, "pause");
} else { // RESUME COUNTDOWN TIMER
resumeCountDownTimer(view, "resume");
}
上面的问题是这是在按钮 onclick 侦听器中执行的,因此如果在我的 resumeCountDownTimer 中创建了一个新的 CountDownTimer,则以后无法访问计时器以取消它(暂停)。我也尝试过寻找一种方法来取消所有倒数计时器,如果可以的话会很混乱,但是我找不到任何示例或参考资料来这样做,因为即使这不是最优雅的方式,它至少也会获得所需的行为.
如果我没理解错的话,像这样的东西应该有用。
public class MainActivity extends AppCompatActivity {
CountDownTimer countDownTimer;
long duration = 100000; //This is the initial time,
long millisecondsLeft = 100000; // This is the time left. At the start it equales the duration.
boolean isCountDownTimerActive = false;
Button startButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.startStop);
final TextView timeLeft = (TextView) findViewById(R.id.timeLeft);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCountDownTimerActive) {
if (countDownTimer != null)
countDownTimer.cancel();
isCountDownTimerActive = false;
} else {
countDownTimer = new CountDownTimer(millisecondsLeft, 1000) {
@Override
public void onTick(long l) {
millisecondsLeft = l;
timeLeft.setText(" " + l);
}
@Override
public void onFinish() {
}
};
isCountDownTimerActive = true;
countDownTimer.start();
}
}
});
}
}
我在 Android 中找到了很多关于如何暂停倒数计时器的示例,但是这些示例中的每一个都使用了不止一个按钮(暂停、恢复和取消)。
我想要一个按钮,当我按下它时计时器开始,然后当我再次按下它时它暂停(取消原始计时器,捕获计时器值)并在再次单击时恢复(从捕获的时间暂停以开始新的倒计时)。
有没有人有如何实现这一点的例子?我已经尝试过 if else 在按钮的 onClick 侦听器中循环。我有一个非常粗糙的半工作示例;
if (gameOn == 1) {
if((clkOnTimerBtn % 2)==0) {
isPaused = true; // PAUSE COUNTDOWN TIMER
resumeCountDownTimer(view, "pause");
} else { // RESUME COUNTDOWN TIMER
resumeCountDownTimer(view, "resume");
}
上面的问题是这是在按钮 onclick 侦听器中执行的,因此如果在我的 resumeCountDownTimer 中创建了一个新的 CountDownTimer,则以后无法访问计时器以取消它(暂停)。我也尝试过寻找一种方法来取消所有倒数计时器,如果可以的话会很混乱,但是我找不到任何示例或参考资料来这样做,因为即使这不是最优雅的方式,它至少也会获得所需的行为.
如果我没理解错的话,像这样的东西应该有用。
public class MainActivity extends AppCompatActivity {
CountDownTimer countDownTimer;
long duration = 100000; //This is the initial time,
long millisecondsLeft = 100000; // This is the time left. At the start it equales the duration.
boolean isCountDownTimerActive = false;
Button startButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.startStop);
final TextView timeLeft = (TextView) findViewById(R.id.timeLeft);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCountDownTimerActive) {
if (countDownTimer != null)
countDownTimer.cancel();
isCountDownTimerActive = false;
} else {
countDownTimer = new CountDownTimer(millisecondsLeft, 1000) {
@Override
public void onTick(long l) {
millisecondsLeft = l;
timeLeft.setText(" " + l);
}
@Override
public void onFinish() {
}
};
isCountDownTimerActive = true;
countDownTimer.start();
}
}
});
}
}