Итак, давайте сегодня создадим простое меню, для приложения на Android. Создадим новый проект. Назовем его Mymenu, нажмем next. Выберем Empty Activity. Нажмем finish.
Система Android studio подготовит нам новый проект, перейдем в gradle скрипы. В Build gradle, добавим новую имплементацию. Нам понадобятся пакет
implementation "com.android.support:design:26.0.0-beta1"
По крайней мере, в моем проекте. Нажмем синхронизировать проект.
Пункты меню
Перейдем в папку Res и создадим в ней новую Andriod ресурсную папку с ресурсным типом - меню. В ней же, создадим новый ресурс файл меню. Имя файлу присвоим, как и имя папки - menu.
На наше основное меню перетаскиванием, добавим MenuItem в количестве 3 штук.
В файле strings.xml напишем новые название, для пунктов меню, создав дополнительные строковые значение для них.
Пусть item1 будет Пункт 1, item2 Пункт 2, и item3 пусть будет Выход.
Пункт 1
Пункт 2
Выход
В текстовом варианте menu.xml присвоим названия из strings.xml для наших пунктов. Также для каждого item мы добавим, Android:id с именем action1, action2,action3,
для взаимодействия с данными пунктами. Действие номер 1 будет отвечать за что-то, какая то реакция, нажатие пункта Action 2, соответственно, будет отвечать за другие действие, Action 3 будет отвечать за выход из приложения.
В файле MainActivity напишем несколько функций для работы с меню:
onCreateOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
switch (id){
case R.id.action1:
txt.setText(R.string.item1);
return true;
case R.id.action2:
txt.setText(R.string.item2);
return true;
case R.id.action3:
txt.setText(R.string.item3);
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Объявим переменную типа TextView txt, и свяжем ее с элементом TextView, в onCreate через
txt=(TextView)findViewById(R.id.txt),
в макете activity_main.xml, добавив ему
android:id="@+id/txt"
для отображения текста.
Запустим в эмуляторе наше приложение. Как видим, появляются пункты меню, при нажатии на значение Пункт 1 или 2, текст меняется на Пункт 1 или Пункт 2, при нажатии на кнопку Выход появляется текст Выход и приложение закрывается.
Верстка меню
Кажется, все хорошо. Однако, как всегда в Android Studio данное меню будет работать только на эмуляторе, и поэтому добавим в файл styles.xml небольшой код, а перед этим в AndroidManifest.xml изменим
android:theme="@style/AppTheme"
android:theme="@style/AppTheme.NoActionBar"
который говорит о том, что новый стиль без ActionBar. Также в MainActivity onCreate внесем переменную toolbar c типом ToolBar. Определим ее через toolbar = (Toolbar)findViewById(R.id.toolbar), и подключим поддержку setSupportActionBar(toolbar).
В макет activity_main.xml перед TextView добавим следующий код:
Подключим эти виджеты в импорт нашего приложения.
import android.support.v7.widget.Toolbar;
Нажмем Alt+Enter, и у нас добавится, обновится импорт нашего приложения. Возможно, придется сделать несколько раз для подключения виджета. Нажмем Сохранить.
Теперь мы можем запустить наше приложение в эмуляторе. Все выглядит точно также, но без данного кода, наше приложение не может быть установлено на реальное устройство. Давайте сделаем подписанное приложение.
При длительном нажатии на кнопку питания смартфона или планшета мы, как правило, вызываем меню выключения с двумя опциями: «Выключить» и «Перезагрузить». По большому счету обычному пользователю этого вполне достаточно, и менять что-либо он не будет. Другое дело – продвинутые пользователи, которые не понаслышке знают, что такое Recovery Mode, Bootloader, «мягкая перезагрузка» и были бы не против расширить скудное меню этими функциями. В статье мы расскажем, как это сделать.
Что можно добавить в меню выключения Android
Стоит понимать, что системное меню выключения на Android является элементом пользовательского интерфейса, которое также поддается видоизменениям. В принципе, сюда можно добавлять практически любые параметры. Чаще всего, это различные варианты перезагрузки устройства, звуковые профили и другие системные настройки.
Опытные пользователи мобильных устройств на Android хоть раз в своей жизни перепрошивали свои гаджеты. При этом очень часто они используют специальный режим загрузки Android – Recovery Mode. Он позволяет не только прошить аппарат, но и сделать полный сброс системы до заводских настроек, создать резервную копию, очистить память телефона, получить ROOT и многое другое. Для входа в этот режим обычно используются комбинации нажатий кнопок устройства. Причем для каждой марки смартфона или планшета они могут быть разными. Чтобы не задаваться этим вопросом и каждый раз не нажимать обозначенные кнопки, этот параметр можно добавить в меню выключения.
Мы рассмотрим несколько вариантов изменения системного меню выключения с помощью модуля для Xposed и приложений Material Power Menu и Quick Reboot. Для корректной работы все они требуют наличия на устройстве .
Внимание!
Действия, описанные в этой статье, вы совершаете на свой страх и риск. Если вы не совсем понимаете, зачем вам это нужно, лучше ничего не делайте. Редакция сайта Трешбокс не несет ответственности за «окирпичивание» ваших устройств.
Модуль Advanced Power Menu для Xposed
Преимуществом данного способа является то, что все изменения интегрируются непосредственно в системное меню выключения Android. Для изменения параметров выключения устройства вам понадобится специальная среда выполнения . Откройте приложение , перейдите в репозиторий и найдите там
Advanced Power Menu (APM+)
. Установите модуль и не забудьте активировать его в настройках Xposed. Перезагрузите устройство.
APM+ очень прост в использовании. При первом запуске вы увидите пункты системного меню выключения. Здесь можно удалять имеющиеся пункты, создавать новые и менять их расположение путем перетаскивания. Для некоторых опций утилита позволяет настраивать расширенные параметры в пределах каждого пункта меню. Например, по нажатию на «Перезагрузить» система предложит выбрать тип перезагрузки: обычная, «мягкая», Recovery Mode и Bootloader.
С помощью APM+ можно добавить в меню фонарик, Wi-Fi, звуковые профили, режимы мобильной сети, передачу данных, скриншот, быстрый набор номера и запись экрана. В дополнение к этому внешний вид самого меню также можно незначительно украсить, применив одну из тем оформления.
Но наиболее полезной особенностью модуля APM+ являются «противоугонные» функции. Они позволяют отключить некоторые элементы меню или защитить их паролем, добавить текстовое предупреждение на экране блокировки и прочее. Также интересным выглядит возможность создать фальшивый пункт «Выключить», который имитирует выключение устройства, а на самом деле выполняет другие, отмеченные пользователем в настройках, действия.
Advanced Power Menu лучше всего подходит для устройств со стоковым Android 4.0 и выше. На многих фирменных оболочках модуль не работает, разработчиком заявлена поддержка только Xperia UI и TouchWiz. Сейчас, по всей видимости, работа над модулем приостановлена. Утилита уже более года как не получала обновление, а ее последняя версия лишь частично поддерживает Android 6.0. Тем не менее, если у вас есть аппарат на KitKat или Lollipop – можете попробовать поставить на него APM+.
Как известно, Android KitKat содержит более расширенное меню выключения, нежели Lollipop и Marshmallow. В нем, кроме пунктов «Выключить» и «Перезагрузить» есть еще «Режим полета» и звуковые профили. Приложение Material Power Menu возвращает их в меню на устройствах с Android 5.0 и выше. В качестве бонуса утилита содержит опции для входа в режим загрузчика и восстановления, а также «мягкую» перезагрузку, при которой перезапускается только интерфейс системы. Еще одной интересной функцией программы является Safe Mode (безопасный режим). В этом режиме, по аналогии с компьютером, система Android загружается с отключенными сторонними приложениями. Если вы, например, подхватили какой-нибудь троян или другой зловред, можно использовать Safe Mode для его удаления из системы.
Material Power Menu работает независимо от механической кнопки питания устройства. Для удобства вызова меню выключения можно вынести ярлык приложения на рабочий стол. Таким образом, утилита окажется полезной в случае, если у вас сломалась кнопка питания. При наличии ROOT и Xposed, Material Power Menu интегрируется в среду в качестве программного модуля и полностью заменяет системное меню выключения Android. Правда включается это меню не совсем удобно – повторным долгим нажатием на кнопку питания. Но на некоторых прошивках это может не сработать.
Единственным существенным недостатком приложения является отсутствие русского языка, а также тот факт, что программа не позволяет добавлять новые или изменять существующие пункты в меню выключения.
В отличие от предыдущих решений, данный способ с использованием приложения Quick Reboot не предусматривает каких-либо изменений в системном меню выключения Android. Quick Reboot – это довольно простая утилита, задача которой заменить собой кнопку питания устройства. То есть вы можете выключать свой смартфон или планшет по старинке (с помощью кнопки питания), либо через это приложение. Кроме основных параметров меню выключения, программа позволяет перезагрузиться в режим восстановления или загрузчика без запоминания комбинаций клавиш. Для удобства запуска команд Quick Reboot имеет виджеты.
Приложение имеет простой интерфейс с поддержкой русского языка, темы оформления и более 10 пользовательских опций для меню выключения. В целом все пункты меню работают исправно, а чего-то большего от утилиты ждать не стоит.
В итоге
Подводя итоги, можно выделить два основных момента, при которых подобные утилиты могут пригодиться. Первый – когда вы хотите модифицировать системное меню выключения Android и расширить его функциональные возможности необходимыми вам опциями. В этом случае советуем попробовать Xposed-модуль Advanced Power Menu с отличным набором функций.
Второй – это тот момент, когда у вас не работает кнопка питания или громкости (для комбинации, чтобы войти в режим загрузчика или восстановления) или наблюдаются проблемы с их нажатием. В этой ситуации такие приложения, как Material Power Menu и Quick Reboot придутся как нельзя кстати.
Android в своем стандартном виде выглядит бедно. Да, все необходимые функции вроде бы есть, а включить показ процентов батареи до сих пор нельзя. Есть красивая анимация загрузки, но толку от нее - ноль. Поддержки тем как не было, так и нет. И что теперь - ставить очередной кастом, завтрашняя ночная сборка которого обязательно заглючит? Нет, мы все сделаем, имея только root. Читайте дальше и узнаете как изменить интерфейс Android.
ПОДГОТОВИТЕЛЬНЫЕ ШАГИ
Для выполнения многих описанных в статье трюков нужен root и зависящий от него . В стандартном варианте он будет на 100% корректно работать только в AOSP-прошивках, но даже в них могут встретиться глюки. Проблемы с Xposed-модулями часто могут возникать в стоковых прошивках с модификациями от производителя, но для них есть специальная версия Xposed: для TouchWiz , для MIUI , для прошивок на базе Android 5.0+ . Владельцы HTC могут устанавливать официальную сборку, но почти всегда требуется S-OFF.
Получил root, установил Xposed? Тогда поехали.
1. МЕНЯЕМ АНИМАЦИЮ ЗАГРУЗКИ
Анимация загрузки хранится в файле /system/media/bootanimation.zip. Внутри содержится текстовый документ desc.txt, в нем указаны частота смены кадров, разрешение по горизонтали и вертикали и прочее. Там же лежат сами изображения (кадры), которые меняются с частотой, указанной в desc.txt. Порядок и правила воспроизведения анимации из папок тоже прописаны в этом файле.
Все, что тебе нужно сделать, - достать архив с устройства при помощи файлового менеджера с поддержкой root, распаковать и заменить изображения, не забыв их предварительно пережать в нужном разрешении. Далее достаточно запаковать архив без сжатия и вернуть на место. Но, конечно же, проще взять уже готовый архив. На сайте hboot.co.uk
таких полно.
С другой стороны, смотреть на анимацию хоть и интересно, но смысла никакого. А вот видеть, какие службы запускаются, бывает полезно. Самый простой вариант - установить LiveBoot , который выводит logcat и dmesg, то есть сообщения Android и ядра Linux.
2. ДОБАВЛЯЕМ СВОИ ЗВУКИ В СТАНДАРТНЫЙ НАБОР
Звуки можно скидывать в одну из папок в /system/media/audio. alarms - мелодии для будильника;
notifications - звуки для уведомлений;
ringtones - мелодии звонка;
ui - системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса. Некоторые приложения могут обращаться к ним по умолчанию, следовательно, их можно заменить на свои.
Зачем складывать мелодии в системный раздел? Во-первых, файлы там способны выдержать общий сброс к заводским настройкам; во-вторых, звуки из специальных папок можно поставить на сигнал (звук будильника, звонок, получение СМС) практически в любом приложении.
3. МЕНЯЕМ ШРИФТЫ
В полезности этих действий я очень и очень сомневаюсь, потому что стандартный шрифт Android почти идеален. Но на вкус и цвет…
Для установки шрифтов можно использовать специальное приложение. Например, HiFont позволяет без root менять шрифты в прошивках Samsung, HTC, Motorola, Lenovo, Huawei, Nokia X. А если есть root, то и во всех остальных устройствах. Можно как использовать уже имеющиеся в каталоге приложения шрифты, так и добавить свои.
Но где их брать? Есть три варианта:
- шрифты, выдранные из разных прошивок Android-устройств, можно найти в посте на 4PDA ;
- на 4PDA же есть неплохая коллекция шрифтов, созданных пользователями, в соседнем посте ;
- коллекция на XDA .
Установить шрифты можно и без использования специального приложения. Берем из архива файлы.ttf, кидаем их с заменой в /system/fonts/ (нужен root) и перезагружаем устройство.
4. МЕНЯЕМ ИКОНКИ
Иконки можно менять с помощью специальных приложений, например Unicon - Icon Themer. После установки необходимо активировать приложение в настройках Xposed (он сам тебя уведомит). Далее перезагружаем смартфон и открываем приложение. Осталось нажать на Download themes from Google Play и выбрать пакет иконок, установить его и перезагрузить смартфон. Но стоит учитывать, что иконки не меняются в некоторых лаунчерах, например Google Старт.
5. ДОБАВЛЯЕМ ПОДДЕРЖКУ ТЕМ
Перед установкой темы HKThemeManager покажет весь список приложений, к которым будет применена тема. Убираем галочки с тех, что не нужны, нажимаем на «Применить тему» и перезагружаем устройство.
Есть и альтернативный вариант установки тем - приложение Layers Manager . Оно работает в любой прошивке на Android 5.0+ благодаря появлению механизма переназначения ресурсов RRO. База тем у приложения огромна и находится на Play Market. Чтобы посмотреть ее, достаточно набрать в поиске Layers Theme.
Имей в виду, что приложение не работает на прошивках, основанных на CyanogenMod: тамошний движок и RRO конфликтуют.
6. ПРЕВРАЩАЕМ ANDROID 5.X+ В ANDROID N
В этом нам поможет модуль Android N-ify . После установки появятся следующие фишки из Android N:
- дизайн панели уведомлений заметно преобразится. Появится панель быстрых настроек;
- в настройках под некоторыми пунктами возникнут интересные надписи.
- К примеру, под Wi-Fi будет написано название текущей точки доступа, под пунктом «Батарея» - оставшееся время работы и заряд аккумулятора в процентах;
- в меню «О телефоне» поменяется пасхалка;
- появится быстрое переключение между двумя последними запущенными приложениями с помощью двойного нажатия на кнопку «Недавние».
Есть у Android N-ify и полезные настройки, через которые можно не только отключить, но и настроить отдельные вносимые изменения.
7. УЛУЧШАЕМ СТРОКУ СОСТОЯНИЯ
Для меня строка состояния в стоковом Android - самая недоработанная штука. К счастью, с помощью Xposed можно многое изменить и сделать ее более удобной.
8. Меняем индикатор батареи
Battery Home Icon устанавливает индикатор батареи вместо кнопки «Домой». Причем этот индикатор хорошо поддается настройке: можно менять цвета, включать/отключать показ процентов, анимацию зарядки и так далее.
XbatteryThemer - настройка значка батареи. Присутствует много различных тем, как обычных, так и очень неординарных.
9. Выводим скорость интернет-соединения
Network Speed Indicator - индикатор скорости сети. Умеет показывать скорость мобильных сетей, Wi-Fi, Bluetooth, Ethernet. Настраивается все - от единиц измерения и порога скорости до цвета и размера шрифта. Также можно добавить в строку состояния количество использованного интернет-трафика с помощью DataUsage . Данные показываются те же, что и в разделе настроек «Передача данных».
10. Выводим реальный уровень сигнала
Иногда нужно знать, насколько хорошо ловит интернет в разных частях комнаты, как влияет положение смартфона на уровень приема сигнала, или просто необходимо сравнить уровень приема сигнала твоего смартфона и других моделей. В этом поможет NetStrength . Модуль умеет выводить уровень сигнала сотовой сети в децибелах к милливатту (дБм или dBm). Эта единица измерения имеет отрицательное значение, и чем оно ближе к нулю, тем лучше прием. Можно также включить показ ASU (Arbitrary Strength Unit - отношение сигнал/ шум в пилотном канале). Вычисляется по формуле ASU = (dBm + 113)/2.
Кстати, модуль умеет показывать уровень приема Wi-Fi в dBm, Mbps (Мбит/с - мегабит в секунду) и процентах.
11. Следим за процессом загрузки
Statusbar Download Progress - один из самых полезных модулей Xposed. Он выводит процесс загрузки из Play Market или файла из интернета в виде тонкой белой полосы над строкой состояния. Сразу рекомендую активировать «Режим бога», благодаря которому прогресс будет отображаться для любых приложений, имеющих индикатор выполнения. В настройках можно поставить отображение над строкой состояния или под строкой.
Первого месяца обучения. Рассмотрим работу с меню глубже. Будут рассмотрены как старые устройства под Android 2.3, так и новые телефоны на Android 4.0.
Меню выбора опций (Options Menu)
За меню отвечает класс android.view.Menu
. Каждая активность связана с одним объектом меню. Само меню содержит пункты меню (класс android.view.MenuItem
) и подменю (класс android.view.SubMenu
).
При нажатии кнопки Menu
на старых телефонах появляется набор пунктов меню, прикрепляемый к активности. Меню может содержать значки. Такое меню может содержать шесть пунктов (как правило). При наличии более шести пунктов используется расширенное меню - в этом случае вместо шестого пункта появляется пункт Опции
(More). При нажатии данного пункта показывается расширенное меню со списком пунктов, которые не поместились в основной части меню выбора опций.
Когда меню открывается впервые, Android вызывает метод onCreateOptionsMenu()
, передавая в качестве параметра объект Menu
. Меню можно создавать в виде ресурсов в XML-файле или использовать метод add()
.
В стандартном проекте при выборе обычного шаблона уже есть заготовка для меню из одного пункта Settings
и вызов метода для меню (вы об этом уже знаете).
Создание меню при помощи ресурсов
Рассмотрим работу с меню через ресурсы. Для создания меню используются ресурсы, которые должны храниться в XML-файле. Сам файл должен находиться в папке res/menu/
вашего проекта. Меню состоит из следующих элементов: