В 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) и в заданных границах. - Взаимодействие: Убедитесь, что функция закрытия окна с помощью свайпа работает (если закрытие невозможно, убедитесь, что кнопка работает).
- Анимация: Проверьте анимацию перехода между открытым и закрытым состояниями.