前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果

Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果

作者头像
砸漏
发布2020-10-28 18:46:53
1K0
发布2020-10-28 18:46:53
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本恩蓝脚本

本文介绍了Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果,分享给大家,具体如下:

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

实现代码

val timer:TextView = findViewById(R.id.textView) //这里的 timer 就是你要控制显示倒计时效果的 TextView 
val mSubscription: Subscription? = null // Subscription 对象,用于取消订阅关系,防止内存泄露
//开始倒计时,用 RxJava2 实现
 private fun timer() {
  val count = 59L
  Flowable.interval(0, 1, TimeUnit.SECONDS)//设置0延迟,每隔一秒发送一条数据
    .onBackpressureBuffer()//加上背压策略
    .take(count) //设置循环次数
    .map{ aLong - 
     count - aLong //
    }
    .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程
    .subscribe(object : Subscriber<Long  {
     override fun onSubscribe(s: Subscription?) {
      timer.isEnabled = false//在发送数据的时候设置为不能点击
      timer.textColor = resources.getColor(Color.GRAY)//背景色设为灰色
      mSubscription = s
      s?.request(Long.MAX_VALUE)//设置请求事件的数量,重要,必须调用
     }
     override fun onNext(aLong: Long?) {
      timer.text = "${aLong}s后重发" //接受到一条就是会操作一次UI
     }
     override fun onComplete() {
      timer.text = "点击重发"
      timer.isEnabled = true
      timer.textColor = Color.WHITE
      mSubscription?.cancel()//取消订阅,防止内存泄漏
     }
     override fun onError(t: Throwable?) {
      t?.printStackTrace()
     }
    })
 }

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档