Android学习之RxView

Posted 彬sir哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android学习之RxView相关的知识,希望对你有一定的参考价值。

RxView
RxBinding是一组开源库,可将android的中各类UI控件的动作事件转换为RxJava中的数据流。使用RxBinding,以RxJava观察者模式来处理UI事件。RxView是RxBinding中的一个组件

引入依赖
注意:RxBinding包中包含RxJava的内容,所以就无需再添加RxJava的依赖了

implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'

代码分析
1.RxView.clicks(查看视图)
通过源码可发现其内部封装了View.OnClickListener点击监听,调用点击方法返回一个可观测对象,每当点击这个查看的时候,该可观测对象就会发射一个事件,随即调用onNext()方法,可观察到对应的观察者就可以通过onNext()回调响应此次点击事件使用RxBinding还可做到点击防抖的效果来代码:

        RxView.clicks(button)
            .throttleFirst(2, TimeUnit.SECONDS)
            .compose(
                RxPermissions(this@MainActivity)
                    .ensure(
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.CAMERA
                    )
            ).subscribe 
                Toast.makeText(this@MainActivity, "你好!", Toast.LENGTH_SHORT).show()
            

补充:

compose:组成
ensure():类似request()方法
subscribe:订阅

throttleFirst(long windowDuration,TimeUnit unit),设置一定时间内只响应首次(throttleFirst)或者末次(throttleLast)的点击事件。windowDuration为防抖,unit为时间单位。调用这个方法便可防止短时间内对的重复点击,本例中设置的防抖时间为2秒

以上是关于Android学习之RxView的主要内容,如果未能解决你的问题,请参考以下文章

Android学习之网上商城(上)

Android学习之布局

Android学习之Drawable

Android学习之AsyncTask

Android学习之Activity初步

Android 学习之 开源项目PullToRefresh的使用