काट-छांट करने की सुविधा के बारे में जानकारी

डिसप्ले कटआउट, कुछ डिवाइसों पर डिसप्ले की सतह तक फैला हुआ एक एरिया होता है. इससे एज-टू-एज अनुभव मिलता है. साथ ही, डिवाइस के सामने वाले हिस्से पर मौजूद ज़रूरी सेंसर के लिए जगह मिलती है.

पोर्ट्रेट मोड में कटआउट का उदाहरण
पहली इमेज. पोर्ट्रेट मोड में कटआउट का उदाहरण
लैंडस्केप मोड में कटआउट का उदाहरण
दूसरी इमेज. लैंडस्केप मोड में कटआउट का उदाहरण

Android 9 (एपीआई लेवल 28) और इसके बाद के वर्शन वाले डिवाइसों पर, Android डिसप्ले कटआउट की सुविधा देता है. हालांकि, डिवाइस बनाने वाली कंपनियां, Android 8.1 या इससे पहले के वर्शन वाले डिवाइसों पर भी डिसप्ले कटआउट की सुविधा दे सकती हैं.

इस पेज पर, Compose में कटआउट वाले डिवाइसों के लिए सहायता लागू करने का तरीका बताया गया है. इसमें कटआउट वाले एरिया के साथ काम करने का तरीका भी शामिल है. यह डिसप्ले की सतह पर मौजूद एज-टू-एज रेक्टैंगल होता है, जिसमें कटआउट होता है.

डिफ़ॉल्ट केस

एपीआई लेवल 34 या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन या enableEdgeToEdge को कॉल न करने वाली गतिविधियां, डिफ़ॉल्ट रूप से कटआउट वाले रीजन में नहीं दिखेंगी. हालांकि, अगर ऐप्लिकेशन, डिसप्ले कटआउट वाले सिस्टम बार में दिखता है, तो यह कटआउट वाले रीजन में भी दिखेगा.

Android 15 या इसके बाद के वर्शन वाले डिवाइसों पर, एपीआई लेवल 35 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन या enableEdgeToEdge को कॉल करने वाली गतिविधियां, कटआउट वाले रीजन में दिखती हैं.

दूसरे शब्दों में कहें, तो Android 15 या इसके बाद के वर्शन वाले डिवाइसों पर, एपीआई लेवल 35 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन में, फ़्लोटिंग विंडो के लिए LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, और LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER को LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS के तौर पर इंटरप्रेट किया जाता है.

कटआउट की जानकारी को मैन्युअल तरीके से मैनेज करना

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

Compose के लिए, हमारा सुझाव है कि कंपोज़ेबल में कटआउट इनसेट को मैनेज करने के लिए, displayCutout, safeContent या safeDrawing का इस्तेमाल करें. इस तरीके से, ज़रूरत पड़ने पर डिसप्ले कटआउट पैडिंग का इस्तेमाल किया जा सकता है या ज़रूरत न होने पर इसे अनदेखा किया जा सकता है.

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}