패널 구성

패널은 차지하는 영역의 속성을 설명하고 앱 컨테이너 역할을 합니다. XML 구성을 사용하여 패널을 정의합니다. 패널은 UI를 맞춤설정하는 유연하고 코드가 필요 없는 방법을 제공합니다. 인스턴스와 상태를 관리하기 위해 시스템은 정의된 패널을 추적합니다.

패널 목록

시스템 UI는 window_states라는 배열 리소스에서 패널 정의를 로드합니다. 이 리소스 배열은 개별 패널 구성이 정의된 XML 파일을 가리킵니다. 이 중앙 집중식 접근 방식은 확장 가능한 UI로 관리되는 패널이 의도한 대로 로드되고 시스템에서 사용할 준비가 되었음을 의미합니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

패널 정의

확장 가능한 UI 프레임워크의 각 패널은 앱 컨테이너의 속성을 설명하는 <TaskPanel>라는 XML 태그로 정의됩니다. 시스템 UI는 이러한 패널 정의를 로드하고 다른 구성이 로드될 때까지 패널을 추적합니다.

예를 들어 회전 또는 명시적 시스템 요청으로 인한 구성 변경이 있습니다. <TaskPanel>는 구성 가능한 UI 구성요소를 통해 맞춤 환경을 빌드하기 위한 기본 구성요소 역할을 합니다.

XML 속성

<TaskPanel> 태그는 상태와 전환을 정의하는 데 사용할 수 있는 이러한 속성을 포함할 수 있습니다.

속성 상태 설명
id 필수 패널의 고유 식별자를 지정합니다. 이 속성은 PanelPool에서 패널을 가져오고 시스템 내에서 상태를 관리하는 데 사용됩니다.
role 필수 시스템에서 패널의 목적이나 기능을 정의합니다. 값은 문자열 리소스, 구성요소 이름의 문자열 배열 또는 레이아웃 ID를 참조할 수 있습니다. 예를 들어 패널에 항상 표시되어야 하는 영구 활동이나 확장할 레이아웃을 정의할 수 있습니다.
defaultVariant 선택사항 패널이 로드될 때 패널이 처음에 채택해야 하는 변형의 ID를 지정합니다. 지정하지 않으면 시스템에서 정의된 첫 번째 변형을 기본값으로 사용할 수 있습니다.
displayId 선택사항 패널이 표시될 디스플레이의 ID를 지정합니다.
defaultLayer 선택사항 변형이 레이어를 명시적으로 정의하지 않는 경우 패널 변형의 기본 Z 순서를 지정할 수 있습니다.
controller 선택사항,
변경될 수 있음

패널별 컨트롤러를 정의하는 리소스 (일반적으로 XML ID)를 참조합니다. 이를 통해 구성 값을 맞춤 패널 컨트롤러에 저장하고 전달할 수 있습니다.

이러한 컨트롤러는 com.android.car.scalableui.panel.TaskPanelController 인터페이스를 구현해야 합니다. 이러한 컨트롤러의 일반적인 사용 사례는 패널에서 유연한 런타임 작업 할당을 정의하는 것입니다.

XML 하위 요소

<TaskPanel> 태그는 이러한 속성을 포함하여 특성과 기본 동작을 정의할 수 있습니다.

속성 설명
<Variant>

중첩된 태그는 특정 시점의 패널에 대한 특정 시각적 구성을 설명합니다. 패널에는 여러 변형이 있을 수 있으며 각 변형은 고유 ID로 식별됩니다.

각 변형은 특정 구성의 경계, 가시성, 레이어, 알파, 모서리 반경, 인셋과 같은 속성을 정의합니다. 변형은 상위 변형의 속성을 상속할 수도 있습니다.

<KeyFrameVariant> <Variant> 확장을 사용하면 연속적인 fraction 값 (0~1)에 따라 다양한 변형 간에 시각적 속성을 보간할 수 있으며, 패널의 상태가 드래그 양과 같은 연속적인 입력에 따라 달라지는 드래그 작업 중에 부드럽고 동적인 전환에 사용됩니다.
<Transitions>

중첩된 태그에는 UI가 다양한 변형 간에 애니메이션을 적용하는 방법을 설명하는 <Transition> 정의 모음이 포함되어 있습니다.

<Transition>fromto 변형과 이를 트리거하는 이벤트를 정의하며, 선택적으로 애니메이션에 사용할 맞춤 Animator와 지속 시간, 보간기를 지정할 수 있습니다.

샘플 코드

<Panel id="@+id/panelId"
        role="@array/roleValue"
        defaultVariant="@id/closed"
        displayId="0" >

 <Variant id="@+id/base">
        <Bounds left="0" top="0" width="100%" height="100%"/>
 </Variant>

<Variant id="@+id/opened" parent="@id/base">
    <Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed"  parent="@id/base">
    <Visibility isVisible="false"/>
</Variant>

<Transitions>
    <Transition fromVariant="@id/closed"
                toVariant="@id/opened"
                onEvent="open_event"/>
        <Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
    </Transition>
</Transitions>
</Panel>