在为每个用户旅程设计单独的屏幕后,您可能会有几个垂直或单个屏幕。接下来,您必须决定如何设计这些屏幕以协同工作以及如何实现导航。
设计
保持应用的层次结构浅且线性,如 应用设计指南 中所述。
首先,您的应用启动器应打开最常见的用户旅程。为每个用户旅程设计最重要的内容,将其放在顶部。对于垂直容器,使用底部链接到其他不太常用的用户旅程和设置。
当用户进入您的某个屏幕时,请确保他们可以使用滑动以关闭手势在 后退栈 中向下导航。
实现导航
在实现导航时,您有三个选项,如下节所述
- 仅使用活动,这是推荐的方法
- 活动和片段
- 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
作为其根节点,并手动使用关闭操作在导航图中返回。 - 实现一个自定义的
FragmentNavigator
,该导航器将片段渲染在彼此之上。