กำหนดค่าแผง

แผงจะอธิบายพร็อพเพอร์ตี้ของพื้นที่ที่แผงนั้นครอบครองและทำหน้าที่เป็นคอนเทนเนอร์แอป คุณใช้การกำหนดค่า XML เพื่อกำหนดแผง ซึ่งเป็นวิธีที่ยืดหยุ่นและไม่ต้องเขียนโค้ดในการปรับแต่ง UI หากต้องการจัดการอินสแตนซ์และสถานะ ระบบจะติดตามแผงที่กำหนด

รายการแผง

UI ของระบบจะโหลดคำจำกัดความของแผงจากทรัพยากรอาร์เรย์ชื่อ window_states อาร์เรย์ทรัพยากรนี้ชี้ไปยังไฟล์ XML ซึ่งมีการกำหนดค่าแผงแต่ละรายการ แนวทางแบบรวมศูนย์นี้หมายความว่าแผงที่จัดการโดย Scalable 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>

คำจำกัดความของแผง

แต่ละแผงในเฟรมเวิร์ก Scalable UI จะกำหนดด้วยแท็ก XML ที่ชื่อ <TaskPanel> หรือ <DecorPanel> โดย <TaskPanel> อธิบายพร็อพเพอร์ตี้ของคอนเทนเนอร์แอป ส่วน <DecorPanel> อธิบายพร็อพเพอร์ตี้ของคอนเทนเนอร์มุมมอง UI ของระบบจะโหลดคำจำกัดความของแผงเหล่านี้และติดตามแผงจนกว่าจะมีการโหลดการกำหนดค่าอื่น เช่น การเปลี่ยนแปลงการกำหนดค่าเนื่องจากการหมุนหรือคำขอของระบบที่ชัดเจน <TaskPanel> และ <DecorPanel> ทำหน้าที่เป็นคอมโพเนนต์พื้นฐานสำหรับการสร้างประสบการณ์การใช้งานที่กำหนดเองผ่านคอมโพเนนต์ UI ที่กำหนดค่าได้

แอตทริบิวต์ XML

แท็ก <TaskPanel> สามารถมีแอตทริบิวต์เหล่านี้ที่คุณใช้เพื่อกำหนดสถานะและการเปลี่ยนสถานะได้

แอตทริบิวต์ สถานะ คำอธิบาย
id บังคับ ระบุตัวระบุที่ไม่ซ้ำกันสำหรับแผง แอตทริบิวต์นี้ใช้เพื่อดึงข้อมูลแผงจาก PanelPool และจัดการสถานะของแผงภายในระบบ
role บังคับ กำหนดวัตถุประสงค์หรือฟังก์ชันของแผงในระบบ ค่าอาจอ้างอิงถึงทรัพยากรสตริง อาร์เรย์สตริงของชื่อคอมโพเนนต์ หรือรหัสเลย์เอาต์ เช่น สามารถกำหนดกิจกรรมที่คงอยู่ซึ่งควรแสดงในแผงเสมอ หรือเลย์เอาต์ที่จะขยาย
defaultVariant ไม่บังคับ ระบุรหัสของตัวแปรที่แผงควรใช้ในตอนแรกเมื่อโหลด หากไม่ได้ระบุไว้ ระบบจะใช้ตัวแปรที่กำหนดไว้ตัวแรกเป็นค่าเริ่มต้นได้
displayId ไม่บังคับ ระบุรหัสของจอแสดงผลที่ต้องการให้แผงปรากฏ
defaultLayer ไม่บังคับ ระบุลำดับ Z เริ่มต้นสำหรับตัวแปรของแผงได้หากตัวแปรไม่ได้กำหนดเลเยอร์อย่างชัดเจน
controller ไม่บังคับ
อาจมีการเปลี่ยนแปลง

อ้างอิงทรัพยากร (โดยปกติคือรหัส XML) ที่กำหนดตัวควบคุมเฉพาะแผง ซึ่งช่วยให้จัดเก็บและส่งค่าการกำหนดค่าไปยังตัวควบคุมแผงที่กำหนดเองได้

ตัวควบคุมเหล่านี้ควรใช้อินเทอร์เฟซ com.android.car.scalableui.panel.TaskPanelController Use Case ทั่วไปของตัวควบคุมเหล่านี้คือการกำหนดการจัดสรรงานรันไทม์ที่ยืดหยุ่นในแผง

องค์ประกอบย่อย XML

แท็ก <TaskPanel> และ <DecorPanel> สามารถรวมองค์ประกอบย่อยเหล่านี้เพื่อกำหนดลักษณะและลักษณะการทำงานเริ่มต้น

แอตทริบิวต์ คำอธิบาย
<Variant>

แท็กที่ซ้อนกันจะอธิบายการกำหนดค่าภาพที่เฉพาะเจาะจงสำหรับแผงในเวลาใดก็ตาม แผงอาจมีหลายตัวแปร โดยแต่ละตัวแปรจะมีรหัสที่ไม่ซ้ำกัน

แต่ละตัวแปรจะกำหนดพร็อพเพอร์ตี้ เช่น ขอบเขต การแสดงผล เลเยอร์ อัลฟ่า รัศมีมุม และระยะขอบสำหรับการกำหนดค่านั้นๆ ตัวแปรยังรับช่วงพร็อพเพอร์ตี้จากตัวแปรระดับบนได้ด้วย

<KeyFrameVariant> ส่วนขยายของ <Variant> ช่วยให้สามารถประมาณค่าคุณสมบัติภาพระหว่างตัวแปรต่างๆ ตามค่าเศษส่วนต่อเนื่อง (0 ถึง 1) และใช้สำหรับการเปลี่ยนผ่านที่ราบรื่นและไดนามิก เช่น ระหว่างการลาก เมื่อสถานะของแผงขึ้นอยู่กับอินพุตต่อเนื่อง เช่น จำนวนการลาก
<Transitions>

แท็กที่ซ้อนกันมีคอลเล็กชันของคำจำกัดความ <Transition> ซึ่งอธิบายวิธีที่ UI ควรเคลื่อนไหวระหว่างตัวแปรต่างๆ

แต่ละ <Transition> จะกําหนดตัวแปร from และ to เหตุการณ์ที่ทริกเกอร์ และอาจระบุ Animator ที่กําหนดเองเพื่อใช้สําหรับภาพเคลื่อนไหว รวมถึงระยะเวลาและตัวกำหนดอัตราการเปลี่ยนแปลงด้วย

แท็ก <TaskPanel> ยังมีองค์ประกอบย่อยพิเศษเหล่านี้เพื่อกำหนดลักษณะการทำงานเฉพาะสำหรับงานได้ด้วย

แอตทริบิวต์ คำอธิบาย
<Restart> แท็กที่ซ้อนกันเพื่ออธิบายนโยบายการรีสตาร์ทที่จะใช้เมื่อ TaskPanel ว่างเปล่า แท็กนี้รองรับแอตทริบิวต์ policy ซึ่งจะตั้งค่าเป็น DEFAULT หรือ LAST ก็ได้ และ maxRetry ซึ่งระบุจำนวนครั้งที่ระบบจะพยายามรีสตาร์ทก่อนหมดเวลา
<TaskBehavior> แท็กที่ซ้อนกันเพื่ออธิบายลักษณะการทำงานของการเปิดตัวงานในแผงนี้ แท็กนี้รองรับแอตทริบิวต์ newTaskLaunchPolicy ซึ่งกำหนดค่าลักษณะการทำงานของการเปิดตัวงานใหม่จาก TaskPanel นี้ ค่าของการกำหนดค่าที่ใช้ได้สำหรับนโยบายนี้คือ DEFAULT, REMAIN_IN_SOURCE หรือ REPARENT_TO_SOURCE

โค้ดตัวอย่าง

<TaskPanel 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>
</TaskPanel>