В 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…