版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wfs31415926/article/details/82755269
android 简单小巧倒计时工具类
借鉴前人经验的基础上改动
改动内容:
- 防止出现-1秒显示的情况
- 防止出现 0秒显示的情况.在0秒直接自动跳转
参考博客地址:
https://blog.csdn.net/z82367825/article/details/47167747
废话不多说了,先上效果图
看到这里说明有点用,给你个代码
// An highlighted block
public class TimeUtil {
//倒计时功能
public interface ITimer {
public void onCompelete();
public void onPerSecond(int time);
}
Timer timer;
private ITimer ITimer;
private int time;
public TimeUtil(ITimer ITimer, int time) {
this.ITimer = ITimer;
this.time = time;
}
public void start() {
if (timer == null) {
timer = new Timer();
timer.schedule(timerTask, 0, 1000);
}
}
public void stop() {
if (timer != null) {
timer.cancel();
timer = null;
}
}
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
//此处改动2
if (time == 0) {
handler.sendEmptyMessage(0x02);
} else {
handler.sendEmptyMessage(0x01);
}
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x01:
//此处改动1
ITimer.onPerSecond(time);
--time;
break;
case 0x02:
ITimer.onCompelete();
break;
}
}
};
}
工具类使用示例
tvLeftSecond.setText("广告剩余" + countDownSeconds + "秒");
timeUtil = new TimeUtil(new TimeUtil.ITimer() {
@Override
public void onCompelete() {
//计时结束
timeUtil.stop();
}
@Override
public void onPerSecond(int time) {
//每过一秒,方法调用一次
tvLeftSecond.setText("广告剩余" + time + "秒");
}
}, countDownSeconds);
timeUtil.start();