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

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

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

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

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

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

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

יסודות של מודעות מוטמעות

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

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

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

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

WindowInsets.statusBars

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

WindowInsets.statusBarsIgnoringVisibility

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

WindowInsets.navigationBars

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

WindowInsets.navigationBarsIgnoringVisibility

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

WindowInsets.captionBar

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

WindowInsets.captionBarIgnoringVisibility

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

WindowInsets.systemBars

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

WindowInsets.systemBarsIgnoringVisibility

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

WindowInsets.ime

התמונות שמתארות את נפח המרחב שבתחתית המסך שבו ממוקמת מקלדת התוכנה.

WindowInsets.imeAnimationSource

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

WindowInsets.imeAnimationTarget

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

WindowInsets.tappableElement

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

WindowInsets.tappableElementIgnoringVisibility

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

WindowInsets.systemGestures

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

WindowInsets.mandatorySystemGestures

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

WindowInsets.displayCutout

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

WindowInsets.waterfall

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

הסוגים האלה מסוכמים בשלושה סוגים של 'הוספה בחלון משנה' 'בטוחים', שמבטיחים שהתוכן לא מוסתר:

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

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