Android 如何正确使用多点触摸-MotionEvent.getActionIndex()的用途?
的文档一致性保证:“(对于触摸事件)…指针一次下降一个,作为一个组移动,然后一次上升一个,或者被取消” 如果我理解正确,有两种方法可以确定触发onTouchEvent()的操作:Android 如何正确使用多点触摸-MotionEvent.getActionIndex()的用途?,android,multi-touch,Android,Multi Touch,的文档一致性保证:“(对于触摸事件)…指针一次下降一个,作为一个组移动,然后一次上升一个,或者被取消” 如果我理解正确,有两种方法可以确定触发onTouchEvent()的操作: MotionEvent.getAction() MotionEvent.getActionMasked()和MotionEvent.getActionIndex()(这应该用于多点触摸,这正是我想要的) 由于getActionMasked()总是只返回ACTION\u POINTER\u DOWN和ACTION\u
MotionEvent.getAction()
和MotionEvent.getActionMasked()
(这应该用于多点触摸,这正是我想要的)MotionEvent.getActionIndex()
getActionMasked()
总是只返回ACTION\u POINTER\u DOWN
和ACTION\u POINTER\u UP
,根据一致性保证,在MotionEvent
内部应该始终只传递一个指针到onTouchEvent()
,这意味着MotionEvent.getActionIndex()
将始终返回0
如果是这样,那么拥有MotionEvent.getActionIndex()
有什么意义呢?换句话说:我错过了什么
更新:进一步澄清我的问题:
MotionEvent.getActionMasked()
只返回一个动作,而MotionEvent.getActionIndex()告诉我们它应用于哪个指针。这是否意味着我们无法获得其他指针的操作?或者,如果所有指针都是相同的,为什么还要指定actionIndex呢?事件操作指针\u向下
表示现在有两个或多个手指正在触摸屏幕,以区分您需要使用的是第二个还是第三个(etc)手指getActionIndex()
因为getActionMasked()
总是只返回ACTION\u POINTER\u DOWN
和ACTION\u POINTER\u UP
如果有任何混淆,getActionMasked()
会返回更多类型,如ACTION\u DOWN
,ACTION\u MOVE
,等等。我已经在这个优秀的函数的帮助下找到了它
函数getActionMasked()
获取应用于所有指针或其中一个指针的操作(如果操作是action\u POINTER\u DOWN
和action\u POINTER\u UP
),可以通过getActionIndex()
获得
我所缺少的一条信息是,当您获得仅适用于其中一个指针的屏蔽操作action\u POINTER\u DOWN
时,其他指针仍在调用中提供。但是,您可以保证在对onTouchEvent()
的每次调用中最多有一个ACTION\u POINTER\u DOWN
或ACTION\u POINTER\u UP
出现在onTouchEvent()getActionIndex()返回两个主要事件的指针索引,即DOWN和UP。在所有其他操作中,例如ACTION_MOVE,它总是返回索引0处的指针
因此,如果我们想在“反对移动”中执行某些特定操作,我们必须使用指针索引,而不是获取ActionIndex。但是如果操作指针向下意味着两个(或更多)手指正在触摸屏幕,为什么我需要区分它们?他们都在触摸屏幕,所以行动适用于他们两人,对吗?谢谢山姆的帮助,我想我找到了答案!回答您的问题:是的,对这两个动作触发相同的动作,但是您需要使用getActionIndex()
来区分两个手指手势和三个手指手势。(如果您的设备只能识别两个手指,那么getActionIndex()
实际上并不重要。)实际上,两个事件是通过两个不同的操作触发的。首先使用ACTION\u DOWN
和一个指针,然后使用ACTION\u pointer\u DOWN
和两个指针,并使用getActionIndex()
表示第二个指针。当然,如果我理解正确的话——但现在确实有意义了。听起来你现在明白了。