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