仅从android文档来看,我并不真正理解ACTION_UP和ACTION_POINTER_UP之间的区别http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN基本上我想捕捉当一个手指从屏幕上释放时的事件(即使另一个手指可能仍然在触摸它)
ACTION_UP
ACTION_POINTER_UP
sqxo8psd1#
从这里开始,如果你还没有读过:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.htmlAndroid从手势的Angular 考虑触摸事件。从这个意义上说,手势包括从第一个手指触摸屏幕到最后一个手指离开屏幕的所有事件。单个手势的整个事件序列总是发送到初始ACTION_DOWN期间拾取的相同视图,除非父级由于某种原因拦截事件流。如果父级拦截子级的事件流,孩子将得到ACTION_CANCEL。如果您正在处理多点触摸事件,请始终使用getActionMasked()返回的值来确定操作。如果您不需要多点触摸或正在使用较旧的平台版本,则可以忽略ACTION_POINTER_*事件。
ACTION_DOWN
ACTION_CANCEL
ACTION_POINTER_*
ACTION_POINTER_DOWN
zbdgwd5y2#
我相信这是因为多点触摸被添加进来,ACTION_UP从API级别1开始就已经被添加进来了,但是ACTION_POINTER_UP是在API级别5添加多点触摸时添加进来的。你得到的结果将取决于你调用的方法,getAction()将返回ACTION_UP,而getActionMasked()将给予ACTION_POINTER_UP,但也允许你调用getActionIndex()来找出哪个多点触摸指针刚刚被提升。我认为这是你想要做的。
getAction()
getActionMasked()
getActionIndex()
2条答案
按热度按时间sqxo8psd1#
从这里开始,如果你还没有读过:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
Android从手势的Angular 考虑触摸事件。从这个意义上说,手势包括从第一个手指触摸屏幕到最后一个手指离开屏幕的所有事件。单个手势的整个事件序列总是发送到初始
ACTION_DOWN
期间拾取的相同视图,除非父级由于某种原因拦截事件流。如果父级拦截子级的事件流,孩子将得到ACTION_CANCEL
。如果您正在处理多点触摸事件,请始终使用getActionMasked()返回的值来确定操作。如果您不需要多点触摸或正在使用较旧的平台版本,则可以忽略
ACTION_POINTER_*
事件。ACTION_DOWN
用于触摸屏幕的第一个手指。这将启动手势。此手指的指针数据始终位于MotionEvent中的索引0处。ACTION_POINTER_DOWN
用于超出第一个手指进入屏幕的额外手指。此手指的指针数据位于getActionIndex()返回的索引处。ACTION_POINTER_UP
在手指离开屏幕但至少有一个手指仍在触摸它时发送。关于手指的最后一个数据样本位于getActionIndex()返回的索引处。ACTION_UP
在最后一个手指离开屏幕时发送。关于向上移动的手指的最后一个数据样本位于索引0处。这结束了手势。ACTION_CANCEL
表示由于某种原因整个手势被中止。这将结束手势。zbdgwd5y2#
我相信这是因为多点触摸被添加进来,
ACTION_UP
从API级别1开始就已经被添加进来了,但是ACTION_POINTER_UP
是在API级别5添加多点触摸时添加进来的。你得到的结果将取决于你调用的方法,
getAction()
将返回ACTION_UP
,而getActionMasked()
将给予ACTION_POINTER_UP
,但也允许你调用getActionIndex()
来找出哪个多点触摸指针刚刚被提升。我认为这是你想要做的。