【问题标题】:Restricting an app's screen size based on a phone's resolution根据手机分辨率限制应用的屏幕尺寸
【发布时间】:2017-12-18 17:45:08
【问题描述】:

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

【问题讨论】:

  • 不,您应该阅读如何使您的布局与屏幕尺寸相同。 developer.android.com/training/multiscreen/index.html
  • 不要使用像素,使用 dps(和 sps 用于文本)。
  • @tyczj 谢谢你帮了大忙。我应该删除这个线程,因为答案就在 cmets 中,还是你可以将它作为答案发布,以便我可以展示它?

标签: android screen-resolution screen-size samsung-s8


【解决方案1】:

有可能,您可以根据所需的纵横比将父视图设置为精确大小(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 作为父视图,过程是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多