نوارهای سیستم را برای حالت همهجانبه پنهان کنید

برخی از محتواها به بهترین وجه در تمام صفحه بدون هیچ نشانگری در نوار وضعیت یا نوار پیمایش تجربه می شوند. برخی از نمونه ها ویدئوها، بازی ها، گالری تصاویر، کتاب ها و اسلایدهای ارائه هستند. به این حالت غوطه ور گفته می شود. این صفحه نشان می‌دهد که چگونه می‌توانید کاربران را عمیق‌تر با محتوای تمام صفحه درگیر کنید.

شکل 1. نمونه ای از حالت غوطه ور.

حالت همه جانبه به کاربران کمک می کند از خروج تصادفی در طول بازی اجتناب کنند و تجربه ای همه جانبه را برای لذت بردن از تصاویر، ویدیوها و کتاب ها ارائه می دهد. با این حال، به این نکته توجه داشته باشید که هر چند وقت یک‌بار کاربران برای بررسی اعلان‌ها، انجام جستجوهای بداهه یا انجام اقدامات دیگر به برنامه‌ها وارد و خارج می‌شوند. از آنجایی که حالت همه جانبه باعث می شود کاربران دسترسی آسان به ناوبری سیستم را از دست بدهند، از حالت همه جانبه فقط زمانی استفاده کنید که مزیت تجربه کاربر فراتر از استفاده از فضای اضافی صفحه نمایش باشد.

از WindowInsetsControllerCompat.hide() برای مخفی کردن نوارهای سیستم و WindowInsetsControllerCompat.show() برای بازگرداندن آنها استفاده کنید.

قطعه زیر نمونه ای از پیکربندی یک دکمه برای پنهان کردن و نمایش نوارهای سیستم را نشان می دهد.

کاتلین

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)
    }
}

جاوا

@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 استفاده کنید تا به طور موقت نوارهای سیستم مخفی را با ژست‌های حرکتی سیستم آشکار کنید، مانند کشیدن انگشت از لبه صفحه که نوار از آنجا پنهان است. این نوارهای سیستم گذرا روی محتوای برنامه شما قرار می‌گیرند، ممکن است تا حدودی شفافیت داشته باشند و پس از مدت کوتاهی به‌طور خودکار پنهان می‌شوند.