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,对吗?如何将宽高的信息应用到后面用到的_screenHeight和_screenWidth上?是的,我确实意识到 _screenWidth/2 不会让我得到我正在寻找的边缘的 10%,请一次一步。

//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 回答