Android 一些RxBinding使用场景

RxBinding的好处


  • 首先RxBinding是对Android View事件的扩展,它使得你可以对View事件使用RxJava的各种操作。
  • 提供了与RxJava一致的回调,使得代码简洁明了。尤其是页面中充斥着大量的监听事件,各种各样的匿名内部类时。
  • 几乎支持我们常用的所有控件及事件。(v4、v7、design、recyclerview等)另外每个库还有对应的Kotlin支持库。

RxBinding使用场景


RxBinding准备工作,添加相应的依赖(按需添加):

compile 'com.jakewharton.rxbinding:rxbinding:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-support-v4:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-design:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-recyclerview-v7:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-leanback-v17:1.0.0'

1. 这个应该是最常用的方法了。

利用操作符throttleFirst取时间间隔内第一次点击事件。同样利用操作符throttleLast、debounce也可以实现。


Android 一些RxBinding使用场景_第1张图片
Paste_Image.png

2. 点击的多次监听

Android 一些RxBinding使用场景_第2张图片
Paste_Image.png

3. 获取验证码倒计时

这个场景大家应该不陌生。比如注册账号时,我们需要获取验证码用来验证手机号码,在等待验证码时,界面会有倒计时提示我们重新获取之类的。


Paste_Image.png

4. 表单的验证

比如常见的登录页面,只有当用户名,密码输入格式正确了,才可以去点击登录按钮。这个利用操作符combineLatest就可以巧妙实现。


Paste_Image.png

操作符combineLatest作用就是当多个Observables中的任何一个发射了一个数据时,通过一定的方法去组合多个Observables的最新数据,然后发射最终结果。
在本例中两个输入框只要内容发生变化,就会发送Observable然后我们在Fun2中利用我们的验证方法去判断输入框中最新的内容,最终返回是否可点击的结果。
这个例子我们也可以看到简洁之处。
我们使用RxTextView.textChanges(mEtPhone)就可以实现监听,而使用一般方法则像下面代码这样。(其实你可能只需要onTextChanged())


Android 一些RxBinding使用场景_第3张图片
Paste_Image.png

5. 总结

在上面的例子中,细心地你会发现,我会在onDestroy方法时手动的解除订阅,为的就是防止内存泄露,如果你觉得很麻烦的话,具体可以使用RxLifecycle:
https://github.com/trello/RxLifecycle
这里我就不过多的介绍了。
RxBinding的实现其实比较简单,大家有兴趣可以去阅读一些源码。当然使用场景还有很多,大家可以去举一反三,我就不一一去说了。

你可能感兴趣的:(Android 一些RxBinding使用场景)