导航

在为每个用户旅程设计各个屏幕后,您可能会有几个垂直屏幕或单个屏幕。接下来,您必须决定如何设计这些屏幕以协同工作以及如何实施导航。

设计

根据 应用程序设计指南 中的说明,保持应用程序的层次结构浅而线性。

首先,您的应用程序启动器应打开最常见的用户旅程。使用最主要的内容设计每个用户旅程,并将其放在顶部。对于垂直容器,使用底部链接到其他不太常见的用户旅程和设置。

图 1. 将最主要的内容放在垂直容器的顶部。

当用户进入您的某个屏幕时,请确保他们可以使用滑动以关闭手势来导航回 后退堆栈

实施导航

实施导航时,您有三个选项,在以下部分中描述

  • 仅活动,这是推荐的方法
  • 活动和片段
  • Jetpack Navigation

仅活动

由于垂直屏幕通常只有一层深,因此您可以使用活动来实施所有屏幕,而无需使用片段。

我们强烈建议使用这种方法。它简化了您的代码,并且活动自动支持 滑动以关闭。这也使实施 环境模式 变得更加简单。

注意:如果您不使用片段,请使您的活动继承自 ComponentActivity。其他活动类型使用您在 Wear OS 中不需要的移动特定 UI 元素。

活动和片段

您可以在 Wear OS 应用程序中将 片段 与活动一起使用。但是,我们不推荐这样做,因为在使用片段创建浅而平坦的架构方面没有明显的优势。

注意:如果您使用片段,请使它们继承自 FragmentActivity。其他活动类型使用您在 Wear OS 中不需要的移动特定 UI 元素。

在 Wear OS 应用程序中使用片段的一些困难包括以下内容

  • 您必须自己实施滑动以关闭功能。否则,当用户执行滑动操作时,他们将退出整个应用程序。
  • 如果您使用的是 AmbientMode,则必须对其进行自定义以使其正常工作。 AmbientMode 设置在活动上,因此在实施片段时必须考虑这一点。

要支持带有片段的滑动以关闭功能,您必须将包含片段的视图包装在 SwipeDismissFrameLayout 类中。有关更多信息,请参阅 滑动以关闭手势。这样做可以为用户提供与您的应用程序一致的体验。

注意:使用片段时,使用 FragmentManager.add 而不是 FragmentManager.replace 来支持滑动以关闭手势。这有助于确保在将上一个片段滑动掉时,它会渲染在顶部片段的下方。

Jetpack Navigation

Jetpack Navigation 可以在 Wear OS 上运行,但它与片段具有相同的缺点。它增加了开发工作,并且由于 Wear OS 应用程序的层次结构通常是浅而线性的,因此它没有提供太多优势。最佳方法是仅使用活动。

要充分利用 Jetpack Navigation,请执行以下操作

  • 确保每个片段都使用SwipeDismissFrameLayout作为根节点,并手动使用dismiss操作在导航图中返回。
  • 实现一个自定义的FragmentNavigator,它将片段渲染在彼此之上。