1

次のシナリオがあります。ビューグループと 2 つのビューがあります (1 つは長方形を描き、もう 1 つは楕円形を描きます)。ビューグループと 2 つのビューは、OnTouchListener インターフェイスを実装します。しかし、ビューをタッチすると、Viewgroup.onTouch(..) と RectView.onTouch() と OvalView.onTouch() の両方が呼び出されます。私の質問は..どのビューに触れたのか知りたい場合は、何をする必要がありますか? 情報や例を教えてください。

前もって感謝します、

4

2 に答える 2

0

タッチ イベントを受け取ったビューの ID を簡単に取得できます。

public boolean onTouch(View v, MotionEvent event) {
        v.getId();
}

xml で、または setId() メソッドを使用して、ビューの ID を設定できます。

于 2011-02-28T22:41:56.830 に答える
0

それでは、OnTouchListenerを見てみましょう。

イベントを消費した場合、onTouch(View, MotionEvent) はブール値を返します。そのことを念頭に置いて、おそらく計算を行い、RectView または OvalView にタッチ イベントが含まれているかどうかを確認する必要があります (MotionEvent を使用して X、Y 座標を取得します)。含まれている場合は、ビューがタッチ イベントを消費したことを示すために true を返します。

各 onTouch() が呼び出される順序は正確にはわかりませんが、最初に子ビューが呼び出され、その子ビューが false を返した場合は、残りの onTouch() メソッドを呼び出し続けると仮定します。

RectView と OvalView のどちらがタッチされたかを区別することが重要な場合 (たとえば、理論的には両方を同時にタッチすることができます)、どちらを受け入れるかを確認するために何らかの追加作業を行う必要があります (おそらく、一方が上に描画されます)。他の)。

于 2011-02-01T14:40:15.170 に答える