Как уменьшить виджет на Самсунг

При android_minWidth=»250dp» и android_minHeight=»40dip» (новая формула):

  1. Google Nexus 7 — 3×1
  2. Samsung Galaxy S5 — 4×1

При android_minWidth=»292dp» и android_minHeight=»70dip» (старая формула):

  1. Google Nexus 7 — 4×1
  2. Samsung Galaxy S5 — 4×2

Как видно, размер виджета зависит от разрешения экрана и в любом случае высчитывается некорректно (либо 3×1, либо 4×2). Так как же правильно установить размер виджета?

Отслеживать
задан 25 янв 2015 в 13:32
1,314 10 10 серебряных знаков 26 26 бронзовых знаков
40dip или dp это случайно не опечатка? Описание по работе с Widget’ами
5 окт 2015 в 20:43

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Я так понимаю, здесь дело не в разрешении, а в разметке устройства.

Действительно, вы взяли хороший пример для того, чтобы проверить default-размер виджета при его создании, так как одно устройство типа phone и разметка скорей всего у него 4х4, а другое типа tablet, там разметка другая, возможно 6х6.

Как уменьшить или увеличить значки на Самсунге?

Google guide предлагает формулу: 70хN-30

гдe N — количество столбцов или строк.

Например, для того, чтобы сделать длину виджета 4 ячейки: 70х4-30=250dp — устанавливаем android_minWidth=»250dp» — это действительно работает на телефонах, но как только мы пробуем поставить на планшет, то возникает проблема.

Я по своему небольшому опыту могу предложить решение:

  1. android:minWidth=»1″ android_minHeight=»1″ устанавливаем такие параметры, и там же прописываем android_resizeMode=»horizontal|vertical»
    Тогда вы получаете виджет с 1 ячейкой и можете растянуть до нужного размера, такой пример имеет свои недостатки но работает.
  2. Можете разделить установку виджета, для телефона или планшета.
    Для телефона 4х4 используем формулу 70хN-30, для планшета я использовал значение 96х96dp это полный размер ячейки.

То есть, в вашем примере, для Google Nexus 7, чтобы сделать виджет с изначальным размером 4х2, нужно установить значения:

android_minHeight=»192dp» android_minWidth=»384dp»

Все кончено зависит от конечного результата, но надеюсь это Вам хоть немножко поможет.

Источник: ru.stackoverflow.com

Изменение размера виджета iOS 14: инструкция

Apple iOS

В iOS 14 наконец-то реализована долгожданная функция – виджеты на рабочем столе. Их можно добавлять, перемещать, настраивать. Многие пользователи уже успели поэкспериментировать и оценить новинку, добавив виджеты на рабочее пространство своего мобильного устройства. Но что делать, если нужно изменить размер виджета iOS 14 – сделать его больше или меньше? Как быть в такой ситуации?

Еще по теме:  Стиральная машина Самсунг с разборным баком модели

В этой статье рассмотрим инструкцию по изменению размера виджетов в iOS 14.

Как поменять размер виджета в iOS 14

На текущий момент возможность изменить уже существующий, добавленный на рабочий стол, виджет не реализована . Пользователь, который желает поменять размер виджета в iOS 14 должен удалить существующий виджет , а затем – создать новый , выбрав подходящую величину блока.

Создание виджета в iOS 14 и выбор размера

Чтобы создать виджет в iOS 14 и выбрать для него размер нужно:

  1. Зажать пальцем пустое место на рабочем столе, пока иконки не начнут дрожать;
  2. Нажать на значок + в верхнем левом углу экрана;
    Добавить виджет iOS
  3. Выбрать необходимый виджет в появившемся списке. Чтобы быстро найти нужный, можно воспользоваться встроенной строкой поиска;
    Добавление виджета iOS
  4. Выбрать размер виджета, сделав свайп влево или вправо;
    Изменить размер виджета iOS
  5. Нажать кнопку «Добавить виджет»;
  6. Чтобы поменять местоположение виджета необходимо зажать его пальцем и перетащить в нужную область;
  7. Для завершения операции нажать кнопку «Готово» в верхней правой части экрана.
    Создание виджета iOS

Видео-инструкция:

В зависимости от типа виджета у него может быть больше или меньше вариаций выбора формата. У некоторых это может быть стандартный блок длинной и шириной 2×2, у других 2×4, 4×4 или вообще – на все рабочее пространство.

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

Узнать о его возможностях можно в следующем видео:

Не нашли ответ? Тогда воспользуйтесь формой поиска:

Источник: urfix.ru

Урок 122. Виджеты. Превью, изменение размера, экран блокировки, ручное обновление

В прошлых уроках мы рассмотрели все основные моменты, касающиеся виджетов. Осталось поговорить о нескольких небольших, но полезных возможностях.

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

Превью

(API Level 11)

Когда вы хотите добавить виджет, вы открываете экран выбора и видите там список виджетов с названиями и картинками. По умолчанию, вместо картинки идет иконка приложения. А можно поставить туда свое изображение.

Еще по теме:  Проверка прессостата стиральной машины Самсунг мультиметром

Я сделаю простой виджет, показывающий время при обновлении

Мой виджет называется WidgetFeatures и в списке виджетов он выглядит так:

В качестве превью-изображения сейчас используется иконка приложения и это не очень информативно.

Поставим свою картинку. Я сделаю скрин Home-экрана с моим виджетом, затем обрежу картинку до такого состояния

закину в папку res/drawable и пропишу ее в файле метаданных виджета

Теперь виджет в списке будет выглядеть так:

И пользователь имеет примерное представление, как будет выглядеть виджет после установки.

Изменение размера

(API Level 12)

Вы можете предоставить пользователю возможность менять размеры виджета.

Для этого необходимо прописать в метаданных:

android_resizeMode=»horizontal|vertical»

В этом случае виджет будет способен менять размер и по вертикали и по горизонтали. Если вам нужно только одно направление, оставьте только его в значении атрибута.

Вы можете растянуть виджет на сколько это позволит свободное место на экране. Но не сможете сделать его меньше, чем изначально указанные размеры 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 с этими же параметрами.

Экран блокировки

(API Level 17)

Атрибут widgetCategory может определять возможность размещения виджета не только в Home (home_screen), но и на экране блокировки (keyguard) .

Еще по теме:  Samsung gear s программа для телефона

android_widgetCategory=»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-сообщения о том, что пора обновлять виджет, и минимальный порог, который она позволяет задать – это полчаса. Мы можем обойти это и назначить свое расписание. Есть несколько вариантов, как это организовать и что откуда вызывать. Я покажу один из них.

Все это делается в классе провайдера.

final String UPDATE_ALL_WIDGETS = «update_all_widgets»;

Далее пишем в методах onEnabled и onDisabled:

Содержимое двух этих методов почти одинаково, только первый запускает посылку broadcast сообщения каждую минуту с помощью AlarmManager, а второй отменяет это.

В методе onReceive пишем:

где updateWidget – это ваш метод, в котором прописана логика обновления виджета.

Здесь мы ловим broadcast, который каждую минуту шлет AlarmManager. Далее создаем ComponentName, соответствующий провайдеру виджета нашего приложения и, используя его, получаем список ID виджетов с помощью метода getAppWidgetIds. Далее этот список прогоняем через метод обновления.

И не забудьте поставить в метаданных атрибут updatePeriodMillis = 0, чтобы выключить для виджета рассылку broadcast-сообщений от системы.

Тем самым, мы задали свое расписание обновления. Оно включится при создании первого экземпляра виджета (или при старте системы, если есть экземпляры виджета) и выключится при удалении последнего экземпляра.

На следующем уроке:

— создаем ключи и подписываем приложение

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Compose, Kotlin, RxJava, Dagger, Тестирование, Performance

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

Источник: startandroid.ru

Оцените статью
Добавить комментарий