48

我对Android中的两种方法感到困惑。似乎这两种方法都可以告诉您它是什么类型的事件,即它是向下事件还是向上事件。

我什么时候用哪个?

public void onTouchEvent(MotionEvent e)

请不要引用文档,因为我阅读了它,并且我没有看到任何可以提供给任何一种方法的参数来获得不同的东西。

public final int getAction ()

public final int getActionMasked()
4

2 回答 2

53

getAction()返回一个指针id 和一个事件(即向上、向下、移动)信息。

getActionMasked()只返回一个事件(即向上、向下、移动)信息。其他信息被屏蔽。

例如:

getAction()返回0x0105
getActionMasked()将返回0x0005,即 0x0105 && ACTION_MASK

  1. ACTION_MASK 的值为 0xFF。它掩盖了以下操作。
    • ACTION_DOWN 0,向上 1,移动 2
    • ACTION_POINTER_DOWN 5,向上 6
  2. ACTION_POINTER_ID_MASK 的值为 0xFF00。它从以下不推荐使用的常量中屏蔽了指针 ID。
    • ACTION_POINTER_1_DOWN 0x0005
    • ACTION_POINTER_2_DOWN 0x0105
    • ACTION_POINTER_3_DOWN 0x0205
    • ...
于 2013-08-17T01:57:18.800 回答
24

是的,它们都返回动作(向上/向下等),但getAction()可能会返回带有指针信息的动作,在这种情况下,事件可能会有所不同。getActionMasked()将始终返回带有“屏蔽”指针信息的“简单”操作(明白吗?)。然后,您将调用getPointerIndex()同一事件以获取指针的索引。请注意,您最常在具有多个接触点(指针)的多点触控设备上看到这一点。指针索引本质上是一种将事件与接触点匹配的方法,因此您可以将它们区分开来。

于 2013-06-29T22:14:14.450 回答