पैनल को कॉन्फ़िगर करना

पैनल, उस जगह की प्रॉपर्टी के बारे में बताता है जहां वह मौजूद है. साथ ही, यह ऐप्लिकेशन कंटेनर के तौर पर काम करता है. एक्सएमएल कॉन्फ़िगरेशन का इस्तेमाल करके पैनल तय किए जाते हैं. इससे यूज़र इंटरफ़ेस (यूआई) को अपनी पसंद के मुताबिक बनाने के लिए, बिना कोड वाली और फ़्लेक्सिबल अप्रोच मिलती है. सिस्टम, इंस्टेंस और स्थितियों को मैनेज करने के लिए, तय किए गए पैनल को ट्रैक करता है.

पैनल की सूची

सिस्टम यूज़र इंटरफ़ेस (यूआई), अपने पैनल की परिभाषाएं window_states नाम के ऐरे रिसॉर्स से लोड करता है. यह संसाधन ऐरे, उन एक्सएमएल फ़ाइलों की ओर इशारा करता है जिनमें पैनल के अलग-अलग कॉन्फ़िगरेशन तय किए जाते हैं. इस सेंट्रलाइज़्ड अप्रोच का मतलब है कि 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>

पैनल की डेफ़िनिशन

स्केलेबल यूज़र इंटरफ़ेस (यूआई) फ़्रेमवर्क में हर पैनल को <TaskPanel> नाम के XML टैग से तय किया जाता है. यह टैग, ऐप्लिकेशन कंटेनर की प्रॉपर्टी के बारे में बताता है. सिस्टम यूज़र इंटरफ़ेस (यूआई), पैनल की इन परिभाषाओं को लोड करता है. साथ ही, किसी दूसरे कॉन्फ़िगरेशन के लोड होने तक पैनलों को ट्रैक करता है.

उदाहरण के लिए, रोटेशन या सिस्टम के अनुरोध की वजह से कॉन्फ़िगरेशन में बदलाव करके. <TaskPanel>, कॉन्फ़िगर किए जा सकने वाले यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के ज़रिए, पसंद के मुताबिक अनुभव बनाने के लिए एक बुनियादी कॉम्पोनेंट के तौर पर काम करता है.

एक्सएमएल एट्रिब्यूट

<TaskPanel> टैग में ये एट्रिब्यूट शामिल हो सकते हैं. इनका इस्तेमाल करके, स्टेटस और ट्रांज़िशन तय किए जा सकते हैं.

एट्रिब्यूट स्थिति ब्यौरा
id ज़रूरी है यह पैनल के लिए यूनीक आइडेंटिफ़ायर तय करता है. इस एट्रिब्यूट का इस्तेमाल, PanelPool से पैनल को वापस पाने और सिस्टम में उसकी स्थिति को मैनेज करने के लिए किया जाता है.
role ज़रूरी है सिस्टम में पैनल के मकसद या फ़ंक्शन के बारे में बताता है. वैल्यू, स्ट्रिंग रिसॉर्स, कॉम्पोनेंट के नामों की स्ट्रिंग ऐरे या लेआउट आईडी के बारे में बता सकती है. उदाहरण के लिए, यह ऐसी स्थायी गतिविधियां तय कर सकता है जिन्हें हमेशा पैनल पर दिखाया जाना चाहिए या लेआउट को बड़ा किया जाना चाहिए.
defaultVariant वैकल्पिक यह उस वैरिएंट का आईडी तय करता है जिसे पैनल को लोड होने पर, शुरुआत में अपनाना चाहिए. अगर इसे तय नहीं किया जाता है, तो सिस्टम पहले से तय किए गए वैरिएंट को डिफ़ॉल्ट के तौर पर इस्तेमाल कर सकता है.
displayId वैकल्पिक इससे उस डिसप्ले का आईडी तय होता है जिस पर पैनल को दिखाना है.
defaultLayer वैकल्पिक अगर वैरिएंट में लेयर के बारे में साफ़ तौर पर नहीं बताया गया है, तो पैनल के वैरिएंट के लिए डिफ़ॉल्ट Z-ऑर्डर तय किया जा सकता है.
controller ज़रूरी नहीं,
बदलाव हो सकता है

यह किसी ऐसे संसाधन (आम तौर पर, एक्सएमएल आईडी) को रेफ़रंस देता है जो पैनल के हिसाब से कंट्रोलर तय करता है. इससे कॉन्फ़िगरेशन वैल्यू को कस्टम पैनल कंट्रोलर में सेव और पास किया जा सकता है.

इन कंट्रोलर को com.android.car.scalableui.panel.TaskPanelController इंटरफ़ेस लागू करना चाहिए. इन कंट्रोलर का इस्तेमाल, पैनल पर रनटाइम टास्क के फ़्लेक्सिबल असाइनमेंट तय करने के लिए किया जाता है.

एक्सएमएल चाइल्ड एलिमेंट

<TaskPanel> टैग में इन एट्रिब्यूट को शामिल किया जा सकता है, ताकि विशेषताओं और डिफ़ॉल्ट व्यवहारों के बारे में बताया जा सके,

एट्रिब्यूट ब्यौरा
<Variant>

नेस्ट किया गया टैग, किसी भी समय पैनल के लिए खास विज़ुअल कॉन्फ़िगरेशन के बारे में बताता है. किसी पैनल के कई वैरिएंट हो सकते हैं. हर वैरिएंट की पहचान, यूनीक आईडी से होती है.

हर वैरिएंट, उस कॉन्फ़िगरेशन के लिए बाउंड्री, दिखने की स्थिति, लेयर, ऐल्फ़ा, कॉर्नर रेडियस, और इंसर्ट जैसी प्रॉपर्टी तय करता है. वैरिएंट, पैरंट वैरिएंट से भी प्रॉपर्टी इनहेरिट कर सकते हैं.

<KeyFrameVariant> <Variant> को बढ़ाने से, अलग-अलग वैरिएंट के बीच विज़ुअल प्रॉपर्टी का इंटरपोलेशन किया जा सकता है. यह इंटरपोलेशन, लगातार फ़्रैक्शन वैल्यू (0 से 1) पर आधारित होता है. इसका इस्तेमाल, स्मूथ और डाइनैमिक ट्रांज़िशन के लिए किया जाता है. जैसे, खींचने की कार्रवाई के दौरान, जब पैनल की स्थिति लगातार इनपुट पर निर्भर करती है. जैसे, खींचने की दूरी.
<Transitions>

नेस्ट किए गए टैग में, <Transition> की परिभाषाओं का कलेक्शन होता है. इससे पता चलता है कि यूज़र इंटरफ़ेस (यूआई) को अलग-अलग वैरिएंट के बीच ऐनिमेशन कैसे दिखाना चाहिए.

हर <Transition>, from और to वैरिएंट, इसे ट्रिगर करने वाला इवेंट तय करता है. साथ ही, ऐनिमेशन के लिए इस्तेमाल किया जाने वाला कस्टम ऐनिमेटर, अवधि, और इंटरपोलेटर भी तय कर सकता है.

नमूना कोड

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