36

OnTouchListenerMotionEvent オブジェクトを実装して受信しています。ACTION_MOVE絶対 X/Y 座標を報告するイベントもあれば、相対座標を報告するイベントもあります。

MotionEvent現在どのような座標を表しているかを尋ねるにはどうすればよいですか?

4

3 に答える 3

70

これらを絶対座標 (デバイスの画面に関して絶対) に使用することができます。

MotionEvent.getRawX()

MotionEvent.getRawY()

他のメソッドgetX()およびは、それらをディスパッチしgetY()た を基準とした座標を返す必要があります。View

于 2009-09-12T09:36:09.967 に答える
37

これは、Android プラットフォームの制限です。

MotionEventは、ビューに相対的な絶対 X および Y 座標を返す場合もあれば、前のモーション イベントに相対的な座標を返す場合もあります。

として送信されるイベントACTION_DOWNは常に絶対的であり、他のすべてのイベントは変化します。MotionEventに現在のタイプの座標を尋ねる方法はありません。

これは、実際getX()には とgetY()が多くのユース ケースで役に立たないことを意味し、アプリケーション ロジックは に基づく必要があり、デバイス画面を基準getRawX()getRawY()した絶対座標を返すことが保証されています。

于 2009-09-17T10:34:53.433 に答える
4

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 座標を決定するために機能するはずです。

于 2010-01-06T06:36:17.133 に答える