web-dev-qa-db-ja.com

android:ACTION_UPとACTION_POINTER_UPの違い

Android docだけでは、ACTION_UPとACTION_POINTER_UPの違いを本当に理解できません。 http://developer.Android.com/reference/Android/view/MotionEvent.html#ACTION_DOWN

基本的に、1本の指が画面からリリースされたときのイベントをキャプチャします(別の指がまだタッチされている場合でも)

ありがとう!

40
clamp

ACTION_UPはAPIレベル1から追加されましたが、マルチタッチが追加されたときにAPIレベル5でACTION_POINTER_UPが追加されました。

取得する結果は、呼び出すメソッドによって異なります。getAction()はACTION_UPを返しますが、getActionMasked()はACTION_POINTER_UPを返しますが、getActionIndex()を呼び出して、発生したマルチタッチポインターを見つけることもできます。これがあなたのやりたいことだと思います。

12
GeekYouUp

まだ読んでいない場合は、ここから開始してください: http://Android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Androidでは、ジェスチャーの観点からタッチイベントを考慮しています。この意味でのジェスチャーには、画面に触れる最初の指から画面から離れる最後の指までのすべてのイベントが含まれます。親がなんらかの理由でイベントストリームをインターセプトしない限り、単一のジェスチャのイベントシーケンス全体は、最初のACTION_DOWN中に選択されたのと同じビューに常に送信されます。親が子のイベントストリームをインターセプトすると、子はACTION_CANCELを取得します。

マルチタッチイベントを使用している場合は、常にgetActionMasked()によって返された値を使用してアクションを決定します。マルチタッチが必要ない場合、または古いプラットフォームバージョンを使用している場合は、ACTION_POINTER_ *イベントを無視できます。

  • ACTION_DOWNは、画面に触れる最初の指用です。これでジェスチャーが始まります。この指のポインタデータは、常にMotionEventのインデックス0にあります。
  • ACTION_POINTER_DOWNは、最初の指を超えて画面に入る追加の指用です。この指のポインターデータは、getActionIndex()によって返されたインデックスにあります。
  • ACTION_POINTER_UPは、指が画面から離れても、少なくとも1本の指が画面に触れているときに送信されます。上昇した指に関する最後のデータサンプルは、getActionIndex()によって返されたインデックスにあります。
  • ACTION_UPは、最後の指が画面から離れたときに送信されます。上昇した指に関する最後のデータサンプルはインデックス0にあります。これでジェスチャーが終了します。
  • ACTION_CANCELは、何らかの理由でジェスチャ全体が中止されたことを意味します。これでジェスチャーが終了します。
129
adamp