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

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