在Android中支持不同的屏幕尺寸

问题描述:

我对如何支持所有不同的Android屏幕尺寸非常困惑。我已经检查this answer,这site,官方documentations和许多其他的答案,但我仍然很困惑所以请不要标记这个为复制在Android中支持不同的屏幕尺寸

我已经创建了layout-sw120dp, layout-sw160dp, layout-sw240dp, layout-sw320dp, layout-sw480dp(我只需要支持高达6英寸,所以我不创建layout-sw600dp)。

我有什么做的只是有一个布局,只是拷贝在每个不同的文件夹,使Android将做自己的选择还是我也需要改变在每个布局值?

我必须做的是只有一个布局,并将其复制到每个不同的文件夹中,或者我还需要更改每个布局中的值?

您可以通过删除您创建的layout-sw120dplayout-sw160dplayout-sw240dplayout-sw320dplayout-sw480dp目录开始。或者,至少现在忽略它们。

然后,您可以开始实现UI,把布局资源res/layout/

然后,对于那些在某些情况下需要不同的布局,您需要然后创建一个目录,表示您想要不同布局时的大小。将布局从res/layout/复制到新目录中,然后修改该副本以反映所需的任何更改。

换句话说,每一个布局的一个副本是res/layout/,你覆盖其中具有额外需要,修改在您需要的UI改变特定目录副本。

+0

所以你现在描述的是删除我拥有的所有不同的文件夹,只有默认的'布局'文件夹? – Johny

+0

@Johny:我只是说你*只用'res/layout /'目录开始*。您只需添加其他目录*(如果和当您需要更改时),并且您只创建反映这些更改的目录和修改过的布局。有些布局只需要'res/layout /'中的一个副本。其他人可能需要在其他目录中更改版本。 – CommonsWare

+0

因此,我创建目录(layout-sw120dp等),并根据需要将不同的布局放在每个不同的文件夹中,否则我不需要创建它们。 – Johny

这是一直从远古时代的一个问题的答案,以及您会看到很多很多的答案,但它不是一个仍然适合所有类型。当我遇到同样的问题时,我所做的是使用PercentRelativeLayout。这是一个从Android support version 23.0开始了一个相对较新的功能(Android SDK中的经理),以及大改变游戏规则的一个根据我的,因为它允许开发人员 相对于布局尺寸指定其块百分比明智。而且由于它的百分比来讲,这个适合所有尺寸不同的屏幕尺寸,但是保持比例

Ofcourse这种方法涉及到一些试验和错误和大量的试验,但我发现这个方法是最容易实现的,并且拿出了维持各种屏幕尺寸的尺寸的头痛。


一些教程,让你开始:

https://www.tutorialspoint.com/android/android_relative_layout.htm https://guides.codepath.com/android/Constructing-View-Layouts

+0

如果它支持版本23.0,那么这将无济于事,因为我需要支持从版本16.0 – Johny

+0

PercentRelativeLayout来自一个支持库,所以它没有关系你有什么API。所以是的,API 16将工作。我的支持版本23的含义是SDK Man中的Android支持库愤怒应该是23.0或以上。 –

如果你想使用的每个相同的布局和每个屏幕密度,你不需要创建不同的文件夹。只使用一种简单的称为“布局”的方式,系统将对每种密度进行解释。但是,这可能会导致某些物理设备出现奇怪的布局,具体取决于它们的屏幕大小和密度... 如果您的应用程序支持方向更改,则必须注意的另一点是必须为肖像和景观设计布局取向。这是通过复制用于密度的文件夹并添加“-port”或“-land”来通知系统必须根据您的应用当前正在运行的设备的实际方向使用哪一个文件夹。 如果您想精确定义您的应用外观,您必须为每个密度自定义布局。如果你使用位图,你将不得不自定义它们(例如,你的应用程序图标应该被定义为不同的大小以保持每个屏幕密度的好看)。就像布局一样,您必须创建“drawable -...”文件夹以包含相应版本的位图。

+0

我只需要使用肖像,因此没有任何问题。我已经有了每个不同视频的'drawable'文件夹和每个不同视频的'raw'文件夹。但只有一个'layout'文件夹,我将如何管理每种不同的屏幕尺寸和密度? – Johny

+0

如果只有一个布局文件夹不适合您的需求,则必须自定义放置在每个“布局-...”文件夹中的布局,并排列这些元素以获得任何密度和屏幕大小所需的布局。有没有简单的方法来做到这一点,但例如,Android Studio可以帮助您完成此任务,让您可以在多种不同的屏幕尺寸和密度下预览结果。 – Zelig63