繁体   English   中英

如何将对象放置在屏幕上靠近点的位置,而不论大小

[英]How to position an object near a point on a screen regardless of size

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

为了获得屏幕的宽度和高度,请使用以下代码:

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及更高版本的所有设备上使用。

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM