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

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

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

Android, Android 9 (एपीआई लेवल 28) और इसके बाद के वर्शन वाले डिवाइसों पर डिसप्ले कटआउट की सुविधा देता है. हालांकि, डिवाइस बनाने वाली कंपनियां, 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 के तौर पर माना जाता है.

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

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

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

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