Найти тему
Meed Light

Что такое компонент Navigation набора инструментов Android Jetpack

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

1. Принципы навигации

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

2. Фиксированный пункт назначения

Любое разрабатываемое приложение должно иметь фиксированный начальный пункт назначения. Таким пунктом является первый экран. Его видит пользователь при запуске приложения. Этот же экран будет и последним пунктом назначения, когда пользователь нажмет кнопку «Назад» для возвращения к панели запуска.

Для примера возьмем приложение Sunflower.

-2

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

Когда пользователь запускает приложение впервые, на устройстве создается задача (task) и появляется стартовый пункт назначения. Это будет базовый пункт стека перехода назад, так называемый бэкстек (back stack).

Бэкстек будет являться основой навигации приложения. Вершиной стека является тот экран, который пользователь видит в текущий момент. А все предыдущие стеки будут представлять историю посещения.

При запуске нового экрана изменяется бэкстек, а каждый новый пункт назначения окажется на вершине стека. Компонент Navigation управляет всеми вашими бэкстеками

Рисунок 2: Кнопки «вверх» и «назад»

Кнопка «Назад» находится внизу экрана устройства. Она предназначена для обратной хронологической навигации по истории Экранов, которые пользователь открывал. При нажатии кнопки «Назад», текущая сессия уходит и появляется предыдущий пункт назначения.

Кнопка «Вверх» будет видна в верхней части экрана и никогда не выходит из приложения.

Если вы запускаете приложение, используя Deep Links для запуска другого приложения, кнопка «Вверх» перенаправит на задачу другого приложения.

Глубокие ссылки Deep Links имитируют ручную навигацию. Не важно, будет ли это Deep Links или ручная навигация, можно использовать кнопку «Вверх» для перенаправления к предыдущей задаче.

Вернемся для примера к нашему приложению Sunflower. Допустим, пользователь уже запустил приложение и экран детализации яблока. На рисунке видно, что экран детализации является верхним из списка задач.

-3

Рисунок 3: Пользовательская навигация по приложению Sunflower и получающемуся бэкстеку.

В данной ситуации пользователь может нажать кнопку «Домой», тем самым переведет приложение в фоновый режим.

Предположим, что у данного приложения есть функция глубоких ссылок, позволяющая переходить из поиска определенного растения напрямую на экран с описанием. Открытие приложения через эту глубокую ссылку полностью заменяет текущий бэкстек Sunflower, показанный на рисунке 3, новым бэкстеком, как показано на рисунке 4:

Рисунок 4:

-4

Компонент Navigation поддерживает Deep Links и воссоздает реалистичный бэкстек.

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