Внедрить панели оповещений с всплывающим окном.

В Android 17 и выше функция Scalable UI для всплывающих уведомлений (HUN) позволяет настраивать управление окнами (позиционирование, фоновое затемнение, анимация) панелей HUN с помощью фреймворка Scalable UI и наложений ресурсов во время выполнения (RRO). Эта функция позволяет управлять контейнером уведомления, не влияя на внутреннюю отрисовку контента.

Выполнение

Внедрение масштабируемого пользовательского интерфейса для мобильных устройств включает в себя следующее:

  • Общедоступные и системные API: Вводит класс HunWindow и логику анализа XML-тегов <HunPanel> в парсеры масштабируемого пользовательского интерфейса.
  • Внедрение партнерскими программами:
    • Определите пользовательское наложение RRO.
    • Для создания XML-файла (например, res/xml/hun_panel.xml ) используйте корневой тег <HunPanel> .
    • Определите элементы <Variant> для управления границами, гравитацией ( TOP или BOTTOM ), видимостью и фоном (scrim drawable).
    • Сопоставьте варианты с системными событиями (например, _System_Show_Panel ) с помощью <Transitions> .
  • Новые устройства и устройства, требующие обновления: это изменение конфигурации, вносимое RRO. Для обновления устройств до нового образа системы необходимо создать соответствующий RRO, определяющий поведение HUN. Это позволяет пользователям отклоняться от настроек по умолчанию.
  • Включение или отключение: Чтобы включить или отключить эту функцию, добавьте или удалите @xml/hun_panel из конфигурации window_states .
  • Настройки по умолчанию: Измените настройки по умолчанию, применив собственное правило RRO, которое переопределит конфигурацию системы по умолчанию.

Требования и проверка

Для проверки включения и выключения наложений используйте следующую последовательность действий:

adb shell cmd overlay disable --user current com.example.overlay.scalableUI.hun.bottom

При включении или выключении RRO, HUN отображается соответственно внизу или вверху.

Ручная проверка

  • Позиционирование: Убедитесь, что объекты HUN отображаются в указанной точке гравитации ( TOP или BOTTOM ) и в заданных границах.
  • Взаимодействие: Убедитесь, что функция закрытия окна с помощью свайпа работает (если закрытие невозможно, убедитесь, что кнопка работает).
  • Анимация: Проверьте анимацию перехода между открытым и закрытым состояниями.