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がクリックリスナー内にカプセル化され、clickメソッドが呼び出されて、監視可能なオブジェクトが返されることがわかります。このビューがクリックされるたびに、オブザーバブルオブジェクトはイベントを発行し、次に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秒に設定されています。