在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用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相关推荐

  1. android中倒计时控件CountDownTimer分析

    android中倒计时控件CountDownTimer分析1 示例代码 new CountDownTimer(10000, 1000) {public void onTick(long millisU ...

  2. Android答题计时的代码,Android答题倒计时

    Android答题倒计时:讲一下我在做一个答题APP时涉及到倒计时时遇到的一个问题吧.碎片+CountDownTimer组成的一个答题,其中遇到的一个问题就是.这个题的倒计时在你手动滑动下一个题的时候 ...

  3. Android验证码倒计时实现方式总结

    Android验证码倒计时实现方式总结 几乎所有的APP里面都有验证码倒计时按钮,自己在项目中也尝试,简单总结为以下三种: 1.使用线程和Handler的方式,定时刷新倒计时数字,这种方式容易导致内存 ...

  4. Android 定时器+倒计时 仿淘宝秒杀

    目录结构 效果图: imageViewHolder public class imageViewHolder extends RecyclerView.ViewHolder {public Image ...

  5. Android 时间倒计时

    Android时间倒计时在网上一搜就一堆,而且也经常用到.备份一下,以便下次直接使用 1.首先我创建一个接口,为什么要创建一个接口呢?因为我是建立了一个类继承CountDownTimer.这样做的意义 ...

  6. Android实现倒计时的几种方案

    前言 关于倒计时可以说我们App开发中常见的一种场景了,比如Splash倒计时跳转首页,比如发送短信之后倒计时60秒显示等等. 关于倒计时的实现方式,大家可能有不同的做法,这里做一下总结看看你使用的是 ...

  7. android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)

    本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...

  8. android中倒计时动画,Android实现倒计时效果

    本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下 一个倒计时的效果 先看效果图: 直接上代码: 这里是关于倒计时 -天时分秒-的逻辑判断 /** * 倒计时计算 * ...

  9. android闹钟倒计时_如何在Android上使用闹钟,计时器和秒表

    android闹钟倒计时 Your Android device's built-in Clock app can serve as an alarm clock, a kitchen timer, ...

最新文章

  1. 分享我的第一个asp.net core开发过程
  2. cookie和session的理解
  3. python表白代码照片墙-python入会生成照片墙 利用python生成照片墙代码
  4. Kafka设计解析(三):Kafka High Availability (下)--转
  5. 程序员的中场职业规划
  6. 错误提示“未能加载文件或程序集“Microsoft.Office.Interop.Owc11”,
  7. android 获取sim卡,Android 获取手机SIM卡运营商
  8. svn authz 授权文件模版
  9. grpc-go客户端源码分析
  10. 面试稳了!网易资深工程师详解运维面经!
  11. python报告水印怎么弄_超简单Python安全批量打水印教程!
  12. 游戏开发之使用类封装双链表数据结构及双链表迭代器--第二版(C++基础)
  13. Spring源码之ApplicationContext(二)准备工作
  14. centos7添加新硬盘并挂载
  15. java 数学公式解析_JAVA 文本表达式解析成数学公式,计算出结果
  16. jdk1.8 64位 32位免费下载
  17. Selenium下载页面上的图片
  18. 服务器盘符修改不了怎么办,win10更换盘符报参数错误怎么办_win10系统盘符改不了参数错误解决方法...
  19. Updates were rejected because the tip of your current branch is behind hint: its remote counterpart
  20. 设计模式-文本编辑器

热门文章

  1. uber_uber和airbnb是寄生虫,但不必
  2. Android WebRTC 音视频开发总结(一)
  3. 人工智能可以用来制作电影吗?
  4. 微信支付开发(5)--JSAPI支付开发详解
  5. java毕业设计——基于JSP+mysql的图书馆借阅系统设计与实现(毕业论文+程序源码)——图书馆借阅系统
  6. ajax对数据进行封装,ajax封装
  7. 最小二乘法-多项式拟合曲线
  8. 【圣诞节 圣诞树】--音乐版简洁圣诞树哦
  9. java中的GC原理
  10. ubuntu 添加、删除用户,修改用户名称,修改主机名