demo:
https://github.com/anymyna/android_laboratory
步骤:
1、 初始化
dependencies {
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.2.0'
}
2、 用法
点击监听
RxView.clicks(camera)
.throttleFirst(2, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Toast.makeText(RxBindingActivity.this, "clicks", Toast.LENGTH_LONG).show();
}
});
长按监听
RxView.longClicks(camera)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Toast.makeText(RxBindingActivity.this, "longClicks", Toast.LENGTH_LONG).show();
}
});
延时操作
Observable.timer(2, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
Toast.makeText(RxBindingActivity.this, "timer", Toast.LENGTH_SHORT).show();
}
});
TextView textChanges 监听
TextView textView = findViewById(R.id.text);
addDisposable(RxTextView.textChanges(textView).subscribe(new Consumer<CharSequence>() {
@Override
public void accept(CharSequence text) throws Exception {
Toast.makeText(RxBindingActivity.this, "textChanges", Toast.LENGTH_LONG).show();
}
}));
checkedChanges选中状态改变事件
Button sms = findViewById(R.id.btn_sms);
sms.setEnabled(false);
CheckBox checkBox = findViewById(R.id.checkbox);
addDisposable(RxCompoundButton.checkedChanges(checkBox)
.subscribe(aBoolean -> {
Toast.makeText(RxBindingActivity.this, "checkedChanges " + aBoolean, Toast.LENGTH_LONG).show();
}));
RecyclerView滚动事件
RxRecyclerView.scrollEvents(mRecyclerView)
.subscribe(new Consumer<RecyclerViewScrollEvent>() {
@Override
public void accept(RecyclerViewScrollEvent recyclerViewScrollEvent) throws Exception {
recyclerViewScrollEvent.dx(); //X方向滚动了dx
recyclerViewScrollEvent.dy(); //Y方向滚动了dy
recyclerViewScrollEvent.view(); //RecyclerView
Logger.e("recyclerViewScrollEvent.dx()"+recyclerViewScrollEvent.dx());
}
});
RecyclerView滚动状态改变
RxRecyclerView.scrollStateChanges(mRecyclerView)
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Logger.e("scrollStateChanges "+integer);
}
});