countdowntimer
countdowntimer 是android 自带的一个倒计时类,使用这个类可以很简单的实现 倒计时功能
countdowntimer 的实现方式
new countdowntimer(6000,1000) {//第一个参数表示的是倒计时的总时间,第二参数表示的是倒计时的间隔时间。 @override public void ontick(long millisuntilfinished) {//倒计时的过程 textview.settext(millisuntilfinished / 1000 + "秒"); } @override public void onfinish() {//倒计时结束 textview.settext("倒计时结束"); } }.start();
实现效果
取消计时器
调用 countdowntimer 的 cancel() 方法,可以为我们取消计时器:但是这个方法,只有在 android 5.0 以上才有效果,在android 5.0 以下并没有效果。如果需要在android 5.0 以下的系统中也使用 cancel,需要我们自己根据 countdowntimer 源码中的 实现方式,重新实现一下。
/** * cancel the countdown. */ public synchronized final void cancel() { mcancelled = true; mhandler.removemessages(msg); } private static final int msg = 1; // handles counting down private handler mhandler = new handler() { @override public void handlemessage(message msg) { synchronized (countdowntimer.this) { if (mcancelled) { return; } final long millisleft = mstoptimeinfuture - systemclock.elapsedrealtime(); if (millisleft <= 0) { onfinish(); } else if (millisleft < mcountdowninterval) { // no tick, just delay until done sendmessagedelayed(obtainmessage(msg), millisleft); } else { long lasttickstart = systemclock.elapsedrealtime(); ontick(millisleft); // take into account user's ontick taking time to execute long delay = lasttickstart + mcountdowninterval - systemclock.elapsedrealtime(); // special case: user's ontick took more than interval to // complete, skip to next interval while (delay < 0) delay += mcountdowninterval; sendmessagedelayed(obtainmessage(msg), delay); } } } };
由于在 android 5.0以上 增加了一个
private boolean mcancelled = false;
所以我们只需要在 5.0 以下的系统中,去掉
if (mcancelled) { return; }
去掉这个判断即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论