1

私が直面している問題は、ACTION_POINTER_UP が起動されたときに、最後に残っている指の座標を取得する必要があることです。

この例を見てください (2 つのポインタを使用):

  • 親指を画面 (ID0) に置きます
  • 人差し指を画面に置く (ID1)
  • 画面から親指を離します (ID0)
  • 残りのポインターは人差し指 (ID1)
  • 人差し指のグラブ座標(ID1)

さて、私の ACTION_POINTER_UP ケースには、次のものがあります。

case MotionEvent.ACTION_POINTER_UP: {

    y = event.getY();
    x = event.getX();                                   
    break;                                          
 }

明らかに、これはあまり役に立たないので (私が理解できる限り)、これは画面を離れたポインターの x と y を記録しますが、これは私が必要としているものではありません。

上記の例では 2 つのポインターのみを使用していますが、同じ質問を 3 つ、4 つ、または 5 つのポインターに適用できます。

  • 親指を画面上に配置 (ID0)
  • 画面上に人差し指を置く (ID1)
  • 画面に中指を置く (ID2)
  • 画面に薬指を置く (ID3)
  • 画面から親指を離します (ID0)
  • 画面に触れた残りのポインターの最新の x と y を取得します

Android の公式ドキュメントやブログにはリンクしないでください。何度も読みましたが、どうすればこれを達成できるのか、まだよくわかりません。また、ポインタ ID についての私の理解が間違っている場合は、訂正してください。

4

1 に答える 1

0

MotionEvent の getDownTime() メソッドは最初のポインターの下降にのみ適用され、すべてのポインターが上昇するまで一定のままであるため、ACTION_DOWN または ACTION_POINTER_DOWN を取得した時間にポインター ID をマップする独自のデータ構造を維持する必要があります。ポインター。これらの ACTION_DOWN または ACTION_POINTER_DOWN イベントの時間については、getEventTime() を使用します。

完全を期すために、ポインター ID の理解に自信がないことに言及しているため、ポインター インデックスは永続的ではなく、ID のみであることをお伝えします。そのため、ポインタに関する情報を取得する MotionEvent メソッドを使用する前に、このことを明確にしておいてください。

また、event.getX() はポインタ インデックス 0 の値を返し、event.getX(0) と同等です。

于 2015-02-19T18:05:42.080 に答える