RxBinding绑定View事件
通过RxBinding我们可以将View的事件转化为事件流,然后就可以采用RxJava发射事件流,操作符进行操作。
RxBinding项目地址
RxBinding2源码解析
RxBinding2(二)MaterialDesign系列
RxBinding2(三)Support-V4库和RecyclerView
全部依赖库support支持:
//基础库
implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.2.0'
//V4,V7对应于android的V4,V7包组件
implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.2.0'
//电视相关
implementation 'com.jakewharton.rxbinding2:rxbinding-leanback-v17:2.2.0'
每一个rxbinding2依赖库都以一个xxx-kotlin支持版本
settings.gragle中include ':app', ':rxbinding'
实战:
全部RxView事件,注意防内存泄漏,要么将订阅添加到CompositeDisposable,在onDestory中clear,要么采用RxLifecycle控制生命周期。
xxxEvent:因RxJava方法只有一个参数,所以xxxEvent里面封装了多个参数的情况。
handle:返回false则拦截事件,不发送事件
//基础库可以得到基础组件
implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0-alpha1'
private void RxView(){
View mView = new View(this);
//设置是否可见
RxView.visibility(mView).accept(mBoolean);
//设置是否可点击
RxView.clickable(mView).accept(mBoolean);
//设置是否可用
RxView.enabled(mView).accept(mBoolean);
//设置是否选中
RxView.selected(mView).accept(mBoolean);
//设置是否按下
RxView.pressed(mView).accept(mBoolean);
//设置是否激活
RxView.activated(mView).accept(mBoolean);
//View被添加
RxView.attaches(mView);
//View被添加时触发
RxView.attachEvents(mView);
//View被移除
RxView.detaches(mView);
//点击事件
RxView.clicks(mView);
//长点击事件
RxVi