2

我为我的应用程序设计了附加屏幕。该应用程序针对 android 1.6 及更高版本。目前,该应用程序在大多数 hdpi 和 mdpi 设备上运行,少数设备具有一些奇怪的分辨率,例如 1024x600 和 169 dpi、1024x600 和 179 dpi、1024x600 和 240 dpi。我提供了替代布局来支持下面提到的文件夹中的多个屏幕。

布局:默认布局资源。
layout-hdpi:用于 hdpi 屏幕。我的项目中很少有布局需要为此专门优化。
layout-mdpi:用于 mdpi 屏幕。我的项目中很少有布局需要为此专门优化。
layout-large:大屏幕的默认布局资源。
布局-大-hdpi:分辨率为 1024x600 的 hdpi 屏幕的布局资源
layout-sw400dp-v11:这主要用于 7" 平板电脑。只有运行 Honeycomb 或更高版本的设备才能识别。

现在我还需要添加对 qHD 屏幕的支持(540x960 具有 256 dpi 或类似) . 下面是我需要设计和添加对 qHD 屏幕支持的示例屏幕。此屏幕截图是在 HTC Incredible S 上拍摄的,分辨率为 480x800,240 dpi。

在此处输入图像描述

我已经为 qHD 屏幕设计了布局,以便在这些屏幕上看起来也一样。

现在,我有以下问题:

1. 考虑到我需要支持 hdpi、mdpi 和上面提到的奇数屏幕,我是否有正确的目录结构来提供替代资源?如果没有,我应该如何为这些屏幕提供替代资源?我真的需要设计单独的文件,以便 UI 在多个屏幕分辨率和密度下看起来都一样。

2. qHD 屏幕具有 256 dpi。这意味着这些屏幕是 hdpi 屏幕。我已经有 hdpi 屏幕的资源,在大多数设备上看起来都如上。但是当我在 qHD 屏幕上查看它时,它看起来像下面的屏幕截图。那么,如何为 qHD 屏幕提供替代资源,使其不会影响我当前在大多数设备上显示良好的布局资源?

在此处输入图像描述

@Espiandev
一个 qHD、hdpi 设备具有 360x640 的独立于显示像素 (DIP) 的屏幕尺寸,而 Incredible S 的屏幕尺寸为 320x533,因此某些图像相对于其他图像而言在屏幕上方较高。所以本质上,qHD 设备可以在每个屏幕上显示比 Incredible S 更多的东西。有关 DIP 的解释和更多提示,请参见此处
——感谢您的洞察力。我知道这一点。我也读过 Dianne Hackborn 的帖子;“管理屏幕尺寸的新工具” - http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html

从它的样子来看,您目前正在使用目标/增益/去部分上方的一些边距或填充,我建议将它们的重力更改为底部(即将它们与屏幕底部对齐),然后使用项目下方的边距或填充。
-- 不,我没有为这些部分使用填充或边距。它是一种相对布局,其中目标/增益/多走按钮位于该仪表带按钮下方。正如您建议将重力设置为底部并具有底部填充;是的,我也试过了,但是那个米带按钮和这些圆圈之间的距离增加了,我必须修改这些眼镜之间的尺寸和边距,下面的按钮和创建不同布局文件的米带按钮。当您在小屏幕设备上查看此屏幕时,视图将重叠,因为小屏幕设备可以显示较少的视图。

但我会努力使您的应用程序适应屏幕,而不是像这样尝试划分屏幕尺寸,因为您不应该真的需要单独的 mdpi、hdpi 等布局资源
- 我同意通常我不应该需要mdpi 和 hdpi 屏幕的单独布局。但这里的要求是屏幕在所有屏幕上看起来应该完全相同。就像,那个黄色圆圈内的所有视图都不应该超出那个圆圈。中心的那个按钮应该总是在中心。此外,在米尺按钮顶部和下方的那三个小圆圈的相对大小应该相同。这让我别无选择,只能为 mdpi 和 hdpi 屏幕创建不同的布局。

我为 qHD 屏幕创建了不同的布局文件。现在我的问题是我应该把它放在哪里,以便 qHD 设备将使用该文件,而其他设备将继续像现在一样工作。

4

1 回答 1

0

qHD、hdpi 设备具有 360x640 的显示独立像素 (DIP) 屏幕尺寸,而 Incredible S 的屏幕尺寸为 320x533,因此某些图像相对于其他图像位于屏幕上方。所以本质上,qHD 设备可以在每个屏幕上显示比 Incredible S 更多的东西。有关DIP 的说明和更多提示,请参见此处。

在 Incredible S 和 qHD 设备上,没有真正的方法可以使 UI 看起来完全相同。与 iOS 设备不同,屏幕尺寸变化很大。从它的样子来看,您目前正在使用目标/增益/去部分上方的一些边距或填充,我建议将它们的重力更改为底部(即将它们对齐到屏幕底部),然后使用项目下方的边距或填充。这样,它有望与您的午餐/晚餐盒保持一致。如果您发布您的 XML 文件,这将有助于诊断问题。

在Android 3.2之前,我不相信有办法区分以上两种情况,但是在3.2之后,可以使用swXXXdp(最短宽度)属性。但我会努力让您的应用程序适应屏幕,而不是像这样尝试划分屏幕尺寸,因为您不应该真的需要单独的 mdpi、hdpi 等布局资源。

于 2012-07-12T15:12:42.707 回答