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

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

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