[英]How to position a View at an specific point on a background layer, regardless of screen dimentions?
[英]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.