פלטפורמת Android אחראית על רינדור ממשק המשתמש של המערכת, כמו שורת הסטטוס וסרגל הניווט. ממשק המשתמש הזה של המערכת מוצג בלי קשר לאפליקציה שבה המשתמש משתמש.
WindowInsets מספק מידע על ממשק המשתמש של המערכת כדי לוודא שהאפליקציה מוצגת באזור הנכון, ושממשק המשתמש של המערכת לא מסתיר את ממשק המשתמש של האפליקציה.
ב-Android 14 (רמת API 34) ומטה, ממשק המשתמש של האפליקציה לא מוצג מתחת לסרגלי המידע ולמגרעות במסך כברירת מחדל.
ב-Android 15 (רמת API 35) ומעלה, האפליקציה מוצגת מתחת לסרגלי המידע ולמגרעות במסך ברגע שהיא מטרגטת ל-SDK 35. כך חוויית המשתמש חלקה יותר, והאפליקציה יכולה לנצל את כל שטח החלון שזמין לה.
הצגת תוכן מאחורי ממשק המשתמש של המערכת נקראת פריסה מקצה לקצה. בדף הזה מוסבר על הסוגים השונים של ה-insets, איך להגדיר את האפליקציה מקצה לקצה ואיך להשתמש בממשקי ה-API של ה-insets כדי להוסיף אנימציה לממשק המשתמש ולוודא שרכיבי ממשק המשתמש של המערכת לא מסתירים את תוכן האפליקציה.
יסודות ה-inset
כשמגדירים אפליקציה מקצה לקצה, צריך לוודא שממשק המשתמש של המערכת לא מסתיר תוכן ואינטראקציות חשובים. לדוגמה, אם כפתור ממוקם מאחורי סרגל הניווט, יכול להיות שהמשתמש לא יוכל ללחוץ עליו.
הגודל של ממשק המשתמש של המערכת והמידע על המיקום שלו מצוינים באמצעות הוספות.
לכל חלק בממשק המשתמש של המערכת יש סוג תואם של הוספה שמתאר את הגודל שלו ואת המיקום שלו. לדוגמה, הוספות של שורת הסטטוס מספקות את הגודל והמיקום של שורת הסטטוס, ואילו הוספות של סרגל הניווט מספקות את הגודל והמיקום של סרגל הניווט. כל סוג של הוספה כולל ארבעה ממדי פיקסלים: למעלה, משמאל, מימין ולמטה. המידות האלה מציינות את המרחק של ממשק המשתמש של המערכת מהצדדים המתאימים של חלון האפליקציה. כדי למנוע חפיפה עם ממשק המשתמש של המערכת, צריך להגדיר את ממשק המשתמש של האפליקציה כך שיהיה מוסט בהתאם.
סוגי ה-inset המובנים האלה של Android זמינים דרך WindowInsets:
ההוספות שמתארות את שורות הסטטוס. אלה הסרגלים העליונים של ממשק המשתמש של המערכת, שמכילים סמלי התראות ואינדיקטורים אחרים. |
|
ההוספות של שורת הסטטוס כשהן גלויות. אם שורות הסטטוס מוסתרות (בגלל כניסה למצב אימרסיבי של מסך מלא), השוליים של שורת הסטטוס הראשית יהיו ריקים, אבל השוליים האלה לא יהיו ריקים. |
|
ההגדרות שמתארות את סרגלי הניווט. אלה סרגלי ממשק המשתמש של המערכת בצד שמאל, ימין או בתחתית המכשיר, שמתארים את סרגל המשימות או את סמלי הניווט. ההגדרות האלה יכולות להשתנות בזמן הריצה בהתאם לשיטת הניווט המועדפת על המשתמש ולאינטראקציה עם סרגל המשימות. |
|
ההוספות של סרגל הניווט כשהן גלויות. אם סרגלי הניווט מוסתרים (בגלל כניסה למצב אימרסיבי במסך מלא), אז השוליים של סרגל הניווט הראשי יהיו ריקים, אבל השוליים האלה לא יהיו ריקים. |
|
ההוספה שמתארת את העיטור של חלון ממשק המשתמש של המערכת אם הוא בחלון חופשי, כמו סרגל הכותרת העליון. |
|
ההוספות של סרגל הכתוביות כשהן גלויות. אם שורות הכותרת מוסתרות, השוליים של שורת הכותרת הראשית יהיו ריקים, אבל השוליים האלה לא יהיו ריקים. |
|
האיחוד של ה-insets של סרגל המידע, שכוללים את שורות הסטטוס, סרגלי הניווט וסרגל הכיתוב. |
|
ההוספות של סרגל המידע כשהוא גלוי. אם סרגלי המידע מוסתרים (בגלל כניסה למצב אימרסיבי של מסך מלא), אז ה-insets של סרגל המידע הראשי יהיו ריקים, אבל ה-insets האלה לא יהיו ריקים. |
|
השוליים שמתארים את כמות המקום שהמקלדת הווירטואלית תופסת בחלק התחתון. |
|
ההוספות שמתארות את כמות המקום שהמקלדת הווירטואלית תפסה לפני האנימציה הנוכחית של המקלדת. |
|
ההוספות שמתארות את כמות המקום שהמקלדת הווירטואלית תתפוס אחרי האנימציה הנוכחית של המקלדת. |
|
סוג של הוספות שמתאר מידע מפורט יותר על ממשק המשתמש של הניווט, ומספק את כמות המקום שבו המערכת תטפל ב "הקשות", ולא האפליקציה. בסרגלי ניווט שקופים עם ניווט באמצעות תנועות, אפשר להקיש על רכיבים מסוימים באפליקציה דרך ממשק המשתמש של הניווט במערכת. |
|
ההגדרות של הרכיבים שאפשר ללחוץ עליהם כשהם גלויים. אם הרכיבים שניתן ללחוץ עליהם מוסתרים (בגלל כניסה למצב מסך מלא אימרסיבי), הרכיבים הראשיים שניתן ללחוץ עליהם יהיו ריקים, אבל הרכיבים האלה לא יהיו ריקים. |
|
ההוספות שמייצגות את כמות ההוספות שבהן המערכת תיירט תנועות לניווט. אפליקציות יכולות לציין באופן ידני טיפול בכמות מוגבלת של התנועות האלה באמצעות |
|
קבוצת משנה של תנועות מובנות במערכת שתמיד יטופלו על ידי המערכת, ואי אפשר לבטל את ההסכמה להן באמצעות |
|
התוספות שמייצגות את המרווח שצריך כדי למנוע חפיפה עם מגרעת במסך (מגרעת או חור). |
|
התוספות שמייצגות את האזורים המעוקלים של מסך מעוקל. במסך מעוגל יש אזורים מעוקלים לאורך קצוות המסך, שבהם המסך מתחיל להתעקל לאורך צידי המכשיר. |
הסוגים האלה מסוכמים בשלושה סוגים של הוספות "בטוחות" שמוודאות שהתוכן לא מוסתר:
סוגי ה-inset ה "בטוחים" האלה מגינים על התוכן בדרכים שונות, בהתאם ל-inset של הפלטפורמה הבסיסית:
- אפשר להשתמש ב-
WindowInsets.safeDrawingכדי להגן על תוכן שלא אמור להופיע מתחת לממשק המשתמש של המערכת. זהו השימוש הנפוץ ביותר ב-inset: כדי למנוע שרטוט של תוכן שמוסתר על ידי ממשק המשתמש של המערכת (באופן חלקי או מלא). - אפשר להשתמש ב-
WindowInsets.safeGesturesכדי להגן על התוכן באמצעות תנועות. כך אפשר למנוע התנגשות בין תנועות מובנות במערכת לבין תנועות באפליקציה (כמו תנועות שקשורות לגיליונות תחתונים, לקרוסלות או למשחקים). - כדי לוודא שאין חפיפה חזותית וחפיפה של תנועות בתוכן, משתמשים ב-
WindowInsets.safeContentכשילוב שלWindowInsets.safeDrawingו-WindowInsets.safeGestures.
מומלץ בשבילכם
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- רכיבים ופריסות של Material
- העברת
CoordinatorLayoutאל Compose - עוד דברים שכדאי לבדוק