我正在尝试使用Button为倒数计时器做一些示例,并为该Button设置OnclickListener。我的默认值是10,它将每秒减少,我如何将我的值重置为10?
答案 0 :(得分:1)
CountDownTimer
无法重新启动,只能使用一次。您要么必须创建自己的倒计时类来处理重新启动,要么只创建CountDownTimer
的新实例并取消旧实例。
请参阅下面的示例代码,其中我们有CountDownTimer
以1秒为间隔倒计时10秒,Button
在点击时重置计时器(通过取消当前计时器并启动新计时器)一个)和一个TextView
,显示当前计时器剩余的时间。
public class YourActivity extends Activity {
private CountDownTimer countDownTimer;
private TextView timerDisplayTextView;
private static final long TEN_SECONDS = TimeUnit.SECONDS.toMillis(10);
private static final long COUNTDOWN_INTERVAL = TimeUnit.SECONDS.toMillis(1);
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Button myButton; // initialized here
// timerDisplayTextView initialized here
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
countDownTimer.cancel();
countDownTimer = getNewCountDownTimer(TEN_SECONDS);
countDownTimer.start();
showTimeInTextView(TEN_SECONDS);
}
});
countDownTimer = getNewCountDownTimer(TEN_SECONDS);
countDownTimer.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
countDownTimer.cancel();
}
private void showTimeInTextView(long millisecondsLeft) {
timerDisplayTextView.setText(TimeUnit.MILLISECONDS.toSeconds(millisecondsLeft) + " seconds left");
}
private CountDownTimer getNewCountDownTimer(long length) {
return new CountDownTimer(length, COUNTDOWN_INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
showTimeInTextView(millisUntilFinished);
}
@Override
public void onFinish() {
}
};
}
}