倒计时应用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue和layUi对比

    vue和layUi对比vue和layUi对比vue(angular,react)这些框架会负责数据和视图的绑定,数据变了,视图自动更新,视图发生事件,也会更新数据,很省事。layui(bootstrap,extjs)这类库,感觉不是框架,而是组件库,会提供一些组件(比如表格,树),只提供外观和行为,不提供和数据的绑定,数据变了,你负责刷新;视图变了,你自己获取数据。vue的界面库elementui和layui都是组件库,区别就是数据和视图是不是关联的。layui其实更偏向与后端开发人员使用,在服务端页面上有非常好的效果

    2022年6月25日
    164
  • 宇宙简史|生物学家也要了解的物理

    宇宙简史|生物学家也要了解的物理本文转载自"环球地理志",己获授权“盘古开天辟地”天地混沌如鸡子盘古生其中万八千岁、天地开辟阳清为天、阴浊为地盘古在其中一日九变神于天、圣于地▼◤围绕北落师门的圆盘状宇…

    2022年5月8日
    77
  • linux如何查看所有的用户和组信息?

    linux如何查看所有的用户和组信息?

    2021年10月27日
    45
  • ORACLE SEQUENCE 权限

    ORACLE SEQUENCE 权限
    ORACLESEQUENCE的简单介绍
    如何修改sequence的权限(将用户aaa下的sequence查询权限分配给用户bbb):
    connaaa/aaa
    grantselect onsequencenametobbb
    connbbb/bbb
    selectaaa.sequencename.nextvalfromdual
     
    授予和收回权限
    grantselectonseq_teamme

    2022年10月19日
    4
  • matlab griddata nan,请教Matlab的griddata的用法

    matlab griddata nan,请教Matlab的griddata的用法请教Matlab的griddata的用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!请教Matlab的griddata的用法MATLAB散乱点插值函式griddata函式语法:ZI=griddata(x,y,z,XI,YI)[XI,YI,ZI]=griddata(x,y,z,XI,YI)[…]=gri…

    2022年5月9日
    39
  • CentOS 7 升级 Linux 内核

    CentOS 7 升级 Linux 内核升级CentOS内核参考资料1升级CentOS内核参考资料2通过/proc虚拟文件系统读取或配置内核Linux内核官网CentOS官网1.关于Linux内核Linux内核分两种:官方内核(通常是内核开发人员用)和各大Linux发行版内核(一般用户常用)。1.1官方内核在使用Docker时,发现其对Linux内核版本的最低要求…

    2022年7月23日
    12

发表回复

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

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