以前にも質問したことがありますが、まだこの問題に問題があります。
基本的に、キャンバスを使用してゲームの画像を描画するときは、ピクセル値をハードコーディングしています。
ある画面のピクセル値が別の画面では正しく動作しないことは明らかなので、このゲームをあらゆる画面サイズに適したものにするプロセスについてどうすればよいでしょうか。
前もって感謝します
ベン
以前にも質問したことがありますが、まだこの問題に問題があります。
基本的に、キャンバスを使用してゲームの画像を描画するときは、ピクセル値をハードコーディングしています。
ある画面のピクセル値が別の画面では正しく動作しないことは明らかなので、このゲームをあらゆる画面サイズに適したものにするプロセスについてどうすればよいでしょうか。
前もって感謝します
ベン
なぜピクセル値が必要なのですか?px値ではなくdpを使用してください!!
final float scale = getContext().getResources().getDisplayMetrics().density;
int px = (int) (dp * scale + 0.5f);
dp密度に依存しないピクセル-画面の物理的な密度に基づく抽象的な単位。これらの単位は160dpi(dots per inch)画面を基準にしているため、画面密度に関係なく、160dpは常に1インチです。dpとピクセルの比率は画面密度に応じて変化しますが、必ずしも直接の比率である必要はありません。レイアウトでビューのサイズを指定するときにこれらの単位を使用する必要があります。これにより、UIが適切にスケーリングされ、異なる画面で同じ実際のサイズでレンダリングされます。(コンパイラーは「dip」と「dp」の両方を受け入れますが、「dp」は「sp」とより一貫性があります。)
画面の寸法を取得するには、次を使用できるはずです。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
次に、適切と思われる方法を決定します。元の解像度を拡張して適切に調整したり、より大きな解像度に直接描画したりします。
キャンバスが画面の一部にすぎない場合は、左上に対する相対的な位置を追跡し、それに応じて位置/サイズを拡大縮小します。