使用 Material Design 设计自适应布局

1. 准备工作

探索 Material Design 布局和自适应设计原则,以帮助您在各种尺寸的屏幕上实现一致的体验。

什么是自适应设计?为什么我应该采用这种做法?

自适应设计是一种针对特定断点和设备调整布局的做法。通常,我们会根据设备的宽度来确定布局应在何处更改或调整。

虽然并非所有应用都需要支持每种屏幕尺寸,但它确实能为用户提供更多的自由,从工效学设计、易用性和应用质量方面改善用户体验。

作为设计师,将应用的关键屏幕调整为更大的格式,有助于开发者将应用的其余部分扩展到更多的使用场景。

bf7516f4035d7bc4.png

学习内容

  • 如何使用 Material Design 的全新自适应设计原则针对大屏设备进行设计。
  • 如何将移动设备的关键屏幕设计应用到大屏设备。
  • 可将其应用于您自己的设计的自适应概念。
  • 如何使用新的规范布局进行设计。

前提条件

在此 Codelab 中,我们将根据一些基础设计概念进行构建。

  • 了解基础设计概念:网格、字体比例、Material 组件
  • 了解 Figma

fb62204cf978abea.png

所需条件

2. 开始

设置

接下来,您需要设置设计环境。

首先,您需要访问 Adaptive Designlab Figma 文件。此 Codelab 中所需的一切资源都在该 Figma 文件中。您可以下载并导入该文件,也可以从 Figma 社区复制该文件。

首先,登录 Figma 或创建一个账号

从 Figma 社区复制

找到使用 Material Design 设计自适应布局,或在 Figma 社区中搜索“使用 Material Design 设计自适应布局”。点击 Open in Figma(在 Figma 中打开),将该文件复制到您的文件中。

文件版式

浏览文件。您会发现,该文件是独立的,开头是一个简介。每个部分被划分为一行链接在一起的画板,其中包含该部分的一些核心概念,然后是练习。这些部分和练习相辅相成,应依序完成。

此 Codelab 将详细介绍这些概念并引导您完成练习。如果您刚开始接触自适应和/或 Material Design,建议您继续阅读此 Codelab。

289defd9d067d2f0.png

3. 了解布局

Material 3 提倡针对不同的断点或窗口大小类,运用规范布局和间距方法来调整应用的布局,而不是利用 M2 的自适应网格。

不要在每个断点将布局锁定为固定尺寸,布局仍然需要在这些大小类之间灵活调整,以确保在众多设备上提供可靠的体验。

窗口大小类

窗口大小类是一种主观断点,即布局需要在窗口大小达到一定阈值时,根据可用空间、设备惯例和工效学设计进行更改。

所有设备都属于以下三种 Material Design 窗口大小类之一:较小屏幕、中等屏幕或较大屏幕。

745c18fbc8b46b79.png

布局区域

8bf5f2ff09ba0f17.png

大多数 Android 应用都由以下几个区域组成:系统栏、导航栏区域和正文。

系统栏是设备界面不可或缺的一部分,应包含在任何应用设计中,并在不同设备中以正确的上下文显示,以便更好地展示应用布局与系统界面的交互方式,并准确实现。

导航栏用于展示各种功能,用户可以通过这些功能在应用中导航、访问重要操作或跨 Android 平台进行操作。导航栏区域可以容纳抽屉式导航栏、侧边导航栏和导航栏等组件。

正文区域包含应用中的大部分内容。正文内容由其他分组和布局参数或窗格组成。它必须延续到导航栏区域和系统栏区域的下方。

外边距

外边距是指左侧边缘和右侧边缘的间距。外边距可以是固定的,也可以在不同大小之间进行缩放。

4. 窗口类大小

首先,将所提供模型的窗口类大小调整为中等窗口类大小。

6a028cce2636aae7.png

  1. 将“Exercise Layout 1”框架向右扩展,从紧凑型(适合手机)调整为 1440 dp 扩展型(适合平板电脑)。
  2. 在“Grid styles”(网格样式)下拉菜单中,从“Small”(小)更改为“Large”(大)(正文区域处于关闭状态)。
  3. 调整设备大小和网格后,根据需要调整正文区域的内容外边距。

ace6bd9460ea2eea.png

现在,您已经为大屏设备设置好了网格,可以开始调整布局了!接下来,我们将尝试进行缩放,看看内容在较大屏幕尺寸下应该如何做出响应。

5. 调整组合概览

注意练习布局中的内容和元素是如何调整的:流畅地扩展以适应宽度。流畅地调整大小以适应较大的屏幕可能会造成布局无法使用,例如,调整后的布局因为文本行过长导致难以阅读。

视觉分组和划归原则可以指导如何在较大的空间中重新排列元素。请注意,屏幕越大,视觉上的干扰就越多。坚持文本行长度不超过 60 个字符的原则有助于提高可读性。

4a0cd16ae24b2467.png

间距

9fb88bf49e1d4f24.png

类似的内容可以用空白空间或可见的分隔线分组在一起,从而引导用户浏览内容。隐式划归使用空白空间对内容进行分组,以形成容器边界,而显式划归使用分隔线和卡片等对象对内容进行分组。外边距是用于左右边缘的间距,其他控制间距的方法还包括:

窗格:正文区域的一个分组。

:可根据断点灵活更改数量。

列网格仍是布局的重要组成部分,可用于规范布局窗格或帮助构建初始结构。

分隔符:与边线类似,用于分隔窗格。

内边距:组件内部的较小间距。

e967a05e0e0d7c6a.png

6. 扩缩

详情布局会针对大屏幕流畅地调整大小,但调整后的布局无法充分利用更大的屏幕尺寸。我们可以在列网格上使用视觉分组,以更好地排列元素。我们已经为布局设置了列网格。

98878dd616d0e890.png

  1. 在列网格上对齐和整理内容。
  2. 为了更好地在配备更大屏幕的设备上显示内容,我们需要对内容进行缩放。调整字体比例以确保在大屏幕上提高可读性:将标题更新为“Display large”(显示大号),将说明正文更新为“24sp”,将所有其他文本更新为“Body large”(正文大号)。

4aadb3dd4ae723bd.png

  1. 在新布局中,说明图标看起来有点小,可将其缩放至 40x40dp 以适应空间。

fd63c446b5295664.png

7. 分组和划归

现在布局看起来更方便阅读,因为组合已经过缩放并与列网格对齐,但使用分组和划归将有助于充分利用屏幕尺寸。

ab43bed2661d78f1.png

  1. 将图片缩放到 6 列宽,左对齐。
  2. 将标题和养护信息分组,放在图片右侧,横跨 5 列。保持网格对齐。在标题分组下方留出 24 DP 的空间来创建隐式边界。

9e47b62ceb6126b5.png

  1. 对于说明内容,使用 60 个字符的文本行长度来确定列跨度(11 列)。左侧留出 1 列的空白空间。创建视觉容器,并为其指定 Surface 容器颜色角色。

8. 组件行为概览

组件在不同断点处的行为可能会有所不同。它们会调整其宽度、可见性,甚至切换组件。

有些组件(例如按钮)可能无法处理 12 列布局中的空间大小,因此可能需要保持一定的宽度,或者进行替换,以保持可读性和易用性。例如,无论屏幕尺寸如何,该按钮都应该固定为一定的宽度,而不是采用自适应尺寸。

自适应模式是帮助组件适应其空间的常用方法。

重新定位就是其中一种模式,在这种模式下,元素会在屏幕上重排,以充分利用额外的屏幕空间。

从垂直方向重排卡片、将 FAB 移至导航栏,或者将标签页式内容划分到一个空间都是重新定位的示例。

组件可以进行调整,换成更适合大屏幕且功能相当的组件。

在移动设备上运行良好的导航组件,在大屏幕上可能会出现人体工程学问题。

3cb0edbc2bc49636.png

规范布局

规范布局是针对所有窗口大小类通用的屏幕布局设计。Feed、列表详情和辅助窗格就是规范布局的三个例子。这些布局是各种窗口类大小的理想起点。

31a7b50c5c857d2.png

e9daf63da6cfb60f.png

a15192d717ec4683.png

9. 自适应模式

前面,我们看到组件可以流畅地扩展,以填充空间。接下来,我们将使用重新定位模式和分组,调整内容以适应更大的空间。我们将重新定位“Today”(今天)屏幕上的卡片,以充分利用水平空间。

5a724c3b068be1aa.png

  1. 将“Care tip”(养护提示)卡片移到任务和心愿单上方。
  2. 考虑如何以不同的速率垂直展开“Tasks”(任务)和“Wishlist”(心愿单),将其分别调整为 6 列和 5 列的宽度,从而更好地利用水平空间。“Wishlist”(心愿单)已直观地显示在窗格中。

4427c050974e5710.png

10. 自适应导航

这些设计使用了底部导航栏,因此在本设计 Codelab 中,我们将保留导航模式,并引入侧边导航栏。

  1. 移除底部导航栏

433a14ea650a016f.png

  1. 在“Assets”(资产)面板中找到“Navigation Rail”(侧边导航栏)组件,并将其拖放到导航栏空间中。
  2. 更新标签和图标,使其与底部导航栏相匹配。
  3. 设置样式,使其与布局的其他部分相匹配。

31f6fa768e3b53b7.png

11. 规范布局 Feed

目前,布局流畅地显示了一个列表,但我们有足够的水平屏幕空间来使用更有趣的 Feed 规范布局。

ce5a0159b3fe2e81.png

  1. 导航栏和顶栏已调整为中等大小,因此我们可以将重点放在正文内容上。Feed 布局使用网格组合。将列表项更新为堆叠卡片
  2. Feed 中的卡片不必整齐划一。可以让第一张卡片充当精选卡片,跨越 11 列;其余卡片则收缩为 5 列,间距为 24 dp。(使用自动布局换行会有所帮助)

886ffd25e52d6706.png

12. 规范列表/详情

布局已针对配备更大屏幕的设备进行了调整,因此每当显示较大屏幕布局时,都会有空间显示其中一种植物的详情视图。

c204c5e94c7e9c02.png

  1. 创建一个用于显示详情的窗格。在外边距内,创建一个 5 列容器。将其设置为 surface container(Surface 容器)或更高版本。
  2. 将上述缩放练习中的蔓藤植物内容复制到窗格中。向窗格添加 16 dp 的内边距。
  3. 将植物标题更新为“display small”(显示小号),将其余内容更新为 body medium or large(正文中号或大号)。
  4. 内容可以垂直移动,主打照片则会水平填充空间。

ec0f6c34d771ad13.png

13. 恭喜

太棒了,您已成功运用 Material Design 自适应原则将面向小屏设备的设计扩展为适合大屏设备的设计。

如果您有任何疑问,请随时通过 Twitter 上的 @MaterialDesign 向我们咨询。

敬请关注 youtube.com/MaterialDesign,了解更多设计内容和教程