千家信息网

Android怎么实现短信验证码倒计时功能

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇"Android怎么实现短信验证码倒计时功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2025年01月18日Android怎么实现短信验证码倒计时功能

这篇"Android怎么实现短信验证码倒计时功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android怎么实现短信验证码倒计时功能"文章吧。

场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击。当倒计时结束时,按钮恢复。

实现与功能都不难,这次用 RxBinding,RxJava2 的方法去实现。并实现了手动、自动停止倒计时,防止多次点击。

功能动态图

要使用 RxBinding、RxJava2 先添加 Gradle 配置:

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.1'compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0'compile 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'

首先通过 RxView.clicks() 绑定并转换成一个倒计时的 Observable 观察者对象。

Observable mObservableCountTime = RxView.clicks(mBtnSendMsm)  //防止重复点击  .throttleFirst(MAX_COUNT_TIME, TimeUnit.SECONDS)  //将点击事件转换成倒计时事件  .flatMap(new Function>() {    @Override    public ObservableSource apply(Object o) throws Exception {      //更新发送按钮的状态并初始化显现倒计时文字      RxView.enabled(mBtnSendMsm).accept(false);      RxTextView.text(mBtnSendMsm).accept("剩余 " + MAX_COUNT_TIME + " 秒");      //在实际操作中可以在此发送获取网络的请求      //返回 N 秒内的倒计时观察者对象。      return Observable.interval(1, TimeUnit.SECONDS, Schedulers.io()).take(MAX_COUNT_TIME);    }  })  //将递增数字替换成递减的倒计时数字  .map(new Function() {    @Override    public Long apply(Long aLong) throws Exception {      return MAX_COUNT_TIME - (aLong + 1);    }  })  .observeOn(AndroidSchedulers.mainThread());//切换到 Android 的主线程。

设置作为倒计时提示的 Consumer 被观察者对象。

Consumer mConsumerCountTime = new Consumer() {  @Override  public void accept(Long aLong) throws Exception {    //显示剩余时长。当倒计时为 0 时,还原 btn 按钮.    if (aLong == 0) {      RxView.enabled(mBtnSendMsm).accept(true);      RxTextView.text(mBtnSendMsm).accept("发送验证码");    } else {      RxTextView.text(mBtnSendMsm).accept("剩余 " + aLong + " 秒");    }  }};

订阅点击事件:

 //订阅点击事件 Disposable mDisposable = mObservableCountTime.subscribe(mConsumerCountTime);

停止倒计时,但依然可以再次点击。

//重置验证码按钮。RxView.clicks(mBtnClean).subscribe(new Consumer() {  @Override  public void accept(Object o) throws Exception {    if (mDisposable != null && !mDisposable.isDisposed()) {      //停止倒计时      mDisposable.dispose();      //重新订阅      mDisposable = mObservableCountTime.subscribe(mConsumerCountTime);      //按钮可点击      RxView.enabled(mBtnSendMsm).accept(true);      RxTextView.text(mBtnSendMsm).accept("发送验证码");    }  }});

退出当前页面时,销毁清空数据。

@Overrideprotected void onDestroy() {  super.onDestroy();  if (mDisposable != null) {    mDisposable.dispose();  }}

以上就是关于"Android怎么实现短信验证码倒计时功能"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

倒计时 验证 按钮 功能 内容 事件 短信 对象 观察者 剩余 观察 订阅 数字 文章 知识 篇文章 页面 提示 价值 再次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国网络安全部队 网安大队开设网络安全课 i510400f服务器 怎样用命令查看数据库表 数据库文献太大怎么办 高中会考网络技术应用要求 塔科夫新手玩哪个服务器 软件开发大创申报书 电脑网吧可以做服务器吗 网上购物服务器配置 在服务器上无法连接到打印机 玩转DISCUZ数据库下载 辽宁数字化城管软件开发电话 网络安全甲方培训 网络安全类型选项 警务室开展网络安全检查工作简报 主备数据库和分布式数据库 昆山专业模具制造管理软件开发 用友的系统管理查不到服务器 指尖铭心网络技术有限公司 基金投资数据库怎么做 数据库中树状表的原理 虹口区网络技术产业化 软件测试软件开发网 石景山区信息化软件开发职责 主机托管所用网络技术 服务器玩剑灵 如何增强自我网络安全大学生 警务室开展网络安全检查工作简报 济南知识产权案搭建服务器
0