私はOnTouchListener
を実装しており、MotionEventオブジェクトを受け取っています。一部のACTION_MOVE
イベントは絶対座標を報告しますが、相対座標はレポートします。MotionEventが相対的なものか絶対的なものかを知る方法はありますか?
MotionEvent
は現在どのような座標を表していますか?
私はOnTouchListener
を実装しており、MotionEventオブジェクトを受け取っています。一部のACTION_MOVE
イベントは絶対座標を報告しますが、相対座標はレポートします。MotionEventが相対的なものか絶対的なものかを知る方法はありますか?
MotionEvent
は現在どのような座標を表していますか?
あなたは(デバイスの画面に関しては絶対、)絶対座標のためにこれらを使用したい場合があります、他の方法、getX()
とgetY()
あなたの座標を返す必要がありますそれらを派遣したView
に対して
これはAndroidプラットフォームの制限です。
MotionEvent
は、ビューに対して絶対X座標とY座標を返すことがあり、時には前のモーションイベントに対する相対座標を返すことがあります。
ACTION_DOWN
として送信されるイベントは常に絶対的なものになりますが、他のすべてのイベントは異なります。 MotionEvent
に現在の座標タイプを問い合わせる方法はありません。
これは、実際にgetX()
とgetY()
は、多くのユースケースのために無用であることを意味し、あなたがgetRawX()
およびデバイスの画面に対する絶対座標を、返すことが保証されてgetRawY()
上でアプリケーション・ロジックをベースにする必要があります。
これは今のケースですか?私は相対座標のためにちょうどうまく動作するgetY getYを探しています... – jjxtra
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は、メインレイアウトビューで調整します。
私は上記のgetRawX()とgetRawY()を使って私の問題を解決しました。しかし、私はそれが、MotionEventクラスの霊長類メソッドでなければならないように感じても、getX()とgetY()が役に立たないことを示唆しているので、それはうつ病の解決策であることがわかります。より洗練されたソリューションが必要です。 – PeyloW
優秀、あなたは私に未来の頭痛を救った。 – Tom
While(真){ System.out.println( "ありがとう"); } –