В Android 12 (API уровня 31) существующий API виджетов обновлён, чтобы улучшить взаимодействие пользователей и разработчиков с платформой и лаунчерами. Используйте это руководство, чтобы узнать, как обеспечить совместимость вашего виджета с Android 12, а также ознакомиться с API для обновления вашего существующего виджета.
Убедитесь, что ваш виджет совместим с Android 12
Виджеты в Android 12 имеют закругленные углы. При использовании виджета приложения на устройстве под управлением Android 12 или более поздней версии лаунчер автоматически определяет фон виджета и обрезает его, оставляя закруглённые углы.
В этом случае ваш виджет может отображаться некорректно в следующих случаях:
Виджет содержит контент в углах : это может привести к обрезке части контента в угловой области.
Виджет использует фон, не поддающийся обрезке . Это включает в себя прозрачный фон, пустые представления или макеты, а также любой другой особый фон, не поддающийся обрезке. Система может некорректно определить, какой фон использовать.
Если это изменение повлияет на ваш виджет, мы рекомендуем обновить его, закруглив углы (как описано в следующем разделе), чтобы обеспечить его корректное отображение.
Используйте образец
Чтобы увидеть все эти API в действии, ознакомьтесь с нашим примером виджета-списка .
Реализовать закругленные углы
В Android 12 появились системные параметры system_app_widget_background_radius
и system_app_widget_inner_radius
для установки радиусов скругленных углов виджета.

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


Упростите персонализацию виджетов
Если указать действие конфигурации с атрибутом configure
appwidget-provider
, хост App Widget запустит это действие сразу после того, как пользователь добавит виджет на свой домашний экран.
В Android 12 добавлены новые возможности, позволяющие пользователям улучшить возможности настройки. Подробнее см. в статье «Разрешить пользователям настраивать виджеты» .
Добавить новые составные кнопки
В Android 12 добавлена новая поддержка поведения с отслеживанием состояния с использованием следующих существующих компонентов:
Виджет по-прежнему не сохраняет состояние. Ваше приложение должно сохранять состояние и регистрировать события его изменения.

Подробную информацию см. в разделе Поддержка поведения с сохранением состояния .
Используйте улучшенные 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
во время выполнения .