将分辨率固定为16:9

时间:2014-09-04 19:52:17

标签: android

我试图制作一个Android游戏框架,我想让它适用于所有可能的屏幕分辨率 通过将比例固定在16:9,通过取一些屏幕边并使其成为空白,如果比例不是16:9,我似乎无法在其背后进行数学计算。 / p>

我尝试制作一个循环,每次迭代减去一次并检查该比率是否等于16:9,但是双重除法将其转换为无限循环,因为1920:1080!= 16:9例如< / p>

那么有人能给我一个更好的方法吗?

或者您是否建议使用的资源比空白边提供更好的解决方案?

1 个答案:

答案 0 :(得分:4)

理想情况下,您希望宽度尽可能接近您所需的16:9比例的“16”。

我们举一个480x320的例子......

如果你将480/16分开,结果就是30.乘以30 * 9是270.这意味着你可以使用480的全宽,但你需要调整高度,因为270小于320.

屏幕高度为320像素但所需的宽高比为16:9时,您需要创建空白的顶部和底部边距,总计320 - 270 = 50.为了获得相等的边距高度,除以2。

因此...

480/16 = 30

30 * 9 = 270

320 - 270 = 50

50/2 = 25

基本上,您可以使用全屏宽度,但每个都添加25个像素的上下边距。

编辑:现在让我们假设您有一个不寻常的屏幕尺寸示例500x320(不太可能,但谁知道?)。

在这种情况下,我们需要知道当我们将屏幕宽度除以16时模数(余数)是多少......

int xPixels = 500; // Physical number of pixels on X axis
int yPixels = 320; // Physical number of pixels on Y axis
int leftMargin = 0;
int topMargin = 0;

// In the case of 500 width, the remainder will be 4 pixels
// because 500 / 16 is 31 with a remainder of 4.
int remainder = xPixels % 16;

// Check to see if the remainder is 0. If it's not then we need a left margin...
if (remainder != 0)
    leftMargin = remainder / 2;

// Now calculate height of the image
int imageHeight = xPixels / 16 * 9;

// Now check if image height is the same as the physical screen height
// if it's not then calculate the top margin
if (imageHeight != yPixels)
    topMargin = (yPixels - imageHeight) / 2;

使用上面的代码,您应该能够根据上边距和左边距调整屏幕位置。