Навигация относится к взаимодействиям, которые позволяют пользователям перемещаться по различным частям контента вашего приложения, входить в них и выходить из них.
Компонент навигации Android Jetpack включает библиотеку навигации , подключаемый модуль Safe Args Gradle и инструменты, которые помогут реализовать навигацию в приложении. Компонент «Навигация» обрабатывает разнообразные варианты использования навигации: от простых нажатий кнопок до более сложных шаблонов, таких как панели приложений и панель навигации.
Ключевые понятия
В следующей таблице представлен обзор ключевых концепций навигации и основных типов, которые вы используете для их реализации.
Концепция | Цель | Тип |
---|---|---|
Хозяин | Элемент пользовательского интерфейса, содержащий текущий пункт назначения навигации. То есть, когда пользователь перемещается по приложению, приложение по существу меняет места назначения на хост навигации и обратно. |
|
График | Структура данных, которая определяет все пункты назначения навигации в приложении и то, как они соединяются друг с другом. | |
Контроллер | Центральный координатор управления навигацией между пунктами назначения. Контроллер предлагает методы навигации между пунктами назначения, обработки глубоких ссылок, управления обратным стеком и многого другого. | |
Место назначения | Узел в графе навигации. Когда пользователь переходит к этому узлу, хост отображает его содержимое. | Обычно создается при построении графа навигации. |
Маршрут | Уникально идентифицирует пункт назначения и все необходимые для него данные. Вы можете перемещаться по маршрутам. Маршруты доставят вас к местам назначения. | Любой сериализуемый тип данных. |
Преимущества и особенности
Компонент «Навигация» предоставляет ряд других преимуществ и функций, в том числе следующие:
- Анимации и переходы: предоставляет стандартизированные ресурсы для анимации и переходов.
- Глубокие ссылки: реализуют и обрабатывают глубокие ссылки, которые направляют пользователя непосредственно к месту назначения.
- Шаблоны пользовательского интерфейса: поддерживает такие шаблоны, как панели навигации и нижняя навигация, с минимальной дополнительной работой.
- Безопасность типов: включает поддержку передачи данных между пунктами назначения с безопасностью типов .
- Поддержка ViewModel: позволяет ограничить
ViewModel
навигационным графом для обмена данными, связанными с пользовательским интерфейсом, между пунктами назначения графа. - Транзакции фрагментов: полностью поддерживает и обрабатывает транзакции фрагментов.
- Назад и вверх: по умолчанию корректно обрабатываются действия назад и вверх.
Настройте свою среду
Чтобы включить поддержку навигации в свой проект, добавьте следующие зависимости в файл build.gradle
вашего приложения:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.5" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.5" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Информацию о добавлении других компонентов архитектуры в проект см. в разделе Добавление компонентов в проект .
Следующие шаги
Дополнительную документацию и ресурсы, связанные с компонентом навигации, см. в следующих ресурсах.
Подробные руководства
Дополнительные сведения о том, как реализовать навигационный узел и NavController
, а также подробности о том, как они взаимодействуют с Compose и другими платформами пользовательского интерфейса, см. в следующих руководствах:
- Создание контроллера навигации : описывает, как создать
NavController
. - Создайте граф навигации . Подробно о том, как создать хост навигации и граф навигации.
- Навигация к пункту назначения : демонстрирует, как использовать
NavController
для перемещения между пунктами назначения на графике.
Кодлабы
- Изучите навигацию на реактивном ранце
- Фрагменты и компонент навигации
- Создайте адаптивное приложение с динамической навигацией.
Видео
- Навигационная навигация
- 10 лучших практик перехода к одному виду деятельности
- Отдельное мероприятие: почему, когда и как (Android Dev Summit '18)
- Android Jetpack: управление навигацией пользовательского интерфейса с помощью навигационного контроллера (Google I/O '18)