इमर्सिव मोड के लिए सिस्टम बार छिपाएं

कुछ कॉन्टेंट को फ़ुलस्क्रीन मोड में देखने का अनुभव सबसे अच्छा होता है. इसमें स्टेटस बार या नेविगेशन बार पर कोई इंडिकेटर नहीं दिखता. इसके कुछ उदाहरण हैं: वीडियो, गेम, इमेज गैलरी, किताबें, और प्रज़ेंटेशन स्लाइड. इसे इमर्सिव मोड कहा जाता है. इस पेज पर बताया गया है कि फ़ुलस्क्रीन में कॉन्टेंट दिखाकर, उपयोगकर्ताओं को ज़्यादा बेहतर तरीके से कैसे जोड़ा जा सकता है.

पहली इमेज. इमर्सिव मोड का उदाहरण.

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

सिस्टम बार छिपाने के लिए, WindowInsetsControllerCompat.hide() का इस्तेमाल करें. साथ ही, उन्हें वापस लाने के लिए, WindowInsetsControllerCompat.show() का इस्तेमाल करें.

यहां दिए गए स्निपेट में, सिस्टम बार को छिपाने और दिखाने के लिए बटन को कॉन्फ़िगर करने का उदाहरण दिया गया है.

Kotlin

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

    val windowInsetsController =
        WindowCompat.getInsetsController(window, window.decorView)
    // Configure the behavior of the hidden system bars.
    windowInsetsController.systemBarsBehavior =
        WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE

    // Add a listener to update the behavior of the toggle fullscreen button when
    // the system bars are hidden or revealed.
    ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, windowInsets ->
        // You can hide the caption bar even when the other system bars are visible.
        // To account for this, explicitly check the visibility of navigationBars()
        // and statusBars() rather than checking the visibility of systemBars().
        if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())
            || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {
            binding.toggleFullscreenButton.setOnClickListener {
                // Hide both the status bar and the navigation bar.
                windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
            }
        } else {
            binding.toggleFullscreenButton.setOnClickListener {
                // Show both the status bar and the navigation bar.
                windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
            }
        }
        ViewCompat.onApplyWindowInsets(view, windowInsets)
    }
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...

    WindowInsetsControllerCompat windowInsetsController =
            WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView());
    // Configure the behavior of the hidden system bars.
    windowInsetsController.setSystemBarsBehavior(
            WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
    );

    // Add a listener to update the behavior of the toggle fullscreen button when
    // the system bars are hidden or revealed.
    ViewCompat.setOnApplyWindowInsetsListener(
        getWindow().getDecorView(),
        (view, windowInsets) -> {
        // You can hide the caption bar even when the other system bars are visible.
        // To account for this, explicitly check the visibility of navigationBars()
        // and statusBars() rather than checking the visibility of systemBars().
        if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())
                || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {
            binding.toggleFullscreenButton.setOnClickListener(v -> {
                // Hide both the status bar and the navigation bar.
                windowInsetsController.hide(WindowInsetsCompat.Type.systemBars());
            });
        } else {
            binding.toggleFullscreenButton.setOnClickListener(v -> {
                // Show both the status bar and the navigation bar.
                windowInsetsController.show(WindowInsetsCompat.Type.systemBars());
            });
        }
        return ViewCompat.onApplyWindowInsets(view, windowInsets);
    });
}

आपके पास यह तय करने का विकल्प भी है कि किस तरह के सिस्टम बार छिपाने हैं. साथ ही, यह भी तय किया जा सकता है कि जब कोई उपयोगकर्ता उनके साथ इंटरैक्ट करे, तो वे कैसा व्यवहार करें.

यह तय करना कि किन सिस्टम बार को छिपाना है

सिस्टम बार के जिस टाइप को छिपाना है उसे तय करने के लिए, WindowInsetsControllerCompat.hide() को इनमें से कोई एक पैरामीटर पास करें.

छिपे हुए सिस्टम बार के व्यवहार के बारे में बताना

WindowInsetsControllerCompat.setSystemBarsBehavior() का इस्तेमाल करके, यह तय करें कि जब उपयोगकर्ता छिपे हुए सिस्टम बार के साथ इंटरैक्ट करता है, तो वे कैसा व्यवहार करते हैं.

  • WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH का इस्तेमाल करके, डिसप्ले पर उपयोगकर्ता के किसी भी इंटरैक्शन पर, छिपे हुए सिस्टम बार दिखाएं.

  • सिस्टम जेस्चर पर छिपे हुए सिस्टम बार दिखाने के लिए, WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE का इस्तेमाल करें. जैसे, स्क्रीन के उस किनारे से स्वाइप करना जहां से बार छिपा हुआ है.

  • सिस्टम जेस्चर की मदद से, छिपे हुए सिस्टम बार को कुछ समय के लिए दिखाने के लिए, WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE का इस्तेमाल करें. जैसे, स्क्रीन के उस किनारे से स्वाइप करना जहां से बार छिपा हुआ है. ये कुछ समय के लिए दिखने वाले सिस्टम बार, आपके ऐप्लिकेशन के कॉन्टेंट को ओवरले करते हैं. इनमें कुछ हद तक पारदर्शिता हो सकती है. साथ ही, ये कुछ समय बाद अपने-आप छिप जाते हैं.