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

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

पैनल की सूची

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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