מידע על חלונות מוטמעים

פלטפורמת Android אחראית על רינדור ממשק המשתמש של המערכת, כמו שורת הסטטוס וסרגל הניווט. ממשק המשתמש הזה של המערכת מוצג בלי קשר לאפליקציה שבה המשתמש משתמש.

‫WindowInsets מספק מידע על ממשק המשתמש של המערכת כדי לוודא שהאפליקציה מוצגת באזור הנכון, ושממשק המשתמש של המערכת לא מסתיר את ממשק המשתמש של האפליקציה.

הצגה מקצה לקצה כדי לצייר מאחורי סרגלי המידע
איור 1. הצגת תוכן מקצה לקצה מאחורי סרגלי המידע.

ב-Android 14 (רמת API‏ 34) ומטה, ממשק המשתמש של האפליקציה לא מוצג מתחת לסרגלי המידע ולמגרעות במסך כברירת מחדל.

ב-Android 15 (רמת API‏ 35) ומעלה, האפליקציה מוצגת מתחת לסרגלי המידע ולמגרעות במסך ברגע שהיא מטרגטת ל-SDK 35. כך חוויית המשתמש חלקה יותר, והאפליקציה יכולה לנצל את כל שטח החלון שזמין לה.

הצגת תוכן מאחורי ממשק המשתמש של המערכת נקראת פריסה מקצה לקצה. בדף הזה מוסבר על הסוגים השונים של ה-insets, איך להגדיר את האפליקציה מקצה לקצה ואיך להשתמש בממשקי ה-API של ה-insets כדי להוסיף אנימציה לממשק המשתמש ולוודא שרכיבי ממשק המשתמש של המערכת לא מסתירים את תוכן האפליקציה.

יסודות ה-inset

כשמגדירים אפליקציה מקצה לקצה, צריך לוודא שממשק המשתמש של המערכת לא מסתיר תוכן ואינטראקציות חשובים. לדוגמה, אם כפתור ממוקם מאחורי סרגל הניווט, יכול להיות שהמשתמש לא יוכל ללחוץ עליו.

הגודל של ממשק המשתמש של המערכת והמידע על המיקום שלו מצוינים באמצעות הוספות.

לכל חלק בממשק המשתמש של המערכת יש סוג תואם של הוספה שמתאר את הגודל שלו ואת המיקום שלו. לדוגמה, הוספות של שורת הסטטוס מספקות את הגודל והמיקום של שורת הסטטוס, ואילו הוספות של סרגל הניווט מספקות את הגודל והמיקום של סרגל הניווט. כל סוג של הוספה כולל ארבעה ממדי פיקסלים: למעלה, משמאל, מימין ולמטה. המידות האלה מציינות את המרחק של ממשק המשתמש של המערכת מהצדדים המתאימים של חלון האפליקציה. כדי למנוע חפיפה עם ממשק המשתמש של המערכת, צריך להגדיר את ממשק המשתמש של האפליקציה כך שיהיה מוסט בהתאם.

סוגי ה-inset המובנים האלה של Android זמינים דרך WindowInsets:

WindowInsets.statusBars

ההוספות שמתארות את שורות הסטטוס. אלה הסרגלים העליונים של ממשק המשתמש של המערכת, שמכילים סמלי התראות ואינדיקטורים אחרים.

WindowInsets.statusBarsIgnoringVisibility

ההוספות של שורת הסטטוס כשהן גלויות. אם שורות הסטטוס מוסתרות (בגלל כניסה למצב אימרסיבי של מסך מלא), השוליים של שורת הסטטוס הראשית יהיו ריקים, אבל השוליים האלה לא יהיו ריקים.

WindowInsets.navigationBars

ההגדרות שמתארות את סרגלי הניווט. אלה סרגלי ממשק המשתמש של המערכת בצד שמאל, ימין או בתחתית המכשיר, שמתארים את סרגל המשימות או את סמלי הניווט. ההגדרות האלה יכולות להשתנות בזמן הריצה בהתאם לשיטת הניווט המועדפת על המשתמש ולאינטראקציה עם סרגל המשימות.

WindowInsets.navigationBarsIgnoringVisibility

ההוספות של סרגל הניווט כשהן גלויות. אם סרגלי הניווט מוסתרים (בגלל כניסה למצב אימרסיבי במסך מלא), אז השוליים של סרגל הניווט הראשי יהיו ריקים, אבל השוליים האלה לא יהיו ריקים.

WindowInsets.captionBar

ההוספה שמתארת את העיטור של חלון ממשק המשתמש של המערכת אם הוא בחלון חופשי, כמו סרגל הכותרת העליון.

WindowInsets.captionBarIgnoringVisibility

ההוספות של סרגל הכתוביות כשהן גלויות. אם שורות הכותרת מוסתרות, השוליים של שורת הכותרת הראשית יהיו ריקים, אבל השוליים האלה לא יהיו ריקים.

WindowInsets.systemBars

האיחוד של ה-insets של סרגל המידע, שכוללים את שורות הסטטוס, סרגלי הניווט וסרגל הכיתוב.

WindowInsets.systemBarsIgnoringVisibility

ההוספות של סרגל המידע כשהוא גלוי. אם סרגלי המידע מוסתרים (בגלל כניסה למצב אימרסיבי של מסך מלא), אז ה-insets של סרגל המידע הראשי יהיו ריקים, אבל ה-insets האלה לא יהיו ריקים.

WindowInsets.ime

השוליים שמתארים את כמות המקום שהמקלדת הווירטואלית תופסת בחלק התחתון.

WindowInsets.imeAnimationSource

ההוספות שמתארות את כמות המקום שהמקלדת הווירטואלית תפסה לפני האנימציה הנוכחית של המקלדת.

WindowInsets.imeAnimationTarget

ההוספות שמתארות את כמות המקום שהמקלדת הווירטואלית תתפוס אחרי האנימציה הנוכחית של המקלדת.

WindowInsets.tappableElement

סוג של הוספות שמתאר מידע מפורט יותר על ממשק המשתמש של הניווט, ומספק את כמות המקום שבו המערכת תטפל ב "הקשות", ולא האפליקציה. בסרגלי ניווט שקופים עם ניווט באמצעות תנועות, אפשר להקיש על רכיבים מסוימים באפליקציה דרך ממשק המשתמש של הניווט במערכת.

WindowInsets.tappableElementIgnoringVisibility

ההגדרות של הרכיבים שאפשר ללחוץ עליהם כשהם גלויים. אם הרכיבים שניתן ללחוץ עליהם מוסתרים (בגלל כניסה למצב מסך מלא אימרסיבי), הרכיבים הראשיים שניתן ללחוץ עליהם יהיו ריקים, אבל הרכיבים האלה לא יהיו ריקים.

WindowInsets.systemGestures

ההוספות שמייצגות את כמות ההוספות שבהן המערכת תיירט תנועות לניווט. אפליקציות יכולות לציין באופן ידני טיפול בכמות מוגבלת של התנועות האלה באמצעות Modifier.systemGestureExclusion.

WindowInsets.mandatorySystemGestures

קבוצת משנה של תנועות מובנות במערכת שתמיד יטופלו על ידי המערכת, ואי אפשר לבטל את ההסכמה להן באמצעות Modifier.systemGestureExclusion.

WindowInsets.displayCutout

התוספות שמייצגות את המרווח שצריך כדי למנוע חפיפה עם מגרעת במסך (מגרעת או חור).

WindowInsets.waterfall

התוספות שמייצגות את האזורים המעוקלים של מסך מעוקל. במסך מעוגל יש אזורים מעוקלים לאורך קצוות המסך, שבהם המסך מתחיל להתעקל לאורך צידי המכשיר.

הסוגים האלה מסוכמים בשלושה סוגים של הוספות "בטוחות" שמוודאות שהתוכן לא מוסתר:

סוגי ה-inset ה "בטוחים" האלה מגינים על התוכן בדרכים שונות, בהתאם ל-inset של הפלטפורמה הבסיסית:

  • אפשר להשתמש ב-WindowInsets.safeDrawing כדי להגן על תוכן שלא אמור להופיע מתחת לממשק המשתמש של המערכת. זהו השימוש הנפוץ ביותר ב-inset: כדי למנוע שרטוט של תוכן שמוסתר על ידי ממשק המשתמש של המערכת (באופן חלקי או מלא).
  • אפשר להשתמש ב-WindowInsets.safeGestures כדי להגן על התוכן באמצעות תנועות. כך אפשר למנוע התנגשות בין תנועות מובנות במערכת לבין תנועות באפליקציה (כמו תנועות שקשורות לגיליונות תחתונים, לקרוסלות או למשחקים).
  • כדי לוודא שאין חפיפה חזותית וחפיפה של תנועות בתוכן, משתמשים ב-WindowInsets.safeContent כשילוב של WindowInsets.safeDrawing ו-WindowInsets.safeGestures.