воскресенье, 19 февраля 2012 г.

Android Training-Создание эффективной навигации-Создание предковой и временной навигации



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

Поддержка временной навигации: Назад.

Временная навигация или навигация между историческими экранами уходят корнями вглубь Android системы. Все Android пользователи ожидают, что кнопка Назад вернет их на предыдущий экран, независимо от других состояний. Множество исторических экранов всегда имеет корень в приложении Launcher ("домашний" экран телефона). Таким образом, нажатие клавиши Назад определенное количество раз приведет вас обратно к Launcherу, после чего реакция на нажатие будет отсутствовать.


Рисунок 1. Поведение кнопки "Назад" после запуска приложения для работы с e-mail из приложения для работы с контактами.

Приложения вообщем не должны беспокоиться об управлении кнопкой назад, система обрабатывает задачи и фоновый стек, или список предыдущих экранов автоматически. Кнопка Назад по умолчанию просто обходит этот список экранов, удаляя текущий экран из списка после нажатия.
Существуют однако случаи, когда вы захотите переопределить поведение кнопки Назад. Например, если ваш экран содержит встроенный веб-браузер где пользователи могут взаимодействовать с элементами страницы для навигации между страницами вы можете изменить реакцию по умолчанию, заложенную в браузере. Дойдя до начала внутренней истории браузера вы должны возвращать стандартное поведение для кнопки Назад.

Создание предковой навигации-кнопки вверх и домой.
Перед Android 3.0, самая распространенная форма предковой навигации была навигация "Домой". Это в основном реализовывалось как элемент Домой доступный при помощи кнопки Меню на устройстве или кнопки Домой в верхней левой части экрана, обычно как компонент Action Bar. После нажатия Домой пользователь перемещался к экрану вверху иерархии экранов, обычно известной, как домашний экран приложения.

Предоставление прямого доступа к домашнему экрану приложения может дать пользователю ощущение удобства и безопасности. Независимо от того, где они находятся в приложении, кнопка Домой всегда приведет к их к известному домашнему экрану.
Android 3.0 ввел действие Вверх, которое представлено на Action Bar как замена для кнопки Домой, описанной выше. После нажатия Вверх пользователь должен быть перемещен в родительский экран иерархии. Этот навигационный шаг обычно означает перемещение на предыдущий экран(как описано про клавишу Назад)),но это не всегда так. Разработчики должны убедиться что Вверх для каждого экрана означает навигацию к простому, предопределенному родительскому экрану.


Рисунок 2. Пример поведения при навигации Вверх после запуска приложения для работы с e-mail из приложения для работы с контактами.
В некоторых случаях является уместным для Вверх выполнять действие вместо навигации к родительскому экрану. Для примера возьмем приложение Gmail для Android 3.0 планшетов. При просмотре переписки пока устройство находится в альбомном режиме, список переписок, как и детали представлены бок-к-боку. Это форма группировки родитель-потомок экранов, описанная в предыдущем уроке.В тоже время, при просмотре переписки в портретном режиме, показываются только детали. Кнопка вверх используется для временного показа родительской панели, которая выпадает с левой части экрана. Нажатие кнопки Вверх еще раз при видимой левой панели выходит из экрана с контекстом выбранной переписки к полному списку переписок.
Примечание к реализации: Лучшей практикой, при реализации Домой или Вверх является предварительная очистка заднего стека любых экранов-потомков. Для Домой, только экран, остающийся в заднем стеке должен быть домашним экраном. Для навигации Вверх, текущий экран должен быть удален из заднего стека, в то время, как Назад выполняет навигацию по иерархии экранов. Вы можете использовать FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_NEW_TASK intent флаги вместе для достижения такого эффекта.
Оригинальный материал доступен тут.

Комментариев нет:

Отправить комментарий