Android 使用Rxjava实现验证码倒计时功能

先来看下效果图:

Android 使用Rxjava实现验证码倒计时功能_第1张图片
2.png
Android 使用Rxjava实现验证码倒计时功能_第2张图片
1.png

//首先导入rxjava包

compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'

//代码

int count_time = 60; //总时间
    Observable.interval(0, 1, TimeUnit.SECONDS) //0延迟  每隔1秒触发
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程
            .take(count_time + 1) //设置循环次数
            .map(aLong -> count_time - aLong) //从60-1
            .doOnSubscribe(() -> idTvCodeAcRegister.setClickable(false)) //执行过程中按键为不可点击状态
            .subscribe(new Observer() {
                @Override
                public void onCompleted() {//循环结束调用此方法
                    LogUtil.show("onCompleted");
                    idTvCodeAcRegister.setClickable(true);
                    idTvCodeAcRegister.setText(R.string.get_code);
                }

                @Override
                public void onError(Throwable e) {
                    e.printStackTrace();
                }

                @Override
                public void onNext(Long aLong) {//每隔一秒执行
                    LogUtil.show("onNext: " + aLong);
                    idTvCodeAcRegister.setText("重获(" + aLong + ")");
                }
            });

633600411(Android技术交流群)

//注意:代码中:->格式为lambda表达式,有兴趣学习更多相关知识请加下方qq群

633600411(Android技术交流群)

你可能感兴趣的:(Android 使用Rxjava实现验证码倒计时功能)