Следующее, о чем мы поговорим, – меню и Action Bar (панель выбора действий). Activity могут поддерживать меню, которые могут быть представлены пользователю по-разному, но основная идея состоит в том, что меню дают пользователям быстрый способ получить доступ к важным функциям. Так, Activity могут добавить элементы к меню, и они могут реагировать, когда пользователь выбирает пункт меню, нажав на него. Вызов меню изменялся в Android в течение долгого времени. Сперва поговорим об основных видах меню, а затем о более новом классе – Action Bar.
Есть три вида меню Android:
Меню опций (options menu), которое пользователь получает, когда нажимает кнопку меню. У более старых устройств на базе Android обычно была специальная физическая кнопка меню, которую уже не делают на более новых телефонах.
Контекстные меню (context menu). Эти меню присоединены к определенным вью, и появляются только тогда, когда пользователь длительно нажимает эту вьюшку. Контекстные меню обычно используются для работы с определенными данными, связанными с вьюшками, в то время как меню опций используются для глобальных операций и влияют на целое приложение.
Подменю. Это вторичные меню, которые активируются только тогда, когда пользователь выбирает пункт уже видимого меню.
Давайте рассмотрим некоторые примеры. Пример меню опций. В этом приложении есть значок меню (три вертикальные точки) в нижней части. Если по нему кликнуть, раскрывается меню, позволяя сделать такие вещи, как: определить, какие контакты вывести на экран, импортировать/экспортировать контакты, а также произвести настройку приложения.

Затем давайте посмотрим пример контекстного меню. Откроем браузер. Далее через меню опций переходим до закладок. И далее выбираем вкладку «History», которая показывает список недавно посещённых веб-страниц. Теперь, если нажать и удерживать одну из этих записей истории, будет вызвано новое меню.

Это контекстное меню поддерживает действия, которые могут быть применены к выбранной ссылке веб-страницы, такие как: открыть, добавить в закладки, поделиться и другие.
Чтобы создать меню, сначала необходимо определить содержание меню в xml-файле в каталоге res/menu. Когда пользователь открывает меню, Android вызывает определенный метод – onCreateOptionsMenu для меню опций и их подменю или onCreateContextMenu для контекстных меню. В этих методах мы будем использовать Menu Inflater, чтобы создавать лейаут меню.
Когда пользователь выберет один из пунктов меню, Android вызовет метод onOptionsItemSelected для меню опций и подменю или onContextItemSelected для контекстных меню. Давайте рассмотрим простой пример со всеми этими различными видами меню.
Это приложение «HelloAndroidWithMenus». При его запуске вы увидите текстовое вью со словами «Hello Android». Если нажать и подержать это текстовое поле, то раскроется контекстное меню.
В верхнем правом углу есть значок (три вертикальные точки), который предоставляет доступ к пунктам меню. Назовем этот значок кнопкой «Menu», а место, где он находится – зоной переполнения (overflow area).
Давайте посмотрим на то, как это реализовано в исходном коде. Сначала мы посмотрим на метод onCreateOptionsMenu. В этом методе мы получаем Menu Inflater, и затем вызываем его метод Inflate, передавая ссылку на лейаут меню.

Теперь откроем файл меню Top_menu.xml. Этот файл содержит тег меню, и в нем есть несколько тегов элементов. В каждом теге есть атрибуты, такие как: ID, иконка, которая выводится на экран для этого элемента и заголовок этого элемента.
В Activity в последней строке onCreateOptionsMenu возвращаем значение true, указав, что мы хотим вывести на экран этот пункт меню. Теперь, когда пользователь выбирает один из этих пунктов меню, Android вызовет onOptionsItemSelected, передав ему выбранный пункт.

Здесь мы проверяем ID элементов, и затем совершаем соответствующие действия для этого элемента.
Теперь посмотрим на то, как устанавливается контекстное меню. Сначала, когда пользователь впервые вызывает контекстное меню, Android вызывает onCreateContextMenu.

Читать дальше
Конец ознакомительного отрывка
Купить книгу