倒计时应用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;

}

去掉这个判断即可。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Presto实战

    Presto实战一、Presto简介1、PRESTO是什么?Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规

  • Tomcat学习—Tomcat的web.xml配置文件「建议收藏」

    今天开始学习Tomcat的配置文件,自己学习和上网查看整理web.xml 的笔记!

  • Java sdk安装及配置[通俗易懂]

    Java sdk安装及配置[通俗易懂]1.安装JavaSDK开发环境。首先去官网下载JavaSDK,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载完成之后,开始安装。点击下一步,安装完成。2.配置JavaSDK环境变量单击“计算机-属性-高级系统设置”,单击“环境变

  • RabbitMQ(四):Exchange交换器–direct

    RabbitMQ(四):Exchange交换器–direct

  • 交叉线与直通线的区别

    交叉线与直通线的区别网线分为两种:直通线和交叉线。1>直通线:标准线,两端都采用568B做线标准。两端的线序对是:1、白橙、2、橙、3、白绿、4、蓝、5、白蓝、6、绿、7、白棕、8、棕。注意两端都是同样的线序且一一对应,这种线就是我们平时最常用的网线。直通线一般连接不同的设备,比如电脑和路由器。2>交叉线:反线,一端采用568B做线标准,一端采用568A的标准。一端的线序对是:1、白橙、2、橙

  • 电脑播放已下载本地的m3u8缓存视频文件「建议收藏」

    经常在网上看视频,不管是电脑上还是手机上!最近几年除了m3u8格式的视频流,其它格式都很少见了。而为啥不用种子下载,是因为要浏览下剧情,看是否喜欢!原先有简单的视频合并工具软件,但现在能用的很少了!连以前下载的缓存都不能合并了!所以在百度了资料和各位大咖的文章后,写下了这篇文章!如果你嫌麻烦请无视!毕竟本人不怎么会编程,纯手动记事本编辑。用Potplayer播放,用HttpFileServer运行服务器。1、首先你当然得知道你下载的文件在哪,把m3u8文件和视频缓存碎片文件夹都复制到电.

发表回复

您的电子邮箱地址不会被公开。

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