מידע על פריימים חתוכים

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

דוגמה לחיתוך במצב לאורך
איור 1. דוגמה לחיתוך במצב 'דיוקן'
דוגמה לחיתוך במצב פריסה לרוחב
איור 2. דוגמה לחיתוך בפריסה לרוחב

‫Android תומך בחלקים חתוכים במסך במכשירים עם Android מגרסה 9 (רמת API‏ 28) ומעלה. עם זאת, יצרני מכשירים יכולים גם לתמוך בחיתוכי מסך במכשירים עם Android בגרסה 8.1 ומטה.

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

מקרה ברירת מחדל

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

אפליקציות שמטרגטות רמת API‏ 35 ומעלה במכשירים עם Android 15 ומעלה, או פעילויות שקוראות ל-enableEdgeToEdge, מציירות באזור החיתוך.

במילים אחרות, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES ו-LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER מתפרשים כ-LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS בחלונות לא צפים באפליקציות שמטרגטות רמת API 35 ומעלה במכשירים עם Android 15 ומעלה.

טיפול ידני במידע על חיתוך

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

לגבי Compose, מומלץ להשתמש ב-displayCutout, ב-safeContent או ב-safeDrawing כדי לטפל בתוספות של חיתוך ברכיבים הניתנים להרכבה. הגישה הזו מאפשרת לכם להשתמש ברווח הפנימי של החלק החסר במסך במקומות שבהם זה נדרש, או להתעלם ממנו במקומות שבהם זה לא נדרש.

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}