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