1.首先RxBinding
是對Android View事件
的擴展,它使得你能夠對View事件
使用RxJava
的各類操做。html
2.提供了與RxJava
一致的回調,使得代碼簡潔明瞭。尤爲是頁面中充斥着大量的監聽事件,各類各樣的匿名內部類時。git
3.幾乎支持咱們經常使用的全部控件及事件。(v四、v七、design、recyclerview等)另外每一個庫還有對應的Kotlin
支持庫。github
添加相應的依賴(按需添加):spa
這個應該是最經常使用的方法了。利用操做符throttleFirst
取時間間隔內第一次點擊事件。一樣利用操做符throttleLast
、debounce
也能夠實現。code
RxBinding
文檔中有這麼一段話:htm
大意是說:Android是不能屢次監聽同一個點擊事件。但利用RxJava
的操做符,例如publish
, share
或replay
能夠實現。而RxBinding
剛好支持對點擊事件的屢次監聽。這個說實話我沒有用到過,可是總有人須要的,就說一下。blog
那麼直接上代碼:事件
打印結果:ip
這個場景你們應該不陌生。好比註冊帳號時,咱們須要獲取驗證碼用來驗證手機號碼,在等待驗證碼時,界面會有倒計時提示咱們從新獲取之類的。內存
代碼很簡單,就不過多的解釋了。這裏新用到了interval
操做符,它是用來在給定的時間間隔發射從0開始的整數序列。例子中1s發射一次。
好比常見的登陸頁面,只有當用戶名,密碼輸入格式正確了,才能夠去點擊登陸按鈕。這個利用操做符combineLatest
就能夠巧妙實現。直接上代碼:
操做符combineLatest
做用就是當多個Observables
中的任何一個發射了一個數據時,經過必定的方法去組合多個Observables
的最新數據,而後發射最終結果。
在本例中兩個輸入框只要內容發生變化,就會發送Observable
而後咱們在Fun2中利用咱們的驗證方法去判斷輸入框中最新的內容,最終返回是否可點擊的結果。
這個例子咱們也能夠看到簡潔之處。咱們使用RxTextView.textChanges(mEtPhone)
就能夠實現監聽,而使用通常方法則像下面代碼這樣。(其實你可能只須要onTextChanged())
在上面的例子中,細心地你會發現,我會在onDestroy
方法時手動的解除訂閱,爲的就是防止內存泄露,若是你以爲很麻煩的話,具體可使用RxLifecycle,這裏我就不過多的介紹了。
RxBinding
的實現其實比較簡單,你們有興趣能夠去閱讀一些源碼。固然使用場景還有不少,你們能夠去觸類旁通,我就不一一去說了。
最後本文的例子我已經所有上傳到Github,你們能夠自行參考。喜歡的話多多Star,點贊!