확장 가능한 UI를 사용하여 자동차에서 정교하고 동적이며 다중 패널 사용자 환경을 빌드합니다. 확장 가능한 UI:
유연한 창 시스템을 제공합니다.
사용자 인터페이스 구현을 위한 호환성 테스트 모음 (CTS)에서 발생하는 엔지니어링 위험, 비용, 복잡성을 최소화합니다.
확장 가능한 UI는 동적 창 배열이 필요한 다양한 최신 차량용 인포테인먼트 (IVI) 디자인을 지원하는 동시에 정적 창 배열을 사용하는 기존 환경도 지원하도록 축소됩니다.
Android 17에서는 고급 창에 특화된 다음 기능을 도입합니다.
샘플 환경
확장 가능한 UI를 사용하면 무한한 종류의 윈도우 구성이 가능합니다. 다음은 확장 가능한 UI를 연습하기 위해 생성된 몇 가지 샘플 시나리오입니다.
플로팅 앱이 있는 지도 배경
다른 애플리케이션이 위에 떠 있는 지도 배경 구성
앱 배경
떠 있는 패널이 있는 애플리케이션 배경 구성
다른 앱 아래에 고정된 앱
위젯 컨테이너와 같이 고정된 애플리케이션 위에 다른 애플리케이션이 실행됩니다.
조건부 플로팅 패널
미디어가 재생되거나 알림이 트리거되는 등 특정 조건이 충족될 때만 표시되는 조건부 플로팅 패널입니다.
운전자에게 가까운 곳에 고정된 앱
운전자에게 더 가까이 배치된 고정된 애플리케이션
화면 분할 레이아웃
두 애플리케이션이 나란히 표시된 화면 분할 레이아웃
대화형 화면 분할
동적 크기 조절을 지원하는 대화형 분할 화면 레이아웃
대형 화면용 다중 앵커 레이아웃
대형 화면용으로 설계된 다중 앵커 레이아웃입니다.
홈 화면 앱 캐러셀
애플리케이션 캐러셀이 포함된 홈 화면 레이아웃
혜택 및 규정 준수
확장 가능한 UI의 이점은 다음과 같습니다.
테스트 위험 감소: 프레임워크는 사전 인증을 받았으며 CTS를 준수하므로 프로그램 주기의 후반에 테스트 실패의 기본 위험이 제거됩니다. 확장 가능한 UI는 엔지니어링 노력을 몇 개월 절약하고 규정 준수를 가속화할 수 있습니다.
더욱 유연한 설계: 수많은 복잡한 기존 자동차 윈도우 모델을 재현할 수 있는 입증된 기능 확장 가능한 UI는 야심차고 차별화된 디자인을 지원합니다.
구현 복잡성 감소: 추상화를 통해 고급 구성 기반 XML 모델로 맞춤 창 관리 로직의 진입 장벽을 낮춥니다.
더 나은 성능: 확장 가능한 UI는 표준 Android와 완전히 통합된 고성능 창 관리 기반에서 실행됩니다. 전환이 원활하게 이루어져 직접 최적화가 가능합니다.
핵심 구성 단위
확장 가능한 UI는 OEM별 코드의 필요성을 최소화하고, 업데이트 가능성을 높이며, 함정을 없애고 인증 문제를 줄여 출시 위험을 줄입니다.
XML 기반 접근 방식은 정확한 위치 지정, Z 순서 충돌, 앱 포커스와 같이 AAOS에서 복잡한 창 시스템을 관리할 때 발생하는 일반적인 문제를 해결합니다.
확장 가능한 UI는 이러한 핵심 빌드 블록을 제공합니다.
패널
패널은 화면의 기본 직사각형 컨테이너입니다. 각 패널은 독립적인 관리를 위해 전용 루트 작업에 매핑됩니다. 패널은 앱 작업 (TaskPanel) 또는 위젯 (DecorPanel)과 같은 뷰 기반 콘텐츠를 호스팅할 수 있습니다. 자세한 내용은 패널 구성을 참고하세요.
변형
변형은 패널의 특정 시각적 상태를 정의하며 bounds (위치 및 크기), visibility, layer (Z 순서), corner 반경과 같은 속성을 포함합니다. 단일 패널에는 opened, closed, minimized와 같은 변형이 있을 수 있습니다. 자세한 내용은 변형을 사용하여 시각적 상태 디자인을 참고하세요.
전환
전환은 패널이 현재 상태 fromVariant에서 새 상태 toVariant로 이동하는 방식을 정의합니다. Event는 전환을 트리거하며, 이는 상태 변경 중에 패널이 사용하는 애니메이션을 정의합니다. 패널이 현재 상태에서 toVariant로 이동해야 합니다. 동기화의 경우 핵심 창 관리자는 모든 전환을 애니메이션 처리하고 조정합니다.
- 이벤트: UI 변경을 시작하는 트리거입니다. OEM이나 시스템에서 트리거를 미리 정의할 수 있습니다. 예를 들어
_System_OnHomeEvent,_System_TaskOpenEvent또는 맞춤 탐색 버튼 누르기입니다.
예를 들어 확장 가능한 UI는 이벤트를 사용하여 전환을 트리거합니다. 이러한 전환은 한 변형에서 다른 변형으로 패널을 애니메이션 처리하여 UI의 동적 변경사항을 표시합니다. 확장 가능한 UI는 이러한 변경사항을 다른 시스템 앱에 전달하여 필요에 따라 콘텐츠를 조정합니다. XML에서 UI 관계를 정의하면 다음 작업을 할 수 있습니다.
복잡한 UI 동작 지정: 복잡한 사용자 인터페이스 상호작용을 정의합니다.
창 지정 시스템 정렬: 창 위치와 레이어링을 제어합니다.
시각적 테마 구현: 일관된 브랜딩과 미적 요소를 적용합니다.
코드 복잡성 감소: 광범위한 맞춤 코드 개발의 필요성을 최소화합니다.
자세한 내용은 전환 구성을 참고하세요.
시스템 UI 버튼
인텐트를 트리거하는 것 외에도 CarSystemBarButtons는 event, selectedEvent, unselectedEvent 속성을 사용하여 탭할 때 확장 가능한 UI 이벤트를 트리거할 수 있습니다.
event는 버튼을 탭할 때 트리거되는 이벤트를 설명합니다. 이벤트를 더 세부적으로 제어해야 하는 경우 selectedEvent 및 unselectedEvent 속성을 사용하여 버튼이 선택되거나 선택 해제될 때 각각 트리거할 이벤트를 지정합니다.
시스템 UI를 구현해야 하는 경우
이 섹션에서는 확장 가능한 UI의 최적 사용을 설명합니다.
영구 멀티 패널 레이아웃 만들기
화면의 여러 영역이 특정 기능에 영구적으로 전용되는 멀티 영역 환경을 만듭니다. 예를 들어 전용 미디어 컨트롤, 온도 조절 스트립, 전체 화면 지도 등이 있습니다.
TaskPanels 사이에 배치해야 하는 뷰 형태의 기본 앱 (예: 탐색)에는 TaskPanels을 사용하고 UI 요소에는 DecorPanels을 사용합니다.
동적 홈 장면 구현
동시에 표시되고 상호작용 가능한 여러 앱 패널로 구성된 홈 장면을 구현합니다. 예를 들어 지도, 미디어 플레이어, 앱 그리드 등이 있습니다.
관련 패널을 모두 opened 또는 default 홈 변형으로 전환하려면 _System_HomeEvent를 구성하세요.
상황별 오버레이 적용
앱 작업과 연동하여 애니메이션을 적용할 수 있는 컨텍스트 위젯, 맞춤 브랜딩, 드래그 바와 같은 앱이 아닌 UI 요소를 배치합니다.
순전히 장식용이거나 위젯 호스팅 요소에는 DecorPanels를 사용합니다. 위젯이 완전히 작동하고 실행 가능한 앱을 호스팅하는 경우 Panel > TaskPanel이 최적입니다. 레이어를 TaskPanel 레이어와 동기화해야 하는 경우 뷰 기반 UI 요소에 DecorPanels를 사용합니다.
복잡한 패널 상호작용 설계
앱 패널의 동적 크기 조절 또는 기본 디스플레이 콘텐츠에 따른 계기판 뷰 조정과 같은 고급 사용자 중심 작업을 설계합니다.
특정 비시스템 표준 Transitions을 트리거하도록 맞춤 Events 정의
IVI 레이아웃을 통합 디지털 콕핏으로 확장
확장 가능한 UI는 SDV IVI VM의 기본 인포테인먼트 디스플레이 (display0)에서 다중 패널 창 (TaskPanel 및 DecorPanel)을 관리합니다. 확장 가능한 UI를 디스플레이 안전과 페어링하여 기본 디스플레이 레이아웃이 변경될 때 계기판 뷰를 업데이트할 수 있습니다.
- 확장 가능한 UI 작업 (
SDV IVIVM): 기본 디스플레이에서 패널 상태가 변경되면 확장 가능한 UI는xml/scalable_ui_actions.xml의<Action>를 사용하여 인텐트를 전송하여 클러스터 구성요소에 레이아웃 또는 모드 변경사항을 알릴 수 있습니다. 자세한 내용은 작업 구성을 참고하세요. - DriverUI (
SDV IVIVM):ClusterHomeManager에 의해 실행되고automotive-design-compose로 빌드된 시스템 앱으로 클러스터 디스플레이 (display1)에서 실행됩니다.DriverUI는 안전 관련이 아닌 클러스터 콘텐츠 (예: 지도, 미디어, 전화 통화)를 렌더링하고 IVI 시스템의 상태 업데이트를 처리합니다. - IVI의 SDV 게이트웨이 (
SDV IVIVM):DriverUI는SDV Gateway Client를 사용하여 gRPC (driverui.proto)를 통해 고가용성 렌더러 (HAR)에 연결합니다.DriverUI는 주기적인 하트비트 메시지와 함께 클러스터 상태 업데이트 (예: 레이아웃 변형, 테마 토큰, 언어 변경)를 전송합니다. HAR및 안전 모니터 (SDV MediaVM): 별도의SDV MediaVM에서 실행되어 안전에 중요한 요소 (예: 속도, 기어, 경고등, 차임벨, 후방 카메라 피드)를 렌더링합니다.DriverUI에서 하트비트를 수신하는 동안HAR는 Android 클러스터 리전을 투명하게 유지하므로DriverUI콘텐츠가HAR안전 오버레이와 혼합됩니다.SDV IVI가 부팅 중이거나 사용할 수 없는 경우HAR에 대체 자리표시자가 표시됩니다.- OEM 구성: 이 흐름을 설정하려면
SDV IVI의xml/scalable_ui_actions.xml에서<Event>트리거와<Action>인텐트를 구성하고, 안전 설계 도구 모음의 Figma 설계 파일과Config.json신호 매핑을 업데이트하고, 타겟 하드웨어용 HAR 플랫폼 추상화 레이어 (PAL)을 구현합니다.