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);

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