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

先来看下效果图:

2.png
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<Long>() {
                @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 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,020评论 25 708
  • 大神推荐给我的平台,公司附近,那我就第一时间来看看。 且不说是怎样一个状态。就我做完测试之后,我就知道,我已经把我...
    笑莉说阅读 310评论 2 8
  • 这世界每天都有故事,还记得这个公众号刚开始的时候,我写的那篇故事,我给我发小说我把你的故事写下来了,她当时感动坏了...
    阿柴啊阅读 266评论 0 0
  • 01 敲开门的那一刻,我看到爸妈那满是皱纹的脸绽放成了朵朵灿烂的秋菊。 “你怎么回来也不通知我们一声,好让你妈早点...
    慕宸海阅读 623评论 6 27
  • 作为一个资深运营喵,除了微信、微博、文案、活动这些必备技能外,在这个新媒体时代,自媒体作为一个新的传播途径,所爆发...
    礼意通阅读 2,544评论 0 2