กำหนดค่าแผง

แผงจะอธิบายพร็อพเพอร์ตี้ของพื้นที่ที่แผงนั้นครอบครองและทำหน้าที่เป็นคอนเทนเนอร์ของแอป คุณใช้การกำหนดค่า 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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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