После разработки отдельных экранов для каждого пользовательского сценария у вас может получиться несколько вертикальных или одинарных экранов. Далее вам нужно решить, как спроектировать эти экраны, чтобы они взаимодействовали друг с другом, и как реализовать навигацию.
Дизайн
В соответствии с рекомендациями по дизайну приложений , иерархия вашего приложения должна быть неглубокой и линейной.
Для начала, панель запуска вашего приложения должна открывать наиболее распространенный сценарий взаимодействия пользователя с приложением. Разработайте каждый сценарий таким образом, чтобы наиболее важный контент располагался вверху. Для вертикальных контейнеров используйте нижнюю часть для ссылок на другие, менее распространенные сценарии взаимодействия пользователя и настройки.

Рисунок 1. Размещайте наиболее важное содержимое в верхней части вертикальных контейнеров.
Когда пользователи попадают на один из ваших экранов, убедитесь, что они могут использовать жест "провести пальцем для закрытия", чтобы перейти к предыдущему экрану .
Реализуйте навигацию.
При реализации навигации у вас есть три варианта, описанные в следующих разделах:
- Рекомендуется использовать только мероприятия.
- Действия и фрагменты
- Навигация с помощью реактивного ранца
Только мероприятия
Поскольку вертикальные экраны обычно имеют один уровень вложенности, вы можете реализовать все свои экраны с помощью активностей (activity) и без использования фрагментов (fragments).
Мы настоятельно рекомендуем этот подход. Он упрощает ваш код, а действия автоматически поддерживают закрытие с помощью свайпа . Это также упрощает реализацию режима ожидания .
Примечание: Если вы не используете фрагменты, ваши активности должны наследовать свойства от ComponentActivity . Другие типы активностей используют элементы пользовательского интерфейса, специфичные для мобильных устройств, которые вам не нужны для Wear OS.
Действия и фрагменты
В приложении для Wear OS можно использовать фрагменты с активностями. Однако мы не рекомендуем этого делать, поскольку использование фрагментов для создания плоской и неглубокой архитектуры не дает явных преимуществ.
Примечание: Если вы используете фрагменты, сделайте так, чтобы они наследовали класс FragmentActivity . Другие типы активностей используют элементы пользовательского интерфейса, специфичные для мобильных устройств, которые вам не нужны для Wear OS.
К числу трудностей, возникающих при использовании фрагментов в приложениях для Wear OS, относятся следующие:
- Функцию закрытия приложения с помощью свайпа вам необходимо реализовать самостоятельно. В противном случае, при выполнении свайпа пользователь закроет всё приложение.
- Если вы используете
AmbientMode, вам необходимо настроить его для корректной работы.AmbientModeустанавливается для активности, поэтому вам нужно учитывать это при реализации фрагментов.
Для поддержки жеста закрытия фрагментов с помощью свайпа необходимо обернуть содержащий фрагмент элемент в класс SwipeDismissFrameLayout . Дополнительную информацию см. в разделе «Жест закрытия с помощью свайпа» . Это обеспечит пользователям единообразный пользовательский опыт работы с вашим приложением.
Примечание: При использовании фрагментов используйте FragmentManager.add вместо FragmentManager.replace , чтобы поддерживать жест закрытия свайпом. Это гарантирует, что предыдущий фрагмент будет отображаться под верхним фрагментом, пока его свайпят.
Навигация с помощью реактивного ранца
Jetpack Navigation может работать на Wear OS, но имеет те же недостатки, что и фрагменты. Он увеличивает объем работы по разработке, и, поскольку иерархия приложений Wear OS, как правило, неглубокая и линейная, он не предлагает много преимуществ. Лучше всего использовать подход, основанный только на действиях.
Чтобы в полной мере использовать возможности Jetpack Navigation, выполните следующие действия:
- Убедитесь, что каждый фрагмент использует
SwipeDismissFrameLayoutв качестве своего корневого элемента, и вручную используйте действие «Закрыть», чтобы вернуться назад в навигационном графе. - Реализуйте собственный
FragmentNavigator, который будет отображать фрагменты друг поверх друга.
