- Полный список
- Превью
- Изменение размера
- Экран блокировки
- Ручное обновление виджетов
- Как работать с виджетами экрана на Андроид. Установка и удаление виджетов
- Типы виджетов
- Где находятся виджеты в Андроид
- Настройка и работа с виджетами
- Как добавить виджет на главный экран
- Как удалить виджет
- Как настроить размер виджета на главном экране
- Бонус. Самые лучшие и необходимые виджеты для телефона
- Chronus
- Google Keep
- Month
Полный список
— рассмотрим прочие возможности виджета: превью, изменение размера, экран блокировки, ручное обновление
В прошлых уроках мы рассмотрели все основные моменты, касающиеся виджетов. Осталось поговорить о нескольких небольших, но полезных возможностях.
Не буду создавать отдельный проект под это, покажу только фрагменты кода и скрины. Знаний, полученных в предыдущих уроках, должно хватит, чтобы понять, о чем идет речь.
Превью
Когда вы хотите добавить виджет, вы открываете экран выбора и видите там список виджетов с названиями и картинками. По умолчанию, вместо картинки идет иконка приложения. А можно поставить туда свое изображение.
Я сделаю простой виджет, показывающий время при обновлении
Мой виджет называется WidgetFeatures и в списке виджетов он выглядит так:
В качестве превью-изображения сейчас используется иконка приложения и это не очень информативно.
Поставим свою картинку. Я сделаю скрин Home-экрана с моим виджетом, затем обрежу картинку до такого состояния
закину в папку res/drawable и пропишу ее в файле метаданных виджета
Теперь виджет в списке будет выглядеть так:
И пользователь имеет примерное представление, как будет выглядеть виджет после установки.
Изменение размера
Вы можете предоставить пользователю возможность менять размеры виджета.
Для этого необходимо прописать в метаданных:
В этом случае виджет будет способен менять размер и по вертикали и по горизонтали. Если вам нужно только одно направление, оставьте только его в значении атрибута.
Вы можете растянуть виджет на сколько это позволит свободное место на экране. Но не сможете сделать его меньше, чем изначально указанные размеры minHeight и minWidth.
Для этого в API Level 14 появляются еще два атрибута для метаданных: minResizeWidth и minResizeHeight. Они как раз и ставят минимальные значения для изменения размера виджета, а атрибуты minHeight и minWidth становятся значениями по умолчанию и используются для задания первоначального размера виджета при добавлении.
В API Level 16 в классе провайдера появляется метод onAppWidgetOptionsChanged. Метод срабатывает, когда вы меняете размер виджета. Он предоставляет вам Bundle с данными (тип — int, единицы измерения — dp) о новом размере. Данные можно извлечь с помощью этих ключей:
Как видно по названию переменных, система возвращает не точное значение новой ширины или высоты виджета, а диапазон с минимальным и максимальным значением. Не знаю каким образом формируются эти значения, но нам предлагается использовать их, чтобы подстраивать содержимое виджета под новые размеры.
Для примера выведу эти цифры в виджет.
Вот виджет шириной в две ячейки и высотой в одну (2х1).
А вот, что будет, если его растянуть до 3х2
Растянем до 4х3
Данные о текущем размере виджета также можно получить с помощью метода getAppWidgetOptions класса AppWidgetManager. Он вернет вам Bundle с этими же параметрами.
Экран блокировки
Атрибут widgetCategory может определять возможность размещения виджета не только в Home (home_screen), но и на экране блокировки (keyguard) .
В этом случае виджет появится в списке виджетов для экрана блокировки
И после добавления он будет виден
Чтобы программно определить где расположен виджет, используйте снова метод getAppWidgetOptions. Он вернет вам Bundle, из которого по ключу OPTION_APPWIDGET_HOST_CATEGORY можно вытащить категорию (тип int). Она может быть равна либо WIDGET_CATEGORY_HOME_SCREEN (home), либо WIDGET_CATEGORY_KEYGUARD (экран блокировки).
В метаданных вы также можете отдельно задать layout, использующийся для виджета на экране блокировки. Это атрибут android:initialKeyguardLayout. Аналогично атрибуту android:initialLayout указываете там layout-файл. Правда, у меня он почему-то не сработал и виджет с экрана блокировки использовал тот же layout, что и виджет на экране Home. Я не понял, почему.
Ручное обновление виджетов
Обычно система сама посылает broadcast-сообщения о том, что пора обновлять виджет, и минимальный порог, который она позволяет задать – это полчаса. Мы можем обойти это и назначить свое расписание. Есть несколько вариантов, как это организовать и что откуда вызывать. Я покажу один из них.
Все это делается в классе провайдера.
Далее пишем в методах onEnabled и onDisabled:
Содержимое двух этих методов почти одинаково, только первый запускает посылку broadcast сообщения каждую минуту с помощью AlarmManager, а второй отменяет это.
В методе onReceive пишем:
где updateWidget – это ваш метод, в котором прописана логика обновления виджета.
Здесь мы ловим broadcast, который каждую минуту шлет AlarmManager. Далее создаем ComponentName, соответствующий провайдеру виджета нашего приложения и, используя его, получаем список ID виджетов с помощью метода getAppWidgetIds. Далее этот список прогоняем через метод обновления.
И не забудьте поставить в метаданных атрибут updatePeriodMillis = 0, чтобы выключить для виджета рассылку broadcast-сообщений от системы.
Тем самым, мы задали свое расписание обновления. Оно включится при создании первого экземпляра виджета (или при старте системы, если есть экземпляры виджета) и выключится при удалении последнего экземпляра.
На следующем уроке:
— создаем ключи и подписываем приложение
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
Как работать с виджетами экрана на Андроид. Установка и удаление виджетов
С помощью всевозможных виджетов можно сделать интерфейс удобнее и подстроить его под себя.
Несмотря на то, что эти дополнительные элементы появились еще с первых версий операционной системы Android, популярность они обрели не так давно. В связи с этим важно знать, как установить виджет на Андроид.
Типы виджетов
Виджет представляет собой небольшой элемент пользовательского интерфейса, который дополняет, расширяет и/или улучшает возможности классического домашнего экрана.
Грамотные виджеты с рабочего стола могут увеличить функциональность всего устройства и сэкономить пользователю немало времени.
Например, если установить 2-3 таких элемента на основной экран, и выбрать отображение именно нужной информации, то ту же погоду, время в нескольких часовых поясах и кнопки для управления плеером можно расположить рядом.
Намного удобней и быстрей, нежели открывать часы, погоду и музыкальное приложение через список всех программ.
Существует огромное количество виджетов. Многие из них есть в операционной системе, а другие можно скачать через предустановленные или сторонние приложения.
Благодаря открытой архитектуре Андроида любой разработчик может сделать собственный элемент интерфейса.
Чтобы можно было легко найти виджеты и проще в них ориентироваться, они были поделены на несколько типов. Список видов и их описание:
- Информация.
Название говорит само за себя. Такие дополнения отображают информацию в небольшом окне, при этом она регулярно обновляется для демонстрации наиболее актуальных данных. Погодный виджет входит в число информационных. Также таковым может быть окно с отображением спортивных результатов или часовые пояса нескольких городов мира. - Коллекции.
Виджеты этого типа показывают множество одинаковых элементов в небольшом окне. Это может быть перечень последних писем на почту, колонка актуальных новостей, плитки фотографий и прочее. Чаще всего коллекцию можно не только смотреть, но и открыть (например, фото, если речь о галерее). - Управление.
Через виджеты этого типа можно включать и выключать различные функции смартфона или планшета, а также всячески взаимодействовать с ними. Чаще всего одно подобное окно содержит несколько элементов управления, так как значки занимают очень мало места. В таком элементе интерфейса может быть Блютуз, Вай-Фай, мобильный интернет, снимок экрана, беззвучный режим, смена ориентации (горизонтальная или вертикальная) и прочие действия. Данный тип виджетов не пользуется популярностью из-за того, что удобнее управлять функциями аппарата через шторку уведомлений. - Сочетание типов.
Существуют и виджеты, которые сочетают в себе 2 или 3 вида окна. Например, элемент музыкального плеера относится и к управлению, и к информации, так как можно ставить на паузу и переключаться между треками, а также смотреть название и исполнителя песни.
Где находятся виджеты в Андроид
Виджеты находятся на домашнем экране и в меню с приложениями. В число этих элементов интерфейса входят не только стандартные окна, но и виджеты из установленных сторонних приложений.
Они автоматически добавляются в систему при инсталляции. Но стоит понимать, что далеко не у каждой программы есть собственный виджет.
Чтобы перейти к виджетам, нужно просто удерживать палец на домашнем экране и перейти в блок “Виджеты”. После тапа на него отобразится весь список окон.
Настройка и работа с виджетами
Работа и настройка с виджетами на Android происходит легко. Очень удобно, что все действия, связанные с ними, выполняются в одном и том же месте.
Как добавить виджет на главный экран
Чтобы пользоваться любым элементом интерфейса, сначала его необходимо добавить на дисплей.
Инструкция о том, как добавить виджет на экран Андроид:
- Удерживать палец на дисплее до тех пор, пока не появятся элементы взаимодействия с приложениями и самими домашним экраном.
- Тапнуть на значок и надпись “Виджеты”.
- Отобразится список мини-окон. Обычно они разделены на категории. Например, “Часы”, “Заметки”, “Погода”, “Быстрый доступ” и прочие. Важно понимать, что это не типы виджетов, а одни и те же мини-окна в разном виде. Так в категории “Погода” будет лишь один виджет, представленный тремя размерами. Здесь надо выбрать необходимый элемент.
- Виджет перетащится на дисплей. Надо удерживать его пальцем и переместить в желаемое место. Если в области, куда было помещено окно, находились ярлыки приложений или другие виджеты, они автоматически окажутся снизу и “толкнут” другие элементы перед ними. Стоит обращать на это внимание.
Если вас не устраивают имеющиеся виджеты функциональностью, стилем или чем-то еще, можно установить сторонние.
Как удалить виджет
У пользователей операционной системы от Google нет проблем с тем, как убрать любые элементы интерфейса с дисплея.
Пошаговая инструкция для того как удалить виджеты на Андроиде:
- Удерживайте палец на дисплее до тех пор, пока не появятся элементы взаимодействия с приложениями и самими домашним экраном.
- Напротив ярлыков приложений и имеющихся мини-окон будет изображен значок минуса или крестик. Он означает удаление элемента. Тапните на подобный символ рядом с тем виджетом, который хочется удалить.
- Отобразится уведомление. Подтвердите действие.
Виджет удален. Стоит понимать, что предустановленные стандартные элементы интерфейса можно лишь убрать с экрана, но не удалить их насовсем. С приложениями же наоборот, если тапнуть на значок минуса/крестика и подтвердить операцию, программа будет удалена.
Как настроить размер виджета на главном экране
Единственная настройка виджета в операционной системе Android — это возможность увеличить или уменьшить его. Поэтому, когда речь идет о том, как настроить виджеты на Андроиде, подразумевается исключительно их размер.
Увеличение или уменьшение окна можно произвести прямо с домашнего экрана. Необходимо просто выбрать нужный размер в категории. Обычно этот показатель указывается как 2×2, 2х4, 4х4, 8х8 и т.д.
Некоторые приложения позволяют менять размер собственного виджета через них. Как правило, это удобнее, чем изменение стандартным способом, потому что возможностей корректировки окна значительно больше.
Пример настройки размера виджета приложения Google:
- Запустить программу.
- Перейти на вкладку “Ещё”, которая расположена в правом нижнем углу.
- Тапнуть на надпись “Настроить виджет”.
- Откроется окно с параметрами окна для пользовательского интерфейса. Отсюда можно изменить его размер, выбрать форму и даже поменять цвет.
К сожалению, программное обеспечение Гугл скорее исключение, а не правило. Редко встречаются приложения, через которые можно настраивать виджеты.
Бонус. Самые лучшие и необходимые виджеты для телефона
Если имеющиеся виджеты не устраивают, всегда можно скачать дополнительные.
Загрузка происходит через установку приложений, у которых есть мини-окна, либо через инсталляцию самих виджетов отдельно. Второй вариант подразумевает установку программы с большим выбором мини-окон.
Chronus
Лучший часовой виджет, который выглядит стильно и минималистично. Есть больше 10 типов часов, причем как аналогового типа, так и с циферблатом. Имеются даже варианты со встроенной лентой новостей и указанием погоды. Поддерживается Google Fit.
Google Keep
Великолепное приложение от Гугл, благодаря которому в списке виджетов появляются мини-окна с заметками. Текст удобно набирать и просматривать прямо с главного экрана без раскрытия полного приложения.
Можно вывести на дисплей небольшую панель управления, через которую легко начинать запись на диктофон, открывать блокнот, рисовать и работать с изображениями.
Также есть функция полноценного виджета заметки, которая прикреплена к экрану словно стикер на холодильнике. Нужно держать под рукой список продуктов, инструкцию или важное напоминание? Google Keep с этим справится!
Month
Яркий виджет календаря, который в отличие от своих конкурентов можно сделать действительно большим. Программа предлагает широкий выбор календарей разных расцветок, форм и размеров.
Никаких проблем с тем, как установить виджет на Андроид, не возникает, а также мини-окно может синхронизироваться со стандартным приложением календаря.
Благодаря этому все события переместятся, в том числе напоминания о праздниках и важных событиях.
Источник