Android प्लैटफ़ॉर्म, स्टेटस बार और नेविगेशन बार जैसे सिस्टम यूज़र इंटरफ़ेस (यूआई) को दिखाने के लिए ज़िम्मेदार है. यह सिस्टम यूआई, इस बात से कोई फ़र्क़ नहीं पड़ता कि उपयोगकर्ता कौनसे ऐप्लिकेशन का इस्तेमाल कर रहा है.
WindowInsets सिस्टम यूआई के बारे में जानकारी देता है, ताकि यह पक्का किया जा सके कि आपका ऐप्लिकेशन सही जगह पर दिखे और आपका यूआई, सिस्टम यूआई की वजह से न दिखे.
Android 14 (एपीआई लेवल 34) और इससे पुराने वर्शन पर, आपके ऐप्लिकेशन का यूआई डिफ़ॉल्ट रूप से सिस्टम बार और डिसप्ले कटआउट के नीचे नहीं दिखता.
Android 15 (एपीआई लेवल 35) और इससे नए वर्शन पर, आपका ऐप्लिकेशन सिस्टम बार और डिसप्ले कटआउट के नीचे दिखता है. हालांकि, यह तब होता है, जब आपका ऐप्लिकेशन एसडीके 35 को टारगेट करता है. इससे उपयोगकर्ता को बेहतर अनुभव मिलता है. साथ ही, आपका ऐप्लिकेशन, विंडो के लिए उपलब्ध पूरी जगह का फ़ायदा उठा पाता है.
सिस्टम यूआई के पीछे कॉन्टेंट दिखाने को एज-टू-एज जाना कहते हैं. इस पेज पर, आपको इनसेट के अलग-अलग टाइप, एज-टू-एज जाने का तरीका, और इनसेट एपीआई का इस्तेमाल करके अपने यूआई में ऐनिमेशन जोड़ने के बारे में पता चलेगा. साथ ही, आपको यह भी पता चलेगा कि सिस्टम यूआई एलिमेंट की वजह से, आपके ऐप्लिकेशन का कॉन्टेंट न दिखे.
इनसेट से जुड़ी बुनियादी बातें
जब कोई ऐप्लिकेशन एज-टू-एज जाता है, तो आपको यह पक्का करना होता है कि अहम कॉन्टेंट और इंटरैक्शन, सिस्टम यूआई की वजह से न दिखें. उदाहरण के लिए, अगर कोई बटन नेविगेशन बार के पीछे रखा जाता है, तो हो सकता है कि उपयोगकर्ता उस पर क्लिक न कर पाए.
सिस्टम यूआई के साइज़ और उसकी जगह की जानकारी, इनसेट के ज़रिए दी जाती है.
सिस्टम यूआई के हर हिस्से के लिए, इनसेट का एक टाइप होता है. इससे उसके साइज़ और जगह की जानकारी मिलती है. उदाहरण के लिए, स्टेटस बार इनसेट से स्टेटस बार के साइज़ और उसकी जगह की जानकारी मिलती है. वहीं, नेविगेशन बार इनसेट से नेविगेशन बार के साइज़ और उसकी जगह की जानकारी मिलती है. इनसेट के हर टाइप में, पिक्सल के चार डाइमेंशन होते हैं: टॉप, लेफ्ट, राइट, और बॉटम. इन डाइमेंशन से यह पता चलता है कि सिस्टम यूआई, ऐप्लिकेशन की विंडो के संबंधित किनारों से कितनी दूरी पर है. इसलिए, सिस्टम यूआई के उस टाइप के साथ ओवरलैप होने से बचने के लिए, ऐप्लिकेशन यूआई को उस दूरी पर सेट करना होगा.
Android में इनसेट के ये टाइप, WindowInsets के ज़रिए उपलब्ध हैं:
स्टेटस बार की जानकारी देने वाले इनसेट. ये, सिस्टम यूआई के सबसे ऊपर मौजूद बार होते हैं. इनमें सूचना के आइकॉन और अन्य इंडिकेटर शामिल होते हैं. |
|
स्टेटस बार दिखने पर, उसके इनसेट. अगर स्टेटस बार फ़िलहाल छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य स्टेटस बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे. |
|
नेविगेशन बार की जानकारी देने वाले इनसेट. ये, डिवाइस के बाईं, दाईं या सबसे नीचे मौजूद सिस्टम यूआई बार होते हैं. इनमें टास्कबार या नेविगेशन आइकॉन की जानकारी होती है. उपयोगकर्ता की पसंद के नेविगेशन के तरीके और टास्कबार के साथ इंटरैक्ट करने के आधार पर, रनटाइम के दौरान इनमें बदलाव हो सकता है. |
|
नेविगेशन बार दिखने पर, उसके इनसेट. अगर नेविगेशन बार फ़िलहाल छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य नेविगेशन बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे. |
|
अगर फ़्रीफ़ॉर्म विंडो में सिस्टम यूआई विंडो डेकोरेशन है, तो उसकी जानकारी देने वाला इनसेट. जैसे, सबसे ऊपर मौजूद टाइटल बार. |
|
कैप्शन बार दिखने पर, उसके इनसेट. अगर कैप्शन बार फ़िलहाल छिपे हुए हैं, तो मुख्य कैप्शन बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे. |
|
सिस्टम बार इनसेट का यूनियन. इसमें स्टेटस बार, नेविगेशन बार, और कैप्शन बार शामिल होते हैं. |
|
सिस्टम बार दिखने पर, उसके इनसेट. अगर सिस्टम बार फ़िलहाल छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य सिस्टम बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे. |
|
सॉफ़्टवेयर कीबोर्ड के सबसे नीचे मौजूद जगह की जानकारी देने वाले इनसेट. |
|
कीबोर्ड के मौजूदा ऐनिमेशन से पहले, सॉफ़्टवेयर कीबोर्ड ने जितनी जगह ली थी उसकी जानकारी देने वाले इनसेट. |
|
कीबोर्ड के मौजूदा ऐनिमेशन के बाद, सॉफ़्टवेयर कीबोर्ड जितनी जगह लेगा उसकी जानकारी देने वाले इनसेट. |
|
इनसेट का एक टाइप. इससे नेविगेशन यूआई के बारे में ज़्यादा जानकारी मिलती है. साथ ही, इससे उस जगह की जानकारी मिलती है जहां "टैप" को सिस्टम मैनेज करेगा, न कि ऐप्लिकेशन. जेस्चर नेविगेशन के साथ पारदर्शी नेविगेशन बार के लिए, ऐप्लिकेशन के कुछ एलिमेंट को सिस्टम नेविगेशन यूआई के ज़रिए टैप किया जा सकता है. |
|
टैप किए जा सकने वाले एलिमेंट दिखने पर, उसके इनसेट. अगर टैप किए जा सकने वाले एलिमेंट फ़िलहाल छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य टैप किए जा सकने वाले एलिमेंट इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे. |
|
इनसेट की जानकारी देने वाले इनसेट. इनमें, सिस्टम नेविगेशन के लिए जेस्चर इंटरसेप्ट करेगा. ` |
|
सिस्टम जेस्चर का सबसेट. इसे हमेशा सिस्टम मैनेज करेगा. साथ ही, |
|
डिसप्ले कटआउट (नॉच या पिनहोल) के साथ ओवरलैप होने से बचने के लिए ज़रूरी स्पेसिंग की जानकारी देने वाले इनसेट. |
|
वॉटरफ़ॉल डिसप्ले के घुमावदार हिस्सों की जानकारी देने वाले इनसेट. वॉटरफ़ॉल डिसप्ले में स्क्रीन के किनारों पर घुमावदार हिस्से होते हैं. यहां से स्क्रीन, डिवाइस के किनारों के साथ रैप होने लगती है. |
इन टाइप को, इनसेट के तीन "सुरक्षित" टाइप में बांटा गया है. इनसे यह पक्का किया जाता है कि कॉन्टेंट न दिखे:
इनसेट के ये "सुरक्षित" टाइप, प्लैटफ़ॉर्म के इनसेट के आधार पर, कॉन्टेंट को अलग-अलग तरीकों से सुरक्षित रखते हैं:
WindowInsets.safeDrawingका इस्तेमाल करके, उस कॉन्टेंट को सुरक्षित रखें जिसे सिस्टम यूआई के नीचे नहीं दिखाना चाहिए. इनसेट का इस्तेमाल आम तौर पर, उस कॉन्टेंट को दिखाने से रोकने के लिए किया जाता है जो सिस्टम यूआई की वजह से (पूरी तरह या आंशिक रूप से) नहीं दिखता.WindowInsets.safeGesturesका इस्तेमाल करके, जेस्चर वाले कॉन्टेंट को सुरक्षित रखें. इससे, सिस्टम जेस्चर और ऐप्लिकेशन जेस्चर (जैसे, बॉटम शीट, कैरसेल या गेम के लिए) के बीच टकराव नहीं होता.WindowInsets.safeContentका इस्तेमाल,WindowInsets.safeDrawingऔरWindowInsets.safeGesturesके कॉम्बिनेशन के तौर पर करें. इससे यह पक्का किया जा सकेगा कि कॉन्टेंट में कोई विज़ुअल ओवरलैप न हो और कोई जेस्चर ओवरलैप न हो.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर, लिंक का टेक्स्ट दिखता है
- मटीरियल कॉम्पोनेंट और लेआउट
CoordinatorLayoutको Compose पर माइग्रेट करना- अन्य ज़रूरी बातें