Где кнопка меню на андроиде 5.1. Удалил кнопку меню на андроиде

До появления Honeycomb (Android 3.0) все Android устройства имели кнопку "меню" под экраном. Разработчики могли использовать ее по своему усмотрению, интерфейсы многих приложений были выстроены именно вокруг этой кнопки. В ориентированном на планшеты Honeycomb был сделан шаг в сторону отказа от механических (и сенсорных) кнопок, в связи с этим, в третьей версии Android появился класс ActionBar, который позволял дать пользователю быстрый доступ к настройкам приложения через специальную панель, называемую action bar. По мнению разработчиков Google будущее за Action Bar-ом и программисты должны отказаться от использования кнопки "меню". В настоящее время на рынке доминируют смартфоны с механической или сенсорной кнопкой под экраном, но с появлением Ice Cream Sandwich ситуация может резко измениться. Вам, как разработчику, важно заранее подготовиться к появлению таких устройств, и использовать концепцию Action bar уже сегодня.

На первый взгляд может показаться, что использование Action Bar-а вызовет проблемы при разработке программ для Android 2.x, в котором эта панель еще не была реализована. Однако здесь нет проблемы. Никто не запрещает Вам продолжать использовать кнопку "меню" на тех устройствах, где она присутствует, добавление же Action Bar-а потребует от вас написания всего нескольких строк кода.

Если бы я попытался сжать эту статью в одно предложение, оно бы звучало так: "Установите targetSdkVersion в 14, и пометьте тегом showAsAction="ifRoom" элементы меню, которые должны быть вынесены на Action Bar ".

Окончательный отказ от меню настроек в Android

Недостаточно просто отказаться от использования кнопки "меню", нужно полностью выкинуть эту концепцию из своей головы. Не создавайте меню, создайте все необходимые кнопки непосредственно внутри деятельностей (activity). Если какие-то действия не помещаются на панель, вынесите их в дополнительное выпадающее меню (action overflow). На приведенной картинке показан action bar с кнопкой для поиска и дополнительное меню с правой стороны панели.

Если Ваше приложение создано под старую версию андроида (в которой традиционно используется меню), то при запуске на Android 3 планшете в нижней части экрана будет отображаться панель, эмулирующая три кнопки, существующие на телефонах второй ветки.

Терминология довольно запутанная, но выпадающее меню (action overflow) предполагает абсолютно другую концепцию использования, нежели простое меню настроек. Вместо того, чтобы рассматривать меню как вместилище всех настроек приложения, вы создаете панель, на которую помещаете основные настройки. Все второстепенное выносится в выпадающее меню, которое вызывается при нажатии кнопки с тремя точками (Action overflow button) в правой стороны панели.

Action overflow button

Если Вы запускали приложения, написанные для Android 2.3 и ниже на устройствах без кнопок под экраном (например, на планшете с Honeycomb или на Galaxy Nexus), Вы наверно заметили, что рядом с изображением трех кнопок на панели внизу появляется и Action overflow кнопка (три точки друг над другом). Это некий компромисса, однако, не очень удачный. В приложениях, которые вообще не используется меню настроек эта кнопка ничего не делает, раздражая пользователей. Поэтому, весьма неплохим решением было бы следить за версией Android-а, и если Ваша программа запускается под Android 3.0+, убирать эту кнопку с навигационной панели и использовать Action Bar. Такой подход позволяет сохранить совместимость программы со старыми аппаратами и сделать ее более привлекательной для новых.

Если ваша программа запущена на устройствах без кнопок, система решает, нужно ли добавить action overflow на навигационную панель в зависимости от значения поля в манифесте. Логика следующая

  • Если Вы установили в minSdkVersion или targetSdkVersion значение больше 11, то система не добавляет эту кнопку.
  • С другой стороны, система создает эту кнопку, когда Вы запускаете приложение на Android 3.0 и выше.
  • Единственное исключение: когда Вы установите minSdkVersion в 10 или ниже; targetSdkVersion в 11, 12 или 13, и не будете использовать ActionBar, система добавит эту кнопку на телефонах (не планшетах) под управлением Android 4.0 и выше. В основе этого исключения лежит следующая идея: если Вы разрабатываете приложение одновременно для телефонов второй ветки и для планшетов третьей, то Вы предполагаете, что у телефонов должна быть кнопка меню, а у планшетов ее нет.

Таким образом, если вы хотите запретить overflow action кнопку в панели навигации, Вам нужно установить targetSdkVersion в 14 (В minSdkVersion можно записать более низкое значение, чтобы программа могла запускаться на старых устройствах).

Переход к концепции action bar-а

Если у Вас есть деятельности, которые используют меню настроек (созданное с помощью onCreateOptionsMenu()), то убрав кнопку с навигационной панели (установив targetSdkVersion=14) Вы должны предоставить пользователю альтернативное средство доступа к настройкам. К счастью, от Вас не потребуется много работы, поскольку в системе автоматически создается action bar.

Добавьте showAsAction="ifRoom" в теги элементов, которые вы хотите поместить в action bar. Если вы не уверены, какой из элементов стоит включать в Action Bar, обратитесь кAndroid Design’s Action Bar guide .

Чтобы сделать восприятие вашей программы более целостным, рекомендуем Вам использовать в качестве иконок для Action bar-а иконки отAndroid UX Team . Архив .

Как удалить Action Bar из Android приложения

Если Вам не нужен Action bar, Вы можете удалить его из любой деятельности, либо вообще из приложения. Это может быть актуально для игр и программ, не использующих меню настроек. Вы можете удалить action bar, используя тему Theme.Holo.NoActionBar или Theme.DeviceDefault.NoActionBar.

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

Например, Вы можете объявить тему для своего приложения

(или для конкретной деятельности в теге ).

Для устройств, работающих на Android 2, включите следующую тему в res/values/themes.xml.



Для Honeycomb включите следующую тему в res/values-v11/themes.xml.



При запуске в зависимости от версии API система выберет подходящую тему.

Заключение

Повторим тезисно ключевые идеи и моменты статьи:

  • На новых Android устройствах может отсутствовать кнопка "menu", поэтому при разработке программ лучше вообще отказаться от ее использования.
  • Установите targetSdkVersion = 14 и протестируйте свое приложение на Android 4.0.
  • Добавьте тег showAsAction="ifRoom" в элемент меню, если хотите, чтобы он автоматически попал на панель action bar.
  • Если в Вашем приложении не используется ActionBar, Вы можете убрать его, воспользовавшись темами Theme.Holo.NoActionBar и Theme.DeviceDefault.NoActionBar.

Для чего нужно рутирование устройства Android и какие возможности оно даёт, известно достаточно большому числу пользователей, чего нельзя сказать о скрытом расширенном меню аппаратных настроек также называемым инженерным меню. Об этих настройках знают немногие, и ещё меньше владельцев мобильных устройств умеют ими пользоваться. Что же представляет собой инженерное меню Андроид и зачем оно нужно?

Инженерное меню Android – это не что иное, как специальная подпрограмма, предназначенная для тестирования разработчиками операционной системы и датчиков устройства. Интерфейс этой программы представлен набором опций, позволяющих изменять конфигурацию «железа» мобильного устройства. С её помощью можно получить исчерпывающие сведение об аппаратной части гаджета, произвести тестирование процессора, оперативной и физической flash-памяти, режимов беспроводного соединения, настроить параметры камеры, дисплея, микрофона, динамиков и многое другое.

Вход в инженерное меню

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

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

Коды инженерного меню в Андроид являются универсальными, тем не менее, их корректная работа на телефонах с «левыми» прошивками не гарантируется. Для доступа к аппаратным настройкам Android также можно использовать специальные программы, например, «Инженерное Меню MTK» или «Mobileuncle MTK Tools» .

Подобные приложения особенно пригодятся на планшетах, прошивка которых не предусматривает наличие «звонилки». Интерфейс и набор доступных опций в этих программах несколько отличаются, впрочем, разобраться с ними не составит особого труда.

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

Для получения списка инженерных кодов для конкретной модели телефона можно воспользоваться специальным приложением Secret Codes , доступным в Google Play. На некоторых моделях мобильных устройств для полноценного доступа к инженерному меню могут потребоваться права суперпользователя (root).

Что можно изменить с помощью меню

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

Другой полезной функцией является получение доступа к режиму восстановления – аналогу BIOS на компьютерах, который в свою очередь содержит целый набор настроек. Возможности режима восстановления включают сброс устройства к заводским параметрам, обновление прошивки, создание резервной копии операционной системы, получение доступа к root-правам, удаление конфиденциальных пользовательских данных. Перечислить все опции инженерного меню в рамках одной статьи не представляется возможным, чем больше в телефоне или планшете датчиков и компонентов, тем более обширным оно будет.

Увеличение громкости телефона через инженерное меню

А теперь продемонстрируем работу с аппаратными настройками на примере одной из самых востребованных операций и узнаем, как увеличить громкость на Андроиде через инженерное меню. Итак, заходим в меню с помощью Mobileuncle MTK Tools или введя «волшебный» код, затем находим и открываем подраздел Audio. Если в меню вы зашли через программу Mobileuncle Tools, этот подраздел будет находиться в разделе старшего порядка Engineer Mode, в остальных случаях он обычно располагается на вкладке Hardware Testing.

В подразделе Audio вам будут доступны следующие опции:

  • Normal Mode – обычный режим, работающий когда к устройству не подключена гарнитура.
  • Headset Mode – режим гарнитуры, включающийся в момент подключения к смартфону наушников или колонок.
  • LoudSpeaker Mode – режим громкоговорителя. Активируется при включении громкой связи при условии, что к устройству не подключена гарнитура.
  • Headset_LoudSpeaker Mode – режим громкоговорителя с подключенной гарнитурой. То же самое, что предыдущий, но с подключенными наушниками или колонками.
  • Speech Enhancement – этот режим включается при разговоре по телефону без использования громкой связи.

В разделе могут быть и другие настройки, например, Debug Info и Speech Logger, но их лучше не трогать. Выбираем режим, для которого нужно изменить уровень громкости (пусть это будет Normal Mode), в открывшемся списке выбираем Type и указываем, для какой именно функции будем изменять громкость. Доступными могут быть такие функции:

  • Ring – настройка громкости для входящих звонков;
  • Media – настройка громкости динамиков при воспроизведении мультимедиа;
  • Sip – звуковые настройки для интернет-звонков;
  • Sph – звуковые настройки разговорного динамика;
  • Sph2 – звуковые настройки второго разговорного динамика (опции может не быть);
  • Mic – изменение чувствительности микрофона;
  • FMR – настройки громкости FM-радио;
  • Sid – этот параметр лучше не трогать, иначе могут возникнуть проблемы с голосом собеседника.

Выбрав функцию, прокручиваем текущий список, выставляем нужное значение Value (от 0 до 255) и жмём для применения новых настроек Set.

Для изменения уровня громкости также можно воспользоваться предустановленными шаблонами – опцией Level. В большинстве телефонов имеется семь уровней, от 0 до 6. Настройку Max Vol желательно не трогать, равно как и не стоит выставлять слишком высокие значения для Value, иначе звук в динамиках начнёт хрипеть. Аналогичным образом настраиваются и другие режимы в подразделе Audio.

Для вступления новых настроек в силу в некоторых моделях смартфонов и планшетов требуется перезагрузка.

Сброс настроек

И последнее, что мы сегодня рассмотрим, это сброс параметров инженерного меню к заводским значениям. Понадобиться он может в том случае, если после внесения изменений устройство стало работать некорректно. Существует несколько способов сброса. Если система нормально загружается, зайдите в настройки и откройте подраздел «Восстановление и сброс».

Также сбросить инженерное меню можно, введя в «звонилке» специальный сервисный код. Обычно это *2767*3855#, *#*#7780#*#* или *#*#7378423#*#*, но для вашей модели телефона может понадобиться свой код.

Еще один вариант – воспользоваться режимом восстановления, о котором было сказано выше. Чтобы в него попасть, используйте одну из этих комбинаций:

  • Кнопка включения + уменьшение громкости.
  • Кнопка включения + увеличение громкости.
  • Кнопка включения + кнопка «Домой» + уменьшение/увеличение громкости.
  • Кнопка включения + увеличение громкости + уменьшение громкости.

В открывшемся списке опций выберите «wipe data/factory reset» → «Yes – delete all user data» → «reboot system now». Устройство будет перезагружено, и настройки обнулятся.

Есть ещё один способ сбросить настройки инженерного меню, но он требует наличия прав суперпользователя. Используя любой файловый менеджер с поддержкой прав root, зайдите в корневой каталог системы, а затем удалите полностью или частично содержимое папки data/nvram/apcfg/aprdcl и перезагрузитесь.

Файлы в папке aprdcl как раз отвечают за настройки инженерного меню. Сходу удалять все файлы необязательно. Если вы напортачили, скажем, с настройками аудио, для восстановления исходных параметров достаточно удалить файлы, в названии которых имеется элемент строки audio. И ещё один момент. Независимо от способа сброса, всегда делайте резервную копию ваших личных данных и приложений, так как все они могут быть утрачены.

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

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

AntTek Quick Settings

Среди приложений, позволяющих отрегулировать меню быстрого доступа к настройкам, наиболее популярны AntTek Quick Settings, Power Toggles, Quick Settings, Sidebar. Мы рассмотрим создание собственного меню быстрого доступа к конфигурациям вашего устройства на примере приложения AntTek Quick Settings.

  1. В поисковой строке в магазине приложений Play Market введите название приложения.
  2. Откройте выбранное приложение.
  3. Нажмите кнопку Установить.
  4. Примите разрешения, необходимые для установки приложения.
  5. Откройте приложение после загрузки.
  6. При первом запуске программы внимательно изучите инструкцию по ее применению. Для перехода в меню быстрого доступа к настройкам выполните захват с удержанием в центре строки состояния. Чтобы задать еще один короткий путь для включения какой-либо функции на устройстве, нажмите. Кнопка позволяет изменить тему и открыть дополнительные настройки.
  7. Нажмите Next (Далее).
  8. Проверьте кнопки быстрого доступа. При необходимости добавьте еще.

Обновленная версия Android 5 Lollipop, хотя и похожа на предыдущий KitKat, однако имеет некоторые отличия, которые могут показаться непривычными и неудобными. Настроек в “Леденце” много.

Одни из них (типа контрастного текста или инвертирования цветов) нужны немногим, другие же необходимы практически каждому. Рассмотрим вопрос, как настроить Андроид 5, более детально.

Заводские настройки Android Lollipop

Одна из самых важных Android 5 настроек – Factory Reset Protection («Защита фабричных настроек»). Активация этой опции приведет к тому, что сбросить настройки до заводских будет нельзя без логина и пароля к вашей учетной записи в Google.

Благодаря сервису Android Device Manager владелец потерянного или украденного смартфона сможет удаленно заблокировать и очистить устройство.

Необходимо помнить, что защита работает, только когда смартфон заперт экраном активации.

Восстановление данных после установки обновления Андроид

Еще одна полезная опция - возможность восстановления данных после установки Android 5.0 Lollipop. При первоначальной настройке будут предложены различные варианты восстановления данных вплоть до пропущенных звонков.

Андроид 5 настройка учетных записей

Может пригодиться менеджер учетных записей пользователей – по аналогии с полноценным десктопом можно будет разграничивать доступ к возможностям смартфона.

Доступны 3 типа учётных записей:

  • Учетная запись «Гость» (Guest) обладает минимальными правами. Любая его информация хранится лишь временно. Каждый раз при входе под учеткой гостя система будет спрашивать, хочет пользователь начать работу заново или продолжит последнюю гостевую сессию.
  • «Профиль» (Profile) позволяет настроить доступ к программам и сервисам.
  • «Пользователь» (User) - он же хозяин устройства. Эта учетная запись обладает наибольшими правами. Любое изменение в настройках системы, такое как добавление сети Wi-Fi , будет применяться ко всем другим аккаунтам на устройстве.

Как добавлять пользователей? Очень просто - заходим в настройки и ищем надпись “Пользователи” (Users).

Изначально вы увидите профиль владельца смартфона и гостевой. Также можно добавить пользователей.

Для добавления новых пользователей нужно будет ввести их учетные записи Google. Каждый пользователь сможет кастомизировать операционную систему под себя. Владелец устройства не имеет возможности контролировать этот процесс, однако в его власти разрешить или запретить другим пользователям отправлять SMS и звонить.

Ограничение доступа на Андроид 5 Lollipop

Еще одна полезная функция – так называемая «Кнопка». Если вы даете кому-то свой смартфон и не хотите, чтобы в нем рылись или что-то меняли, используйте «Кнопку». Она ограничит функциональность устройства только одним приложением – тем, на котором установлена. Ко всему другому доступ будет запрещен: «Введите пароль».

Как это сделать? Откройте настройки и выберите опцию “Безопасность”. Нажмите на нее. В открывшемся списке нажмите “Закрепление экрана” (Screen pinning). Затем переключите тумблер в положение “Вкл.” (On).

Теперь вы можете закрепить любое приложение на экран. Для этого запустите выбранную программу и дважды нажмите на ее окошке.

Для выхода из закрепленного приложения нажмите и удерживайте кнопки “Обзор” и “Назад”. Через несколько секунд вы попадете на рабочий стол.

Как настроить прерывания в Андроид 5

Помимо всего прочего, настраивать в Android 5.0 Lollipop можно так называемые «Прерывания» - вы сможете сами определить, какие контакты или приложения смогут вам звонить или посылать уведомления.

Как настроить прерывания? Зайдите в настройки, выберите “Звуки и уведомления” (Sound & notification) и тапните по этой опции. Ниже ползунков настройки звуков будет опция “Прерывания” (Interruptions) - нажмите на нее.

Можно разрешить беспокоить вас только избранным контактам или приложениям. В Lollipop имеется возможность включения режима «Важные» по заданному вами расписанию - для этого есть специальная опция “Расписание режима “Только важные оповещения” (Downtime (priority interruptions only).

Можно быстро менять режимы приоритета, просто коснувшись ползунка громкости. Под ним будут доступны режимы “Не беспокоить” (None), “Важные” (Priority) и “Все” (All).

Первые два режима можно включить бессрочно или на определенное время. Кнопки “+” и “-” позволяют регулировать интервал времени, в течение которого выбранный режим будет действовать. Временной промежуток может регулироваться от 15 минут до 8 часов.

Настройка Lollipop блокировки экрана и уведомлений

В Android 5.0 Lollipop входящие уведомления высвечиваются на экране блокировки. Это не всегда удобно. Вряд ли кому-то хочется “светить” информацию личного характера. Для этого случая есть гибкая настройка в Андроид 5 способа вывода уведомлений.

Чтобы это сделать, зайдите в Настройки -> Звук и уведомления -> На заблокированном экране -> Скрыть личную информацию. После этого посторонние глаза ее не увидят.

Почта в Андроид 5 стала удобнее

Почтовое приложение Gmail, помимо нового дизайна, получило поддержку учетных записей на других почтовых сервисах, поддерживающих протоколы IMAP и POP. Теперь не нужно залезать в браузер, чтобы открыть негугловский «ящик» – все можно будет сделать из одного приложения.

Android 5 настройка экономии батареи

Если вы хотите, чтобы смартфон работал дольше на одной зарядке, следует узнать, как настроить в Андроид 5 режим экономии батареи Project Volta. По словам разработчиков, он позволяет продлить время работы на 15-20%. Правда, при этом устройство начинает заметно «тормозить».

Для того чтобы включить этот режим, войдите в настройки, нажмите на «Батарея», затем на кнопку меню (три точки в правом верхнем углу) и выберите режим экономии батареи:

Когда режим экономии батареи включится, навигационная и статусная панели смартфона станут оранжевого цвета и появится сообщение о включении режима экономии:

Если захотите, то этот режим можно сразу же выключить - в появившемся сообщении есть такая возможность.

Настройка в Андроид 5 функции Switch Access

Главное меню - один из основных инструментов для взаимодействия пользователя с приложением. В Android 2.3.x и раньше оно было «спрятано» на аппаратной кнопке Menu, и разработчики рисовали меню кто как умел. Но начиная с Android 3.0 недоработка была исправлена, меню стало стандартным компонентом на Action Bar, и получило ряд новых возможностей. При этом процесс разработки меню практически не претерпел изменений. Меню в Android - это не просто набор кнопок, на которые можно вешать OnClickListener . В Android с меню можно сделать куда больше, чем кажется на первый взгляд.

В этой статье я расскажу, как сделать современное меню, как адаптировать его для разных размеров экрана, как делать переключатели типа radio button прямо в меню, а также как динамически управлять видимостью кнопок меню, скрывая те функции вашего приложения, которые не будут работать на том или ином смартфоне. По ходу статьи постараюсь дать максимально тех или иных возможностей меню, а также дам ссылки на официальную документацию по теме.

Вот так по-разному может выглядеть меню одного и того же приложения.

Наша первая кнопка в меню

Меню в Android описываются в файлах ресурсов или формируются программным кодом. Рекомендуется первый вариант по целому ряду причин: скорость разработки, наглядность, простота сопровождения. Ресурсы меню располагаются в подкаталоге menu каталога ресурсов приложения res . Создаем каталог menu , затем создаем новый Android XML File:


Выбираем тип ресурса Menu , вводим имя файла. Так как в разных , скорее всего, будет разным, рекомендую привязывать имена файлов ресурсов меню к именам activity.

В открывшемся редакторе введем код первой кнопки нашего меню:

Давайте рассмотрим использованные атрибуты:

  • android:id указываем, чтобы потом в коде отличать одни кнопки от других.
  • android:orderInCategory указывает порядок нашей кнопки относительно других. Указывайте порядок с шагом в 10 или 100, это позволит в будущем добавлять новые элементы в любое место, не перестраивая порядок остальных.
  • android:showAsAction - самый интересный параметр, поскольку именно он управляет поведением элементов меню в разных ситуациях. Он может принимать целый ряд значений:
    • ifRoom - Показывать элемент в action bar, только если для него достаточно места. Если места недостаточно, элемент будет автоматически скрыт в дополнительное меню (то, которое показано тремя точками друг над другом). Это лучший способ кастомизации меню в зависимости от размера экрана устройства. На больших экранах планшетов action bar будет заполнен кнопками, а на небольших телефонах будут показаны самые важные кнопки, в то время как до остальных тоже можно добраться, но только через дополнительное меню. Имейте в виду, что дополнительное меню отображается в action bar только на тех смартфонах, на которых нет аппаратной кнопки меню.
    • withText - Рядом с иконкой кнопки будет показан текст, заданный свойством android:title . Этот параметр можно указывать в комбинации с другими, разделяя параметры знаком |
    • never - Кнопка никогда не будет видна на action bar, даже если для нее есть место. К такой кнопке всегда придется добираться через дополнительное меню.
    • always - Всегда показывать кнопку в action bar. Данным параметром нельзя злоупотреблять, так как на маленьких телефонах кнопки могут начать заползать на другие элементы action bar, например на заголовок приложения. Определите для каждой activity максимум одну самую важную кнопку, без которой никак нельзя, и отметьте always только у нее. Остальные (а по возможности все) должны быть ifRoom .
    • collapseActionView - позволяет сделать кнопку, открывающую или скрывающую дополнительный элемент View в action bar. Например, можно задать такой параметр иконке поиска, по ее клику показывать прямо в action bar поле для ввода поискового запроса.
  • android:title - определяет заголовок кнопки меню. Он может отображаться рядом с иконкой в action bar или же как название элемента в дополнительном меню.
  • android:icon - иконка кнопки.

Иконки для меню

Если вы разрабатываете приложение в стиле Holo, вы можете использовать готовый набор иконок от Google, который доступен всем для загрузки с официального сайта совершенно бесплатно.

Набор иконок представлен отдельно для темной и отдельно для светлой темы Holo, а также для разных размеров экранов. Если вы не можете позволить себе дизайнера в команде, этот набор просто незаменим.

Подключение меню к Activity

Загрузить меню из ресурса очень быстро. Открываем код Activity и перекрываем метод onCreateOptionsMenu:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.your_activity_menu, menu); return true; }
Теперь меню отображается, но при нажатии на кнопку ничего не происходит. Повесить обработчик на кнопку можно кодом или прямо в XML-ресурсе, задав в свойстве android:onClick имя метода-обработчика. Чтобы сделать то же самое кодом, нужно в Activity перекрыть метод onOptionsItemSelected:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuPurchasesListNewRecord: // TODO: обработчик нажатия здесь return true; } return super.onOptionsItemSelected(item); }

Создаем подменю

Подменю полезно, когда мы хотим уточнить способ выполнения действия, представленного в action bar. К примеру, у нас есть список покупок и кнопка «Сортировка». По нажатию кнопки нужно выяснить, по какому параметру пользователь хочет отсортировать элементы списка: по категории товара, по названию или по порядку добавления в список. Посмотрим код подменю для такого случая:

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

Radio button"ы в меню

Мы только что сделали меню для выбора порядка сортировки покупок. Было бы здорово показывать, какой способ сортировки используется в текущий момент. Список может быть отсортирован только одним из трех возможных способов , что отлично соответствует идее radio button. Чтобы сделать из нашего подменю набор radio button, достаточно тегу указать свойство android:checkableBehavior="single" . Возможные значения android:checkableBehavior:
  • single - выбор только одного из доступных элементов, наш случай
  • all - выбор любого количества доступных элементов, аналог check box
  • none - элементы группы являются обычными элементами меню, это значение по умолчанию

Полученный код меню:

Если запустить приложение и попробовать выбрать один из способов сортировки, ничего не произойдет. В меню не показано, что какой-то элемент выбран. Это придется сделать вручную вызовом item.setChecked(true);
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuPurchasesListNewRecord: // TODO: обработчик нажатия здесь return true; case R.id.menuPurchasesListSortOrderCategory: item.setChecked(true); return true; case R.id.menuPurchasesListSortOrderName: item.setChecked(true); return true; case R.id.menuPurchasesListSortOrderAddTime: item.setChecked(true); return true; } return super.onOptionsItemSelected(item); }

Если у вас остались вопросы по работе с главным меню, буду рад ответить в комментариях.

Android поддерживает несколько типов меню. Первый - на телефоне есть отдельная кнопка Menu (в старых телефонах), нажатие которой вызывает меню. В новых устройствах отдельную кнопку убрали, заменив на значок меню в виде трёх точек в вертикальной ориентации. Второй тип - контекстное меню , которое появляется при нажатии и удерживания пальца на экране в нужном месте (также можно нажать и удерживать центральную кнопку на телефоне). Контекстное меню в свою очередь может иметь подменю. Сегодня мы познакомимся с первым типом меню. В данной статье будет рассматриваться работа с меню на новых устройствах под управлением Android 4.0 и выше.

В шаблоне Empty Activity нет меню, поэтому мы создадим его сами. Это поможет вам понять принцип работы и получить общее представление о проекте. Запоминать названия классов, методов и код для обработки выбора пунктов меню необязательно. В других шаблонах меню будет встроено и вы можете сразу использовать его.

Создайте новый проект на основе Empty Activity и запустите его. Никакого меню пока нет.

Создадим несколько строковых ресурсов в файле res/values/strings.xml , которые будут отвечать за пункты меню:

Settings Кот Кошка Котёнок

Настройки

В приложение Настройки можно попасть: нажав на иконку в меню приложений (или на рабочем столе) или через значок в панели переключателей. Основной экран приложения разделен на две вкладки ВСЕ и ПОДДЕРЖКА, в последней можно обнаружить две ссылки: Справочный центр / Оставить отзыв и Рекомендации и полезные советы . В некоторых странах во вкладке поддержка можно получить помощь и задать вопрос живому человеку в чате. Все настройки смартфона собраны в 4 группы: Беспроводные сети , Устройство, Личные данные и Система; и разбиты на 22 раздела. В верхней части закреплен 5-я группа которая называется Подсказки, здесь появляются интерактивные советы по настройке системы. Еще одно нововведение заключается в наличии кнопки Справка/отзыв во всех разделах/настройках. Во всех экранах Настроек кроме главного есть боковое меню для быстрого перехода в другие разделы.

Базовые приложения

Телефон – на основном экране приложения отображаются: строка поиска с кнопками голосового поиска и вызова настроек приложения, снизу, кнопка вызова номеронабирателя. Вкладка Быстрый набор содержит карточки часто набираемых контактов, вкладка Недавние содержит список последних звонков, вкладка Контакты – соответственно все контакты. В настройках приложения можно управлять шаблонами быстрых ответов и списком заблокированных абонентов.

Контакты – это приложение для работы с контактами пользователя. По функциональности оно мало чем отличается от вкладки Контакты в приложении Телефон.

Сообщения – приложение для работы с SMS по умолчанию. Основной экран приложения содержит список диалогов, кнопки поиска, настроек и создания нового сообщения. Приложение выглядит максимально просто и имеет примитивную функциональность. Из необычного отмечу то, как приложение присваивает каждому диалогу свой уникальный основной цвет.

Gmail – это приложение для работы с электронной почтой по умолчанию начиная с пятой версии Android. В него можно добавлять почтовые ящики не только от Google, но и от других почтовых сервисов. На основном экране отображается список писем и кнопки поиска и создания нового сообщения. Свайпом от левой края экрана вызывается боковая панель, которая содержит список папок и ярлык настроек.

Chrome – является системным браузером по умолчанию, к его плюсам можно отнести интеграцию с сервисами Google и широкие возможности синхронизации вкладок, форм, паролей и т.д., к минусам – неидеальный пользовательский интерфейс и излишняя нагрузка на процессор и аккумулятор.

Часы – включает в себя следующие функции: будильник, мировое время, таймер и секундомер;

Камера . На основном экране расположен видоискатель и кнопки: спуска затвора, переключения на фронтальную камеру, галереи, включения таймера, активации вспышки, переключений режима HDR+, включения сетки, выбора пресета баланса белого и Дополнительно. Переключение между режимами съемки фото и видео производится свайпом в сторону. Кроме основного режима съемки есть еще четыре: Замедленная съемка – позволяет снимать с четырехкратным или восьмикратным замедлением; Панорама – позволяет создавать панорамные фотографии с углом обзора до 360°; Photo Sphere – создание фотосферы; Размытие – позволяет создавать фотографии с искусственным эффектом боке.

Фото – это приложение выполняет роль системной галереи и одновременно с этим является клиентом одноименного сервиса от Google.

Календарь – основным представлением приложения является Расписание, где все события идут одним списком, что интересно: начало каждого месяца в этом списке озаглавлено симпатичной картинкой отражающей основную суть этого месяца. Чтобы посмотреть на месяц, нужно тапнуть на названием текущего месяца в заголовке. Представление можно сменить на День, 3 дня, Неделя и Месяц. В правом нижнем углу отображается кнопка добавления события.

Калькулятор – обладает стандартной и расширенной функциональностью. В портретной ориентации панель с дополнительными функциями (sin, cos, tan, ln и т.д.) вызывается свайпом от правого края экрана, в альбомной же ориентации эта панель видна всегда.

Карты – это приложение-клиент для Карт Google. Основной экран содержит строку поиска и кнопки: кнопка вызова бокового меню, кнопка голосового поиска, кнопка ориентации на север, кнопка определения текущего местоположения и кнопка создания маршрута. В боковом меню можно сохранить выбранный участок карты в память телефона для дальнейшего пользования приложением в оффлайн режиме. В разделе “Хронология” ведется журнал перемещений пользователя. Раздел “Ваши впечатления” содержит отзывы о публичных местах: ресторанах, торговых центрах, салонах красоты и т.д.

Загрузки – простейший менеджер загрузок.

Фирменные приложения

Play Маркет – это клиент магазина приложений и основное фирменное приложение от Google. Посредством него производится покупка, установка и обновление сторонних приложений. Раздел “Игры и приложения” представляет собой виртуальную витрину, где отображаются различные подборки товара, например, Новинки или Самые популярные игры, в виде миниатюр приложений возглавляющих соответствующую подборку и ссылки на весь список. Раздел “Фильмы, музыка, книги” это тоже виртуальная витрина, но на ней представлен соответствующий контент и пресса также в виде подборок и банеров. Раздел “Мои приложения и игры” для удобства пользователя состоит из двух списков: Установленные и Все. Раздел “Список желаний” показывает все товары когда либо отмеченные пользователем как желаемые.

Play Игры – это приложение клиент одноименного сервиса. Раздел “Главная” отображает основные данные о пользователе: имя, уровень, сколько очков опыта нужно набрать для перехода на следующий уровень. Ниже отображаются списки игр: рекомендованные игры, игры в которые играет пользователь и во что играют друзья. Раздел “Мои игры” содержит три вкладки: последние, все и установленные. Раздел “Уведомления” в трех вкладках отображает список приглашений, список подарков и запросов, и список квестов. Раздел “Игроки” в двух вкладках отображает список Добавленных игроков и список Рекомендуемых – друзей друзей. Раздел “Найти игры” так же содержит три вкладки: Рекомендуем, Популярные и Сетевые игры.

Play Музыка – это музыкальный плеер и, одновременно, клиент одноименного облачного музыкального сервиса. Раздел “Главная” отображает список последних действий пользователя: прослушанные или купленные треки. Раздел “Фонотека” отображает все треки пользователя, купленные или закаченные им с компьютера, сортирую во вкладках по плейлисту, исполнителю, альбому или жанру. Присутствует интересная функция “Автомиксы”, она значительно упрощает создание плейлистов из большого количества треков, для создания автомикса достаточно указать имя исполнителя, альбома или жанра, и приложение само создаст новый плейлист. В боковом меню так же присутствует ссылка на Play Маркет, т.к. покупка треков производится только из него. Теперь в настройках есть эквалайзер.

Play Фильмы – это клиент сервиса для покупки/проката фильмов и просмотра на мобильном устройстве . Раздел “Главная” отображает фильмы, сериалы и мультфильмы собранные в плейлисты по жанрам и популярности. Раздел “Библиотека” отображает список купленных или взятых в прокат пользователем фильмов. В боковом меню присутствуют ссылка на Play Маркет.

YouTube – это клиент одноименного сервиса. Основной экран разделен на четыре вкладки: Главная, В тренде, Подписки и Аккаунт. Последняя вкладка содержит разделы: Просмотренные, Мои видео, Оповещения, Покупки и Посмотреть позже; а так же список плейлистов. Окно просмотра ролика удобное и функциональное, но имеет одну неприятную особенность: при открытии ролика начинается его автоматическая загрузка, даже если устройство для доступа к интернет использует мобильную сеть . Поэтому если вы открыли видео не для его просмотра, а, например, для просмотра описания или комментариев, приготовьтесь расстаться с несколькими десятками (сотнями?) мегабайт трафика.

Диск – это приложение для работы с сервисом облачного хранения данных Google Диск. Основной экран отображает корневую директорию хранилища пользователя и список недавно открытых файлов . Раздел “Доступные мне” отображает список файлов других пользователей, к которым открыт доступ. Кроме этого есть разделы: Google Фото, Недавние, Помеченные, Офлайн-доступ и Загруженные. В боковой панели снизу показывается какой объем дискового пространства занят и сколько всего доступно пользователю.

Последние несколько лет Apple и Google последовательно двигают свои операционные системы навстречу друг другу, если быть точным, пытаются зайти друг к другу во фланг. Apple с каждой версией iOS расширяет функциональность и пытается сделать систему более гибкой для пользователя и приложений. Google же пытается исправить традиционные слабые : привести наконец в порядок работу с уведомлениями, сделать единообразным и более выверенным и побороть утечку заряда аккумулятора. И они, надо сказать, двигаются в правильном направлении, жаль что иногда черезчур медленно.

В Android 7.1 лично меня подкупают: более дружелюбные в сравнение с iOS механика многозадачности и работа с несколькими приложениями; гибкость в выборе инструментов для решения тех или иных задач; глубокая интеграция с сервисами Google, которыми я активно пользуюсь; более стройный и логичный пользовательский интерфейс. Нельзя не заметить как Google подчистил список предустановленных приложений избавив пользователя от хлама. Не устраивает меня: сохранившийся дренаж заряда батареи; разнобой в UI подавляющего числа приложений и менее эффективное использование поверхности экрана. Систему, не смотря на постоянные улучшения, до сих пор нельзя назвать полностью безопасной, общая оптимизация в iOS по прежнему лучше. Подводя итог, можно однозначно утверждать, что Android до пятой версии и сейчас это практически две разные системы, радует, что Google нащупали правильное направление и медленно и верно двигаются по нему.

Android поддерживает несколько типов меню. Первый - на телефоне есть отдельная кнопка Menu (в старых телефонах), нажатие которой вызывает меню. В новых устройствах отдельную кнопку убрали, заменив на значок меню в виде трёх точек в вертикальной ориентации. Второй тип - контекстное меню, которое появляется при нажатии и удерживания пальца на экране в нужном месте (также можно нажать и удерживать центральную кнопку на телефоне). Контекстное меню в свою очередь может иметь подменю. Сегодня мы познакомимся с первым типом меню. В данной статье будет рассматриваться работа с меню на новых устройствах под управлением Android 4.0 и выше.

В шаблоне Empty Activity нет меню, поэтому мы создадим его сами. Это поможет вам понять принцип работы и получить общее представление о проекте. Запоминать названия классов, методов и код для обработки выбора пунктов меню необязательно. В других шаблонах меню будет встроено и вы можете сразу использовать его.

Создайте новый проект на основе Empty Activity и запустите его. Никакого меню пока нет.

Создадим несколько строковых ресурсов в файле res/values/strings.xml , которые будут отвечать за пункты меню:

Settings Кот Кошка Котёнок

Теперь создайте новую папку menu в папке res res , | New | Directory ). Далее создайте в созданной папке файл menu_main.xml - имя указывает, что меню относится к основной активности MainActivity (правый щелчок мыши на папке menu | New | Menu Resource File ). Если вы будете создавать приложение с несколькими экранами, то у каждой активности будет отдельное меню со своими настройками. Пока откроем файл menu_main.xml и добавим в полученный шаблон свой код:

Откроем файл MainActivity . Сейчас в нём только один метод onCreate() . Добавим новый метод onCreateOptionsMenu() . Именно данный метод отвечает за появление меню у активности. Выберите в студии меню Code | и в следующим окне начинайте вводить название метода по первым буквам. Можно вводить по первым заглавным буквам, т.е. ocom (o nC reateO ptionsM enu), чтобы быстро найти нужную строку. Нажимаем кнопку OK и получаем заготовку.

@Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); }

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

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; }

В методе inflate() вы указываете на ресурс меню (R.menu.menu_main ) и объект класса Menu .

По английски "inflate" переводится как надувать, т.е. по замыслу разработчиков Android, мы как бы надуваем данными объект, например, меню. Но на самом деле слово "inflate" происходит от словосочетания in flat - в квартиру. Существует старинная традиция запускать в квартиру первым кота, который исследует все закоулки дома и заявляет о своём согласии жить в нём. Так и мы запускаем данные из XML-файла в объект MenuInflater.

Запустите проект. Теперь в правой части заголовка вы увидите значок из трёх точек, выстроенных в вертикальную линию. Нажмите на значок, чтобы увидеть пункт меню Settings .

Как не трудно догадаться, элемент item отвечает за отдельный пункт меню. Добавим ещё три пункта по такому же принципу, меняя только идентификатор и текст для меню:

Запустите проект и попробуйте снова вызвать меню. Вы увидите три новых пункта.

Параметры id и title не нуждаются в объяснениях. Параметр orderInCategory позволяет задать свой порядок вывода пунктов меню. Предположим вы создали пять пунктов меню, но пока не определились с порядком их вывода на экране. Чтобы не перемещать постоянно целые блоки кода для пунктов меню в нужном порядке, можно воспользоваться данным параметром.

И, наконец, важный атрибут app:showAsAction определяет поведение меню в ActionBar . Значение never означает, что элемент меню не должен выводиться в заголовке, а только в всплывающем меню, т.е. находиться за тремя точками. Если вы установите значение always , то пункт Settings сразу появится в заголовке вашего приложения. Также доступны значения ifRooms , withText и collapseActionView . Попробуйте самостоятельно. Например, ifRoom выводит пункт меню, если позволяет место. Если пунктов будет много, то они будут только мешаться. Как правило, в таком варианте выводят очень короткое слово или значок для частых операций, чтобы избежать лишнего щелчка на три точки.

Обратите внимание на атрибут app:showAsAction , который относится к пространству имён xmlns:app="http://schemas.android.com/apk/res-auto" . Было время, когда такого пространства имён не существовало и в проектах использовался атрибут android:showAsAction из стандартного пространства имён. Если студия будет ругаться на ошибку, то отредактируйте код.

Пока пункты меню не выполняют полезной работы. Любое нажатие на пункт просто закрывает меню без видимых последствий. Мы ещё не написали код для обработки нажатий.

Выбор пунктов меню

Мы научились создавать меню. Но пока оно бесполезно, так как пункты меню никак не реагируют на наши нажатия. Для обработки нажатий пунктов меню служит другой метод onOptionsItemSelected() . Добавим метод по такому же принципу, как для предыдущего примера. Получим заготовку.

@Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); }

Параметр item отвечает за пункт меню. Вам следует получить идентификатор меню через метод getItemId() и указать для него код. Так как обычно меню состоит из нескольких пунктов, то удобно использовать конструкции if/else или switch . Для вывода информации воспользуемся текстовой меткой. Добавьте на экран активности компонент TextView . Можете использовать имеющийся TextView с надписью "Hello World!", только присвойте ему идентификатор.

android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/>

Добавим код в заготовку для выбранного пункта меню:

@Override public boolean onOptionsItemSelected(MenuItem item) { // получим идентификатор выбранного пункта меню int id = item.getItemId(); TextView infoTextView = (TextView) findViewById(R.id.textView); // Операции для выбранного пункта меню switch (id) { case R.id.action_cat1: infoTextView.setText("Вы выбрали кота!"); return true; case R.id.action_cat2: infoTextView.setText("Вы выбрали кошку!"); return true; case R.id.action_cat3: infoTextView.setText("Вы выбрали котёнка!"); return true; default: return super.onOptionsItemSelected(item); } }

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

Существует альтернативный способ через XML, похожий на обработку щелчков кнопки (начиная с Android 3.0). Вы можете добавить атрибут android:onClick в ресурсах меню, и вам не нужно использовать вызов метода onOptionsItemSelected() . При помощи android:onClick вы можете указать нужный метод при выборе пункта меню. Добавьте данный атрибут к пункту Settings

Теперь в коде активности напишем следующее:

// у атрибута пункта меню Settings установлено значение android:onClick="onSettingsMenuClick" public void onSettingsMenuClick(MenuItem item) { TextView infoTextView = (TextView) findViewById(R.id.textView); infoTextView.setText("Вы выбрали пункт Settings, лучше бы выбрали кота"); }

Переключатели

Внешний вид пунктов меню можно изменить на вид с переключателями. Для этого нужно добавить элемент group с атрибутом android:checkableBehavior="single" :

Большого смысла в этом режиме я не вижу. И рассматривать его не будем.

Режим Design

В Android Studio 2.2 добавили графический режим построения меню, которых похож на панель инструментов для добавления новых компонентов на экран. У меню панель состоит из четырёх элементов: Menu Item , Search Item , Menu , Group .

Принцип тот же, выбираете нужный элемент и перетаскиваете его на экран в область меню. Если вы изучили ручное создание меню, то данный способ не вызовет у вас затруднений. С его помощью можно быстро набросать структуру меню, а затем подправить вручную.