- Тайны кнопок в Android. Часть 3: Кнопки в главном меню
- Наша первая кнопка в меню
- Иконки для меню
- Подключение меню к Activity
- Создаем подменю
- Radio button’ы в меню
- Скрываем или показываем элементы меню
- Другие способы кастомизации меню
- Как войти и настроить инженерное меню на Андроид
- Что можно настроить
- Как открыть
- MTK Engineering Mode
- Mobileuncle Tools
- Запуск инженерного меню МТК
- Режим восстановления
- Примеры
- Дополнительные коды
- Заключение
Тайны кнопок в Android. Часть 3: Кнопки в главном меню
Главное меню — один из основных инструментов для взаимодействия пользователя с приложением. В Android 2.3.x и раньше оно было «спрятано» на аппаратной кнопке Menu, и разработчики рисовали меню кто как умел. Но начиная с Android 3.0 недоработка была исправлена, меню стало стандартным компонентом на Action Bar, и получило ряд новых возможностей. При этом процесс разработки меню практически не претерпел изменений. Меню в Android — это не просто набор кнопок, на которые можно вешать OnClickListener . В Android с меню можно сделать куда больше, чем кажется на первый взгляд.
В этой статье я расскажу, как сделать современное меню, как адаптировать его для разных размеров экрана, как делать переключатели типа radio button прямо в меню, а также как динамически управлять видимостью кнопок меню, скрывая те функции вашего приложения, которые не будут работать на том или ином смартфоне. По ходу статьи постараюсь дать максимально подробное описание тех или иных возможностей меню, а также дам ссылки на официальную документацию по теме.
Вот так по-разному может выглядеть меню одного и того же приложения.
Наша первая кнопка в меню
Меню в Android описываются в файлах ресурсов или формируются программным кодом. Рекомендуется первый вариант по целому ряду причин: скорость разработки, наглядность, простота сопровождения. Ресурсы меню располагаются в подкаталоге menu каталога ресурсов приложения res . Создаем каталог menu , затем создаем новый Android XML File :
Выбираем тип ресурса Menu , вводим имя файла. Так как в разных activity меню, скорее всего, будет разным, рекомендую привязывать имена файлов ресурсов меню к именам 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 :
Теперь меню отображается, но при нажатии на кнопку ничего не происходит. Повесить обработчик на кнопку можно кодом или прямо в XML-ресурсе, задав в свойстве android:onClick имя метода-обработчика. Чтобы сделать то же самое кодом, нужно в Activity перекрыть метод onOptionsItemSelected :
Создаем подменю
Подменю полезно, когда мы хотим уточнить способ выполнения действия, представленного в action bar. К примеру, у нас есть список покупок и кнопка «Сортировка». По нажатию кнопки нужно выяснить, по какому параметру пользователь хочет отсортировать элементы списка: по категории товара, по названию или по порядку добавления в список. Посмотрим код подменю для такого случая:
Здесь мы объявили еще один тег внутри тега . Подменю представляет собой группу все тех же тегов , что позволяет при необходимости сделать подменю в подменю и так далее.
Radio button’ы в меню
Мы только что сделали меню для выбора порядка сортировки покупок. Было бы здорово показывать, какой способ сортировки используется в текущий момент. Список может быть отсортирован только одним из трех возможных способов, что отлично соответствует идее radio button. Чтобы сделать из нашего подменю набор radio button, достаточно тегу указать свойство android:checkableBehavior=»single» . Возможные значения android:checkableBehavior :
- single — выбор только одного из доступных элементов, наш случай
- all — выбор любого количества доступных элементов, аналог check box
- none — элементы группы являются обычными элементами меню, это значение по умолчанию
Полученный код меню:
Если запустить приложение и попробовать выбрать один из способов сортировки, ничего не произойдет. В меню не показано, что какой-то элемент выбран. Это придется сделать вручную вызовом item.setChecked(true);
Скрываем или показываем элементы меню
Скрывать элементы меню полезно, если телефон временно или в принципе не может выполнить какой-либо функционал. Например, у нас есть кнопки для отправки списка покупок через соц. сети, но если интернет сейчас не подключен, то отправить список не получится. Чтобы не расстраивать пользователя сообщениями об ошибке, можно скрыть неработающие в данный момент кнопки. Давайте добавим кнопку «Поделиться»:
Теперь во время создания меню в методе onCreateOptionsMenu проверим доступность сети, найдем нашу кнопку и установим ей видимость:
Так мы подстраиваем меню в момент создания activity. Этого достаточно для тех функций, которые требуют наличия определенного аппаратного обеспечения в телефоне (камера и т.п.). Но интернет может включиться в любое время, даже после старта activity. Также иногда возникает желание перестроить меню после каких-то действий пользователя в приложении. Перестроить меню предельно просто. Вызываем метод invalidateOptionsMenu() нашей activity. Это приведет к повторному вызову метода onCreateOptionsMenu перед следующей отрисовкой меню. Обратите внимание, что метод invalidateOptionsMenu был добавлен в API 11, поэтому для совместимости с Android 2.x нужно использовать такой вызов:
Класс android.support.v4.app.ActivityCompat можно найти в Support Package.
Другие способы кастомизации меню
Как вы знаете, в Android можно задавать разные ресурсы для различных размеров/ориентации/плотности экрана и в зависимости от других особенностей устройств. Это касается любых типов ресурсов, в том числе и меню. По умолчанию ресурсы меню загружаются из каталога /res/menu. Но вы можете создать каталог, например, /res/menu-sw600dp, и таким образом задать особую компоновку меню для устройств с минимальным размером экрана 600 dp по горизонтали или вертикали (это как правило соответствует 7-ми дюймовым планшетам). На практике для меню обычно достаточно указания свойства android:showAsAction=»ifRoom» для элементов, так как в результате мы получаем максимально точную «подгонку» меню к тому устройству, на котором будет работать приложение. К тому же это позволяет сильно уменьшить объем кода ресурсов, ведь их в этом случае не нужно дублировать.
Если у вас остались вопросы по работе с главным меню, буду рад ответить в комментариях.
Источник
Как войти и настроить инженерное меню на Андроид
Стандартных настроек смартфона не всегда достаточно. Максимально усилить звук, увеличить размер шрифта, снизить разряд батареи – все это можно сделать только через инженерное меню ОС Андроид. Это скрытое приложение есть в каждом телефоне, а предназначено оно для разработчиков. Мы расскажем, как любой пользователь может войти в этот специальный режим и изменить системные параметры.
Что можно настроить
Вход в системное инженерное меню открывает доступ к ряду настроек. Их точный перечень зависит от модели мобильного устройства, его аппаратных характеристик, наличия специальных датчиков. Не забывайте, что самостоятельное изменение системных параметров может серьезно нарушить некоторые функции ОС. Действуйте осторожно и не меняйте все наугад, перед редактированием лучше записать предыдущие значения, чтобы иметь возможность наладить смартфон.
Общий список системных разделов обычно включает пункты:
- Telephony – мобильная связь.
- GPRS – мобильный интернет и Sim-карта;
- NetworkInfo – проверка качества сотовой сети;
- Auto Answer – активация автоответа на вызов;
- HSPA Info – данные 3G сети;
- CFU Setting – настройка переадресации;
- Band Mode – выбор частот GSM, неиспользуемые можно отключить для экономии заряда аккумулятора;
- RAT Mode – установка приоритетного стандарта связи;
- Modem Test – тест на совместимость с различными устройствами при работе в качестве «точки доступа»;
- Fast Dormancy – экономия заряда в сетях 3G.
- Connectivity – беспроводные соединения.
- Bluetooth – настройка и тестирование модуля Bluetooth на прием и передачу данных;
- Wi-Fi – проверка работы Wi-Fi;
- CDS Information – параметры беспроводных сетей;
- FM Receiver – тест FM-модуля.
- Hardware testing – тестирование аппаратных характеристик.
- Audio – параметры громкости для звонка и музыки, динамика при разговоре, чувствительность микрофона;
- CPU Test – проверка функций центрального процессора;
- ChargeBattery – информация об аккумуляторе;
- Camera – дополнительные параметры фото и видеосъемки;
- Mult-Touch – включение реакции на множественные нажатия;
- Sensor – калибровка сенсорного экрана;
- Sleep Mode – активация спящего режима.
Названия и порядок пунктов будет отличаться в разных моделях и в зависимости от метода входа в меню Андроид – через сервисные коды или специальные приложения.
Как открыть
Запустить секретное приложение нельзя через обычный интерфейс. Как войти в инженерное меню в Андроид:
- откройте окно звонков, где можно ввести номер телефона с клавиатуры;
- впишите специальную комбинацию символов;
- если сразу после ввода кода меню не запустилось, кликайте на кнопку вызова.
Комбинация символов у каждого производителя своя, она содержит цифры и специальные символы *,#. Например, инженерное меню гаджетов Самсунг запускается через ввод последовательности *#*#4636#*#*.
Если после ввода кода ничего не произошло, используйте приложения из Google Play, которые умеют работать с инженерным меню. Большинству из них понадобятся root-права на устройство, без них программа будет функционировать нестабильно, часть параметров станет недоступна.
MTK Engineering Mode
Полная копия стандартного инженерного меню.
Mobileuncle Tools
Утилита с расширенными возможностями. Кроме просмотра и изменения базовых настроек, позволяет проводить восстановление IMEI, обновлять прошивку и улучшать сигнал GPRS. Выводит полные характеристики сенсора, экрана, памяти.
Запуск инженерного меню МТК
Утилита для аппаратов с процессорами MediaTek. Успешно загружает инженерные функции, но отмечены ошибки сохранения параметров – после перезагрузки они могут обнулиться.
Режим восстановления
Еще один режим для разработчиков – восстановление смартфона. Он пригодится при возникновении проблем с устройством, серьезных ошибках. Если телефон не включается, попасть в обычное меню вы не сможете, а вот запустить режим восстановления скорее всего получится.
Для запуска используйте сочетание кнопки включения и клавиши прибавления или уменьшения звука. Иногда дополнительно надо нажать Home. Зажмите и держите указанные кнопки до начала загрузки.
Самый полезный пункт в этом режиме – wipe data. Он запускает полный сброс, возвращая аппарат к заводским настройкам. При этом вы потеряете все свои данные и программы, но получите чистый телефон. Сброс поможет, если вы перемудрили с изменениями в инженерном меню, установив неработоспособные значения.
Примеры
Рассмотрим несколько примеров полезных действий, которые можно совершить только в секретном системном приложении.
- Как увеличить громкость на смартфоне с Андроид через инженерное меню: заходите во вкладку Harware и пункт Audio. Выбирайте режим, значения которого будете изменять: чтобы добавить громкость динамику Андроид в разговоре – Normal mode, громкой связи – LoudSpeaker, в наушниках – Headset. Заходите в режим, меняйте тип функции: Ring – звонок, Sip – звонок через интернет-канал, Media – проигрывание музыки, Mic – микрофон. У каждой функции есть 7 уровней звука, от 0 до 6. Последовательно выбирайте каждый из них и выставляйте значения в Value, в конце обязательно кликайте на Set – иначе параметр не сохранится.
- Отключение частот для экономии расхода батареи: открывайте подраздел Band mode. В списке частот оставьте только используемые в вашей стране, для России это 900 и 1800 МГц. С остальные пунктов убирайте галочки и нажимайте Set, чтобы аппарат не тратил заряд на сканирование не поддерживаемых диапазонов. Если в смартфоне вставлено 2 сим-карты, отключать частоты надо для каждой из них – в этом случае в меню появятся подпункты SIM1 и SIM2.
- Улучшение качества фотографий. Открывайте подраздел Camera, редактируйте формат фото – можно выставить RAW вместо обычного JPEG, размер и частоту кадров, значение ISO.
Дополнительные коды
Получить доступ к инженерным функциям в Андроиде можно и без меню, через специальные коды. Они вводятся как набор номера, позволяя проводить тесты аппаратных комплектующих и выводить о них техническую информацию.
Кроме общих кодов, у ряда производителей есть свои специфические:
- Sony: **05***# — сброс PUK-кода;
- Samsung: ##778 – запуск системного меню;
- Motorola: *#*#2432546#*#* — проверка обновлений, *#06# — покажет IMEI;
- HTC: ##3282# — вызывает системное приложение, ##3424# — полный тест гаджета, ##7738# — проверка протокола.
Также для работы с кодами удобно использовать программу Secret Codes. Установите ее на устройство, приложение запустит поиск комбинаций для управления ОС и выдаст их полный список. Для проверки значения вам не придется переписывать его, запустить функцию можно одним кликом по ее названию.
Заключение
Мы разобрались, что можно делать через инженерное меню и как его открыть на устройствах Андроид. Секретный режим открывает пользователям широчайшие возможности по персонификации гаджета и много вариантов по нарушению его работы. Поэтому вносите изменения в системные настройки с осторожностью. Если же в результате появятся серьезные ошибки – проведите откат через режим восстановления.
Источник