ड्यूअल पैनल को पसंद के मुताबिक बनाना

Android 12 में दो पैनल वाला डिज़ाइन है. इसमें बाईं ओर स्टैटिक L0 मेन्यू और दाईं ओर कॉन्टेंट पैनल है. इस सुविधा की मदद से, अपने हिसाब से कई बदलाव किए जा सकते हैं. इस पेज पर, उन सुविधाओं के बारे में जानकारी दी गई है. साथ ही, अपनी प्राथमिकताओं को पसंद के मुताबिक बनाने का तरीका भी बताया गया है.

सिंगल पैनल मोड पर वापस जाना

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

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

हेडर बटन

अलग-अलग CarSettings गतिविधियों में पसंद के मुताबिक बनाया गया आईए हो सकता है. इसलिए, पसंद के मुताबिक बनाने की प्रोसेस को आसान बनाने के लिए, हेडर बटन की मैपिंग की सुविधा दी गई है. AndroidManifest.xml में, ड्यूअल पैनल की सुविधा वाली हर गतिविधि के मेटाडेटा में TOP_LEVEL_HEADER_KEY होता है. यह वैल्यू, res/values/header_keys.xml में बताई गई कुंजी पर ले जाती है. इसे टॉप-लेवल मेन्यू आइटम की प्राथमिकता कुंजी से मैप किया जाता है. यह आइटम, शुरुआती फ़्रैगमेंट में आता है. इसलिए, अगर किसी गतिविधि के शुरुआती फ़्रैगमेंट में बदलाव किया जाता है या आईए को इस तरह से फिर से व्यवस्थित किया जाता है कि कोई खास फ़्रैगमेंट किसी दूसरी टॉप-लेवल प्राथमिकता के तहत आता है, तो सही वैल्यू बताने के लिए header_keys.xml फ़ाइल में मौजूद काम की मैपिंग को अपडेट किया जा सकता है.

गतिविधि के लेआउट को पसंद के मुताबिक बनाना

BaseCarSettingsActivity का लेआउट, res/layout/car_setting_activity और इन सेक्शन में मौजूद है:

वैल्यू ब्यौरा
top_level_menu ड्यूअल पैनल कॉन्फ़िगरेशन में दिखाया गया टॉप-लेवल मेन्यू फ़्रैगमेंट. इस सेक्शन की चौड़ाई, top_level_menu_width से तय की जाती है. इस व्यू के चारों ओर, टूलबार वाला चेसिस बेस लेआउट होता है.
top_level_divider दो पैनल को अलग करने वाली वर्टिकल लाइन. इसकी चौड़ाई को अपनी पसंद के मुताबिक, top_level_divider_width की मदद से बदला जा सकता है.
fragment_container_wrapper कॉन्टेंट पैनल (या सिंगल पैनल कॉन्फ़िगरेशन में मुख्य पैनल) के लिए, रैपर लेआउट. इस व्यू के चारों ओर, टूलबार वाला चेसिस बेसलेआउट मौजूद है.
settings_focus_parking_view ज़रूरत पड़ने पर रोटरी फ़ोकस को बनाए रखने के लिए, FocusParkingView को पसंद के मुताबिक लागू करना.
fragment_container मुख्य कॉन्टेंट कंटेनर. कॉन्टेंट फ़्रैगमेंट, इसका इस्तेमाल टारगेट लेआउट के तौर पर करते हैं.
restricted_message BaseFragment के इंस्टेंस पर दिखाया जाने वाला, यूज़र एक्सपीरियंस (यूएक्स) से जुड़ी पाबंदी वाला ब्लॉकिंग व्यू.

पहली इमेज. ड्यूअल पैनल लेआउट

टॉप-लेवल की प्राथमिकताएं

टॉप-लेवल की प्राथमिकताएं, कस्टम CarUiPreferences होती हैं. इनमें प्राथमिकता की ऊंचाई और बैकग्राउंड के आकार को बदलने के लिए, लेआउट में थोड़ा बदलाव किया जाता है. इन प्राथमिकताओं को अपनी पसंद के मुताबिक बनाने के कई तरीके हैं:

वैल्यू ब्यौरा
res/layout/top_level_preference.xml प्राथमिकता के पूरे लेआउट को ओवरले करें.
top_level_preference_min_height टॉप-लेवल की प्राथमिकता की कम से कम ऊंचाई. कॉन्टेंट के आधार पर, प्राथमिकताएं इस वैल्यू से ज़्यादा हो सकती हैं. उदाहरण के लिए, अगर सबटाइटल मौजूद है.
top_level_preference_corner_radius कोने की गोलाई का रेडियस.
top_level_preference_background टॉप-लेवल की प्राथमिकताओं का बैकग्राउंड, जब वे हाइलाइट नहीं की गई हों.
top_level_preference_highlight हाइलाइट किए जाने पर, टॉप-लेवल की प्राथमिकताओं का बैकग्राउंड.

टॉप-लेवल आइकॉन

दूसरी इमेज में दिखाया गया है कि अब टॉप-लेवल आइकॉन में, रंगीन बैकग्राउंड के आकार में वेक्टर आइकॉन कैसे दिखता है. फ़िलहाल, इस आकार को अंडाकार या आयताकार आकार के लिए कॉन्फ़िगर किया गया है. डिफ़ॉल्ट रूप से, आकार को ओवल पर सेट किया जाता है.

डिफ़ॉल्ट वैल्यू बदलने के लिए, config_top_level_icon_shape में वैल्यू में बदलाव करें (जहां 0 का मतलब रेक्टैंगल और 1 का मतलब ओवल है). आइकॉन बनाने के लिए, बैकग्राउंड के आकार में top_level_foreground_icon_inset का इस्तेमाल करके, फ़ोरग्राउंड आइकॉन को इनसेट किया जाता है. हर टॉप-लेवल आइकॉन का फ़ोरग्राउंड रंग res/values/colors.xml में और बैकग्राउंड रंग res/color फ़ोल्डर में तय किया गया है.

अपनी पसंद के मुताबिक दिखने वाला आइकॉन बनाने के लिए, रंग की सभी वैल्यू बदली जा सकती हैं.

दूसरी इमेज. टॉप-लेवल की प्राथमिकता के कॉम्पोनेंट

config_top_level_injection_categories के ज़रिए तय की गई कैटगरी में आने वाली, इंजेक्ट की गई प्राथमिकताओं के आइकॉन को भी टॉप लेवल के आइकॉन माना जाता है. दिए गए आइकॉन, उसी वैल्यू और उसी आकार में इनसेट किए जाते हैं जिसे सभी अन्य टॉप-लेवल आइकॉन के लिए तय किया गया है (ऊपर देखें). हालांकि, बैकग्राउंड तय करने के लिए, इन एट्रिब्यूट को इस क्रम में देखा जाता है:

  1. com.android.settings.bg.argb इंजेक्शन करने वाले ऐप्लिकेशन का मेटाडेटा.
  2. com.android.settings.bg.hint इंजेक्शन करने वाले ऐप्लिकेशन का मेटाडेटा.
  3. top_level_injected_default_background res/values/colors.xml में बताया गया है.

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