Навигация 3

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

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

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

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

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

Улучшения навигации реактивного ранца

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

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

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

Примеры кода

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