Навигация

Навигация относится к взаимодействиям, которые позволяют пользователям перемещаться по различным частям контента вашего приложения, входить в них и выходить из них.

Компонент навигации Android Jetpack включает библиотеку навигации , подключаемый модуль Safe Args Gradle и инструменты, которые помогут реализовать навигацию в приложении. Компонент «Навигация» обрабатывает разнообразные варианты использования навигации: от простых нажатий кнопок до более сложных шаблонов, таких как панели приложений и панель навигации.

Ключевые понятия

В следующей таблице представлен обзор ключевых концепций навигации и основных типов, которые вы используете для их реализации.

Концепция

Цель

Тип

Хозяин

Элемент пользовательского интерфейса, содержащий текущий пункт назначения навигации. То есть, когда пользователь перемещается по приложению, приложение по существу меняет места назначения на хост навигации и обратно.

График

Структура данных, которая определяет все пункты назначения навигации в приложении и то, как они соединяются друг с другом.

NavGraph

Контроллер

Центральный координатор управления навигацией между пунктами назначения. Контроллер предлагает методы навигации между пунктами назначения, обработки глубоких ссылок, управления обратным стеком и многого другого.

NavController

Место назначения

Узел в графе навигации. Когда пользователь переходит к этому узлу, хост отображает его содержимое.

NavDestination

Обычно создается при построении графа навигации.

Маршрут

Уникально идентифицирует пункт назначения и все необходимые для него данные.

Вы можете перемещаться по маршрутам. Маршруты доставят вас к местам назначения.

Любой сериализуемый тип данных.

Преимущества и особенности

Компонент «Навигация» предоставляет ряд других преимуществ и функций, в том числе следующие:

  • Анимации и переходы: предоставляет стандартизированные ресурсы для анимации и переходов.
  • Глубокие ссылки: реализуют и обрабатывают глубокие ссылки, которые направляют пользователя непосредственно к месту назначения.
  • Шаблоны пользовательского интерфейса: поддерживает такие шаблоны, как панели навигации и нижняя навигация, с минимальной дополнительной работой.
  • Безопасность типов: включает поддержку передачи данных между пунктами назначения с безопасностью типов .
  • Поддержка ViewModel: позволяет ограничить ViewModel навигационным графом для обмена данными, связанными с пользовательским интерфейсом, между пунктами назначения графа.
  • Транзакции фрагментов: полностью поддерживает и обрабатывает транзакции фрагментов.
  • Назад и вверх: по умолчанию корректно обрабатываются действия назад и вверх.

Настройте свою среду

Чтобы включить поддержку навигации в свой проект, добавьте следующие зависимости в файл build.gradle вашего приложения:

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.8"

  // 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"
}
plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.8"

  // 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 и другими платформами пользовательского интерфейса, см. в следующих руководствах:

Кодлабы

Видео

Образцы

Mir 2: Return of the King 是 Actoz Soft 授权的优质《传奇》IP 移动游戏,由 HK ZHILI YAOAN LIMITED 使用 Unity 游戏引擎开发。 这款游戏不仅完美再现了韩国奇幻类 MMORPG 的代表作 Mir 2 的游戏氛围,还提供了许多最受欢迎的游戏内容,例如装备收集、大规模沙漠攻击和其他核心玩法。 该游戏使用了 Android Frame Pacing 库 (Swappy) 来提高帧速率的稳定性、实现流畅的渲染,并显著提升了 Android

鸣潮 是一款由 Kuro Games 开发的高保真动作角色扮演游戏。为了持续为长时间的游戏会话提供卓越的用户体验,优化功耗非常重要。 Android Studio 从 Hedgehog (2023.1.1) 开始引入了 功耗性能分析器 ,可帮助开发者根据设备端电源轨监视器 (ODPM) 了解功耗数据。 借助 Android Studio 中的功耗性能分析功能,您还可以 有效地对 Android 应用功能的功耗进行 A/B 测试 (如下所示)。 Kuro Games 首先使用 Android

Godot Engine 是一个广受欢迎的多平台开源游戏引擎,对 Android 提供强大的支持。Godot 可用于制作几乎任何类型的游戏,并且支持 2D 和 3D 图形。Godot 4 版引入了新的渲染系统,该系统具有用于高保真图形的高级功能。Godot 4 渲染程序专为 Vulkan 等现代图形 API 而设计。 Godot Foundation 聘请了 The Forge Interactive 的图形优化专家,并与 Google 合作分析和进一步改进了 Godot 4 Vulkan