Android 如何在API级别3上过滤MotionEvent.getAction()(不存在操作掩码)

Android 如何在API级别3上过滤MotionEvent.getAction()(不存在操作掩码),android,Android,我正在写一个OnTouchListener。我发现我可以通过使用位操作来检查ActionType,比如 if((event.getAction()&MotionEvent.ACTION\u MASK)==MotionEvent.ACTION\u MOVE) 但是,Android 1.5(API级别3)中不存在MotionEvent.ACTION\u MASK 它是如何在那里完成的?操作掩码用于分离实际操作和指针标识符(例如,第一个手指被触摸、第二个手指被触摸等)。返回的值的前8位是实际操作部分

我正在写一个
OnTouchListener
。我发现我可以通过使用位操作来检查ActionType,比如

if((event.getAction()&MotionEvent.ACTION\u MASK)==MotionEvent.ACTION\u MOVE)
但是,Android 1.5(API级别3)中不存在
MotionEvent.ACTION\u MASK

它是如何在那里完成的?

操作掩码用于分离实际操作和指针标识符(例如,第一个手指被触摸、第二个手指被触摸等)。返回的值的前8位是实际操作部分,因此当您按位并使用(=11111111=255=0xff)时,只剩下操作,没有指针信息

在Android 1.5/API level 3中,我们在
MotionEvent
类中不支持多指针(即多点触摸)。对于单指针事件,不设置指针位。因此,您可以将事件与所需的动作常数进行比较,以获得特定动作的检查:

if ((event.getAction() == MotionEvent.ACTION_MOVE) {...}
在不太可能的情况下,这不起作用,您可以尝试将自己的操作掩码常量定义为255并按位,并在以后的API版本中将其与操作一起使用


在for
MotionEvent
(或者任何Android参考页面)上,有一个复选框可按API级别进行过滤。如果选择API级别3,则可以看到该类当时的状态。与不同指针相关的所有方法和常量都将变灰。

非常感谢您的时间和回答。我仍然在想,因为这个表达式在较新的android版本上会解析为false。从3到现在,这只适用于任何设备/级别吗?如果是,是因为我在创建项目时输入了target/min_sdk信息吗?该表达式对于单指针触摸事件始终有效,即使对于更高的API级别也是如此。对于单个指针,未设置其他(指针)位,因此不需要掩码。