1.RxView
- clicks(view) 点击事件
- throttleFirst(2, TimeUnit.SECONDS) 两秒之内取第一次时间
- throttleLast 取最后一次点击事件
- draws(view) 绘制监听 绘制时触发
- drags(view) 拖拽监听
- scrollChangeEvents(view) 滑动时触发
其他
RxView.visibility(btnClick).accept(true);
RxView.clickable(btnClick).accept(true);
RxView.enabled(btnClick).accept(true);
2.RxTextView
1、textChanges(view)//addTextChangedListener EditText输入监听
RxTextView.textChanges(userNameEt).subscribe(new Consumer<CharSequence>() {
@Override
public void accept(CharSequence text) throws Exception {
//输入之后的操作
}
});
2、textChangeEvents
RxTextView.textChangeEvents(TextView view),内部同样封装了TextWatcher文本改变监听。不同的是其返回数据的类型为TextViewTextChangeEvent,内部包含详细的文本改变数据。
RxTextView.textChangeEvents(etRxTextView)
.subscribe(textViewTextChangeEvent -> {
Log.e("rx_binding_test", "textChanges:文本改变了:" + "before:" + textViewTextChangeEvent.before() +
",start:" + textViewTextChangeEvent.start() + ",text:" + textViewTextChangeEvent.text() +
",count:" + textViewTextChangeEvent.count());
});
3、editorActions
RxTextView.editorActions(TextView view),内部封装了OnEditorActionListener软键盘回车点击监听。
RxTextView.editorActions(etRxTextView)
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.e("rx_binding_test", "editorActions:输入完毕,点击回车:");
}
});
4、editorActionEvents
RxTextView.editorActionEvents(TextView view),内部同样封装了OnEditorActionListener软键盘回车点击监听。不同的是它的返回类型为TextViewEditorActionEvent,包含actionId,keyEvent等信息
RxTextView.editorActionEvents(etRxTextView)
.subscribe(textViewEditorActionEvent -> {
KeyEvent keyEvent = textViewEditorActionEvent.keyEvent();
//判断up状态
if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_UP) {
Log.e("rx_binding_test", "editorActionEvents:输入完毕,点击回车:" + textViewEditorActionEvent.keyEvent());
}
});
5、合并监听
Observable<CharSequence> userNameObservable = RxTextView.textChanges(userNameEt);
Observable<CharSequence> userPwdObservable = RxTextView.textChanges(userPasswordEt);
// 相当于合并
Observable.combineLatest(userNameObservable, userPwdObservable,
new BiFunction<CharSequence, CharSequence, Boolean>() {
@Override
public Boolean apply(CharSequence userName, CharSequence userPwd) throws Exception {
Toast.makeText(MainActivity.this, "33333", Toast.LENGTH_LONG).show();
// 判断用户名密码是否为空
return !TextUtils.isEmpty(userName) && !TextUtils.isEmpty(userPwd);
}
});
6、操作时间间隔
// 控件操作时间间隔
RxTextView.textChanges(reprat).debounce(1200, TimeUnit.MILLISECONDS)
.subscribe(new Consumer<CharSequence>() {
@Override
public void accept(CharSequence charSequence) throws Exception {
//1200毫秒后操作
}
});
其他
RxTextView.editorActions(etRxTextView)
.subscribe(integer -> {
RxTextView.text(etRxTextView).accept("呵呵");
RxTextView.hint(etRxTextView).accept("请输入姓名");
RxTextView.color(etRxTextView).accept(Color.parseColor("#00ff00"));
});