触摸时,用户太快时,侦听器不会启动

时间:2016-08-29 09:39:05

标签: android

我有一个OnTouchListener,我正在等待上下行动。 然而,当用户触摸表面以快速/短暂时,仅发生向下事件而不是向上事件。我用睡眠线程暂时修复它,但我知道这不是理想的解决方案。有没有人有更好的主意?

Button myButton = (Button) findViewById(R.id.button);

 myButton.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
                    long timeLastTouch = System.currentTimeMillis();
                    if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                        long timeTouchNow = System.currentTimeMillis();
                        if (timeTouchNow -  timeLastTouch < 400){
                            return true;
                        }
                        return false;
                    }
                    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                        long timeNow = System.currentTimeMillis();
                        if ((timeNow - timeLastTouch) < 400) {
                            // do stuff
                            return true;
                        }
                        return false;
                    }
            }
            return false;
        }
    }
});

2 个答案:

答案 0 :(得分:0)

通过在按钮上创建引用来添加触摸侦听器。

Button btn = (Button) findViewById(R.id.button);
btn.setOnTouchListener(new OnTouchListener(){

 ....

};

你正在做Button.setOnTouchListener(new OnTouchListener()

答案 1 :(得分:0)

这是错误的方法,不要使用sleep()方法。

删除此sleep()逻辑,并声明一个变量并检查最后一次触摸时间和当前触摸时间差,如果差值大于400毫秒,则仅在代码时执行。

如果你有任何问题然后发表评论,我会解决你的问题,祝你好运。