חלק מהתוכן הכי נעים לצפות בו במסך מלא, בלי אינדיקטורים בסרגל הסטטוס או בסרגל הניווט. לדוגמה: סרטונים, משחקים, גלריות תמונות, ספרים ושקופיות של מצגות. המצב הזה נקרא מצב אימרסיבי. בדף הזה נסביר איך אפשר לעורר עניין רב יותר בקרב המשתמשים באמצעות תוכן במסך מלא.
מצב העמקה עוזר למשתמשים להימנע מיציאה מקרית במהלך משחק, ומספק חוויה מעשירה ליהנות מתמונות, מסרטונים ומספרים. עם זאת, חשוב לזכור כמה פעמים משתמשים נכנסים לאפליקציות ויוצאים מהן כדי לבדוק התראות, לבצע חיפושים לא מתוכננים או לבצע פעולות אחרות. מאחר שמצב העמקה גורם למשתמשים לאבד את הגישה הקלה לניווט במערכת, מומלץ להשתמש במצב העמקה רק כשהיתרון לחוויית המשתמש חורג מהשימוש בשטח מסך נוסף.
מקישים על 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()
.
כדי להסתיר את שתי שורות המערכת, מקישים על
WindowInsetsCompat.Type.systemBars()
.כדי להסתיר רק את שורת הסטטוס, משתמשים ב-
WindowInsetsCompat.Type.statusBars()
.משתמשים ב-
WindowInsetsCompat.Type.navigationBars()
כדי להסתיר רק את סרגל הניווט.
הגדרת ההתנהגות של שורות המערכת המוסתרות
משתמשים ב-WindowInsetsControllerCompat.setSystemBarsBehavior()
כדי לציין איך סרגל המערכת המוסתר יתנהג כשהמשתמש יבצע איתו אינטראקציה.
אפשר להשתמש במקש
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
כדי לחשוף את שורת הסטטוס של המערכת במהלך כל אינטראקציה של משתמש במסך המתאים.אפשר להשתמש ב
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
כדי לחשוף סרגל מערכת מוסתר בכל תנועה של המערכת, כמו החלקה מהקצה של המסך שבו הסרגל מוסתר.אפשר להשתמש ב-
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
כדי לחשוף באופן זמני את סרחי המערכת המוסתרים באמצעות תנועות מערכת, כמו החלקה מהקצה של המסך שבו הסרגל מוסתר. שורות הסטטוס הזמניות האלה מופיעות על גבי תוכן האפליקציה, יכול להיות שהן שקופפות במידה מסוימת והן מוסתרות באופן אוטומטי אחרי זמן קצוב.