web-dev-qa-db-ja.com

Androidでは、MotionEventのgetAction()とgetActionMasked()の違いは何ですか?

Androidの2つの方法に戸惑っています。どちらの方法でも、どのようなイベントであるか、つまり、ダウンイベントであるかアップイベントであるかがわかります。

いつ使用しますか?

public void onTouchEvent(MotionEvent e)

私はそれを読んだので、ドキュメントを引用しないでください。また、何か違うものを取得するために、どちらのメソッドにも指定できるパラメーターがありません。

public final int getAction ()

そして

public final int getActionMasked()
41
user1233587

はい、どちらもアクション(アップ/ダウンなど)を返しますが、getAction()はポインター情報を含むアクションを返す場合があります。その場合、イベントは少し異なる場合があります。 getActionMasked()は常に、ポインタ情報が「マスクアウト」された(簡単な)アクションを返します(取得しますか?)。次に、同じイベントでgetPointerIndex()を呼び出して、ポインターのインデックスを取得します。これは、複数の連絡先(ポインター)を持つマルチタッチデバイスで最もよく見られることに注意してください。ポインターインデックスは、本質的に、イベントと接触点を照合して、それらを区別できるようにする方法です。

22
C James

getAction()は、ポインターIDとイベント(つまり、上、下、移動)情報を返します。

getActionMasked()イベント(つまり、上、下、移動)情報のみを返します。その他の情報はマスクされています。

例えば:

getAction()x0105を返します。
getActionMasked()x0005を返します。これは0x0105 && ACTION_MASKです。

  1. ACTION_MASKの値は0xFFです。次のアクションをマスクします。
    • ACTION_DOWN 0、UP 1、MOVE 2
    • ACTION_POINTER_DOWN 5、UP 6
  2. ACTION_POINTER_ID_MASKの値は0xFF00です。次の非推奨定数からポインターIDをマスクしました。
    • ACTION_POINTER_1_DOWN 0x0005
    • ACTION_POINTER_2_DOWN 0x0105
    • ACTION_POINTER_3_DOWN 0x0205
    • ...
44
wannik