1

現在、画面の半分 (上半分) が画像で、残りの半分 (下半分) がグリッド ビューであるアプリを開発しようとしています。グリッド ビューのタイルの 1 つをクリックすると、このクリックの相対 y 座標を event.getY() で取得しようとします。Android 2.3.3 では 88 を取得しました。私にとっては正解です。この値を後で計算に使用する必要があります。しかし、Android 4.0では、そのタッチイベントの絶対座標であるかのように見える約576の値が得られます...

この 2 つのバージョンの違いを説明できる人はいますか? また、Android 4.0 でも相対値を取得するための解決策はありますか?

4

1 に答える 1

0

これをどのようにテストしていますか?私の4.2は常にビューに関する座標を提供してくれます...

2つのデバイスの解像度が異なることが原因である可能性が高いと思います。2.3.3 は古い可能性が高いため、画面の解像度が低い可能性があります。2 つの同一の仮想デバイスでテストしてみてください (唯一の違いは Android のバージョンです)。解像度が大きく異なる 2 つの 2.3.3 デバイスでテストすることもできます。

練習として、私は座標を使用する前に常に座標を正規化しようとします (つまりevent.getY()/view.getHeight())。これにより、解像度について心配する必要がなくなります。

編集:

絶対に相対座標を取得できない場合 (理由はわかりませんが、とにかく...)、ゲームをプレイして常に生の座標を取得し、相対計算を自分で行うことができます。つまり、getRawX()/を使用し、および/またはgetRawY()から取得したビューの左上隅の座標を減算します。それほど効率的ではありませんが、便利な回避策です。View.getLocationOnScreen()getLocationInWindow()

于 2013-05-20T12:24:46.407 に答える