web-dev-qa-db-ja.com

タッチされたビューではなく、画面全体に対応する画面座標を取得するにはどうすればよいですか?

1つのビューアイテムのタッチイベントを処理して、画面から実際の(x、y)を取得するのに問題があります。

私はこれを持っています:

enter image description here

[表示]アイテムをタッチすると、左上隅にある原点との座標が表示されます。指をビューからスライドさせると、負の座標が表示されます(上または左にスライドした場合)。 enter image description hereenter image description here

画面内のビューの場所を取得して、取得した(x、y)座標に追加したいので、最終的には(0,0)が画面全体の左上隅になります。 。 enter image description here

指が右下隅にあるかどうかがわかるように、画面の合計サイズも必要です。

どうすればこれを達成できますか?

ありがとう。

15
Alex

MotionEventクラスにはgetX()メソッドとgetY()メソッドがあり、ご存知のとおり、ビューに関連する座標を返します。

ただし、getRawX()メソッドとgetRawY()メソッドもあり、ドキュメントによると次のようになっています。

このイベントの元の生のX(またはY)座標を返します。画面上のタッチイベントの場合、これは、含まれているウィンドウとビューに合わせて調整される前の、画面上のイベントの元の場所です。

このように聞こえますが、あなたが求めているものです。

16
Tim

ビューが画面に読み込まれた後、これを使用してみてください。

int[] location = new int[2];
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]);
Log.v(Common.TAG,"top: "+ location[1]);
6
Vikram

画面上のViewの位置を取得すると、単純な算術演算を使用して残りを計算できます。 ビューの絶対座標を取得する方法

0
slayton