Android小技巧(二)监听EditText是否输入完毕(用于机器扫码自动输入)

预想方案:

通过Handle设置300毫秒延时,如果监听到下一次输入距离上一次输入的时间少于300毫秒,就在afterTextChanged 方法中remove掉延时器,如果在300毫秒之外就代表输入完毕

具体代码如下
    Handler handler = new Handler();
    Runnable runnable;




    etInput.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(final Editable s) {
//如果在300毫秒之内又输入了,就会再次返回,然后就再次remove掉了上次
//如果300毫秒内不输入了,就不会执行remove了,就直接跳转了
//原理:每次都执行跳转流程,但是有个条件,下一次不会返回的情况下,下次一旦返回就把上次的跳转操作取消了
                if (runnable != null) {
                    handler.removeCallbacks(runnable);
                    Log.v("tag", "---" + s.toString());
                }
                runnable = new Runnable() {
                    @Override
                    public void run() {
                        Log.v("tag", "跳转======" + s.toString());
                    }
                };
                Log.v("tag", "(((((" + s.toString());
                handler.postDelayed(runnable, 300);

            }
        });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章