إخفاء أشرطة النظام للوضع الغامر

تكون تجربة بعض المحتوى أفضل في وضع ملء الشاشة بدون أي مؤشرات على شريط الحالة أو شريط التنقل. تتضمن بعض الأمثلة مقاطع الفيديو والألعاب ومعارض الصور والكتب وشرائح العروض التقديمية. ويُشار إلى ذلك باسم الوضع المجسَّم. توضح هذه الصفحة كيف يمكنك جذب المستخدمين بشكل أكبر باستخدام المحتوى في وضع ملء الشاشة.

الشكل 1. مثال على الوضع المجسم.

يساعد "الوضع المجسم" المستخدمين على تفادي الخروج من اللعبة بدون قصد أثناء اللعب ويوفّر تجربة غامرة للاستمتاع بالصور والفيديوهات والكتب. ومع ذلك، ضع في اعتبارك عدد المرات التي يدخل فيها المستخدمون إلى التطبيقات وخارجها للاطّلاع على الإشعارات أو لإجراء عمليات بحث غير مُخطَّط لها أو لاتّخاذ إجراءات أخرى. لأنّ الوضع المجسم يتسبب في فقدان المستخدمين لإمكانية الوصول بسهولة إلى ميزة التنقّل في النظام، ننصحك باستخدام الوضع المجسم فقط عندما تتجاوز فوائد تجربة المستخدم مجرّد استخدام مساحة إضافية على الشاشة.

استخدِم 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 لإظهار أشرطة النظام المخفية مؤقتًا باستخدام إيماءات النظام، مثل التمرير السريع من حافة الشاشة حيث يتم إخفاء الشريط. تتراكب أشرطة النظام المؤقتة هذه على محتوى تطبيقك، وقد تكون في درجة من الشفافية، ويتم إخفاؤها تلقائيًا بعد مهلة قصيرة.