2009-09-11 27 views

答えて

60

あなたは(デバイスの画面に関しては絶対、)絶対座標のためにこれらを使用したい場合があります、他の方法、getX()getY()

MotionEvent.getRawX()

MotionEvent.getRawY()

あなたの座標を返す必要がありますそれらを派遣したViewに対して

+6

私は上記のgetRawX()とgetRawY()を使って私の問題を解決しました。しかし、私はそれが、MotionEventクラスの霊長類メソッドでなければならないように感じても、getX()とgetY()が役に立たないことを示唆しているので、それはうつ病の解決策であることがわかります。より洗練されたソリューションが必要です。 – PeyloW

+1

優秀、あなたは私に未来の頭痛を救った。 – Tom

+6

While(真){ System.out.println( "ありがとう"); } –

33

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

MotionEventは、ビューに対して絶対X座標とY座標を返すことがあり、時には前のモーションイベントに対する相対座標を返すことがあります。

ACTION_DOWNとして送信されるイベントは常に絶対的なものになりますが、他のすべてのイベントは異なります。 MotionEventに現在の座標タイプを問い合わせる方法はありません。

これは、実際にgetX()getY()は、多くのユースケースのために無用であることを意味し、あなたがgetRawX()およびデバイスの画面に対する絶対座標を、返すことが保証されてgetRawY()上でアプリケーション・ロジックをベースにする必要があります。

+3

これは今のケースですか?私は相対座標のためにちょうどうまく動作するgetY getYを探しています... – jjxtra

4

MapViewを使用しているときに、Windowのコンテンツビュー(Window.ID_ANDROID_CONTENT)のView.getLeft()およびView.getTop()をMotionEvent.getRawX()から減算することによって、相対XおよびY座標を取得できました。 )およびMotionEvent.getRawY()を呼び出します。

溶液がここで説明されている:

http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html

これは相対Xを決定するために働くべきであり、Yは、メインレイアウトビューで調整します。

関連する問題