Android实现倒计时之使用CountDownTimer
在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做法,相信还是有很多人和我一样一开始不知道Android已经帮我们封装好了一个叫CountDownTimer的类。
从字面上就可以看出来它叫倒数计时器又称定时器或计时器,采用Handler的方式实现,将后台线程的创建和Handler队列封装而成。
看了一下源码,发现这个类的调用还蛮简单,只有四个方法:
(1)public abstract void onTick(long millisUntilFinished);
固定间隔被调用
(2)public abstract void onFinish();
倒计时完成时被调用
(3)public synchronized final void cancel():
取消倒计时,当再次启动会重新开始倒计时
(4)public synchronized final CountDownTimer start():
启动倒计时
在这里可以看到前面两个是抽象方法,需要重写。
简单看一下代码:
package com.per.countdowntimer;import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.TextView;public class MainActivity extends Activity {private TextView mTvShow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTvShow = (TextView) findViewById(R.id.show);}/*** 取消倒计时* @param v*/public void oncancel(View v) {timer.cancel();}/*** 开始倒计时* @param v*/public void restart(View v) {timer.start();}private CountDownTimer timer = new CountDownTimer(10000, 1000) {@Overridepublic void onTick(long millisUntilFinished) {mTvShow.setText((millisUntilFinished / 1000) + "秒后可重发");}@Overridepublic void onFinish() {mTvShow.setEnabled(true);mTvShow.setText("获取验证码");}};
}
顺带附上XML布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"android:orientation="vertical"android:padding="16dp"><TextView
android:id="@+id/show"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:onClick="restart"android:text="取消" /><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:onClick="oncancel"android:text="结束" /></LinearLayout>
最后说明一下:
CountDownTimer timer = new CountDownTimer(10000, 1000):以毫秒为单位,第一个参数是指从开始调用start()方法到倒计时完成的时候onFinish()方法被调用这段时间的毫秒数,也就是倒计时总的时间;第二个参数表示间隔多少毫秒调用一次 onTick方法,例如间隔1000毫秒。
在调用的时候直接使用timer.start();
Android实现倒计时之使用CountDownTimer相关推荐
- android中倒计时控件CountDownTimer分析
android中倒计时控件CountDownTimer分析1 示例代码 new CountDownTimer(10000, 1000) {public void onTick(long millisU ...
- Android答题计时的代码,Android答题倒计时
Android答题倒计时:讲一下我在做一个答题APP时涉及到倒计时时遇到的一个问题吧.碎片+CountDownTimer组成的一个答题,其中遇到的一个问题就是.这个题的倒计时在你手动滑动下一个题的时候 ...
- Android验证码倒计时实现方式总结
Android验证码倒计时实现方式总结 几乎所有的APP里面都有验证码倒计时按钮,自己在项目中也尝试,简单总结为以下三种: 1.使用线程和Handler的方式,定时刷新倒计时数字,这种方式容易导致内存 ...
- Android 定时器+倒计时 仿淘宝秒杀
目录结构 效果图: imageViewHolder public class imageViewHolder extends RecyclerView.ViewHolder {public Image ...
- Android 时间倒计时
Android时间倒计时在网上一搜就一堆,而且也经常用到.备份一下,以便下次直接使用 1.首先我创建一个接口,为什么要创建一个接口呢?因为我是建立了一个类继承CountDownTimer.这样做的意义 ...
- Android实现倒计时的几种方案
前言 关于倒计时可以说我们App开发中常见的一种场景了,比如Splash倒计时跳转首页,比如发送短信之后倒计时60秒显示等等. 关于倒计时的实现方式,大家可能有不同的做法,这里做一下总结看看你使用的是 ...
- android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...
- android中倒计时动画,Android实现倒计时效果
本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下 一个倒计时的效果 先看效果图: 直接上代码: 这里是关于倒计时 -天时分秒-的逻辑判断 /** * 倒计时计算 * ...
- android闹钟倒计时_如何在Android上使用闹钟,计时器和秒表
android闹钟倒计时 Your Android device's built-in Clock app can serve as an alarm clock, a kitchen timer, ...
最新文章
- 分享我的第一个asp.net core开发过程
- cookie和session的理解
- python表白代码照片墙-python入会生成照片墙 利用python生成照片墙代码
- Kafka设计解析(三):Kafka High Availability (下)--转
- 程序员的中场职业规划
- 错误提示“未能加载文件或程序集“Microsoft.Office.Interop.Owc11”,
- android 获取sim卡,Android 获取手机SIM卡运营商
- svn authz 授权文件模版
- grpc-go客户端源码分析
- 面试稳了!网易资深工程师详解运维面经!
- python报告水印怎么弄_超简单Python安全批量打水印教程!
- 游戏开发之使用类封装双链表数据结构及双链表迭代器--第二版(C++基础)
- Spring源码之ApplicationContext(二)准备工作
- centos7添加新硬盘并挂载
- java 数学公式解析_JAVA 文本表达式解析成数学公式,计算出结果
- jdk1.8 64位 32位免费下载
- Selenium下载页面上的图片
- 服务器盘符修改不了怎么办,win10更换盘符报参数错误怎么办_win10系统盘符改不了参数错误解决方法...
- Updates were rejected because the tip of your current branch is behind hint: its remote counterpart
- 设计模式-文本编辑器