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