Используйте масштабируемый пользовательский интерфейс (Scalable UI) для создания сложных, динамичных и многопанельных пользовательских интерфейсов в автомобилях. Масштабируемый пользовательский интерфейс:
Предлагает гибкую систему окон.
Минимизирует инженерные риски, затраты и сложности, связанные с использованием набора тестов на совместимость (CTS) при реализации пользовательского интерфейса.
Масштабируемый пользовательский интерфейс поддерживает широкий спектр современных автомобильных информационно-развлекательных систем (IVI), требующих динамического расположения окон.
В Android 17 представлены следующие функции, характерные для расширенного управления окнами:
- Внедрить панели оповещений с всплывающим окном.
- Настройте панели управления системы
- Максимально обеспечьте соответствие тестов инвариантам WindowManager.
- Интегрируйте мастер настройки.
Примеры опыта
Масштабируемый пользовательский интерфейс позволяет создавать бесконечное множество конфигураций окон. Вот несколько примеров сценариев, созданных для проверки масштабируемого пользовательского интерфейса:
Фоновое изображение карты с плавающими приложениями
Фоновое изображение карты, поверх которого плавают другие приложения.
Фон приложения
Настройка фона приложения с использованием плавающих панелей.
Закрепленное приложение в разделе «Другие приложения»
Закрепленное приложение, например, контейнер виджетов, поверх которого запускаются другие приложения.
Условная плавающая панель
Условно плавающая панель, которая появляется только при выполнении определенных условий, например, во время воспроизведения медиафайлов или при срабатывании оповещения.
Приложение закреплено рядом с водителем
Закрепленное приложение, расположенное ближе к водителю.
Разделенный экран
Режим разделенного экрана, отображающий два приложения рядом друг с другом.
Интерактивный разделенный экран
Интерактивная компоновка с разделенным экраном, позволяющая динамически изменять размер.
Многоярусная компоновка для больших экранов
Многоярусная компоновка, разработанная для больших экранов.
карусель приложений на главном экране
Макет главного экрана с каруселью приложений.
Преимущества и соответствие требованиям
К преимуществам масштабируемого пользовательского интерфейса относятся:
Снижение риска тестирования: фреймворк предварительно сертифицирован и соответствует требованиям CTS, что исключает основной риск сбоев тестирования на поздних этапах программного цикла. Масштабируемый пользовательский интерфейс позволяет сэкономить месяцы инженерных усилий и ускорить процесс соответствия требованиям.
Повышенная гибкость дизайна: доказанная возможность воссоздания множества сложных существующих моделей автомобильных окон. Масштабируемый пользовательский интерфейс поддерживает амбициозные и сильно отличающиеся от существующих проекты.
Меньшая сложность реализации: абстракция в высокоуровневую, управляемую конфигурацией XML-модель снижает порог входа для пользовательской логики управления окнами.
Повышенная производительность: масштабируемый пользовательский интерфейс работает на высокопроизводительной оконной платформе, полностью интегрированной со стандартным Android. Переходы плавные, что позволяет напрямую оптимизировать работу приложения.
Основные строительные блоки
Масштабируемый пользовательский интерфейс сводит к минимуму необходимость в коде, специфичном для конкретного производителя оборудования, упрощает обновление и снижает риски при запуске, устраняя подводные камни и уменьшая проблемы с сертификацией.
Подход, основанный на XML, решает распространенные проблемы при управлении сложными оконными системами в Android Automotive OS (AAOS), такие как точное позиционирование, конфликты порядка перехода между окнами и фокусировка приложений.
Масштабируемый пользовательский интерфейс предоставляет эти основные строительные блоки.
Панель
Панель — это основной прямоугольный контейнер на экране. Каждая панель соответствует отдельной корневой задаче для независимого управления. Панель может содержать задачи приложения ( TaskPanel ) или контент на основе представлений, например, виджеты ( DecorPanel ). Для получения дополнительной информации см. раздел «Настройка панели» .
Вариант
Вариант определяет конкретное визуальное состояние панели и включает такие свойства, как bounds (положение и размер), visibility , layer (порядок Z) и радиус corner . Одна панель может иметь варианты, например, opened , closed или minimized . Для получения дополнительной информации см. раздел «Использование варианта для проектирования визуального состояния» .
Переход
Переход определяет, как панель переходит из своего текущего состояния fromVariant в новое состояние toVariant . Event запускает переход, определяя анимацию, используемую панелью во время изменения состояния. Панель должна перейти из своего текущего состояния в состояние toVariant . Для синхронизации основной менеджер окон анимирует и координирует все переходы.
- Событие: Триггер для инициирования изменения пользовательского интерфейса. Производитель оборудования или система могут предварительно определить триггер. Например,
_System_OnHomeEvent,_System_TaskOpenEventили нажатие пользовательской кнопки навигации.
Например, Scalable UI использует события для запуска переходов. Эти переходы анимируют панель , переключая её с одного варианта на другой, чтобы отображать динамические изменения в пользовательском интерфейсе. Scalable UI передаёт эти изменения другим системным приложениям для корректировки контента по мере необходимости. Определяя взаимосвязи пользовательского интерфейса в XML, вы можете:
Определите сложные параметры поведения пользовательского интерфейса: дайте описание сложных взаимодействий с пользовательским интерфейсом.
Организация оконных систем: контроль расположения и многоуровневого размещения окон.
Внедрите визуальные темы: используйте единый фирменный стиль и эстетику.
Снижение сложности кода: минимизация необходимости в обширной разработке пользовательского кода.
Для получения более подробной информации см. раздел «Настройка перехода» .
Кнопки системного пользовательского интерфейса
Помимо запуска интентов, CarSystemBarButtons могут запускать событие Scalable UI при нажатии, используя атрибуты event , selectedEvent и unselectedEvent .
event описывает событие, которое должно быть вызвано при нажатии кнопки. Если требуется более детальный контроль над событием, используйте атрибуты selectedEvent и unselectedEvent чтобы указать событие, которое должно быть вызвано при выборе или снятии кнопки с выбора соответственно.
Когда следует внедрять системный пользовательский интерфейс?
В этом разделе описываются оптимальные способы использования масштабируемого пользовательского интерфейса.
- Создание постоянно отображаемых многопанельных макетов
- Реализуйте динамическую домашнюю сцену.
- Примените контекстные наложения
- Разработка сложных взаимодействий между панелями
Создание постоянно отображаемых многопанельных макетов
Создайте многозонный интерфейс, в котором различные области экрана будут постоянно отведены под определенные функции. Например, выделенные элементы управления мультимедиа, панель климат-контроля или полноэкранная карта.
Используйте TaskPanels для основных приложений (например, навигации), а DecorPanels для элементов пользовательского интерфейса в виде представлений, которые должны размещаться между TaskPanels .
Реализуйте динамическую домашнюю сцену.
Реализуйте сцену «Главная» , состоящую из нескольких одновременно видимых и интерактивных панелей приложений. Например, карта, медиаплеер и сетка приложений.
Чтобы перевести все соответствующие панели в opened или default варианты главной страницы, настройте параметр _System_HomeEvent .
Примените контекстные наложения
Размещайте элементы пользовательского интерфейса, не относящиеся к приложению, такие как контекстные виджеты, элементы фирменного стиля и панели перетаскивания, которые можно анимировать в соответствии с задачами приложения.
Для всех чисто декоративных элементов или элементов, размещающих виджеты, используйте DecorPanels . Если виджет содержит полноценное, запускаемое приложение, оптимальным вариантом будет Panel > TaskPanel . Используйте DecorPanels для элементов пользовательского интерфейса на основе представлений, когда необходимо синхронизировать наложение слоев с наложением слоев TaskPanel .
Разработка сложных взаимодействий между панелями
Разрабатывайте сложные действия, управляемые пользователем, например, динамическое изменение размера панели приложения или настройку отображения приборной панели в зависимости от содержимого основного дисплея.
Настройте пользовательские Events для запуска определенных, нестандартных для системы Transitions .