- Изменение настроек и размера виджета
- Меню настроек виджета
- Как изменить размер виджета
- Как переместить виджет на другой рабочий стол
- Полный список
- Превью
- Изменение размера
- Экран блокировки
- Ручное обновление виджетов
- Как изменить размер виджета на андроид?
- Как изменить размер виджета на экране?
- Как изменить размер виджета MIUI 12?
- Как изменить виджет приложения?
- Как увеличить виджеты на Андроиде?
- Как сделать виджет больше?
- Как изменить размер виджета на iOS 14?
- Как увеличить часы на экране телефона?
- Как увеличить размер часов на экране блокировки?
- Как сделать виджет приложения?
- Как восстановить удаленный виджет?
- Как на iOS 14 поменять иконку приложения?
- Как сменить фото на виджете?
- Изменение размера виджета в Android 4.1 Jelly Bean
Изменение настроек и размера виджета
В одной из предыдущих статей мы уже рассмотрели как добавлять и удалять виджеты в смартфоне HTC. Однако помимо этих действий виджеты можно настраивать, а также изменять их размер.
Меню настроек виджета
- На одном из рабочих столов, где находится виджет, жмем и удерживаем его.
- После появления вверху слева кнопки «Настроить», перетягиваем на нее виджет, чтобы кнопка стала красной (цвет может быть и другой, в зависимости от установленной в HTC темы оформления).
- Производим необходимые настройки.
*Зачастую меню настроек виджета аналогично такому же меню его приложения.
*Если кнопка настроек не изменяет цвет, значит она неактивна и настройки произвести нельзя.
Как изменить размер виджета
- Нажмите и удерживайте виджет на одном из рабочих столов, где он расположен.
- Отпустите палец или стилус.
- Вокруг виджета появится рамка. Растяните ее до нужного размера, а затем отпустите палец (стилус).
*Рамка появляется только в том случае, если изменение размера виджета возможно.
*Предельные размеры виджета ограничены программно, поэтому их можно менять только в этих рамках.
Как переместить виджет на другой рабочий стол
- Нажмите и удерживайте виджет.
- Не отпуская палец, перетяните его вправо или влево на самый край экрана, чтобы открылся новый рабочий стол.
- На нужном столе отпустите виджет.
*Не на все рабочие столы можно переместить виджет. Это сделать нельзя если не хватает свободного места или весь стол занят окном приложения или службы, например HTC BlinkFeed.
Источник
Полный список
— рассмотрим прочие возможности виджета: превью, изменение размера, экран блокировки, ручное обновление
В прошлых уроках мы рассмотрели все основные моменты, касающиеся виджетов. Осталось поговорить о нескольких небольших, но полезных возможностях.
Не буду создавать отдельный проект под это, покажу только фрагменты кода и скрины. Знаний, полученных в предыдущих уроках, должно хватит, чтобы понять, о чем идет речь.
Превью
Когда вы хотите добавить виджет, вы открываете экран выбора и видите там список виджетов с названиями и картинками. По умолчанию, вместо картинки идет иконка приложения. А можно поставить туда свое изображение.
Я сделаю простой виджет, показывающий время при обновлении
Мой виджет называется 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 для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
Как изменить размер виджета на андроид?
Если же вы хотите изменить размер уже созданного виджета, нажмите и удерживайте палец на нужном виджете до появления рамки, а затем потяните необходимую сторону вверх/вниз или вправо/влево, чтобы установить нужный размер. Чтобы выйти из режима редактирования, нажмите на пустом месте на экране за пределами виджета.
Как изменить размер виджета на экране?
Чтобы изменить размер виджета, мы должны предварительно выбрать его и разместить на главном экране. Для этого нажмите на рабочий стол и нажмите на «виджеты». После этого мы выбираем желаемое приложение и любимый виджет из вариантов, предлагаемых приложением. После этого виджет будет зафиксирован на рабочем столе.
Как изменить размер виджета MIUI 12?
Инструкция для пользователей
В нижней части экрана появится пункт «Специальные возможности». Появится окно, вверху которого будут находиться несколько вкладок. Нам нужна вкладка «Зрение». Для того чтобы изменить размер иконок MIUI 12, следует выбрать строку «Масштабирование изображения на экране».
Как изменить виджет приложения?
Как изменить размер виджета
- Перейдите на главный экран. Нажмите на виджет и удерживайте его.
- Отпустите палец. Если размер виджета можно изменить, вокруг него появится рамка с круглыми маркерами.
- Чтобы изменить размер, переместите маркеры.
- Закончив, коснитесь экрана за пределами виджета.
Как увеличить виджеты на Андроиде?
Как изменить размер виджета
- Нажмите и удерживайте виджет на одном из рабочих столов, где он расположен.
- Отпустите палец или стилус.
- Вокруг виджета появится рамка. Растяните ее до нужного размера, а затем отпустите палец (стилус).
Как сделать виджет больше?
Если же вы хотите изменить размер уже созданного виджета, нажмите и удерживайте палец на нужном виджете до появления рамки, а затем потяните необходимую сторону вверх/вниз или вправо/влево, чтобы установить нужный размер. Чтобы выйти из режима редактирования, нажмите на пустом месте на экране за пределами виджета.
Как изменить размер виджета на iOS 14?
Использование виджетов на iPhone и iPod touch
- На экране «Домой» нажмите и удерживайте виджет или пустую область, пока приложения не начнут покачиваться.
- Нажмите кнопку «Добавить» в верхнем левом углу.
- Выберите виджет, выберите один из трех размеров виджета, затем нажмите «Добавить виджет».
- Нажмите «Готово».
Как увеличить часы на экране телефона?
Как изменить размер часов
- Нажмите и удерживайте часы на главном экране пару секунд, а затем отпустите. Вокруг виджета появятся белые маркеры.
- Измените размер часов, перемещая маркеры.
Как увеличить размер часов на экране блокировки?
Нажмите «Виджеты» и в появившемся экране найдите приложение «Часы». Шаг 3. Тапните на нужный виджет и удерживайте его, а затем поместите на свободную часть экрана. После этого часы должны появиться на главном и экране блокировки.
Как сделать виджет приложения?
Как добавить виджет
- Коснитесь свободного участка на главном экране и удерживайте его.
- Коснитесь значка «Виджеты» .
- Нажмите на виджет и удерживайте его. Появятся изображения главных экранов.
- Перетащите виджет в нужное место и отпустите.
Как восстановить удаленный виджет?
Самый простой вариант вернуть потерянный или удаленный виджет — это коснуться и удерживать экран. (Основной экран — это меню, которое появляется при нажатии кнопки «Домой».) Это обеспечит появление нового меню с настраиваемыми параметрами.
Как на iOS 14 поменять иконку приложения?
Как изменить иконки приложений в iOS 14
- Открываем «Команды». …
- В поиске набираем «Открыть приложение».
- Выбираем нужное. …
- Нажимаем на иконку с изображением трех точек. …
- Кликаем на иконку с изображением приложения. …
- Находим в библиотеке снимков нужное вам изображение. …
- Пример:
- Так это выглядит на рабочем столе айфона.
Как сменить фото на виджете?
Загрузите приложение Photo Widget: Simple. Откройте его, Коснитесь значка + в центре экрана. Выберите фотографию, которую хотите отобразить на главном экране.
…
- Просматрите три доступных размера виджета, проводя пальцем влево и вправо. …
- Теперь вы можете перетащить виджет и разместить его в любом месте рабочего стола.
Источник
Изменение размера виджета в Android 4.1 Jelly Bean
Как стало известно — в новой версии Android Jelly Bean (API v16) появилась возможность изменения размера виджета, да не просто изменения, а автоматического, который теперь подстраивается под свободное место на экране.
Функция удобная и полезная, но в официальной документации про это почти ничего нету, что довольно странно.
Так как я разрабатываю несколько виджетов, то решил добавить данный функционал.
Первое что я заметил, это то, что виджет вообще не меняет размер, это решилось просто добавлением 3 строк в widget_provider.xml (res/xml):
android:resizeMode отвечает за направление изменения размера виджета и имеет 3 возможных значения:
- horizontal — позволяет растягивать виджет по горизонтали
- vertical — позволяет растягивать виджет по вертикали
- none — запрещает растягивать виджет (по умолчанию)
android:minResizeHeight и android:minResizeWidth отвечают за минимальный размер виджета, который можно выставить.
В коде выше виджет можно растягивать в любом направлении и его минимальный размер 1*1 ячейка.
Вроде все стало отлично, и все работает, однако какого размера стал виджет не ясно.
В документации нашел упоминание метода onAppWidgetExtrasChanged(Context context, AppWidgetManager appWidgetManager,int appWidgetId, Bundle newExtras), который должен вызываться при изменении размера, но у меня он так ни разу и не вызвался.
Далее обнаружилось, что при изменении размера виджету отправляется новый броадкаст «android.appwidget.action.APPWIDGET_UPDATE_OPTIONS«. Следуя логике можно было предположить, что с ним должен отправиться и новый размер. Так и оказалось.
Но отправляется он не в очень явном виде. В итоге получился такой код:
Отправляются 4 размера — минимальная и максимальная ширина и высота. В ходе эксперимента выяснилось, что эти размеры постоянны и удобнее ориентироваться на минимальную ширину и максимальную высоту.
При изменении размера виджета в лог выведется его размер в количестве ячеек. Далее этот размер можно сохранить для данного виджета (его ID: int AppWidgetManager.INVALID_APPWIDGET_ID);) и при обновлении считывать ти данные и подстраивать параметры.
В более ранних версия Android такой функции, естественно, не было, и многие разработчики, да и я в том числе, делали несколько размеров виджета, дабы предоставить людям выбор, теперь этот выбор не нужен, поэтому по хорошему, оставить пользователю с Jelly Bean 1 виджет и функцию масштабирования, а пользователям более ранних версий несколько виджетов с разными размерами, но все это что бы было в 1 пакете.
реализовать это оказалось очень просто:
Создаем в папке res/values файл bool.xml с содержимым
И в папке res/values-v16 такой же файл, но нескольки иным содержимым:
После чего в AndroidManifest.xml у ресиверов виджетов, которые необходимо скрыть в новой версии дописываем
И все, начиная с API v16 данные виджеты будут отключены, и в списке не отображаться.
Источник