无论大小如何,如何将对象放置在屏幕上的点附近

时间:2013-10-21 00:13:57

标签: android

我正在尝试根据我在互联网上找到的一些旧代码制作类似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;

1 个答案:

答案 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及更高版本的所有设备。

希望这会有所帮助:)