Улучшения виджетов Android 12

Android 12 (уровень API 31) обновляет существующий API виджетов , чтобы улучшить взаимодействие пользователей и разработчиков с платформой и средствами запуска. Используйте это руководство, чтобы узнать, как обеспечить совместимость вашего виджета с Android 12, а также в качестве справочника по API для обновления существующего виджета.

Alt text

Убедитесь, что ваш виджет совместим с Android 12.

Виджеты в Android 12 имеют закругленные углы. Когда виджет приложения используется на устройстве под управлением Android 12 или более поздней версии, средство запуска автоматически определяет фон виджета и обрезает его, чтобы углы были закругленными.

В этом случае ваш виджет может отображаться неправильно в любом из следующих условий:

  • Виджет содержит контент в углах : это может привести к обрезке некоторого контента в угловой области.

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

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

Используйте образец

Чтобы увидеть все эти API в действии, посмотрите наш пример виджета списка .

Реализуйте закругленные углы

В Android 12 представлены системные параметры system_app_widget_background_radius и system_app_widget_inner_radius для установки радиусов закругленных углов вашего виджета.

Виджет погоды в Токио
Рис. 1. Закругленные углы виджета и вид внутри виджета.

1 Угол виджета.

2 Угол обзора внутри виджета.

Дополнительные сведения см. в разделе «Реализация закругленных углов» .

Добавить тему устройства

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

Дополнительную информацию см. в разделе Добавление тем устройства .

Виджет в светлой теме
Рисунок 2. Виджет в светлой теме.
Виджеты в темной теме
Рисунок 3. Виджет в темной теме.

Упростите персонализацию виджетов

Если вы укажете действие настройки с помощью атрибута configure appwidget-provider , хост App Widget запустит это действие сразу после того, как пользователь добавит виджет на свой главный экран.

В Android 12 добавлены новые возможности, позволяющие пользователям упростить настройку. Подробности см. в разделе Разрешить пользователям настраивать виджеты .

Добавить новые составные кнопки

В Android 12 добавлена ​​новая поддержка поведения с отслеживанием состояния с использованием следующих существующих компонентов:

Виджет по-прежнему не имеет состояния. Ваше приложение должно хранить состояние и регистрироваться для событий изменения состояния.

Рисунок 4. Пример виджета с флажками.

Подробности см. в разделе Поддержка поведения с отслеживанием состояния .

Используйте улучшенные API для размеров и макетов виджетов.

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

Подробности см. в разделе Предоставление гибких макетов виджетов .

Улучшите возможности выбора виджетов вашего приложения.

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

Включить более плавные переходы

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

Используйте упрощенные коллекции RemoteViews .

В Android 12 добавлен метод setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items) , который позволяет вашему приложению передавать коллекцию непосредственно при заполнении ListView . Раньше при использовании ListView необходимо было реализовать и объявить RemoteViewsService для возврата RemoteViewsFactory .

Подробности см. в разделе Использование коллекций RemoteViews .

Используйте модификацию RemoteViews во время выполнения.

В Android 12 добавлено несколько методов RemoteViews , которые позволяют изменять атрибуты RemoteViews во время выполнения. Полный список добавленных методов см. в справочнике по API RemoteViews .

Дополнительные сведения см. в разделе Использование модификации RemoteViews во время выполнения .