rxbinding

1.RxView

  1. clicks(view)     点击事件
  2. throttleFirst(2, TimeUnit.SECONDS)     两秒之内取第一次时间
  3. throttleLast      取最后一次点击事件
  4. draws(view)   绘制监听    绘制时触发
  5. drags(view)    拖拽监听
  6. 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"));
     });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值