Улучшения виджетов 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 во время выполнения .