拓展 Android 原生 CountDownTimer 倒计时
拓展 Android 原生 CountDownTimer 倒计时
CountDownTimer
在系统的
CountDownTimer
上进行的修改,主要是拓展了功能,当然也保留了系统默认的模式.
四种模式:
- Normal模式: 向上取整(我觉得应该是日常中用的最多的)
- Floor模式: 向下取整
- System模式: 系统默认的(保留系统原始功能)
- SystemFix模式: 系统默认会少一个
onTick()
回调,这里只是把缺的这个回调加进去
在Activity中的代码如下:
final CountDownTimer timer=new CountDownTimer(10000,1000,CountDownTimer.NORMAL) {
@Override
public void onTick(long millisUntilFinished) {
Log.d("test","millisUntilFinished: "+millisUntilFinished);
long l = millisUntilFinished / 1000;
mTs.setText(""+l);
}
@Override
public void onFinish() {
Log.d("test","onFinish 0");
mTs.setText("0");
}
};
mBt_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.start();
}
});
对应模式的Log如下所示:
Normal 模式
08-10 09:23:53.595 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 10000
08-10 09:23:54.595 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 9000
08-10 09:23:55.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 8000
08-10 09:23:56.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 7000
08-10 09:23:57.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 6000
08-10 09:23:58.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 5000
08-10 09:23:59.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 4000
08-10 09:24:00.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 3000
08-10 09:24:01.605 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 2000
08-10 09:24:02.615 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 1000
08-10 09:24:03.605 27628-27628/didikee.com.demoapk D/test: onFinish 0
Floor 模式
08-10 09:26:54.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 9000
08-10 09:26:55.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 8000
08-10 09:26:56.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 7000
08-10 09:26:57.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 6000
08-10 09:26:58.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 5000
08-10 09:26:59.455 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 4000
08-10 09:27:00.465 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 3000
08-10 09:27:01.465 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 2000
08-10 09:27:02.465 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 1000
08-10 09:27:03.465 27628-27628/didikee.com.demoapk D/test: onFinish 0
System 模式
08-10 09:29:03.035 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 9999
08-10 09:29:04.035 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 8998
08-10 09:29:05.035 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 7996
08-10 09:29:06.035 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 6995
08-10 09:29:07.045 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 5993
08-10 09:29:08.045 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 4992
08-10 09:29:09.045 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 3990
08-10 09:29:10.045 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 2989
08-10 09:29:11.045 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 1987
08-10 09:29:13.035 27628-27628/didikee.com.demoapk D/test: onFinish 0
SystemFix 模式
08-10 09:29:59.795 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 9999
08-10 09:30:00.795 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 8998
08-10 09:30:01.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 7997
08-10 09:30:02.795 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 6997
08-10 09:30:03.795 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 5996
08-10 09:30:04.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 4994
08-10 09:30:05.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 3992
08-10 09:30:06.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 2990
08-10 09:30:07.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 1989
08-10 09:30:08.805 27628-27628/didikee.com.demoapk D/test: millisUntilFinished: 988
08-10 09:30:09.795 27628-27628/didikee.com.demoapk D/test: onFinish 0
总结
项目里需要倒计时,用到的时候遇到了这个问题,查的时候别人也发现了,但是没看到有人修改,所以自己做了些改动,需要的小伙伴可以直接拿走.=.=
代码在这里: https://github.com/didikee/Android-Learning-Report
附言
有的小伙伴肯定嫌麻烦,谁会点开那么慢的Github,更不会注册账户
Star
或者Fork
的,如果遇到你可以这样解决"丢一秒"的问题.
private CountDownTimer robLiftTimer = new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Message msg = Message.obtain();
msg.what = 2;
float v = millisUntilFinished * 1.0f / 1000f;
int round = Math.round(v);
msg.arg1 = round;
Log.e("live", millisUntilFinished + "--" + round + "==" + v);
mHandler.sendMessage(msg);
if (round == 2) {//第二秒的时候"补"一秒
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Message msg = Message.obtain();
msg.what = 2;
msg.arg1 = 1;
mHandler.sendMessage(msg);
}
}, 1000);
}
}
也很简单,对吧.=.=
拓展 Android 原生 CountDownTimer 倒计时的更多相关文章
- Android使用CountDownTimer倒计时
1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android ...
- [Android Pro] CountDownTimer倒计时
定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: new CountdownTimer(3 ...
- Android 获取验证码倒计时实现
Android 获取验证码倒计时实现 2017年10月24日 09:55:41 FBY展菲 阅读数:2002 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- Android计时器和倒计时
Android计时器和倒计时 计时器两个核心类 Timer 和 TimerTask 1) Timer核心方法 Java代码 //Schedules the specified task for ex ...
- 利用CountDownTimer倒计时的简单使用实现
package com.loaderman.countdowntimerdemo; import android.os.Bundle; import android.os.CountDownTimer ...
- Android原生json和fastjson的简单使用
android原生操作json数据 主要是两个类 JSONObject 操作对象 JONSArray操作json数组 对象转json //创建学生对象 Student student=new ...
- Android原生游戏开发:使用JustWeEngine开发微信打飞机
使用JustWeEngine开发微信打飞机: 作者博客: 博客园 引擎地址:JustWeEngine 示例代码:EngineDemo JustWeEngine? JustWeEngine是托管在Git ...
- android原生ExpandableListView
android原生可扩展ExpandableListView就是可以伸缩的listView,一条标题下面有多条内容. 这个list的adapter对的数据要求与普通ListView的数据要求也有一些差 ...
- [Android Pro] android 4.4 Android原生权限管理:AppOps
reference : http://m.blog.csdn.net/blog/langzxz/45308199 reference : http://blog.csdn.net/hyhyl1990/ ...
随机推荐
- while 循环 。。
这是一个可以循环到天荒地老的循环: 如果while 为真就一直循环下去: count=0 while True: count+=1 if count>50 and count<60: co ...
- Vue - 过滤器
1.内部过滤器 1):字母操作: ---- 针对字符串 A:capitalize B:uppercase C:lowercase 2):json过ingfy滤器,可将表达式的值转化为Json字符串,本 ...
- 返水bug-备用
NOOK(N) CSBFB(25) off(Y) QQ(2652880032) G(1) off1(Y) QQ1(3479301404) G1(1) off2(Y) QQ2(309235846) G2 ...
- ie6,ie7,ie8 css bug兼容解决方法
IE浏览器以不支持大量的css 属性出名,同时也因其支持的css属性中存在大量bug. 这里收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希 ...
- Code First 关系配置整理
之前EF一直有性能问题以及使用便利性问题, 终于到了EF6有了Migrations之后, 小弟也决定加入EF阵营了. 在学习FluentAPI配置关系的时候, 发现网上的好几个教程实际上博主自己都没有 ...
- IPv6进阶
IPV6报文部分字段介绍 1.没有校验和字段:优点:当TTL减少时,不需要重新处理,相对于IPV4能减少处理的时间:缺点:必须在上层包含校验和2.下一个报文:可指向扩展报文:(大部分节点不处理和查看大 ...
- 印象笔记 剪藏(Evernote WebClipper) bug 记录
问题记录: Chrome版的 webclipper不知为何新装的时候切换到中国版印象笔记登陆的时候闪退,然后之后就无法进入中国区的登录页面:international版确认可以登录. cookies是 ...
- Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...
- tomcat context配置
<Context path="/ext" docBase="/eqp/export" /> 访问目录 ...
- mui框架中底部导航的跳转1
mui框架极大的方便了app的开发但是我们在做页面之间的切换时发现不能实现 a 链接的跳转,这是应为mui相关的一些控件是通过拦截a标签上的href来实现的,所以mui.js会阻止a标签上的href跳 ...