Для обеспечения согласованного и высококачественного пользовательского опыта, а также для предотвращения проблем, приводящих к сбоям в работе набора тестов совместимости (CTS), следует применять основные принципы работы WindowManager (WM), описанные здесь. Эти принципы применимы к:
В Android-релизах используется многооконная архитектура, зародившаяся в Android 14 и продолжившаяся в Android 15 с масштабируемым пользовательским интерфейсом (Scalable UI).
Масштабируемый пользовательский интерфейс Android и ваши собственные пользовательские реализации.
Применяя эти принципы, вы сможете заблаговременно избежать большинства проблем, связанных с соответствием стандартам CTS и функциональным тестированием.
Терминология
- инвариант
- Логическое условие, остающееся истинным на протяжении всего выполнения приложения и обеспечивающее его структурную целостность. Инвариант выступает в качестве граничного правила.
- специальное мероприятие
- Также известная как активность Auto UI или активность System UI, эта важная активность приложения имеет выделенную область на экране, которая либо всегда видна, либо видна большую часть времени, даже когда пользователь нажимает кнопку «Домой», например, основное приложение навигации или кластерное приложение.
- стандартная деятельность
- Любая стандартная активность приложения, не имеющая решающего значения для основного пользовательского интерфейса системы, например, запуск стороннего медиаприложения из сетки приложений.
Принципы WM
Для обеспечения максимального соответствия требованиям CTS применяйте эти принципы при внедрении систем управления водными ресурсами.
Используйте стабильную конфигурацию при запуске активности.
Запускайте каждое новое стандартное действие с помощью одного перехода оконного менеджера, который устанавливает его конечное положение, размер и плотность. Не следует запускать второй переход, изменяющий конфигурацию окна базовой задачи (например, размер или плотность), сразу после первого, поскольку это приводит к изменению конфигурации сразу после создания действия.
Перевести стандартные действия в остановленное состояние.
Когда пользователь переходит к главной задаче или главной сцене, необходимо перевести все запущенные стандартные действия в остановленное состояние, чтобы обеспечить предсказуемый жизненный цикл Android-приложения, необходимый для тестов CTS.
Предотвратить перекрытие стандартного содержимого активности
Не отображайте пользовательские элементы оформления или элементы пользовательского интерфейса, которые загораживают содержимое стандартного действия. Если вы отображаете пользовательские наложения (например, пользовательскую панель управления климат-контролем), необходимо сообщить системе их размеры с помощью параметра SystemOverlay insets. Для Android 15 и выше используйте DecorPanel в Scalable UI.
Скрыть наложения при запросе режима погружения
Когда приложение запрашивает иммерсивный режим, необходимо скрыть все временные пользовательские элементы интерфейса и удалить их отступы SystemOverlay . Постоянные препятствия нарушают ожидания приложения в отношении пикселей.
Закругление углов применяется только на уровне дисплея.
Применяйте закругленные углы только на уровне отображения, используя соответствующие конфигурации ресурсов в frameworks/base . Не применяйте произвольные закругленные углы к поверхности стандартного Activity.
Это помешает проверке элементов пользовательского интерфейса. В качестве временной меры можно указать тот же радиус скругления углов для отображения, что и для поверхности стандартного элемента управления.
Сохранять размер приложения при запросе в иммерсивном режиме.
Когда приложение запрашивает переход в иммерсивный режим, не изменяйте размер окна приложения. Это приведет к изменению конфигурации, нарушающему работу приложения. Вместо этого, чтобы развернуть приложение на весь экран, предложите пользователю кнопку полноэкранного режима, управляемую пользователем.