Навигация

Попробуйте способ создания композиций.
Jetpack Compose на Wear OS — это рекомендуемый набор инструментов для создания пользовательского интерфейса для Wear OS.

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

Дизайн

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

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

Рисунок 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 , который будет отображать фрагменты друг поверх друга.