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

В 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 во время выполнения» .