溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android使用Kotlin和RxJava 2.×實現(xiàn)短信驗證碼倒計時效果

發(fā)布時間:2020-09-25 12:45:19 來源:腳本之家 閱讀:159 作者:xiaofei_dev 欄目:移動開發(fā)

本文介紹了Android使用Kotlin和RxJava 2.×實現(xiàn)短信驗證碼倒計時效果,分享給大家,具體如下:

場景:注冊賬號頁面時,我們點擊按鈕發(fā)送驗證碼,在等待驗證碼時,界面會有倒計時提示,這此期間按鈕不可點擊。當?shù)褂嫊r結(jié)束時,按鈕恢復。

實現(xiàn)代碼

val timer:TextView = findViewById(R.id.textView) //這里的 timer 就是你要控制顯示倒計時效果的 TextView 
val mSubscription: Subscription? = null // Subscription 對象,用于取消訂閱關(guān)系,防止內(nèi)存泄露
//開始倒計時,用 RxJava2 實現(xiàn)
 private fun timer() {
  val count = 59L
  Flowable.interval(0, 1, TimeUnit.SECONDS)//設(shè)置0延遲,每隔一秒發(fā)送一條數(shù)據(jù)
    .onBackpressureBuffer()//加上背壓策略
    .take(count) //設(shè)置循環(huán)次數(shù)
    .map{ aLong ->
     count - aLong //
    }
    .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI線程
    .subscribe(object : Subscriber<Long> {
     override fun onSubscribe(s: Subscription?) {
      timer.isEnabled = false//在發(fā)送數(shù)據(jù)的時候設(shè)置為不能點擊
      timer.textColor = resources.getColor(Color.GRAY)//背景色設(shè)為灰色
      mSubscription = s
      s?.request(Long.MAX_VALUE)//設(shè)置請求事件的數(shù)量,重要,必須調(diào)用
     }
     override fun onNext(aLong: Long?) {
      timer.text = "${aLong}s后重發(fā)" //接受到一條就是會操作一次UI
     }
     override fun onComplete() {
      timer.text = "點擊重發(fā)"
      timer.isEnabled = true
      timer.textColor = Color.WHITE
      mSubscription?.cancel()//取消訂閱,防止內(nèi)存泄漏
     }
     override fun onError(t: Throwable?) {
      t?.printStackTrace()
     }
    })
 }

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI