我有一个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;
}
}
});
答案 0 :(得分:0)
通过在按钮上创建引用来添加触摸侦听器。
Button btn = (Button) findViewById(R.id.button);
btn.setOnTouchListener(new OnTouchListener(){
....
};
你正在做Button.setOnTouchListener(new OnTouchListener()
答案 1 :(得分:0)
这是错误的方法,不要使用sleep()
方法。
删除此sleep()
逻辑,并声明一个变量并检查最后一次触摸时间和当前触摸时间差,如果差值大于400毫秒,则仅在代码时执行。
如果你有任何问题然后发表评论,我会解决你的问题,祝你好运。