विंडो इनसेट के बारे में जानकारी

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

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

सिस्टम बार के पीछे ड्रॉ करने के लिए, किनारे से किनारे तक जाना
पहला डायग्राम. सिस्टम बार के पीछे दिखाने के लिए, एज-टू-एज जाना.

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

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

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

इनसेट से जुड़ी बुनियादी बातें

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

सिस्टम यूज़र इंटरफ़ेस (यूआई) के साइज़ और उसकी जगह की जानकारी, इनसेट का इस्तेमाल करके दी जाती है.

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

Android में इनसेट के ये टाइप, WindowInsets के ज़रिए उपलब्ध हैं:

WindowInsets.statusBars

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

WindowInsets.statusBarsIgnoringVisibility

स्टेटस बार दिखने पर, उसके इनसेट. अगर स्टेटस बार छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य स्टेटस बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे.

WindowInsets.navigationBars

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

WindowInsets.navigationBarsIgnoringVisibility

नेविगेशन बार दिखने पर, उसके इनसेट. अगर नेविगेशन बार छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य नेविगेशन बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे.

WindowInsets.captionBar

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

WindowInsets.captionBarIgnoringVisibility

कैप्शन बार दिखने पर, उसके इनसेट. अगर कैप्शन बार छिपे हुए हैं, तो मुख्य कैप्शन बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे.

WindowInsets.systemBars

सिस्टम बार इनसेट का यूनियन. इसमें स्टेटस बार, नेविगेशन बार, और कैप्शन बार शामिल होते हैं.

WindowInsets.systemBarsIgnoringVisibility

सिस्टम बार दिखने पर, उसके इनसेट. अगर सिस्टम बार छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य सिस्टम बार इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे.

WindowInsets.ime

सॉफ़्टवेयर कीबोर्ड के सबसे नीचे मौजूद जगह की जानकारी देने वाले इनसेट.

WindowInsets.imeAnimationSource

कीबोर्ड के मौजूदा ऐनिमेशन से पहले, सॉफ़्टवेयर कीबोर्ड ने जितनी जगह ली थी उसकी जानकारी देने वाले इनसेट.

WindowInsets.imeAnimationTarget

कीबोर्ड के मौजूदा ऐनिमेशन के बाद, सॉफ़्टवेयर कीबोर्ड जितनी जगह लेगा उसकी जानकारी देने वाले इनसेट.

WindowInsets.tappableElement

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

WindowInsets.tappableElementIgnoringVisibility

टैप किए जा सकने वाले एलिमेंट दिखने पर, उनके इनसेट. अगर टैप किए जा सकने वाले एलिमेंट छिपे हुए हैं (इमर्सिव फ़ुल स्क्रीन मोड में होने की वजह से), तो मुख्य टैप किए जा सकने वाले एलिमेंट इनसेट खाली होंगे. हालांकि, ये इनसेट खाली नहीं होंगे.

WindowInsets.systemGestures

इनसेट की जानकारी देने वाले इनसेट. इनमें, सिस्टम नेविगेशन के लिए जेस्चर इंटरसेप्ट करेगा. `Modifier.systemGestureExclusion` का इस्तेमाल करके, ऐप्लिकेशन मैन्युअल तरीके से इन जेस्चर को मैनेज करने की जानकारी दे सकते हैं.

WindowInsets.mandatorySystemGestures

सिस्टम जेस्चर का सबसेट. इन्हें हमेशा सिस्टम मैनेज करेगा. साथ ही, Modifier.systemGestureExclusion का इस्तेमाल करके, इन्हें ऑप्ट आउट नहीं किया जा सकता.

WindowInsets.displayCutout

डिसप्ले कटआउट (नॉच या पिनहोल) से ओवरलैप से बचने के लिए, ज़रूरी स्पेसिंग की जानकारी देने वाले इनसेट.

WindowInsets.waterfall

वॉटरफ़ॉल डिसप्ले के घुमावदार हिस्सों की जानकारी देने वाले इनसेट. वॉटरफ़ॉल डिसप्ले में, स्क्रीन के किनारों पर घुमावदार हिस्से होते हैं. यहां से स्क्रीन, डिवाइस के किनारों के साथ रैप होने लगती है.

इन टाइप की जानकारी, इनसेट के तीन "सुरक्षित" टाइप से मिलती है. इनसे यह पक्का किया जाता है कि कॉन्टेंट न दिखे:

इनसेट के ये "सुरक्षित" टाइप, कॉन्टेंट को अलग-अलग तरीकों से सुरक्षित रखते हैं. यह इस बात पर निर्भर करता है कि प्लैटफ़ॉर्म के इनसेट कौनसे हैं:

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