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

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 के कॉम्बिनेशन के तौर पर करें, ताकि यह पक्का किया जा सके कि कॉन्टेंट में विज़ुअल ओवरलैप और जेस्चर ओवरलैप न हो.