In Android, what is the difference between getAction() and getActionMasked() in MotionEvent?

寵の児 提交于 2019-11-30 03:11:33
C James

Yes, they both return the action (up/down etc.), but getAction() may return the action with pointer information, in which case the events may be a little different. getActionMasked() will always return "simple" actions with the pointer information "masked out" (get it?). You would then call getPointerIndex() on the same event to get the index of the pointer. Note that you will most commonly see this on multi-touch devices with multiple points of contact (pointers). The pointer index is essentially a way of matching events to contact points so you can tell them apart.

getAction() returns a pointer id and an event (i.e., up, down, move) information.

getActionMasked() returns just an event (i.e., up, down, move) information. Other info is masked out.

For example:

getAction() returns 0x0105.
getActionMasked() will return 0x0005, which is 0x0105 && ACTION_MASK.

  1. The value of ACTION_MASK is 0xFF. It masks the following actions.
    • ACTION_DOWN 0, UP 1, MOVE 2
    • ACTION_POINTER_DOWN 5, UP 6
  2. The value of ACTION_POINTER_ID_MASK is 0xFF00. It masked the pointer ID from following deprecated constants.
    • ACTION_POINTER_1_DOWN 0x0005
    • ACTION_POINTER_2_DOWN 0x0105
    • ACTION_POINTER_3_DOWN 0x0205
    • ...
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!