Другое меню для андроид

Тайны кнопок в 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 нужно использовать такой вызов:

Читайте также:  Applocker для андроид что это

Класс android.support.v4.app.ActivityCompat можно найти в Support Package.

Другие способы кастомизации меню

Как вы знаете, в Android можно задавать разные ресурсы для различных размеров/ориентации/плотности экрана и в зависимости от других особенностей устройств. Это касается любых типов ресурсов, в том числе и меню. По умолчанию ресурсы меню загружаются из каталога /res/menu. Но вы можете создать каталог, например, /res/menu-sw600dp, и таким образом задать особую компоновку меню для устройств с минимальным размером экрана 600 dp по горизонтали или вертикали (это как правило соответствует 7-ми дюймовым планшетам). На практике для меню обычно достаточно указания свойства android:showAsAction=»ifRoom» для элементов, так как в результате мы получаем максимально точную «подгонку» меню к тому устройству, на котором будет работать приложение. К тому же это позволяет сильно уменьшить объем кода ресурсов, ведь их в этом случае не нужно дублировать.

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

Источник

10 приложений с темами и обоями для кастомизации Android

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

Тем не менее менять внешний вид Android можно и с помощью старых проверенных методов: различных наборов иконок, обоев, сторонних лаунчеров. А можно и вовсе пуститься во все тяжкие с приложениями для создания виджетов. С темой на Android можно сотворить все что угодно и, честно говоря, одной статьи не хватит для того, чтобы рассказать обо всех способах кастомизации. Сегодня мы перечислим лучшие из них.

Action Launcher

Оформление интерфейсов лучше всего начать с Action Launcher. Этот лаунчер уже включает в себя несколько базовых тем. В зависимости от установленного изображения рабочего стола, лаунчер автоматически меняет свой цвет.

В приложении можно найти ярлыки в стиле Android 7.1, панель быстрого запуска и элементы из лаунчера Google Pixel. Кроме того, лаунчер предлагает умное управление размером иконок. Action Launcher позволяет создавать различные темы для Android.

Еще одним лаунчером, предлагающим широкие возможности для настройки оформления системы, является Evie Launcher.

Energy Bar

Energy Bar / Ring – это группа приложений, с помощью которых можно расположить шкалу индикатора заряда батареи у верхнего края экрана. Такая шкала позволит быстро оценить оставшееся время работы гаджета.

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

Gboard и SwiftKey

Gboard и SwiftKey – одни из самых популярных клавиатур для устройств на базе Android, обе отлично подходят для кастомизации интерфейса.

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

Есть и другие клавиатуры с подобным функционалом, однако Gboard и SwiftKey – одни из лучших с точки зрения удобства использования и кастомизации. Кроме того, они бесплатны и не предлагают рекламу. Спасибо Google и Microsoft!

KWGT и KLWP

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

KLWP – это редактор живых обоев, основанный на принципе WYSIWYG, позволяющий редактировать обои своему усмотрению.

KLWP и KWGT имеют много общих особенностей, оба отлично подходят для создания тем на Android. Разработчик также предлагают KLCK Kustom Lock Screen для настройки экрана блокировки.

Читайте также:  Расширить специальные возможности андроид

Nova Launcher

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

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

Также в Google Play можно найти темы для этого лаунчера, что добавляет еще больше разнообразия, или можно скачать специальный плагин, который на иконках будет отображать новые уведомления. Платная версия предлагает еще больше дополнительных возможностей.

Reddit

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

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

В любом случае вы ничего не теряете, ведь Reddit – бесплатный ресурс, если не считать добровольной месячной подписки, которая избавит вас от рекламы и предоставит доступ к некоторым дополнительным настройкам.

Tapet

Сейчас можно найти множество классных обоев, но Tapet выделяется из общей массы. Это первое приложение, которое автоматически создаёт обои из загруженных в него паттернов. Оно предлагает более 100 узорных стилей, а также возможность полностью менять их цвет. Tapet не скачивает изображения из интернета, а создаёт новые прямо в вашем устройстве.

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

Платная версия Tapet открывает еще больше возможностей в создании стилей.

UCCW – одно из самых популярных приложений для кастомизации виджетов. Оно позволяет редактировать виджеты в режиме WYSIWYG, это позволяет следить за изменениями уже в процессе редактирования.

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

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

Walli

Walli – не обычное приложение с обоями. Подобно Etsy, оно предлагает внушительную коллекцию авторских обоев, эксклюзивно созданных художниками для вас. Из других плюсов – легкая навигация по коллекции и возможность добавлять понравившиеся изображения в очередь для автоматического изменения фона. Для выбора обоев мы также рекомендуем Google Wallpapers, Abstruct и WallPix.

Xposed Framework, Substratum и Synergy

Пользователям, осмелившимся нарушить условия гарантийного обслуживания и получить root-права на Android, открываются широкие возможности: например, можно воспользоваться Xposed Framework, Substratum и Synergy, чтобы добавить различные пользовательские фишки в интерфейс, а можно установить кастомную прошивку.

Пожалуй, это веские основания для того, чтобы стать суперпользователем, ведь это дает возможность получить полный контроль над системой. Здесь мы приводим ссылку только на Substratum, но в интернете можно найти невероятное множество приложений для устройств с root-правами.

Facer and WatchMaker

Wear OS предлагает широкие возможности для кастомизации интерфейса. Наверное, самым многофункциональным приложением для этого является Facer and WatchMaker.

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

Источник

Оцените статью