Android multiTouchHandler PointerID 复制初始触摸?

Android multiTouchHandler PointerID duplicating initial touch?

我正在努力了解 Android Java 开发的基础知识,并让 运行 陷入同时处理多个输入的问题。

我遇到了一个可重现的问题,如果使用多个手指,第一根手指的触地信息将用作第二根手指的触地信息。这会导致按钮 'stuck' 出现严重问题,因为离开它们的 id 与激活它们的 id 不同。

我有两个触摸事件日志示例,第一个显示如下所示的触摸,它们同时启动和结束,第二个显示在第一个拖动开始后开始的第二个拖动。请注意,出于某种原因,两个 touch_down 事件共享相同的信息。

第一个:

第二个:

Mu​​ltiTouchHandler,其中为新事件分配了 pointerID 并找到了 here(所以格式化出于某种原因不起作用?)

我是不是误解了 pointerID 的分配方式,还是我在上面的某些方面造成了错误?

对于未来的 google 员工:

替换(显然)现已弃用的

int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getActionIndex() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;

在 onTouch 覆盖的顶部:

int action =  MotionEventCompat.getActionMasked(event);
int pointerIndex = MotionEventCompat.getActionIndex(event);

-已解决问题。