Android 屏幕分辨率和尺寸

问题描述 投票:0回答:3

我目前正在开发一个 Android 应用程序,这给我带来了一些麻烦。我的应用程序严重依赖于正确适合其所显示屏幕的图像。不幸的是,除了其他尺寸/密度和分辨率之外,FWVGA/WVGA 分辨率差异 854 与 800 等问题给我带来了一些实际问题。

我不知道我是否错过了这里的重点,但我如何让我的应用程序在两种分辨率上正确显示,而不“挤压”我的图像或削减给我黑条等的部分?

似乎没有立即存在的解决方案,我可以让它从右侧屏幕的可绘制文件夹中自动显示不同的图像。

我尝试过使用显示指标,但除非我明确声明它支持所有屏幕尺寸,否则 Android 操作系统实际上会向我的应用程序“撒谎”有关当前分辨率的信息。

有人请告诉我有一个简单的解决方案。

android screen resolution
3个回答
3
投票

如何让我的应用程序在两种分辨率上正确显示,而不“挤压”我的图像或削减黑条等?

恕我直言,你首先要重新审视你的 GUI 设计:

我的应用程序严重依赖于正确适合其所显示屏幕的图像。

恕我直言,这在任何地方都不是特别有效。例如,Windows(包括浏览器)可以由用户调整为任何所需的大小。

似乎没有立即存在的解决方案,我可以让它从右侧屏幕的可绘制文件夹中自动显示不同的图像。

因为 Android 设备可以有任意数量的屏幕尺寸,就像 Windows 和 Web 浏览器可以有任意数量的屏幕尺寸一样。 Android 确实允许您根据密度(例如,

-hdpi
)或屏幕尺寸(例如,
-large
)选择图像,但这些不会也不应该映射到分辨率。


1
投票

正如 CommonsWare 指出的那样,针对这种情况,最好的选择实际上是重新考虑布局结构。使用RelativeLayouts 和小部件,可能可以实现与您当前拥有的结果相似(即使不完全相同)的结果。如果您愿意发布示例,我们可以为您提供这样做的建议。

也就是说,您问题的答案是在运行时查询设备的屏幕分辨率(请记住通知栏以及标题栏占用的空间 - 除非您在没有标题栏的情况下对其进行主题化)。对于每种可能的屏幕分辨率,您都需要不同的图像,并且随着更多设备(尤其是平板电脑)开始发布,您将必须在发布时继续为每个不同的图像提供更多图像和自定义代码。您会明白为什么这不是一个理想的情况。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels();
int screenHeight = metrics.heightPixels();

然后您可以将其放入 if-then-else 块中,并确定分辨率,并相应地设置图像。我不推荐这个。


0
投票

当涉及到显示器和分辨率时,如果不挤压/拉伸图像或使用信箱,就不可能将图像调整为任何纵横比。 我知道这并不能真正回答您的问题,但如果您无法从操作系统获得可靠的屏幕尺寸信息,请尝试选择最大分辨率的图像并裁剪较小的分辨率。 只要确保边界周围没有任何有趣的东西即可。

© www.soinside.com 2019 - 2024. All rights reserved.