Навигация 3

Navigation 3 — это новая навигационная библиотека, разработанная для работы с Compose. С Navigation 3 вы получаете полный контроль над своим стеком переходов, а навигация к пунктам назначения и от них так же проста, как добавление и удаление элементов из списка. Она создает гибкую систему навигации приложений, предоставляя:

  • Соглашения для моделирования стека переходов назад, где каждая запись в стеке переходов представляет собой контент, к которому перешел пользователь
  • Пользовательский интерфейс, который автоматически обновляется при изменении стека переходов (включая анимацию)
  • Область действия для элементов в стеке переходов назад, позволяющая сохранять состояние, пока элемент находится в стеке переходов назад.
  • Адаптивная система макетов, которая позволяет отображать несколько пунктов назначения одновременно и обеспечивает плавное переключение между этими макетами.
  • Механизм взаимодействия контента с родительским макетом (метаданные)

На высоком уровне вы реализуете Навигацию 3 следующими способами:

  1. Определите контент, к которому пользователи могут перейти в вашем приложении, каждый с уникальным ключом, и добавьте функцию для разрешения этого ключа к контенту. См. Разрешение ключей к контенту .
  2. Создайте стек назад, на который нажимаются и удаляются клавиши, когда пользователи перемещаются по вашему приложению. См. Создание стека назад .
  3. Используйте NavDisplay для отображения back stack вашего приложения. Всякий раз, когда back stack изменяется, он обновляет пользовательский интерфейс для отображения соответствующего контента. См. Отображение back stack .
  4. При необходимости измените стратегии сцены NavDisplay для поддержки адаптивных макетов и различных платформ.

Полный исходный код Navigation 3 можно увидеть на AOSP.

Улучшения навигации Jetpack

Navigation 3 улучшает оригинальный API навигации Jetpack следующим образом:

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

Подробнее о принципах Navigation 3 и вариантах дизайна API читайте в этой записи блога .

Примеры кода

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