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;
}
}