android:ACTION_UP和ACTION_POINTER_UP之间的区别

从单独的android文档,我真的不明白ACTION_UP和ACTION_POINTER_UP之间的区别。 http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN

基本上我想捕捉一个手指从屏幕上释放的事件(即使另一个手指可能仍然在触摸它)

谢谢!

我相信这是源于添加了多点触摸,ACTION_UP已经在API级别1以后,但是当添加多点触摸时,ACTION_POINTER_UP被添加在API级别5中。

你得到的结果将取决于你调用的方法,getAction()将返回ACTION_UP,而getActionMasked()会给ACTION_POINTER_UP,但也允许你调用getActionIndex()来找出哪个多触点指针刚刚被提出。 我想这是你想要做的。

如果您还没有阅读,请从这里开始: http : //android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Android根据手势考虑触摸事件。 在这个意义上,手势包括从触摸屏幕的第一根手指到离开屏幕的最后一根手指的所有事件。 一个手势的整个事件序列始终发送到在初始ACTION_DOWN期间拾取的相同视图,除非父由于某种原因截取事件stream。 如果一个父母拦截一个孩子的事件stream,那么这个孩子将得到ACTION_CANCEL。

如果您正在使用多点触控事件,请始终使用getActionMasked()返回的值来确定操作。 如果您不需要多点触控或正在使用较旧的平台版本,则可以忽略ACTION_POINTER_ *事件。

  • ACTION_DOWN是触摸屏幕的第一根手指。 这开始了手势。 这个手指的指针数据总是在MotionEvent的索引0处。
  • ACTION_POINTER_DOWN用于超出第一个屏幕的额外手指。 这个手指的指针数据在getActionIndex()返回的索引处。
  • ACTION_POINTER_UP在手指离开屏幕时发送,但至less有一个手指仍在触摸屏幕。 关于上升的手指的最后一个数据样本位于由getActionIndex()返回的索引处。
  • 当最后一根手指离开屏幕时,ACTION_UP被发送。 关于上升的手指的最后一个数据样本在索引0处。这结束了该手势。
  • ACTION_CANCEL表示整个手势由于某种原因被中止。 这结束了手势。