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

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

الشكل 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.
    window.decorView.setOnApplyWindowInsetsListener { 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())
            }
        }
        view.onApplyWindowInsets(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.
    getWindow().getDecorView().setOnApplyWindowInsetsListener((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 view.onApplyWindowInsets(windowInsets);
    });
}

يمكنك اختياريًا تحديد نوع أشرطة النظام التي تريد إخفاءها وتحديد سلوكها عندما يتفاعل المستخدم معها.

تحديد أشرطة النظام التي تريد إخفاءها

لتحديد نوع أشرطة النظام التي تريد إخفاءها، مرِّر إحدى المَعلمات التالية إلى WindowInsetsControllerCompat.hide().

تحديد سلوك أشرطة النظام المخفية

استخدِم WindowInsetsControllerCompat.setSystemBarsBehavior() لتحديد سلوك أشرطة النظام المخفية عندما يتفاعل المستخدم معها.

  • استخدِم WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH لإظهار أشرطة النظام المخفية في أي تفاعلات المستخدم على الشاشة المقابلة.

  • يمكنك استخدام WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE لإظهار أشرطة النظام المخفية في أي إيماءات نظام، مثل التمرير سريعًا من حافة الشاشة حيث يتم إخفاء الشريط.

  • يمكنك استخدام WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE للكشف مؤقتًا عن أشرطة النظام المخفية باستخدام إيماءات النظام، مثل التمرير سريعًا من حافة الشاشة حيث يتم إخفاء الشريط. تظهر أشرطة النظام المؤقتة هذه على سطح محتوى التطبيق، وقد تتميز بدرجة من الشفافية، ويتم إخفاؤها تلقائيًا بعد انتهاء مهلة قصيرة.