我正在写一个OnTouchListener.我发现我可以通过使用像bit这样的位操作来检查ActionType
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE)
但Android 1.5中没有MotionEvent.ACTION_MASK(API级别3)
这是怎么做的?
最佳答案
ACTION_MASK用于分隔实际动作和指针标识符(例如,第一个手指触摸,第二个手指触摸等)getAction()中返回的值的前8位是实际动作部分,所以当你按位-AND时使用action mask(= 11111111 = 255 = 0xff),您只剩下动作而没有指针信息.
原文链接:https://www.f2er.com/android/430490.html在Android 1.5 / API级别3中,我们在MotionEvent类中没有多指针支持(即多点触控).对于单指针事件,不设置指针位.因此,您只需将事件与所需的操作常量进行比较,即可获取特定操作的检查:
if ((event.getAction() == MotionEvent.ACTION_MOVE) {...}
万一这不起作用,你可以尝试将自己的动作掩码常量定义为255,并将其与动作一起按位-AND,就像在以后的API版本中一样.
在docs for MotionEvent(或任何Android参考页面)上,有一个按API级别过滤的复选框.如果选择API级别3,则可以在此时看到该类的状态.与不同指针相关的所有方法和常量都是灰色的.