好问题。但你这样做的方式不是“专业”开发人员会这样做的。 单个 Activity 不需要 32 个布局,Android 足够智能来处理事情。
没有布局的多定义/dimens.xml的多定义
是否可以支持多设备?
是的,这绝对是可能的,这就是你应该做的。 为单个 Activity 布局定义 32 个布局并不是一件好事。
假设,我在 Play 商店中有一个相当大的应用程序,其中包含 20 多个 Activity,现在如果我为单个 Activity 定义了 32 个布局,那么我的应用程序将有 600 多个布局。 这可行吗?问问自己。
您需要首先阅读 this 页面。它几乎包含您需要知道的所有内容。但我会帮你把事情做好。
您不需要为每个组合提供替代资源
屏幕尺寸和密度。该系统提供强大的兼容性
可以处理大部分渲染工作的功能
任何设备屏幕上的应用程序,前提是您已实现
您的 UI 使用允许其优雅调整大小的技术
这句话足以让你相信你不应该这样做。 Android 系统足够智能,可以相应地调整您的布局。相信我,它在这方面真的很棒。
当您针对不同的屏幕尺寸设计用户界面时,您会发现
每个设计都需要最少的空间。所以,每个广义
上面的屏幕尺寸具有定义的关联最小分辨率
由系统。这些最小尺寸以“dp”为单位——相同的单位
您应该在定义布局时使用
我将尝试指出您需要考虑的一些重要事项。
- 永远不要在布局中对像素进行硬编码
- 在您的布局中始终使用
dp 或sp。顾名思义,它们独立于不同设备的密度,因此在每个设备上看起来都一样。
- 始终使用
wrap_content 或match_parent 作为高度和宽度
- 永远不要使用
AbsoluteLayout
-
RelativeLayout 或 LinearLayout 都非常适合您,您只需要根据场景决定要使用哪一个
-
始终为不同的屏幕尺寸提供不同版本的可绘制对象。这是你不能跳过的。如果你不这样做,你的布局不仅在不同的设备上看起来很糟糕,而且会让你的应用消耗不必要的资源。
- 虽然单一布局也适用于平板电脑,但由于表格的屏幕尺寸比典型手机大得多,您应该仅为它们提供单独的布局。
Android Studio 丰富的布局编辑器
Android Studio 有一个很棒的布局编辑器,您可以在其中即时预览您的布局。请看下面的截图,
我正在以各种屏幕尺寸同时预览我的应用的特定屏幕,并且我的布局看起来和我想要的一样,在所有这些屏幕中。
我只为这个 Activity 设置了两种布局,一种用于所有手机,一种用于所有平板电脑。
实践经验
如果您想要实际体验,我在 Play 商店中运行了一个应用程序,成千上万的用户在 8000 多种不同屏幕尺寸的不同设备上使用该应用程序。
我只有 2 种用于特定 Activity 的布局,一种用于手机,一种用于平板电脑。我的应用程序的用户界面在所有设备上看起来都不错,而且我从未收到任何用户的抱怨。如果您需要,here 是应用程序的链接。
我相信这个详细的答案可以解决您的所有疑问,如果没有,请随时告诉我。我很乐意提供进一步的帮助。
UDPATE
我会再次尝试消除您的困惑。但首先我会建议您阅读我的答案不止一次。
您需要一种或两种布局,这完全取决于您设计的特定布局。所有布局都与其他布局不同。 技术上不能将其定义为主观的。没有经验法则。但我会尽量正式地帮助你。
您需要充分利用 Android Studio Rich Layout Editor 及其超棒的实时预览功能。
首先尝试针对任何平均设备尺寸(如 5 英寸的 Nexus 5)设计布局。只需选择 Nexus 5 即可预览您的布局。
对设计感到满意后,选择其他屏幕尺寸进行预览。您也可以像上面的截图一样选择“预览所有尺寸”。
尝试查看您的布局在所有屏幕尺寸(从 4 英寸到 10 英寸平板电脑)中是否看起来都不错。看看间距、图片大小、字体大小是否都正确。
所有 4 英寸到 6 英寸的手机通常都有完美的预览,但您可能需要为平板电脑屏幕单独设计另一种布局(因为它们足够大)。只是这里需要 2 种布局,但并非总是如此。
就像在我的应用程序中一样,我有 2 个单独的布局,仅用于 5-6 个活动,但对于其余的,我只有一个布局。这一切都取决于特定的布局。
设计与编程完全不同。 编程可以通过形式和语法来定义,但设计不能。设计是绝对主观的,取决于设计师的观点。 以自己的方式发挥创意,这就是设计的魔力。