0

インターネットで見つけた古いコードを基に、Pong のようなゲームを作ろうとしています。画面のサイズは元々手動で設定されており、他のサイズの画面は考慮されていませんでした。サイズに関係なく、バーが画面の端から 10% になるように更新したいと考えています。私はさまざまなことを試しましたが、いくつかのエラーなしでは機能しませんでした。私が思いついた最高のものはこれです。

@SuppressWarnings({ "unused", "deprecation" })
private static Point getDisplaySize(final Display display) {
final Point point = new Point();
try {
    display.getSize(point);
} catch (java.lang.NoSuchMethodError ignore) { // Older device
    point.x = display.getWidth();
    point.y = display.getHeight();
}
return point;
}

この最初のビットは、古い API と新しい API で正しく動作するはずですか? 幅と高さの情報を後で使用する _screenHeight と _screenWidth に適用するにはどうすればよいですか? はい、_screenWidth/2 では、探しているエッジから 10% が得られないことを認識しています。一度に 1 ステップずつお願いします。

//The ball
final int _ballSize = 10;
//Original 
//int _ballX = 100;     int _ballY = 100;
int _ballX = 500;   int _ballY = 500;
int _ballVelocityX = 3;     int _ballVelocityY = 3;

//The bats
final int _batLength = 75;  final int _batHeight = 10;
int _topBatX = (_screenWidth/2) - (_batLength / 2);
final int _topBatY = 20;
int _bottomBatX = (_screenWidth/2) - (_batLength / 2);  
//Original code
//final int _bottomBatY = 400;
final int _bottomBatY = 750;
final int _batSpeed = 3;
4

1 に答える 1

0

画面の幅と高さを取得するには、次のコードを使用します。

Display display = getWindowManager().getDefaultDisplay();       
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float density  = getResources().getDisplayMetrics().density;
_screenWidth = outMetrics.widthPixels / density;
_screenHeight  = outMetrics.heightPixels / density;

また、デバイスに依存しないピクセルを取得するには、保持する「ピクセル」タイプのパラメーターを画面密度で割る必要があります。

このコードは、Android 2.2 以降を実行しているすべてのデバイスで動作することが証明されています。

お役に立てれば :)

于 2013-10-21T00:20:21.283 に答える