2011-01-04 22 views
0

私はフルスクリーンのゲームを作成しています。私は背景のためのイメージを使用しており、私はそれの上にイメージを描いています。背景イメージはすべてのデバイスで素晴らしいように見えますが、すべてのデバイス上の同じ場所にオーバーレイイメージを描画することはできません。私は複数の画面上の同じ場所に画像を表示| Android

canvas.drawBitmap(overlay, 365, 85, paint);

を使用する場合

例えばそれは854pxの幅を持っている携帯電話のために完璧にイメージを合わせます。しかしそれより低いものは、右に押し込まれるでしょう。

私はディップで遊んでみましたが、それを理解できないようです。それらのアイテムがすべての決議で正しく整列することを保証できる場所はありますか?

+0

const値ではなく、デバイスの画面サイズに従ってx、y座標を渡す必要があります。 – Sandy

答えて

1

このようにしたい場合は、おそらく画面のサイズに基づいて位置を計算する必要があります。私はあなたが1.6以上をターゲットにしていることを推測している

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    wPix = dm.widthPixels; 
    hPix = dm.heightPixels; 
+0

だから私は、各画面サイズのスイッチステートメントをセットアップする必要がありますか? – Dave

+0

なぜポジションが変更されたかによって、何らかの計算をすることができると思います。例:画像を常に水平方向の中央に配置する場合は、幅200ピクセル、位置「100」の架空の画面が必要です。 500の場合は '250'などが必要です。スイッチの代わりに、もちろん「幅/ 2」を使用します。この場合も同様のことが可能でしょうか? – Nanne

+0

あなたは四捨五入に慎重で、物事が乱雑にならない限り、比率を使用できますが、特定の解像度のレイアウトを設計し、その解像度でスクリーンがレンダリングされていないときは、それが重要であればサイズもより適切であるようにする)。 – James

1

あなたはこのように、これらの使用して何かを見つけることができます。 Androidがデコードすると、自動的にリソースがターゲット画面の密度に拡大されるため、すべてのデバイスで背景がきれいに見える理由です。これを回避するには、リソースを "drawable-nodpi"にするか(このディレクトリを作成する必要があります)、適切なオプションをデコードビットマップ関数に渡します(ドキュメントを参照してください)。すべてのビットマップを手動でスケーリングする必要があります。他の2つの答えは、適切なアイデアを持って、あなたの画面サイズをつかんで、すべてのピクセル値を計算します。定数を使用しないでください。

関連する問題