Навигация между различными экранами и приложениями является основной частью пользовательского опыта. Следующие принципы задают основу для единообразного и интуитивно понятного взаимодействия с пользователем во всех приложениях. Компонент «Навигация» предназначен для реализации этих принципов по умолчанию, гарантируя, что пользователи могут применять одни и те же эвристики и шаблоны в навигации при переходе между приложениями.
Фиксированный пункт назначения
Каждое приложение, которое вы создаете, имеет фиксированный начальный пункт назначения. Это первый экран, который видит пользователь, когда запускает ваше приложение из панели запуска. Этот пункт назначения также является последним экраном, который пользователь видит, когда возвращается в программу запуска после нажатия кнопки «Назад». Давайте рассмотрим в качестве примера приложение Sunflower .
Рисунок 1. Экран списка — это начальная точка приложения Sunflower.
При запуске приложения «Подсолнух» из панели запуска первым экраном, который видит пользователь, является «Экран списка» , список растений в его саду. Это также последний экран, который они видят перед выходом из приложения. Если они нажмут кнопку «Назад» на экране списка, они вернутся к панели запуска.
Состояние навигации представлено в виде стека пунктов назначения.
При первом запуске вашего приложения для пользователя создается новая задача , и приложение отображает начальный пункт назначения. Это становится базовым пунктом назначения так называемого обратного стека и основой состояния навигации вашего приложения. Верхняя часть стека – это текущий экран, а предыдущие пункты назначения в стеке представляют собой историю того, где вы были. В заднем стеке всегда находится начальный пункт назначения приложения в нижней части стека.
Операции, изменяющие задний стек, всегда выполняются на вершине стека, либо помещая новый пункт назначения на вершину стека, либо удаляя самый верхний пункт назначения из стека. Навигация к пункту назначения помещает этот пункт назначения на вершину стека.
Компонент навигации управляет всем порядком стопки за вас, хотя вы также можете управлять стопкой самостоятельно.
Вверх и Назад идентичны в рамках задачи вашего приложения.
Рисунок 2. Кнопки «Вверх» и «Назад».
Кнопка «Назад» появляется на панели навигации системы в нижней части экрана и используется для навигации в обратном хронологическом порядке по истории экранов, с которыми пользователь недавно работал. Когда вы нажимаете кнопку «Назад», текущий пункт назначения выдвигается из верхней части задней стопки, и вы затем переходите к предыдущему пункту назначения.
Кнопка «Вверх» появится на панели приложений в верхней части экрана. В задаче вашего приложения кнопки «Вверх» и «Назад» ведут себя одинаково.
Кнопка «Вверх» никогда не выходит из вашего приложения.
Если пользователь находится в начальной точке приложения, кнопка «Вверх» не отображается, поскольку кнопка «Вверх» никогда не выходит из приложения. Однако кнопка «Назад» отображается и выходит из приложения.
Когда ваше приложение запускается с использованием глубокой ссылки на задачу другого приложения, Up переводит пользователей обратно к задаче вашего приложения и через моделируемый обратный стек , а не к приложению, которое активировало глубокую ссылку. Однако кнопка «Назад» возвращает вас в другое приложение.
Глубокие ссылки имитируют ручную навигацию.
Независимо от того, используете ли вы глубокую ссылку или вручную переходите к определенному пункту назначения, вы можете использовать кнопку «Вверх» для перехода по пунктам назначения обратно к начальному пункту назначения.
При глубокой ссылке на место назначения в задаче вашего приложения любой существующий обратный стек для задачи вашего приложения удаляется и заменяется обратным стеком с глубокой связью.
Снова используя приложение «Подсолнух» в качестве примера, предположим, что пользователь ранее запустил приложение с экрана запуска и перешел на экран сведений о яблоке. Просмотр экрана «Недавние» указывает на то, что существует задача, причем самый верхний экран является экраном подробностей для Apple.
Рисунок 3. Навигация пользователя по приложению Sunflower и полученный стек.
На этом этапе пользователь может нажать кнопку «Домой», чтобы перевести приложение в фоновый режим. Далее, предположим, что это приложение имеет функцию глубоких ссылок, которая позволяет пользователям напрямую переходить на экран сведений о конкретном заводе по имени. Открытие приложения по этой глубокой ссылке полностью заменяет текущий задний стек Sunflower, показанный на рисунке 3, на новый задний стек, как показано на рисунке 4:
Рисунок 4. Переход по глубокой ссылке заменяет существующий задний стек для приложения Sunflower.
Обратите внимание, что задняя стопка «Подсолнух» заменена синтетической задней стопкой с экраном с изображением авокадо вверху. Экран «Мой сад» , который является начальной точкой, также был добавлен в задний стек. Исходный стек Sunflower исчез, включая информацию приложения о том, что пользователь раньше находился на экране сведений об Apple. Все это важно, потому что синтетический задний стек должен быть реалистичным. Он должен соответствовать заднему стеку, которого можно было бы достичь за счет органичной навигации по приложению.
Чтобы удовлетворить эту потребность, создается упрощенный синтетический бэк-стек, основанный на NavGraph
. Для простого NavGraph
без вложенности он будет состоять из начального пункта назначения и места назначения глубокой ссылки. Для более сложных вложенных навигационных графов синтетический обратный стек также будет содержать начальные пункты назначения всех вложенных графов, которые являются предками назначения глубокой ссылки.
Компонент «Навигация» поддерживает глубокие ссылки и воссоздает для вас реалистичный обратный стек при ссылке на любой пункт назначения в вашем графе навигации.