3

MotionEventのドキュメントには、一貫性保証で次のように記載されています。

私の理解が正しければ、トリガーされたアクションを特定する方法は 2 つありますonTouchEvent()

  • MotionEvent.getAction()
  • MotionEvent.getActionMasked()with MotionEvent.getActionIndex()(これは私が求めているマルチタッチに使用する必要があります)

は常に と だけをgetActionMasked()返すため、一貫性保証によれば、 に渡されるポインタは常に1 つだけである必要があります。つまり、は常に 0 を返します。ACTION_POINTER_DOWNACTION_POINTER_UPMotionEventonTouchEvent()MotionEvent.getActionIndex()

もしそうなら、そもそも持っている意味は何MotionEvent.getActionIndex()ですか?言い換えれば、何が欠けているのでしょうか?

更新:私の質問をさらに明確にするために:MotionEvent.getActionMasked()アクションを1つだけ返し、MotionEvent.getActionIndex()それがどのポインターに適用されるかを教えてくれます。それは、他のポインターのアクションを取得できないということですか? または、すべてのポインターで同じである場合、なぜ actionIndex を指定する必要があるのでしょうか。

4

3 に答える 3

2

このイベントACTION_POINTER_DOWNは、使用する必要がある 2 番目の指か 3 番目の指かを区別するために、2 本以上の指が画面に触れていることを意味しますgetActionIndex()


getActionMasked()常にちょうど返すのでACTION_POINTER_DOWNACTION_POINTER_UP

混乱が生じた場合に備えて、、 などgetActionMasked()のさらに多くのタイプを返します。ACTION_DOWNACTION_MOVE

于 2012-11-24T22:43:57.067 に答える
0

私はこの優れた答えの助けを借りてそれを理解しました。

FunctiongetActionMasked()は、すべてのポインターに適用されるアクション、またはポインターの 1 つだけに適用されるアクション (アクションがACTION_POINTER_DOWNandの場合ACTION_POINTER_UP) を取得します。これは、 で取得できますgetActionIndex()

私が見逃していた情報ACTION_POINTER_DOWNは、ポインターの 1 つだけに適用されるマスクされたアクションを取得する一方で、他のポインターは呼び出しで引き続き提供されるということでした。ただし、 への各呼び出しには、最大で 1 つのACTION_POINTER_DOWNまたは存在することが保証されています。ACTION_POINTER_UPonTouchEvent()

于 2012-11-25T07:03:43.440 に答える