我正在尝试根据我在互联网上找到的一些旧代码制作类似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;
答案 0 :(得分: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及更高版本的所有设备。
希望这会有所帮助:)