我正在写一个OnTouchListener.我发现我可以通过使用像bit这样的位操作来检查ActionType
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE)
Run Code Online (Sandbox Code Playgroud)
然而MotionEvent.ACTION_MASKAndroid 1.5中没有(API级别3)它是如何在那里完成的?
用于ACTION_MASK分隔实际操作和指针标识符(例如,第一个手指触摸、第二个手指触摸等)getAction()中返回的值的前 8 位是实际操作部分,因此当您按位与它带有操作掩码(= 11111111 = 255 = 0xff),您只剩下操作而没有任何指针信息。
在 Android 1.5 / API level 3 中,我们的类不支持MotionEvent多个指针(即多点触控)。对于单个指针事件,不设置指针位。因此,您只需将事件与所需的操作常量进行比较即可获得对特定操作的检查:
if ((event.getAction() == MotionEvent.ACTION_MOVE) {...}
Run Code Online (Sandbox Code Playgroud)
万一这不起作用,您可以尝试将自己的操作掩码常量定义为 255 并与后续 API 版本中的操作进行按位与。
在文档(或者实际上任何MotionEventAndroid 参考页面)上,有一个用于按 API 级别进行过滤的复选框。如果您选择 API 级别 3,您可以看到该类当时的状态。与不同指针相关的所有方法和常量均呈灰色显示。
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |