Compose में कटआउट की सुविधा

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

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

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

इस पेज में बताया गया है कि लिखें, जिसमें कटआउट एरिया— यानी एक से दूसरे किनारे तक पहुंचने पर भी काम करने का तरीका शामिल है डिसप्ले सरफ़ेस पर रेक्टैंगल, जिसमें कटआउट मौजूद है.

डिफ़ॉल्ट केस

डिफ़ॉल्ट रूप से, डिसप्ले कटआउट को विंडो इनसेट की जानकारी में शामिल किया जाता है. इस वजह से, फ़ॉलो करने पर आपका ऐप्लिकेशन डिसप्ले कटआउट एरिया में नहीं दिखेगा दिशा-निर्देशों की मदद से अपने ऐप्लिकेशन को एक से ज़्यादा उपयोगकर्ताओं तक पहुंचाएं.

उदाहरण के लिए, अगर आपको Modifier.windowInsetsPadding(WindowInsets.safeContent) या Modifier.windowInsetsPadding(WindowInsets.safeDrawing), आपका ऐप्लिकेशन जो कटआउट वाले हिस्से में अपने-आप नहीं बनेंगे. WindowInsets.safeContent और WindowInsets.safeDrawing दोनों में डिसप्ले कटआउट की जानकारी होती है. साथ ही, डिवाइस कटआउट की जगह नहीं ड्रॉ होगी है.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    WindowCompat.setDecorFitsSystemWindows(window, false)

    setContent {
        Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) {
            // Any composable inside here will avoid drawing behind cutouts
        }
    }
}

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

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

कटआउट को इनमें से किसी भी तरीके से हैंडल किया जा सकता है:

लिखने के लिए, windowLayoutInDisplayCutoutMode को इस पर सेट करने का सुझाव दिया जाता है अपनी कुल थीम में default डालें. इसके बाद, WindowInsets.displayCutout का फ़ायदा पाएं अपने कंपोज़ेबल में इनसेट को मैनेज करने के लिए:

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

इस तरीके की मदद से, ज़रूरत पड़ने पर displayCutout पैडिंग (जगह) का पालन किया जा सकता है, या जहां ज़रूरत न हो वहां नज़रअंदाज़ करें.

इसके अलावा, वही सेटिंग लागू की जा सकती है जो व्यू कटआउट के लिए दिखती है दस्तावेज़ सेटिंग के हिसाब से बताता है गतिविधि वाली थीम android:windowLayoutInDisplayCutoutMode को विकल्प या विंडो एट्रिब्यूट को सेट करने का तरीका window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT. हालांकि, इसके बाद कटआउट मोड लागू होता है पूरी गतिविधि पर लागू होता है और इसे हर एक कंपोज़ेबल के हिसाब से कंट्रोल नहीं किया जा सकता.

कुछ कंपोज़ेबल में डिसप्ले कटआउट के हिसाब से बदलाव करें. हालांकि, अन्य कंपोज़ेबल में ऐसा न करें. इसके लिए, WindowInset.displayCutout. इस एपीआई की मदद से, कटआउट को ऐक्सेस किया जा सकता है जानकारी दें.

सबसे सही तरीके

डिसप्ले कटआउट के साथ काम करते समय, इन बातों का ध्यान रखें:

  • यूज़र इंटरफ़ेस (यूआई) के अहम एलिमेंट के प्लेसमेंट को ध्यान में रखें. ऐसा न होने दें कटआउट एरिया की मदद से किसी भी अहम टेक्स्ट, कंट्रोल या अन्य जानकारी को छिपाया जा सकता है.
  • ऐसे इंटरैक्टिव एलिमेंट को न तो रखें और न ही उनका दायरा बढ़ाएं, जिन्हें फ़ाइन-टचस्क्रीन की ज़रूरत हो ज़रूरत होती है. टच की संवेदनशीलता कम हो सकती है: कटआउट एरिया.
  • एक से दूसरे किनारे तक के दिशा-निर्देशों का पालन करते समय, कटआउट की जानकारी को safeDrawing / safeContent इनसेट.
  • जहां भी हो सके, Modifier.windowInsetsPadding(WindowInsets.safeDrawing) का इस्तेमाल करें ताकि आपके कॉन्टेंट पर लागू करने के लिए सही पैडिंग (जगह) तय की जा सके. बंद करें स्टेटस बार की ऊंचाई की हार्डकोडिंग न करें, क्योंकि इससे ओवरलैप या कट-ऑफ़ हो सकता है कॉन्टेंट.

कटआउट की मदद से देखें कि आपका कॉन्टेंट कैसे रेंडर होता है

अपने ऐप्लिकेशन की सभी स्क्रीन और अनुभवों की जांच ज़रूर कर लें. ऐसे डिवाइसों पर टेस्ट करें जिनमें अलग-अलग तरह के कटआउट का इस्तेमाल करें. अगर आपके पास कटआउट की मदद से, किसी भी डिवाइस या एम्युलेटर पर सामान्य कटआउट कॉन्फ़िगरेशन को सिम्युलेट किया जा सकता है Android 9 या इसके बाद वाले वर्शन पर काम करने के लिए, यह तरीका अपनाएं:

  1. डेवलपर के लिए सेटिंग और टूल चालू करें.
  2. डेवलपर के लिए सेटिंग और टूल की स्क्रीन पर, नीचे की ओर स्क्रोल करके ड्रॉइंग सेक्शन पर जाएं और कटआउट वाले डिसप्ले को सिम्युलेट करें को चुनें.
  3. कटआउट टाइप चुनें.
    एम्युलेटर में डिसप्ले कटआउट को सिम्युलेट करना
    तीसरी इमेज. आपका कॉन्टेंट रेंडर कैसे होता है, यह जांचने के लिए डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करें.
{% endverba नया %} {% verbatim %}