widget 是自定义主屏幕的一个重要方面。您可以将它们视为可通过用户的主屏幕访问的应用最重要的数据和功能的“一目了然”视图。用户可以在其主屏幕面板之间移动 widget;如果支持,还可以调整 widget 的大小,以根据他们的偏好定制 widget 中的信息量。
本文档介绍了您可以创建的不同类型的 widget 以及要遵循的设计原则。如需使用 Remove View API 和 XML 布局构建应用 widget,请参阅创建简单的 widget。如需使用 Kotlin 和 Compose 样式 API 构建 widget,请参阅 Jetpack Glance。
微件类型
在规划 widget 时,请考虑要构建哪种类型的 widget。微件通常属于以下类别之一:
信息微件
![天气 widget 示例,显示东京以多云为主,14 度,并且预测温度从下午 4 点开始到晚上 7 点](https://developer.android.google.cn/static/images/appwidgets/weather-size-5x2.png?hl=sl)
信息 widget 通常显示关键信息元素,并跟踪该信息随时间变化的情况。信息 widget 的示例包括天气 widget、时钟 widget 或体育赛事比分跟踪 widget。点按信息 widget 通常会启动关联的应用,并打开 widget 信息的详细视图。
集合微件
集合 widget 专门用于显示同一类型的多个元素,例如来自图库应用中的一组图片、来自新闻应用的一系列报道,或者来自通信应用的一系列电子邮件或消息。集合 widget 可以垂直滚动。
集合 widget 通常侧重于以下用例:
- 浏览集合。
- 在关联的应用中,打开集合中的某个元素并进入其详情视图。
- 在 Android 12(API 级别 31)中支持复合按钮,以便与元素互动,例如将它们标记为已完成。
控制微件
![一个名为“灯具列表”的微件,显示标记为“卧室”“厨房”和“客厅”的切换开关,前两个切换开关处于关闭状态](https://developer.android.google.cn/static/images/appwidgets/light-list.png?hl=sl)
控制 widget 的主要用途是显示常用功能,以便用户无需打开应用即可从主屏幕触发这些功能。您可以将它们视为应用的遥控器。控制 widget 的一个示例是家居控制 widget,可让用户打开或关闭家里的灯。
与控制 widget 交互可能会在应用中打开关联的详情视图。这取决于控制 widget 的函数是否输出任何数据,例如在搜索 widget 的情况下。
混合微件
![显示“不喜欢”“后退”“播放/暂停”“前进”和“我喜欢”按钮的常规音乐应用。音乐人和曲目会分别列为“音乐人”和“示例音乐”。](https://developer.android.google.cn/static/images/appwidgets/music.png?hl=sl)
虽然某些 widget 表示前几部分中所述的类型之一(信息、集合或控制),但许多 widget 都是将不同类型的元素组合在一起的混合 widget。例如,音乐播放器 widget 主要是一个控制 widget,但也会向用户显示当前正在播放的曲目,比如信息 widget。
在规划 widget 时,请围绕一种基本类型进行设计,并根据需要添加其他类型的元素。
将 widget 与 Google 助理集成
Google 助理可以针对用户语音指令显示任何类型的 widget。您可以配置 widget 来执行与应用有关的 Action,让用户能够在 Android 和 Android Auto 等 Google 助理平台上快速获得解答和交互式应用体验。如需详细了解 Google 助理的 widget 执行方式,请参阅将与应用有关的 Action 与 Android widget 集成。
微件限制
虽然 widget 可以理解为“迷你应用”,但在设计 widget 之前,了解一些限制很重要。
手势
由于 widget 位于主屏幕上,因此它们必须与在主屏幕上建立的导航共存。与全屏应用相比,这限制了 widget 中提供的手势支持。虽然应用可能会允许用户在屏幕之间水平导航,但该手势已在主屏幕上执行,用于在主屏幕之间进行导航。
而只支持触摸和垂直滑动手势。
元素
鉴于可用于 widget 的手势存在限制,某些依赖于受限手势的界面构建块不适用于 widget。如需查看受支持构建块的完整列表,以及详细了解布局限制,请参阅创建 widget 布局和提供灵活的 widget 布局。
设计准则
微件内容
widget 是通过“宣传”您的应用中提供的新鲜有趣内容来吸引用户使用您的应用的好方法。
就像报纸头版上的宣传语一样,widget 可整合和浓缩应用的信息,并提供与应用中更丰富细节的连接。您可以说 widget 是信息“零食”,而应用则是“餐饮”。确保应用显示的信息项详细信息比 widget 显示的详细信息更多。
微件导航
除了纯粹的信息内容之外,不妨考虑让 widget 提供指向应用中常用区域的导航链接。这样可以让用户更快地完成任务,并将应用的功能范围扩展到主屏幕。
微件上导航链接的合适候选对象包括:
生成函数:此类函数可让用户为应用创建新内容,如创建新文档或新消息。
打开顶层应用:点按信息元素通常会将用户转到较低级别的详情屏幕。提供对应用顶层的访问权限可以提高导航灵活性,并且可以替换用户用于从主屏幕导航到应用的专用应用快捷方式。如果显示的数据不明确,使用适用于此功能的应用图标也可以为您的 widget 提供清晰的标识。
微件大小调整
![标准 Google 时钟微件](https://developer.android.google.cn/static/images/appwidgets/clock.png?hl=sl)
轻触并按住某个可调整大小的 widget,然后将其释放,可使该 widget 进入调整大小模式。用户可以使用拖动手柄或 widget 角来设置其首选大小。
借助大小调整功能,用户可以在主屏幕放置网格的限制范围内调整 widget 的高度和宽度。您可以决定 widget 是可自由调整大小,还是受水平或垂直大小变化约束。如果 widget 本身的大小是固定的,则无需支持大小调整。
允许用户调整 widget 的大小有以下重要好处:
- 他们可以微调要在每个微件上看到多少信息。
- 他们可以更好地影响主屏幕上的 widget 和快捷方式的布局。
根据您要创建的 widget 类型规划 widget 的大小调整策略。基于列表或网格的集合 widget 通常比较简单,因为调整 widget 的大小会扩展或收缩垂直滚动区域。无论 widget 的大小如何,用户仍然可以将所有信息元素滚动到视图中。
信息 widget 需要进行更多的实操规划,因为它们不可滚动,并且所有内容都必须适合给定的大小。您必须将 widget 的内容和布局动态调整为用户通过调整大小操作定义的尺寸。
在以下示例中,用户可以分三个步骤调整天气 widget 的大小,随着 widget 的扩大,显示关于当前位置更丰富的天气信息。
![最小 3x2 网格大小的天气 widget 示例,其中列出了位置名称(东京)、温度 (14°) 和表示局部多云的符号](https://developer.android.google.cn/static/images/appwidgets/weather-size-3x2.png?hl=sl)
![5x2“中”尺寸的天气 widget 示例,包括所有采用 3x2 网格大小的界面以及“大部分多云”标签,并预测下午 4 点到晚上 7 点的气温](https://developer.android.google.cn/static/images/appwidgets/weather-size-5x2.png?hl=sl)
![尺寸为 5x4“大”的天气 widget 示例,包括尺寸为 3x2 和 5x2 的所有界面以及周二到周五的天气预报](https://developer.android.google.cn/static/images/appwidgets/weather-size-5x4.png?hl=sl)
对于每个 widget 大小,确定显示多少应用信息。对于较小的应用,应重点显示基本信息,然后随着 widget 在水平和垂直方向上扩展而添加上下文信息。
布局注意事项
我们很想根据您在开发时所用设备的放置网格的尺寸来布置 widget。这可能是一个有用的初始近似值,但请记住以下几点:
- 如果跨“大小范围”而不是可变网格尺寸规划 widget 大小调整策略,则可以获得最可靠的结果。
- 单元格的数量、大小和间距可能因设备而异。因此,务必要让 widget 具有灵活性,并能容纳比预期更多或更少的空间。
- 当用户调整 widget 的大小时,系统会以 dp 大小范围作为响应,在该范围内,widget 可以自行重新绘制。
- 从 Android 12 开始,您可以提供更精细的尺寸属性和更灵活的布局。其中包括:
- 指定 widget 大小限制。例如,您可以指定 widget 的目标大小(以网格单元格为单位)以及可能的最大大小。
- 提供响应式布局,该布局会根据 widget 的大小而发生变化。
- 提供精确尺寸的布局,使启动器能够响应针对纵向和横向模式、针对手机或针对可折叠设备的四种尺寸选项。
- 使用更新后的指南和新的 API 确定适合 widget 的尺寸。
用户的微件配置
有时,用户需要先设置 widget,然后才能使其变得有用。例如,用户需要选择邮件文件夹才能显示收件箱,或者考虑静态照片 widget,用户必须先从库中分配要显示的图片。当用户将 Android widget 拖放到主屏幕上时,系统会立即显示其配置选项。
widget 设计核对清单
- 在微件上重点显示小部分一目了然的信息。展开您应用中的信息。
- 根据用途选择合适的微件类型。
- 规划微件的内容如何适应不同的大小。
- 通过确保布局可以拉伸和收缩,使 widget 布局独立于屏幕方向和设备。
- 考虑 widget 是否需要任何其他配置。