老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Android怎么使用RxBinding與RxJava2實現短信驗證碼倒計時功能

這篇“Android怎么使用RxBinding與RxJava2實現短信驗證碼倒計時功能”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Android怎么使用RxBinding與RxJava2實現短信驗證碼倒計時功能”文章吧。

我們提供的服務有:網站設計、成都網站制作、微信公眾號開發、網站優化、網站認證、墨竹工卡ssl等。為上1000+企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的墨竹工卡網站制作公司

場景:注冊賬號頁面時,我們點擊按鈕發送驗證碼,在等待驗證碼時,界面會有倒計時提示,這此期間按鈕不可點擊。當倒計時結束時,按鈕恢復。

實現與功能都不難,這次用 RxBinding,RxJava2 的方法去實現。并實現了手動、自動停止倒計時,防止多次點擊。

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("發送驗證碼");
    }
  }
});

退出當前頁面時,銷毀清空數據。

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

以上就是關于“Android怎么使用RxBinding與RxJava2實現短信驗證碼倒計時功能”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創新互聯行業資訊頻道。


分享題目:Android怎么使用RxBinding與RxJava2實現短信驗證碼倒計時功能
文章源于:http://www.xueling.net.cn/article/gedojo.html 主站蜘蛛池模板: 久久精品久久精品中文字幕 | 亚洲国产日韩美 | 中文字幕在线永久在线视频 | 日韩中文字幕不卡 | 欧美一级看片 | 国产精品一区二区国产 | 草逼网站 | 国产原创三级 | 少妇又紧又深又湿又爽视频 | 一区二区三区我不卡 | 狠狠色狠狠色狠狠五月 | 91官网在线| 国产国语一级A毛片高清视频 | 日韩中文字幕在线观看 | 一本一道波多野结衣av黑人 | av软件(永久免费) | 国产成人精品一区二区视频免费 | 无码精品一区二区三区四区爱奇艺 | 国产XXXX99真实实拍 | 日本做暖暖视频 | 91超碰刺激偷拍 | 欧美亚洲日本国产综合在线美利坚 | 一区二区国产精品视频 | 护士被强女千到高潮视频 | 久久亚洲精品无码AV红樱桃 | 国产成人剧情AV麻豆果冻 | 亚洲人a成www在线影院 | 高清一区在线 | 中文字幕一区二区三 | 欧美一级大片在线视频 | 人人干人人草 | 一级片网站视频 | 欧美丰满老熟妇aaaa片 | 韩国三级丰满少妇高潮 | 我要色综合网 | 一本色道久久HEZYO无码 | 我学生的妈妈在线 | 国产一区在 | 久久网一区二区三区 | 俺来也中文字幕 | 97久久精品国产 |