उपयोगकर्ताओं को लगातार और अच्छी क्वालिटी का अनुभव देने के लिए, यहां बताए गए WindowManager (WM) के मुख्य सिद्धांतों को लागू करें. इससे, Compatibility Test Suite (CTS) फ़ेल होने की वजह बनने वाली समस्याओं को रोका जा सकेगा. इन सिद्धांतों से, कार में इस्तेमाल होने वाले ऐप्लिकेशन की क्वालिटी से जुड़े दिशा-निर्देशों का पालन करने में मदद मिलती है. ये सिद्धांत इन पर लागू होते हैं:
Android के ऐसे वर्शन जिनमें मल्टी-विंडो आर्किटेक्चर का इस्तेमाल किया जाता है. इसे Android 14 में शुरू किया गया था. साथ ही, Android 15 में इसे स्केल किए जा सकने वाले यूज़र इंटरफ़ेस (यूआई) के साथ जारी रखा गया.
Android का स्केलेबल यूज़र इंटरफ़ेस (यूआई) और आपके कस्टम इंप्लीमेंटेशन
इन सिद्धांतों को लागू करने से, आपको सीटीएस के नियमों का पालन करने और फ़ंक्शनल टेस्ट से जुड़ी ज़्यादातर समस्याओं से बचने में मदद मिलेगी.
शब्दावली
- इनवेरिएंट
- ऐसी लॉजिकल शर्त जो किसी ऐप्लिकेशन के पूरे एक्ज़ीक्यूशन के दौरान सही रहती है. इससे स्ट्रक्चरल इंटिग्रिटी बनी रहती है. इनवेरिएंट, बाउंड्री रूल की तरह काम करता है.
- खास गतिविधि
- इसे ऑटो यूआई ऐक्टिविटी या सिस्टम यूआई ऐक्टिविटी भी कहा जाता है. यह ऐप्लिकेशन की एक ज़रूरी ऐक्टिविटी है. इसमें स्क्रीन पर एक खास जगह होती है, जो हमेशा दिखती है या ज़्यादातर समय दिखती है. यह तब भी दिखती है, जब उपयोगकर्ता होम बटन दबाता है. जैसे,प्राइमरी नेविगेशन या क्लस्टर ऐप्लिकेशन.
- स्टैंडर्ड गतिविधि
- ऐप्लिकेशन की कोई भी ऐसी स्टैंडर्ड गतिविधि जो सिस्टम के मुख्य यूज़र इंटरफ़ेस के लिए ज़रूरी नहीं है. जैसे, ऐप्लिकेशन ग्रिड से लॉन्च किया गया तीसरे पक्ष का मीडिया ऐप्लिकेशन.
विंडो मैनेजमेंट के सिद्धांत
CTS के नियमों का ज़्यादा से ज़्यादा पालन करने के लिए, WM लागू करते समय इन सिद्धांतों का पालन करें.
गतिविधि लॉन्च करने पर, स्टेबल कॉन्फ़िगरेशन का इस्तेमाल करना
हर नई स्टैंडर्ड गतिविधि को एक ही WM ट्रांज़िशन के साथ लॉन्च करें. इससे उसकी फ़ाइनल पोज़िशन, साइज़, और डेनसिटी सेट होती है. आपको पहले ट्रांज़िशन के तुरंत बाद दूसरा ट्रांज़िशन ट्रिगर नहीं करना चाहिए. इससे टास्क की विंडो कॉन्फ़िगरेशन (जैसे कि साइज़ या डेनसिटी) में बदलाव होता है. ऐसा करने से, गतिविधि बनने के तुरंत बाद कॉन्फ़िगरेशन में बदलाव होता है.
स्टैंडर्ड गतिविधियों को 'रोकी गई' स्थिति में ले जाना
जब उपयोगकर्ता होम टास्क या होम सीन पर नेविगेट करता है, तो आपको सभी चालू स्टैंडर्ड गतिविधियों को बंद स्थिति में ले जाना होगा. इससे, सीटीएस टेस्ट के लिए ज़रूरी Android ऐप्लिकेशन के अनुमानित लाइफ़साइकल को बनाए रखा जा सकेगा. ऑटोमोटिव एनवायरमेंट में ऐप्लिकेशन के लाइफ़साइकल से जुड़ी उम्मीदों के बारे में ज़्यादा जानने के लिए, उपयोगकर्ता अनुभव से जुड़ी पाबंदियां लागू होने पर ऐप्लिकेशन के इस्तेमाल को रोकना लेख पढ़ें.
स्टैंडर्ड गतिविधि के कॉन्टेंट को धुंधला होने से रोकना
ऐसे कस्टम डेकोरेशन या यूज़र इंटरफ़ेस (यूआई) एलिमेंट न बनाएं जो स्टैंडर्ड गतिविधि के कॉन्टेंट में रुकावट डालते हों. अगर कस्टम ओवरले (जैसे कि कस्टम क्लाइमेट कंट्रोल बार) बनाए जाते हैं, तो आपको सिस्टम को डाइमेंशन की जानकारी देनी होगी. इसके लिए, SystemOverlay का इस्तेमाल करें. Android 15 और इसके बाद के वर्शन के लिए, स्केलेबल यूज़र इंटरफ़ेस (यूआई) में DecorPanel का इस्तेमाल करें. ऐप्लिकेशन, कॉन्टेंट को सुरक्षित तरीके से दिखाने के लिए, इन इनसेट पर निर्भर करते हैं.
इमर्सिव मोड के अनुरोध पर ओवरले छिपाएं
जब कोई ऐप्लिकेशन इमर्सिव मोड का अनुरोध करता है, तो आपको कुछ समय के लिए कस्टम यूज़र इंटरफ़ेस (यूआई) के सभी एलिमेंट छिपाने होंगे. साथ ही, उनके SystemOverlayइनसेट हटाने होंगे. लगातार होने वाली रुकावटों की वजह से, ऐप्लिकेशन के पिक्सल की उम्मीदों पर असर पड़ता है. ऐप्लिकेशन, इमर्सिव मोड का अनुरोध कैसे करते हैं और उसे कैसे मैनेज करते हैं, इस बारे में जानने के लिए सिस्टम बार, इमर्सिव मोड, और एज-टू-एज रेंडरिंग लेख पढ़ें.
सिर्फ़ डिसप्ले लेवल पर गोल कोनों को लागू करें
frameworks/base में सही संसाधन कॉन्फ़िगरेशन का इस्तेमाल करके, सिर्फ़ डिसप्ले लेवल पर गोल कोने लागू करें. किसी स्टैंडर्ड ऐक्टिविटी की सतह पर, मनमाने तरीके से गोल किए गए कॉर्नर लागू न करें.
ऐसा करने से, यूज़र इंटरफ़ेस (यूआई) एलिमेंट के टेस्ट में रुकावट आती है. कुछ समय के लिए, डिसप्ले के लिए वही राउंडेड कॉर्नर रेडियस तय किया जा सकता है जो स्टैंडर्ड ऐक्टिविटी की सतह पर लागू होता है.
इमर्सिव मोड के अनुरोध पर ऐप्लिकेशन का साइज़ बनाए रखना
जब कोई ऐप्लिकेशन इमर्सिव मोड में जाने का अनुरोध करे, तो ऐप्लिकेशन की विंडो का साइज़ न बदलें. ऐसा करने से, कॉन्फ़िगरेशन में रुकावट डालने वाला बदलाव होता है. इसके बजाय, ऐप्लिकेशन को बड़ा करने के लिए, उपयोगकर्ता को कंट्रोल करने वाला फ़ुलस्क्रीन बटन उपलब्ध कराएं.