- Навигация с помощью Назад и Вверх
- Вверх по сравнению с Назад
- Навигация по вашему приложению
- Навигация к экранам с несколькими точками входа
- Изменение вида экрана
- Навигация между соседними экранами имеющих одного и того же родителя
- Навигация в ваше приложение с помощью виджетов главного экрана и уведомлений
- Косвенные уведомления
- Всплывающие уведомления
- Навигация между приложениями
- Деятельность, задачи и намерения
- Пример: навигация между приложениями для поддержки обмена данными
Навигация с помощью Назад и Вверх
Согласующаяся навигации является важным компонентом общего пользовательского опыта. Мало что мешает пользователям больше основной навигации, которая ведет себя в непоследовательно и неожиданным образом. В Android 3.0 представлены существенные изменения в глобальной навигации. Четкое следование руководящим принципам для действий Назад и Вверх сделает навигацию вашего приложения предсказуемым и надежным для пользователей.
Android 2.3 и более ранние версии зависят от системной кнопки Назад для поддержки навигации внутри приложения. С введением панели действий в Android 3.0, появился второй механизм навигации: кнопка Вверх , состоящая из иконки приложения и значка «<» с левой стороны.
Вверх по сравнению с Назад
Кнопка Вверх используется для навигации внутри приложения на основе иерархических отношений между экранами. Например, если экран A отображает список элементов, и выбор пункта приводит к экрану B (являющийся детальным представлением этого пункта), то экран В должен предложить кнопку Вверх, которая возвращает на экран A.
Если экран является одним из самых верхних в приложение (то есть, главный экран приложения), он не должен предоставлять кнопку Вверх.
Системная кнопка Назад используется для навигации, в обратном хронологическом порядке, по истории экранов, с которыми пользователь недавно работал. Это, как правило, на основано временных связях между экранами, а не на иерархии приложения.
Когда ранее просматриваемый экран также является иерархическим родителем текущего экрана, нажатие кнопки Назад имеет тот же результат, что и нажатия кнопки Вверх — это частный случай. Однако, в отличие от кнопки Вверх, при нажатии на которую пользователю остается в пределах вашего приложения, кнопка Назад может вернуть пользователя на Главный экран, или даже в другое приложение.
Кнопка Назад также поддерживает следующее поведение, непосредственно не привязанных с между-экранной навигацией:
- Убирает плавающие окна (диалоговые и всплывающие окна)
- Убирает панели контекстных действий и снимает выделение с выбранных элементов
- Скрывает экранную клавиатуру (IME)
Навигация по вашему приложению
Навигация к экранам с несколькими точками входа
Иногда экран не имеет строгого положения в иерархии приложения, и можно перейти на него с нескольких точек входа, например на экран настроек можно перейти из любого другого экрана в вашем приложении. В этом случае, кнопка Вверх должна вернуть на ссылающийся экран, т.е. ведет себя идентично кнопке Назад.
Изменение вида экрана
Изменение настроек просмотра для экрана не меняет поведение Вверх или Назад: экран по-прежнему в том же месте иерархии приложения, и новая история навигации не создается.
Примерами таких изменений просмотра являются:
- Переключение представлений используя вкладки и/или жестом влево и вправо
- Переключение представлений, используя выпадающий список (известный также как свернутые вкладки)
- Фильтрация списка
- Сортировка списка
- Изменение характеристик дисплея (например, масштабирование)
Навигация между соседними экранами имеющих одного и того же родителя
Когда ваше приложение поддерживает навигацию из списка элементов к подробностям одного из этих пунктов, чаще всего желательно поддерживать направление навигации от этого элемента к другому, который предшествует или следует за ним в списке. Например, в Gmail, проведите пальцем влево или вправо от сообщения, чтобы просмотреть более новое или старое в одной папке. Так же, как при смене представления экраны, такая навигация не меняет поведение Вверх или Назад.
Тем не менее, заметным исключением из этого происходит при просмотре между связанными представлениями не ссылающиеся на один и тот же список, например, при просмотре в Play Store приложений одного и того же разработчика, или альбомы того же артиста. В этих случаях, после перехода по каждой ссылке создается история, в результате чего кнопка Назад возвращает к ранее просматриваемому экрану. Кнопка Вверх должна продолжать обходить эти связанные экраны и переходить к недавно просмотренному экрану контейнера.
У вас есть возможность сделать поведение Вверх даже умнее, основываясь на ваших знаниях о детализированном представлении. Продолжая пример Play Store приведенный выше, представьте, что пользователь перешел от последней просмотренной книги на детали фильма. В этом случае, Вверх может вернуться в контейнер (Фильмы), по которому пользователь ранее не перемещался.
[wpanchor id=»1″]
Навигация в ваше приложение с помощью виджетов главного экрана и уведомлений
Вы можете использовать виджеты главного экрана или уведомления, чтобы помочь пользователям перейти непосредственно к экранам глубоко внутри иерархии вашего приложения. Например, виджет для папки Входящие почты Gmail и уведомление о новом сообщении в Gmail могут обойти экран Входящие, перемещая пользователя непосредственно к представлению разговора.
Для обоих этих случаях кнопку Вверх обрабатывайте следующим образом:
- Если на экран назначения перешли из какого-то одного экрана вашего приложения, Вверх должна перейти на этот экран.
- В противном случае, Вверх должна перейти на самый верхний («Главный») экран вашего приложения.
В случае кнопки Назад, вы должны сделать навигацию более предсказуемой, вставив в конец стека задачи полный путь навигации к верхнему экрану приложения. Это позволяет пользователям, которые забыли, как они вошли в ваше приложение, перейти к верхнему экрану приложения перед выходом.
В качестве примера, у виджета главного экрана Gmail имеется кнопка для перехода непосредственно к экрану создания сообщения. Вверх или Назад в окне создания сообщения переместит пользователя в папку Входящие, а оттуда на кнопка Назад переместит на Главную страницу.
Косвенные уведомления
Когда вашему приложению необходимо представить информацию о нескольких событиях одновременно, оно может использовать одно уведомление, которое направляет пользователя на промежуточный экран. Этот экран объединяет эти события, и обеспечивает пути для пользователя, чтобы переместиться глубоко в приложение. Уведомления такого стиля называют косвенные уведомления.
В отличие от стандартных (прямых) уведомлений, кнопка Назад из промежуточного экрана косвенного уведомления возвращает пользователя к точке уведомление, из которой оно было запущено — никаких дополнительных экранов не вставляется в стек возврата. Как только пользователь переходит в приложение с промежуточного экрана, Вверх и Назад ведут себя также как для стандартных уведомлений, как описано выше: навигации по приложению предпочтительнее возврату в промежуточный экран.
Например, предположим, что пользователь в Gmail получает косвенное уведомление от Календаря. Прикосновение к этому уведомлению открывает промежуточный экран, который отображает напоминания для нескольких различных событий. Прикосновение к кнопке Назад из промежуточного экрана возвращает пользователя в Gmail. Прикосновение к конкретному событию перемешает пользователя от промежуточного экрана к приложению Календарь, чтобы отобразить сведения о событии. Из представления деталей события, Вверх и Назад перемещает к представлению верхнего уровня Календаря.
Всплывающие уведомления
Всплывающие уведомления обходят рисовальщик уведомлений, появляясь прямо перед пользователем. Они редко используются, и должны быть зарезервированы для случаев, когда требуется своевременное реагирование и прерывание контекста пользователя действительно необходимо. Например, приложение Talk использует этот стиль для уведомления пользователя о наличии приглашения от друга присоединиться к видео-чату, так как это приглашение автоматически истекает через несколько секунд.
С точки зрения поведения навигации, всплывающие уведомления четко следуют поведению временных экранов косвенных уведомлений. Кнопка Назад убирает всплывающее уведомление. Если пользователь переходит из всплывающего окна в приложение, Вверх и Назад следуют правилам для стандартных уведомлений, перемещая по приложению.
Навигация между приложениями
Одной из основных сильных сторон Android системы является возможность для приложений активировать друг друга, давая пользователю возможность перемещаться непосредственно из одного приложения в другое. Например, приложение, которому необходимо сделать снимок может активировать приложение Камера, которая вернет изображение вызывающему приложению. Это огромное преимущество как для разработчика проекта, который может легко использовать код из других приложений, так и пользователя, который использует предыдущий опыт для часто выполняемых действий.
Чтобы понять навигацию между приложениями, важно понять основы поведения Android обсуждаемые ниже.
Деятельность, задачи и намерения
В Android, деятельность это компонент приложения, который определяет экранную информацию и все связанные с ним действия пользователь, которые он может выполнять. Ваше приложение представляет собой набор деятельности, состоящий из как из действий, которые вы создаете, так и тех, которые вы повторно используете из других приложений.
Задача это последовательность действий пользователя для достижения цели. Одна задача может использовать деятельность как из одного приложения, так и основываться на деятельности ряда различных приложений.
Намерение представляет собой механизм для одного приложения, чтобы сигнализировать о том, что необходима помощь другого приложения для выполнения действия. Деятельность приложения может указать, на какие намерения они могут ответить. Для общих намерений, таких как «Обмен данными», пользователь может иметь много установленных приложений, которые могут выполнять это намерение.
Пример: навигация между приложениями для поддержки обмена данными
Чтобы понять, как деятельность, задачи и намерения работают вместе, подумайте, как одно приложение позволяет пользователям обмениваться контентом с помощью другого приложения. Например, запуск приложение Play Store с Главного экрана запускает новую задачу A (см. рисунок ниже). После перехода через Play Store и касания книги, чтобы увидеть её описание, пользователь остается в той же задаче, расширяя её добавлением деятельности. Инициирование действия Обмена данными показало пользователю диалоговое окно со списком каждой деятельности (из разных приложений), которые зарегистрированы для обработки намерения Обмена данными.
Когда пользователь выбирает поделиться через Gmail, деятельность Gmail добавляется как продолжение задачи А — новая задача не создается. Если Gmail выполнял свои задачу в фоновом режиме, они будут не тронуты.
Из деятельности создания сообщения, отправка сообщения или нажатие на кнопку Назад возвращает пользователя к деятельности информации о книге. Последующие касания кнопки Назад продолжают перемещать обратно по Play Store, в конечном счете, прибывающих на Главную страницу.
Однако, касание кнопки Вврех внутри деятельности создания сообщения, пользователь указывает на желание остаться в Gmail. Появляется список разговоров Gmail, и для неё создается новая задача B. Новые задачи всегда указывают на Главную страницу, таким образом касание кнопки Назад от списка разговоров ведет на неё.
Задача А остается в фоновом режиме, и пользователь может вернуться к ней позже (например, через экран Недавние). Если Gmail уже имел свою задачу в фоновом режиме, она будет заменена задачей B — прежний контекст будет заброшен в пользу новой цели пользователя.
Когда ваше приложение регистрирует обработку намерения с активностью глубоко внутри иерархии приложения, обратитесь к Навигация в ваше приложение с помощью виджетов главного экрана и уведомлений для руководства о том, как указать навигацию кнопки Вверх.