Navigation 3 — это новая навигационная библиотека, разработанная для работы с Compose. С Navigation 3 вы получаете полный контроль над стеком переходов, а навигация к пунктам назначения и обратно так же проста, как добавление и удаление элементов из списка. Она создает гибкую систему навигации в приложении, предоставляя:
- Соглашения для моделирования стека переходов назад, где каждая запись в стеке переходов представляет собой контент, к которому перешел пользователь
- Пользовательский интерфейс, который автоматически обновляется при изменении стека переходов (включая анимацию)
- Область действия для элементов в стеке переходов назад, позволяющая сохранять состояние, пока элемент находится в стеке переходов назад.
- Адаптивная система макетов, которая позволяет отображать несколько пунктов назначения одновременно и обеспечивает плавное переключение между этими макетами.
- Механизм взаимодействия контента с родительским макетом (метаданные)
На высоком уровне Навигация 3 реализуется следующими способами:
- Определите контент, к которому пользователи могут переходить в вашем приложении, каждый с уникальным ключом, и добавьте функцию для сопоставления этого ключа с контентом. См. раздел Сопоставление ключей с контентом .
- Создайте стек клавиш, на который будут нажиматься и убираться клавиши при навигации пользователей по приложению. См. раздел Создание стека клавиш .
- Используйте
NavDisplayдля отображения стека переходов вашего приложения. При изменении стека переходов пользовательский интерфейс обновляется для отображения соответствующего контента. См. раздел Отображение стека переходов . - Измените стратегии сцены
NavDisplayпо мере необходимости для поддержки адаптивных макетов и различных платформ.
Полный исходный код Navigation 3 можно увидеть на AOSP.
Улучшения навигации реактивного ранца
Navigation 3 улучшает оригинальный API навигации Jetpack следующим образом:
- Обеспечивает более простую интеграцию с Compose
- Предоставляет вам полный контроль над стеком
- Позволяет создавать макеты, которые могут считывать более одного адреса назначения из стека одновременно, что позволяет им адаптироваться к изменениям размера окна и другим входным данным.
Подробнее о принципах Navigation 3 и вариантах дизайна API читайте в этой записи блога .
Примеры кода
Репозиторий рецептов содержит примеры того, как использовать строительные блоки Navigation 3 для решения распространенных задач навигации.