服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android 简单实现倒计时功能

Android 简单实现倒计时功能

2022-11-11 15:46是我ChaoYoung Android

在 Android 中倒计时功能是比较常用的一个功能,比如短信验证码,付款倒计时等。今天小编给大家分享Android 简单实现倒计时功能,感兴趣的朋友一起看看吧

在 Android 中倒计时功能是比较常用的一个功能,比如短信验证码,付款倒计时等。实现方式有Handler、Thread 等,但是实现起来都有点麻烦,其实Android已经为我们封装好了一个抽象类 CountDownTimer,可以简单的实现倒计时功能,如下图所示。

Android 简单实现倒计时功能

CountDownTimer 实现倒计时功能的机制也是用Handler 消息控制,只是它帮我们已经封装好了,先看一下它的介绍。

?
1
2
3
4
5
6
7
8
9
Schedule a countdown until a time in the future, with regular notifications on intervals along the way. Example of showing a 30 second countdown in a text field:
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText(“done!”);
}
}.start();

大致意思是,设置一个倒计时,直到完成这个时间段的计时,并会实时更新时间的变化,最后举了一个30秒倒计时的例子,如下:

?
1
2
3
4
5
6
7
8
new CountDownTimer(30000, 1000) {
  public void onTick(long millisUntilFinished) {
    mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
  }
  public void onFinish() {
    mTextField.setText("done!");
  }
}.start();

详解

可以看到,上面示例中构造方法需要传入两个参数,如下:

?
1
2
3
4
5
6
7
8
9
/**
* @param millisInFuture The number of millis in the future from the call to start()
*           until the countdown is done and onFinish() is called.
* @param countDownInterval The interval along the way to receive onTick(long) callbacks.
*/
public CountDownTimer(long millisInFuture, long countDownInterval) {
  mMillisInFuture = millisInFuture;
  mCountdownInterval = countDownInterval;
}

第一个参数是倒计时的总时间,第二个参数是倒计时的时间间隔(每隔多久执行一次),注意这里传入的两个时间参数的单位都是毫秒。

它提供的几个方法也很简单,如下:

Android 简单实现倒计时功能

  • start():开始倒计时。
  • cancel():取消倒计时。
  • onFinish():倒计时完成后回调。
  • onTick(long millisUnitilFinished):当前任务每完成一次倒计时间隔时间时回调。

验证码示例

短信验证码倒计时原理很简单,也就是点击获取验证码开启倒计时,在倒计时内不可点击,倒计时结束后方可重新获取,如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
new CountDownTimer(millisUntilFinished, 1000) {
  /**
   * 当前任务每完成一次倒计时间隔时间时回调
   * @param millisUntilFinished
   */
  public void onTick(long millisUntilFinished) {
    if (btn_Code != null) {
      //按钮不可用
      btn_Code.setClickable(false);
      btn_Code.setEnabled(false);
      btn_Code.setText(millisUntilFinished / 1000 + "s");
    }
  }
 
  /**
   * 倒计时完成后回调
   */
  public void onFinish() {
    if (btn_Code != null) {
      //按钮可用
      btn_Code.setText("重新获取");
      btn_Code.setClickable(true);
      btn_Code.setEnabled(true);
    }
    //取消倒计时
    cancel();
  }
}.start();

注:在Activity或Fragment销毁的时候记得调用 cancle() 方法,否则它的 onTick() 方法还会继续执行,容易造成内存泄漏。

总结

以上所述是小编给大家介绍的Android 简单实现倒计时功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:https://blog.csdn.net/xch_yang/article/details/103523972

延伸 · 阅读

精彩推荐
  • AndroidAndroid提高之SQLite分页表格实现方法

    Android提高之SQLite分页表格实现方法

    这篇文章主要介绍了Android提高之SQLite分页表格实现方法,在项目开发中有很高的实用价值,需要的朋友可以参考下...

    Android开发网8322021-03-06
  • AndroidUbuntu下android adb环境变量配置方法

    Ubuntu下android adb环境变量配置方法

    这篇文章主要介绍了Ubuntu下android adb环境变量配置方法,本文给出了操作步骤,按步骤操作即可,需要的朋友可以参考下...

    Android开发网14192021-03-18
  • AndroidAndroid中检测当前是否为主线程最可靠的解决方法

    Android中检测当前是否为主线程最可靠的解决方法

    这篇文章主要介绍了Android中检测当前是否为主线程最可靠的解决方法,本文先是给出了最可靠的方法,然后给出了几个实验例子,需要的朋友可以参考下...

    Android开发网6872021-03-12
  • AndroidAndroid Studio下载与安装简易教程

    Android Studio下载与安装简易教程

    这篇文章主要为大家详细介绍了Android Studio下载与安装简易教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    shengmer11072022-10-24
  • AndroidEmoji表情在Android JNI中的兼容性问题详解

    Emoji表情在Android JNI中的兼容性问题详解

    这篇文章主要给大家介绍了关于Emoji表情在Android JNI中的兼容性问题,文中通过示例代码介绍的非常详细,对大家学习或者使用Android JNI具有一定的参考学习...

    Darkness4633872022-10-31
  • Android基于Android代码实现常用布局

    基于Android代码实现常用布局

    大家在日常中经常见到用xml文件实现android常用布局,但是大家知道如何用代码实现呢?使用代码实现可以帮助我们学习sdk api,所以小编把我日常整理些关...

    Android开发网3932021-04-13
  • Androidandroid嵌套滚动入门实践

    android嵌套滚动入门实践

    嵌套滚动是 Android OS 5.0之后,google 为我们提供的新特性,本篇文章主要介绍了android嵌套滚动入门实践,小编觉得挺不错的,现在分享给大家,也给大家做...

    Glan Wang9762022-02-27
  • AndroidAndroid编程中HTTP服务用法详解

    Android编程中HTTP服务用法详解

    这篇文章主要介绍了Android编程中HTTP服务用法,结合实例形式较为详细的分析了Android中http服务的具体步骤与相关使用技巧,需要的朋友可以参考下...

    liuhe6887122021-05-03