OnTouchListener
MotionEvent オブジェクトを実装して受信しています。ACTION_MOVE
絶対 X/Y 座標を報告するイベントもあれば、相対座標を報告するイベントもあります。
MotionEvent
現在どのような座標を表しているかを尋ねるにはどうすればよいですか?
これらを絶対座標 (デバイスの画面に関して絶対) に使用することができます。
他のメソッドgetX()
およびは、それらをディスパッチしgetY()
た を基準とした座標を返す必要があります。View
これは、Android プラットフォームの制限です。
MotionEvent
は、ビューに相対的な絶対 X および Y 座標を返す場合もあれば、前のモーション イベントに相対的な座標を返す場合もあります。
として送信されるイベントACTION_DOWN
は常に絶対的であり、他のすべてのイベントは変化します。MotionEvent
に現在のタイプの座標を尋ねる方法はありません。
これは、実際getX()
には とgetY()
が多くのユース ケースで役に立たないことを意味し、アプリケーション ロジックは に基づく必要があり、デバイス画面を基準getRawX()
とgetRawY()
した絶対座標を返すことが保証されています。
MapView を使用すると、MotionEvent.getRawX() と MotionEvent から Window のコンテンツ ビュー (Window.ID_ANDROID_CONTENT) の View.getLeft() と View.getTop() を減算することで、相対的な X 座標と Y 座標を取得できました。 getRawY()、それぞれ。
解決策はここで議論されています:
http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html
これは、メイン レイアウト ビューで相対的な X 座標と Y 座標を決定するために機能するはずです。