我正在编写一个 OnTouchListener
。我发现可以使用位运算来检查 ActionType,例如:
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE)
然而在Android 1.5(API级别3)中没有 MotionEvent.ACTION_MASK
,那么它是如何实现的呢?
我正在编写一个 OnTouchListener
。我发现可以使用位运算来检查 ActionType,例如:
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE)
然而在Android 1.5(API级别3)中没有 MotionEvent.ACTION_MASK
,那么它是如何实现的呢?
ACTION_MASK
用于分离实际的操作和指针标识符(例如,第一只手指触摸,第二只手指触摸等)。在 getAction() 返回的值中,前 8 位是实际操作部分。因此,当您对其进行按位与操作并使用 操作掩码 (= 11111111 = 255 = 0xff)进行运算时,您只剩下操作而没有指针信息。MotionEvent
类不支持多个指针(即多点触控)。对于单指事件,指针位未设置。因此,您可以将事件与所需的操作常量进行比较,以检查特定操作。if ((event.getAction() == MotionEvent.ACTION_MOVE) {...}
MotionEvent
(或任何Android参考页面),都有一个复选框可按API级别进行过滤。如果选择API级别3,则可以查看该类的状态。所有与不同指针相关的方法和常量均已灰显。