根据 phone 的分辨率限制应用程序的屏幕尺寸

Restricting an app's screen size based on a phone's resolution

我正在 android studio 中开发一个应用程序,该应用程序在 1080x1920 phones(及更低)上正确显示,但对于像我的 phones(s8) 的应用程序变得混乱向上,我找不到一种方法来修复每个屏幕尺寸的应用程序 ui。所以,我想知道是否有办法将应用程序的屏幕尺寸限制为 1080x1920(假设屏幕顶部和底部有黑条),即使 phone 的尺寸大于该尺寸(这在与 s8 不兼容的游戏中自动完成)。你们知道实现这种效果的方法吗?

有可能,您可以将父视图设置为您想要的宽高比的精确大小(1080x1920 缩小到 9x16)。为此,您必须以编程方式调用视图(或在代码中创建它)并使用 LayoutParams 以像素为单位设置宽度和高度:

yourView.setLayoutParams(new LayoutParams(width, height));

对于您想要的实际屏幕尺寸的重量和高度,您可以从 WindowManager 获得:

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
Point point = new Point();
display.getSize(point);
int x = point.x;
int y = point.y;

在这里您可以得到 x 和 y,它们代表您的实际屏幕尺寸(以像素为单位)。然后,您决定应该缩小哪一个(以保持 9x16 的纵横比)并如上所述设置您的父视图的 LayoutParams。

最后,将内容视图设置为父视图:

setContentView(yourView);

就是这样。希望对您有所帮助。

编辑:既然你提到了游戏,我可以告诉你那里(如果你使用 Android SDK)你有你的 SurfaceView 作为父视图,过程是相同的。