gpt4 book ai didi

android - OnTouch 事件的行为如何?

转载 作者:搜寻专家 更新时间:2023-11-01 09:02:18 27 4
gpt4 key购买 nike

如果设备上有多根手指,onTouch 监听器是针对每个手指运行一次,还是针对每个事件(手指按下、移动等)运行一次并包括每个 Activity 的触摸指针?

如果

(e.getAction() & MotionEvent.ACTION_MASK == MotionEvent.ACTION_MOVE)

我怎么知道哪个指针正在移动?

final int pointerIndex = e.getActionIndex();
pointerID = e.getPointerId(pointerIndex);

出于某种原因总是返回 0(而 MotionEvent.ACTION_MOVE)..

最佳答案

首先,你得到这些事件:

  1. MotionEvent.ACTION_DOWN
    第一次触摸屏幕
  2. MotionEvent.ACTION_POINTER_DOWN
    对于所有非主要接触
  3. MotionEvent.ACTION_UP
    最后润色
  4. MotionEvent.ACTION_POINTER_UP
    对于每一次非主要修饰
  5. MotionEvent.ACTION_MOVE
    每当被触摸的手指移动时
    在这里你必须遍历所有数字并检查坐标是否已更改

这样做:

@Override
public boolean onTouchEvent(MotionEvent ev)
{
final int action = ev.getAction();
final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; //index of this pointer

switch (action & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
//your first touch on the screen
break;

case MotionEvent.ACTION_MOVE:
//one of the touches has moved
for (unsigned int i = 0; i < ev.getPointerCount(); i++)
{
//The pointer id is ev.getPointerId(i);
//for loop through all touches
}
break;

case MotionEvent.ACTION_UP:
//your last touch has gone up
break;

case MotionEvent.ACTION_POINTER_DOWN:
//non-primary pointer has gone down
break;

case MotionEvent.ACTION_POINTER_UP:
//non-primary pointer has gone up
break;
}
}

return true;
}

希望对您有所帮助:)

关于android - OnTouch 事件的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201130/

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