倒计时应用countdown_countdown timer

倒计时应用countdown_countdown timerCountDownTimerCountDownTimer是android自带的一个倒计时类,使用这个类可以很简单的实现倒计时功能CountDownTimer的实现方式newCountDownTimer(6000,1000){//第一个参数表示的是倒计时的总时间,第二参数表示的是倒计时的间隔时间。@OverridepublicvoidonTick(longmillisUntilFi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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();

实现效果

4944dc49287e1a2b6e388afc150148fb.gif

取消计时器

调用 CountDownTimer 的 cancel() 方法,可以为我们取消计时器:但是这个方法,只有在 android 5.0 以上才有效果,在android 5.0 以下并没有效果。如果需要在android 5.0 以下的系统中也使用 cancel,需要我们自己根据 CountDownTimer 源码中的 实现方式,重新实现一下。

cancel()源码

/**

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

}

去掉这个判断即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192126.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月18日 下午7:15
下一篇 2026年1月18日 下午7:43


相关推荐

  • asp.net dropdownlist的值怎么设置_ASPNET程序开发招聘

    asp.net dropdownlist的值怎么设置_ASPNET程序开发招聘我刚刚开始学习ASP.NET,所以当然有点辛苦,懂的不是很多…今天写程序时碰到了控件DrowDownList.–列表控件….当我改变控件的值时,怎么也不能改变另一个DropDownList控件的值,查了MSDN之后才知道--原来我的AutoPostBack属性没有设置成”true”所以不能刷新,但是当我改完之后确实能够刷新了,但是每次刷新之后并不能改变需要触发事件的那个

    2025年11月1日
    5
  • 微信开放平台 获取用户信息(微信公众号获取用户列表时间)

    前言:初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客、问答,对于参差不齐的信息,自己也是有苦说不出,抽出一点时间写点文章,既是对自己的学习总结,也希望给予同是菜鸟的学渣一点帮助背景介绍:我需要用户接收微信分享的链接后,点击进入给参加活动的用户【点赞】,然后需要后台获取该微信用户的openid作为唯一的标记信息,以便保证该用户下次进入后进行数据库的比对,直接提取其对应的操作信息…

    2022年4月12日
    53
  • Databus 深入学习

    Databus 深入学习一、关于databusLinkedIn于2月26日开源了其低延时变化数据捕获系统Databus,该系统可以在MySQL以及Oracle数据源上捕获数据,当下LinkedIn只开源了Oracle上的连接器。Databus作为LinkedIn生态系统中的一致性保障组件,在低延时的情况下仍然具有高有效性;而其最大的特点莫过于无限制恢复能力及丰富的数据深度处理功能。二、基于da…

    2022年10月10日
    9
  • 2000数据库置疑怎么处理_msdb数据库置疑的解决方法

    2000数据库置疑怎么处理_msdb数据库置疑的解决方法由于服务器意外的断电,导致SQLSERVER服务器上数据库出现“置疑”而无法使用,通过网上搜索,找到以下方法解决问题,这里记录一下:产生数据库置疑的时侯,数据库文件和日志文件都是存在的,如果数据库文件都不存在了,则要另当处理。1、停止数据库服务器,将数据库MDF文件和LDF文件复制备份一份2、启动数据库服务器,删除置疑的数据库3、仅用备份的数据库MDF文件附加数据库,sp_attach_…

    2022年8月20日
    14
  • datagrid激活码(破解版激活)「建议收藏」

    datagrid激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    54
  • 深度学习 — 卷积神经网络CNN(LeNet-5网络详解)

    深度学习 — 卷积神经网络CNN(LeNet-5网络详解)卷积神经网络 Convolutiona CNN 是一种前馈型的神经网络 其在大型图像处理方面有出色的表现 目前已经被大范围使用到图像分类 定位等领域中 相比于其他神经网络结构 卷积神经网络需要的参数相对较少 使的其能够广泛应用 本节打算先介绍背景和简单的基本概念术语 然后详细介绍 LeNet 5 网络 其工作流程大家需要先搞清楚 学习原理其实是基于 BP 学习原理的 只

    2026年3月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号