Chronometer和CountDownTimer计时器
Android小知识10则(上)
Android小知识10则(下)
Android用5种方式实现自定义计时器, 哪种才是你的菜?
github传送门
目录
- 前言
- Chronometer的使用
- CountDownTimer的使用
- 最后
前言
之前在Android用5种方式实现自定义计时器, 哪种才是你的菜?的文章中我提到了Chronometer和CountDownTimer计时器, 但是很奇怪, 好像被忽略了, 所以这次单独拎出来发一次好了.
Android也是提供了计时器的, 虽然功能比较简单, 但是有些场景下也还是够用的...吗?(手动滑稽) CountDownTimer是倒计时计时器. Chronometer的话, 看怎么用了, 正着倒着都行...吗?(再次滑稽)
Chronometer的使用
礼貌性给下官方文档. 然后上效果图:
mTimer.setBase(-60000 + SystemClock.elapsedRealtime()); mTimer.setCountDown(false); mTimer.start();
我们以+1m(也就是从1分钟开始计时)为例:
- 先看xml代码,
android:format="%s"
是要点, 后面会说. 然后它继承自TextView, 属性设置什么的就很简单了:
<Chronometer android:id="@+id/timer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="@dimen/sixteen_dp" android:format="%s" android:textColor="@android:color/darker_gray" android:textSize="@dimen/thirty_sp" />
- (-60000 + SystemClock.elapsedRealtime())的出现会让你一下子懵了, 所以先说SystemClock.elapsedRealtime(). Chronometer实例是需要设置基线的, 然后用SystemClock.elapsedRealtime()减去你设置的基线值, 换句话说, 如果你写mTimer.setBase(SystemClock.elapsedRealtime());就意味着从零开始. 然后单位是ms, 一分钟就是60000ms, 所以想从一分钟开始就是(-60000 + SystemClock.elapsedRealtime())了.
- mTimer.setCountDown();代表是倒计时还是正常计时, false就是正常计时, true计时倒计时.
- 你可能会提问, 为什么我没有格式化字符串它也正常显示了. 看xml中的
android:format="%s"
, 这就是代表用默认的格式. 官方文档有这么一段: By default it will display the current timer value in the form "MM:SS" or "H:MM:SS", or you can use setFormat(String) to format the timer value into an arbitrary string. 也就是说默认"MM:SS", 超过1小时"H:MM:SS", 你可以用setFormat(String)设置你的style儿(手动滑稽).- 然后mTimer.start();是开始. mTimer.stop();是停止. 这很好理解了.
也许你会觉得它还挺好用, 但事实很残酷, 倒计时的功能要7.0才能使用, 其它的倒是兼容低版本, 但是废了一半了不是. 但是配合CountDownTimer, 意外地解决了麻烦.
CountDownTimer的使用
效果图:
这个倒计时类异常好用. 构造函数第一个参数是总时长, 第二个是间隔. onTick是每次变化要执行的动作, onFinish是结束后要执行的动作.
mCountDownTimer.start();
是开始.mCountDownTimer.cancel();
是停止. 完事了, 就这么多内容, 不信去看看官方文档.
private CountDownTimer mCountDownTimer = new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { String str = "剩余" + (millisUntilFinished / 1000) + "秒"; mTvTime.setText(str); } @Override public void onFinish() { mTvTime.setEnabled(true); mTvTime.setText("倒计时结束"); } };
最后
喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
常说购买服务器,是购买安装linux系统还是windows系统,请问二者有啥区别
常说购买服务器,是购买安装linux系统还是windows系统,请问二者有啥区别 新手入门,常说购买服务器,是购买安装linux 系统还是windows系统,请问二者有啥区别,是不是自己办公室的电脑分为linux和windows,还是指服务器上的。 跟你本地电脑没关系两个系统都可以就和你手机系统 安卓 ios 一样 都能运行各种程序看你个人喜欢了 对于建网站来说,购买安装linux系统可以长时间不维护也不产生任何垃圾,因此目前购买服务器安装linux系统是首选 windows系统运行过程中会产生一些少量的垃圾,需要定时维护清理
- 下一篇
Android免费集成推送功能(MobPush)
一、获取AppKey申请MobSDK的appkey流程(http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1)二、配置gradle1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示; buildscript { repositories { jcenter() } dependencies { ... classpath 'com.mob.sdk:MobSDK:+' } } 2、在使用MobPush模块的build.gradle中,添加MobSDK插件和扩展,如: // 添加插件 apply plugin: 'com.mob.sdk' // 在MobSDK的扩展中注册MobPush的相关信息 MobSDK { appKey "替换为mob官方申请的appkey" appSecret "替换为mob官方申请的appkey对应的appSecret" Mo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19