gpt4 book ai didi

Android MotionEvent 只检测 ACTION_MOVE

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:51 24 4
gpt4 key购买 nike

根据 android MotionEvent 文档:在按下手势期间发生了变化(在 ACTION_DOWNACTION_UP 之间)。该运动包含最近的点,以及自上次向下或移动事件以来的任何中间点。

ACTION_MOVE Android doc

所以当我在我的 View 上应用 setOnTouchListene 时,它非常有效,它给我 ACTION_DOWNACTION_UPACTION_MOVE

但我的问题是我只想忽略 ACTION_MOVE 之前的 ACTION_DOWN 事件。因为根据其文档,ACTION_MOVE 事件仅在 ACTION_DOWN 事件之后发生。

我的代码:

      button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.e("Mouse: ", "Click");
break;
case MotionEvent.ACTION_MOVE:
Log.e("Mouse: ", "Move");
break;
}

return false;
}
});

所以,有什么理由要忽略 ACTION_DOWN 事件。因为用户只想移动不想点击,而且ACTION_MOVE也是在它自己执行之前发生ACTION_DOWN

谢谢...

最佳答案

根据您的评论 - 您可以玩计数器。例如:

private static int counter = 0;
...
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {


switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.e("Mouse: ", "Click");
break;
case MotionEvent.ACTION_MOVE:
counter++; //check how long the button is pressed
if(counter>10){
Log.e("Mouse: ", "Move");
}

break;
case MotionEvent.ACTION_UP:
if(counter<10){
//this is just onClick, handle it(10 is example, try different numbers)
}else{
//it's a move
}
counter = 0;
break;
}

return false;
}
});

关于Android MotionEvent 只检测 ACTION_MOVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com