Программа для создания виджетов на андроид
На Хабре уже достаточно статей о том, как разработать «hello world»-виджет для устройств на базе Android. Еще больше об этом можно почитать в сети, в том числе и на сайте Google для разработчиков, StackOverflow и других ресурсах. Казалось бы, все подробно разжевано, есть сотни примеров — зачем же писать очередную статью, когда вокруг и так достаточно информации?
Однако, когда мы начали разработку виджета, нам пришлось потратить несколько недель на то, чтобы разобраться с нюансами и реализовать проект так, как мы задумали его изначально.
Надеемся, наш опыт поможет сэкономить время на реализацию вашего виджета.
Подготовка
Для разработки была выбрана Android Stuido.Продукт еще очень сырой, не все разработчики готовы на него перейти, но отличная работа Preview и широкие возможности системы сборки Gradle берут верх над всеми недочетами. Поэтому мы рискнули попробовать, и, как оказалось, не зря.
Для тестирования, помимо непосредственной отладки на тестовом смартфоне, мы также использовали программные эмуляторы. Стандартным пользоваться достаточно проблематично, были рассмотрены различные высокопроизводительные эмуляторы Android-x86, AndroVM, Genymotion, Manymo и другие. В итоге мы выбрали Genymotion — он подкупил своей простотой установки и скоростью работы Android-x86, подробная инструкция по настройке и установке — необходим для тестирования на устройствах с Android 4.0 и ниже.
Данные эмуляторы отлично работают под различными ОС: Linux, Mac, Windows, у разработчиков бывают разные предпочтения, а переубеждать их неправильно, так что кроссплатформенные инструменты выручают.
Также эти программы помогают при автоматизированном тестировании: тесты написаны с использованием Android Instrumentation Framework, JUnit, Robotium. Подробнее об этом в следующей статье, которую мы опубликуем в ближайшее время :)
Проектирование
Итак, мы хотим, чтобы пользователь видел поисковую форму, кнопку голосовых запросов, а при увеличении доступного размера виджета — анонсы актуальных новостей.
Помимо разрешения экрана, эти устройства могут различаться диагоналями и плотностью точек на единицу площади (ppi). К счастью, задачу можно упростить и для определения размеров элементов виджета использовать аппаратно-независимые пиксели — dp. Большинство смартфонов используют сетку 4x4, для 7-дюймовых планшетов сетка может быть 6x6, да еще и сам размер ячейки зависит от лаунчера и версий API Android. В таблице мы привели получившиеся размеры в dp для различных устройств:
Samsung GT-i9000 | Nexus 4 | Samsung Tab | Nexus 7 | |
---|---|---|---|---|
1 x 1 | 64 x 58 | 64 x 58 | 74 x 74 | 80 x 71 |
2 x 2 | 144 x 132 | 152 x 132 | 148 x 148 | 176 x 159 |
4 x 3 | 304 x 206 | 328 x 206 | 296 x 222 | 368 x 247 |
Можно отталкиваться от формул:
для API младше 14 размер = (74 x количество ячеек) — 2
для последних версий размер = (70 x количество ячеек) — 30
Если во время тестирования вы сталкиваетесь с проблемами на каком-то конкретном устройстве, например при смене ориентации экрана, то проще добавить отдельный layout или указать нужный размер в dimens.xml, чем пытаться подогнать параметры. Еще на этапе проектирования обратите внимание на повторно используемые элементы, чтобы при разработке вынести их в отдельные layout, а для вставки в необходимое место используйте Include. В нашем приложении данную технологию использовали для новостей, и для реализации тени у некоторых элементов home_news_row.xml:
Реализация
Проанализировав текущее распространение версий Android мы выяснили, что версия 2.2 все еще актуальна и ее необходимо поддерживать. К сожалению, поддержка изменения размеров виджета доступна только с версии 3.0, поэтому для более старых версий сделаем статичную версию развернутого виджета. Доля устройств версий 3.x на текущий момент несущественна, и мы решили реагировать на изменение размера виджета начиная с Android 4.1 c помощью метода onAppWidgetOptionsChanged. Но не все с ним гладко: он не срабатывает в некоторых модифицированных прошивках. Пришлось искать альтернативное решение, и оно нашлось: мы использовали событие com.sec.android.widgetapp.APPWIDGET_RESIZE в методе onReceive():
При установке виджета на домашний экран, пользователь может выбрать в настройках цвет и прозрачность. В данной реализации нет нечего сложного, но есть один нюанс: уровень прозрачности необходимо добавить к выбранному цвету. Например, вот так это реализовано у нас:
Полученный цвет с уровнем прозрачности применяется к элементу виджета. В нашем случае мы просто устанавливаем setBackgroundColor() у LinearLayout.
Также бывают ситуации, когда в альбомном режиме размер ячейки виджета получается меньше, чем в портретном, в связи с чем текст заданной длины уже не помещается. Можно попробовать уменьшить размер текста, но на устройствах с низким разрешением он становится нечитаемым. В связи с этим при смене ориентации мы просто уменьшаем в layout альбомного режима количество выводимых строк text.setMaxLines(2), а размер шрифта оставляем прежним:
Последнее свойство добавляет в конце строки многоточие.
Для того, чтобы наш виджет было легче найти в списке установленных, нужен последний штрих: подготовка картинок-превью, или previewImage. Можно попытаться воспроизвести итоговый виджет в графическом редакторе, мы же воспользовались приложением Widget Preview.
Доброго времени суток. В этой статье разберём способ как создать свой собственный виджет для Android. Виджеты — это минимальные версии приложений, которые запускаются прямо на главном экране Android и могут быть чрезвычайно полезными. Большинство приложений в наши дни предлагают поддержку виджетов, вы можете легко получить к ним доступ прямо с домашнего экрана телефона. Однако, если вас не устраивает то, что доступно, вы всегда можете создать свои собственные виджеты для Android.
Как создать свои собственные виджеты для Android
Добавить новые виджеты на экран Android довольно просто. Нажмите и удерживайте пустое место на главном экране. Ниже появится меню. Выберите ярлык «Виджеты». На некоторых моделях нужно сделать свайп двумя пальцами по экрану телефона.
Вы попадете в список доступных виджетов вашего смартфона. Большинство приложений предлагают несколько вариантов. Выберите виджет, который хотите использовать, затем нажмите на него и перетащите на главный экран.
Некоторые виджеты предлагают параметры настроек, которые позволяют персонализировать их.
Как создать свой собственный виджет для Android
Вы можете создать свой собственный виджет с помощью сторонних приложений. Одним из таких приложений является KWGT Kustom Widget Maker . Для этой статьи я буду использовать простой виджет.
Приложение также включает в себя библиотеку встроенных шаблонов виджетов, которые вы можете использовать или изменять в соответствии с вашими потребностями. Поэтому, если не хотите создавать новый виджет с нуля, можете просто воспользоваться тем, что вам предоставляет приложение.
Персонализация своего виджета
Вызовите список доступных виджетов на вашем устройстве, как было написано выше. Прокрутите вниз, пока не найдете шаблоны виджетов KWGT, и выберите виджет из опций.
Перетащите его на главный экран.
Нажмите на пустой виджет, чтобы открыть его в приложении KWGT, затем нажмите на кнопку «Создать».
Вы попадёте в раздел редактирования, в котором есть шесть вкладок: «Элементы», «Фон», «Слой», «Глобальные элементы», «Ярлыки» и «Сенсорный экран». Каждая вкладка позволяет вам настроить определенный аспект виджета.
В настоящее время ваш виджет представляет собой просто пустой контейнер, который необходимо заполнить различными объектами. Но сначала вы должны добавить фон в свой новый виджет. Нажмите на вкладку фона и выберите цвет.
В качестве альтернативы вы можете использовать изображение с вашего устройства.
Как создать свои собственные виджеты для Android — д обавление объектов
Затем нажмите «Элементы», для добавления элементов в свой виджет. Это кнопка «+» в правом верхнем углу.
Вы попадёте на панель, где сможете выбрать различные объекты для добавления в виджет.
После того, как изображение или текст было добавлено в виджет, вы можете настроить его как вам угодно, редактировать текст, цвет, расположение, шрифт и так далее.
Вот такой простой виджет у меня получился.
Заключение
KWGT Kustom Widget Maker — в этой программе есть огромное количество возможностей для тех пользователей, которые хотят поэкспериментировать над своим рабочим столом Android и создать свои собственные виджеты, а также сделать его действительно уникальным. В KWGT Kustom Widget Maker присутствуют макеты и дополнительные настройки для таких типов виджетов, как астрономическая информация, мировое время, батарея, погода, текстовые виджеты, состояние памяти, карты, аналоговые часы и многое, многое другое. Всё это можно настраивать: изменять шрифты, добавлять эффекты, размеры всех элементов или даже делать виджеты в 3D, добавлять анимации.
Виджеты существуют уже давно. Раньше это была одна из функций, делавших Android лучше iOS. В наши дни наша зависимость от виджетов ослабла. Среди приложений с более совершенным дизайном, быстрых настроек, ярлыков приложений, более мощных уведомлений и постоянно включенных дисплеев не так уж много причин для их использования. Однако есть только некоторые вещи, такие как заметки, погода, календарь, списки дел и т.д., Которые всегда будут лучше работать в формате виджета. Мы просто не живем в ту эпоху, в которой жили когда-то, но это не значит, что виджеты сейчас бесполезны. Вот лучшие виджеты для Android!
Вы можете заметить явное отсутствие виджетов часов в этом списке. У нас есть целый отдельный список лучших виджетов часов!
1Погода
Цена: бесплатно / 1,99 доллара США.
1Weather, пожалуй, одно из лучших погодных приложений. Его виджеты для Android тоже неплохие. Он вызывает старый стиль «перекидных часов и погоды», который использовался для украшения устройств HTC Sense, и его можно настраивать. Нажав на часы, вы попадете в приложение-будильник. Нажав на прогноз погоды, вы попадете в основной интерфейс 1Weather. Есть также виджеты только с погодой, которые предоставляют большой объем информации. Это бесплатно. Платная версия только удаляет рекламу.
Виджет батареи Reborn
Цена: бесплатно / $ 3,49.
Battery Widget Reborn среди лучших Android-виджетов для счетчиков заряда батареи. Он предоставляет виджет с одним круглым индикатором заряда батареи. Вы можете изменить цвет и размер в соответствии с вашей темой и макетом домашнего экрана. Само приложение также содержит информацию об аккумуляторе, ярлыки для таких вещей, как настройки Wi-Fi и Bluetooth, и даже дает вам диаграммы для более подробного отображения активности аккумулятора. Ничего особенного. Однако в эпоху, когда производители смартфонов по-прежнему не позволяют включать процентное значение в строке состояния, такие приложения, как Battery Widget Reborn, по-прежнему полезны.
Виджет календаря от Home Agenda
Цена: $ 1.99
Виджет календаря от Home Agenda – отличный виджет календаря для вашего мобильного телефона. Вы можете оформить виджеты по своему вкусу. Также есть возможность загружать и устанавливать темы другими людьми. Некоторые другие параметры включают функцию погоды, скрытие различных событий, скрытие отклоненных событий и даже изменение цвета определенных меток календаря. Лучше всего он работает с Календарем Google. Недавние обновления также улучшили производительность. Приложение стоит 1,99 доллара США, но в нем нет дополнительной рекламы или покупок в приложении.
Виджет календаря: месяц и повестка дня
Цена: бесплатно / до $ 3,49
Виджет календаря: Месяц и Повестка дня – это два виджета для Android от Candl Apps. Первый – довольно стандартный и минималистичный виджет календаря. Он включает в себя более 90 тем, минимальный макет, поддержку Календаря Google и показывает различные предстоящие мероприятия. Он выглядит и чувствует себя неплохо, хотя опытным пользователям может понадобиться что-то более мощное. Виджет календаря: повестка дня очень похожа на другое приложение виджета календаря, но с большим количеством опций. Вы можете создавать виджеты специально для вашей повестки дня, а также для любых других предстоящих событий, которые у вас могут быть. Оба виджета можно использовать бесплатно с ограниченным количеством тем. Вы можете покупать больше в виде покупок в приложении.
Заметки Google Keep
Цена: Бесплатно
Google Keep Notes – это простое и эффективное приложение для создания заметок. С его помощью вы можете делать текстовые заметки, списки заметок и даже голосовые заметки. Это также дает вам возможность делиться заметками с другими для совместной работы. В приложении также есть множество дополнительных небольших скрытых функций. Он также поставляется с простым набором виджетов Android, который дает вам возможность быстро создавать заметки. Они варьируются по размеру от простых до более сложных в зависимости от ваших потребностей. По сути, это все, что вам нужно, когда речь идет о виджетах для приложений для заметок. Это совершенно бесплатно. Вы также можете получить доступ к заметкам на Google Диске с помощью любого веб-браузера.
HD-виджеты
Цена: 0,99 доллара США / 0,99 доллара США за дополнительные плагины.
HD Widgets и Beautiful Widgets были двумя самыми популярными виджетами, сочетающими часы и погоду, во всем Google Play Store. HD Widgets все еще обновляется и все еще актуален. В конце концов, искусство комбо-виджета часов и погоды по-прежнему удается лишь немногим разработчикам. HD Widgets показывает погоду из OpenWeather или AccuWeather, а также множество виджетов. Некоторые параметры включают часы, погодные и комбинированные часы, а также переключатели настроек. Виджеты можно настраивать, но они кажутся немного старыми по сравнению с сегодняшним Material Design. Есть также два плагина для добавления еще большего количества вариантов тематики.
IFTTT
Цена: Бесплатно
KWGT Kustom Widget Maker
Цена: Бесплатно / $ 4.49.
KWGT – один из немногих виджетов для Android, которые можно сделать самостоятельно. Он использует редактор WYSIWYG. Это немного проще, чем можно было бы подумать. Вы можете заставить его делать разные вещи и делать так, как вы хотите. Он также включает поддержку Zooper, Tasker и других приложений. Некоторые вещи, которые вы можете отобразить, включают информацию о системе (скорость процессора, статистика сети и т.д. ), Время, аккумулятор, дата, обратный отсчет, информация о трафике, следующий сигнал тревоги, местоположение и многое другое. Он довольно мощный, но требует больше работы, чем с большинством виджетов. Насколько нам известно, это одно из очень немногих приложений с настраиваемыми виджетами, которые все еще находятся в активной разработке. Zooper – еще один вариант, но он больше не получает обновлений. Buzz Widget больше не доступен с февраля 2019 года. Таким образом, KWGT и UCCW остаются в лидерах.
Overdrop
Цена: Бесплатно
Ovedrop – один из самых новых виджетов Android в списке. Технически это просто погодное приложение, но у него есть несколько удивительно приличных виджетов для домашнего экрана. Это включает в себя виджет прогноза на срок до пяти дней, макет в стиле карточки, который включает дату и процент заряда батареи, а также ваш базовый виджет текущего прогноза погоды. Он использует Dark Sky в качестве поставщика погоды, а также имеет некоторые основные функции погодного приложения. Само приложение имеет темный режим, который нам очень нравится, а пользовательский интерфейс прекрасен. Честно говоря, в этом нет ничего плохого, и это отличный вариант, если вам нужны красивые погодные виджеты.
Сумки
Цена: $ 2.99
Tasker – одно из самых мощных приложений из когда-либо созданных. Также это один из самых сложных и сложных. Вы можете использовать это, чтобы заставить ваш телефон делать практически все, что вы хотите. Обратной стороной является то, что вам понадобится время, чтобы добраться туда. Он включает в себя более 200 действий с множеством плагинов, которые добавляют дополнительную функциональность. Многие другие приложения также имеют поддержку Tasker, чтобы добавить к числу вещей, которые он может делать. Как только вы сделаете то, что собираетесь делать, не займет много времени, чтобы превратить это в виджет. Это делает его одним из самых мощных виджетов для Android, который вы можете получить.
TickTick
Цена: бесплатно / 27,99 долларов США в год.
Время до
Цена: бесплатно / до 2,99 долларов США.
Time until – забавное маленькое приложение с некоторыми приличными маленькими виджетами. Это приложение с таймером обратного отсчета. Вы используете его для таких вещей, как праздники, дни рождения, особые события или все, для чего вам нужен обратный отсчет. Вы можете установить время до секунды, минуты, часа, дня, недели или месяца. Учитываются даже рабочие дни. Виджеты минимальны, но эффективны. Вы можете выбрать фон из своих изображений, если хотите, или просто использовать сплошной цвет. Для вашего удобства они также бывают разных размеров. Это не самое популярное использование виджета, но Time until – один из лучших виджетов таймера обратного отсчета, которые мы видели.
Todoist
Цена: бесплатно / 28,99 долларов США в год.
В Todoist есть одни из самых великолепных виджетов среди всех приложений со списком дел. На самом деле, все приложение выглядит действительно хорошо. Разработчики отлично поработали, включив яркие цвета, полный материальный дизайн, и при этом он все еще относительно прост в использовании. Бесплатная версия поставляется с большинством основных функций, включая задачи, сроки выполнения и некоторые организационные функции. Переход на премиум-версию добавляет такие вещи, как напоминания и другие функции для опытных пользователей. С точки зрения внешнего вида и виджетов для Android, этот настолько хорош, насколько это возможно в своем жанре. Виджеты похожи на приложение. Под этим мы подразумеваем, что они красочные, простые в использовании и мощные. Мы также очень ценим кроссплатформенные возможности Todoist. Это и TickTick легко входят в два лучших приложения со списком дел, и, как оказалось, у них обоих действительно хорошие виджеты.
Цена: бесплатно / 4,99 доллара США.
UCCW – второе отличное приложение для создания собственного виджета в этом списке наряду с KWGT. Некоторое время это был заброшенный проект, но недавно здесь снова начали появляться обновления. Приложение представляет собой редактор WYSIWYG (что вы видите, то и получаете). Вы создаете свой виджет, добавляете функции, а затем добавляете его на главный экран. Вы также можете загружать и импортировать проекты виджетов других людей. Есть даже возможность экспортировать ваши дизайны в виде файла APK и загрузить его в Google Play, если хотите. Чтобы все получилось, нужно немного поработать, но это отличный выбор, если вы получите все так, как хотите.
Weather Underground
Цена: бесплатно / 1,99 доллара США в год.
Weather Underground – одно из лучших погодных приложений. Также есть несколько приличных виджетов. В приложении есть обычные данные о погоде, такие как текущая температура, расширенные прогнозы и погодный радар. Вы также получите такие данные, как количество пыльцы, УФ-индекс и другие полезные статистические данные. Виджеты бывают разных размеров, но все они работают довольно хорошо. Они легко настраиваются, и этого обычно достаточно для большинства людей. Мы предпочитаем тот, который меняет цвет виджета в зависимости от температуры. Приложение полностью бесплатное с рекламой. Вы можете удалить рекламу с подпиской за 1,99 доллара в год. Это достаточно дешево, чтобы, честно говоря, забыть, что он у вас годами. Вот что случилось со мной.
Если мы пропустили какой-либо из лучших виджетов для Android, расскажите о них в комментариях! Чтобы увидеть все наши последние списки приложений, нажмите здесь!
Как сделать виджет в смартфоне либо планшете под управлением Android.
Для того чтобы сделать виджет в Androidвовсе не обязательно уметь программировать. Есть несколько приложений-конструкторов, которые позволяют легко нарисовать виджет и дать ему нужный функционал.
Minimalistic Text
Приложение позволяет создавать минималистичные виджеты, состоящие из текста и чисел. Несмотря на название, у таких виджетов есть весьма широкие возможности.
После установки добавьте на рабочий стол виджет Minimalistic Text требуемого размера. Откроется окно настройки виджета.
В настройках можно выбрать фон, ориентирование, шрифт, действие по клику и т.д. Также в настройках есть предопределенные макеты для наполнения:
- Время.
- Дата.
- Уровень заряда.
- Температура.
Дополнительные возможности по наполнению виджета доступны при создании своего собственного макета виджета:
- Текст.
- Свободное/занятое место на карте SD.
- Время работы системы.
- Количество переданных данных по мобильной сети и не только.
- Название сети Wi-Fi, IP адрес в сети Wi-Fi.
- Нагрузка на CPU.
- Количество занятой оперативной памяти.
Все величины можно выводить в тексте и в цифрах.
Ultimate custom widget (UCCW)
Данное приложение позволяет делать виджеты не только из текста, но и с графическим содержанием.
При запуске открывается окно создания виджета. Чтобы добавить на виджет объект нажмите кнопку +/- вверху. Чтобы всяким образом перемещать и редактировать его нажмите вверху на кнопку «Select Object» и выберите добавленный объект.
На виджетах можно размещать такие объекты:
- Время, дату и день недели.
- Аналоговые часы.
- Пользовательский текст.
- Уровень заряда в цифрах или же графическое отображение оного.
- Всю информацию о погоде — температуру, влажность, скорость ветра и т.д.
- Геометрические фигуры.
- Картинки.
- Количество непрочитанных писем Gmail, sms и пропущенных звонков.
- Время, когда зазвонит будильник.
Каждый элемент можно вращать, растягивать, сгибать и менять ему цвет. Разумеется, можно настроить действие по клику (Select Object->Hotspots). Поддерживается импорт и экспорт созданных виджетов.
Размер виджета можем указывать любой, но гугл рекомендует придерживаться формуле расчёта размера виджета (number of cells * 74) – 2. updatePeriodMillis — это частота обновления виджета, но не чаще чем раз в 30 минут, в целях экономии батарейки. initialLayout – это файл шаблона виджета.
Widget provider — Это java файл, он должен наследоваться от класса AppWidgetProvider. В нашем случае он пока останется пустым (src/ru/example/android/widget/ HelloWidget.java).
- package ru.example.android.widget ;
- import android.appwidget.AppWidgetProvider ;
- public class HelloWidget extends AppWidgetProvider
- >
Layout – Это шаблон виджета или слой View, кому как нравится. Выглядеть он будет так: (res/layout /main.xml).
Теперь можем компилировать проект и смотреть результат в эмуляторе!
Наш виджет хоть и работает, но абсолютно бесполезен. Давайте сделаем так, чтобы он реагировал на нажатие кнопки.
В виджете невозможно повесить полноценное событие на нажатие кнопки или еще на какое-либо событие, как это Вы привыкли делать в Activity. На этом примере Вы увидите, как можно обработать событие от нажатия кнопки. Давайте для начала добавим в наш шаблон кнопку (res/layout /main.xml).
Все взаимодействия с виджетом будем делать в классе provider (src/ru/example/android/widget/ HelloWidget.java). Вот как будет выглядеть простейшая обработка события:
- Бросить Broadcast
- Запустить Activity
- Запустить Service
Добовляем изменения в файл AndroidManifest.xml:
Компилируем, и наслаждаемся резульатом.
P.S. Попытался описать все максимально просто, чтобы не забить голову, а получить работающий пример. В следующих статьях буду углубляться в тему.
Читайте также: