レベル ローダーのスケーリングの背後にある計算は、実際にはかなり単純です。まず、デフォルトのスケールを選択することから始めてください。つまり、プラットフォームの座標と寸法とともに、240x320 の画面解像度を取得します。
スケーリングするには、ゲームが実行されているデバイスの画面解像度を知る必要があります。以下は、画面解像度を取得します。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
API 13 より前をターゲットにしている場合は、display.getSize を使用できません。代わりに、次を使用する必要があります。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
新しい解像度が得られたので、デフォルトの解像度 (240x320) と新しいデバイスの解像度の違いを見つけることができます。
float xScale = (float)width / 240.0f;
float yScale = (float)height / 320.0f;
これらの値を強制的に float または double にすることが重要です。整数のままにしておくと、10 進数の値が省略され、丸められた整数になるため、適切にスケーリングされません。これは正確ではなく、適切なスケーリングができません。
スケールを取得したら、それに応じてオブジェクトのサイズ変更と移動を開始できます。
たとえば、最初のプラットフォームの位置が
int x = 200;
int y = 120;
次に、これらの値を取得してスケールで乗算するだけです。
int x = (int)(200 * xScale);
int y = (int)(120 * yScale);
プラットフォームの寸法についてもこれを行う必要があります。
int width = (int)(30 * xScale);
int height = (int)(15 * yScale);
30 と 15 をプラットフォームの幅と高さに置き換える
重要:
この方法で座標をスケーリングする場合は、すべての座標をスケーリングする必要があります。これは、境界と衝突を検出するために座標を使用している場合、それらも一致するようにスケーリングする必要があることを意味します。
これは、Android デバイスの解像度を取得する方法に関する別の投稿です。
画面解像度の取得
これがお役に立てば幸いです。