Навигация 3

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

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

В общих чертах реализация Navigation 3 выглядит следующим образом:

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

Полный исходный код Navigation 3 доступен в AOSP.

Улучшения Jetpack Navigation

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

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

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

Образцы кода

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