我无法弄清楚当我将手指从接触处移开时,为什么没有触发ACTION_UP事件。
public boolean onTouch(View v, MotionEvent event) {
switch(event.getActionIndex()){
case MotionEvent.ACTION_UP:
Utils.log("Touch Up");
break;
case MotionEvent.ACTION_DOWN:
Utils.log("Touch Down");
break;
}
return true;
}
答案 0 :(得分:3)
您应该使用getActionMasked()
。
getAction()
返回单个指针事件(并弃用了多个指针事件......)getActionMasked()
返回单个和多个指针事件(与getActionIndex()
一起使用以确定哪个指针),getActionIndex()
仅返回指针索引。所以getActionIndex()
会返回哪个手指执行了向下/向上操作(0,1,2等),而getAction()
或getActionMasked()
会返回单个您想要的指针事件(ACTION_DOWN
,ACTION_UP
等)
答案 1 :(得分:2)
用我的代码替换你的代码。
public boolean onTouch(View v, MotionEvent event) {
//Here's the problem
switch(event.getAction()){
case MotionEvent.ACTION_UP:
Utils.log("Touch Up");
break;
case MotionEvent.ACTION_DOWN:
Utils.log("Touch Down");
break;
}
return true;
}
答案 2 :(得分:0)
对于其他有类似问题的人,未触发ACTION_UP的原因之一可能是过于敏感的ACTION_MOVE。在这种情况下,永远不会触发ACTION_UP,因为系统会将触摸动作解释为ACTION_MOVE并触发它。
一种解决方案是检查x和y偏移量是否足够大以将其作为ACTION_MOVE处理,以检查ACTION_MOVE何时发生,否则,您可以将其作为ACTION_UP进行威胁。 Here is SO example.