מכשירי XR שמתאימים לשימוש
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
ב-Jetpack Compose Glimmer, VerticalStack הוא פריסה עצלה עם גלילה אנכית, שמסדרת פריטים ברצף תלת-ממדי עם חפיפה ויזואלית. הפריט הראשי מוצג בחזית, והפריטים הבאים מוצבים מאחוריו.
התנהגויות של גלילה ומיקום
הפריטים ב-stacks מסודרים בפריסה קומפקטית עם חפיפה, ולכן יש להם התנהגויות שונות מסוגים אחרים של רכיבים מסודרים, כמו רשימות:
- כשמשתמש גולל אנכית, הפריט הפעיל בחזית עובר אל מחוץ לתצוגה, וכך הפריט שמתחתיו יכול להחליק אל המיקום הבולט בחזית.
- אחרי שהמשתמש מסיים את התנועה שלו, הפריטים תמיד קופצים קדימה באמצעות אנימציה של קפיץ מיוחדת.
- הפריטים ממוקמים לאורך ציר ה-Z, והפריטים שמופיעים בהמשך הרשימה ממוקמים מאחורי הפריט הראשי.
ניהול המיקוד
ה-VerticalStack משתמש במערכת מיקוד מיוחדת כדי לוודא שהפריט הנוכחי בחזית הוא תמיד היעד העיקרי לאינטראקציית משתמש:
- מיקוד ראשוני וכניסה מחדש: המיקוד הראשוני והכניסה מחדש מתבצעים לפריט העליון הנוכחי בסטאק.
- התראה על מיקוד אוטומטי: כשפריטים עוברים, הסטאק מבקש מיקוד לפריט העליון.
- מעקב אחר המיקוד: כל פריט משתמש ב-
onFocusChangedכדי להודיע ל-StackStateעל סטטוס המיקוד שלו.
דוגמה: יצירת ערימה אנכית
הקוד הבא יוצר סטאק אנכי עם כמה פריטים:
@Composable fun VerticalStackSample() { VerticalStack(modifier = Modifier.fillMaxWidth().height(364.dp)) { item(key = 0) { Card(modifier = Modifier.fillMaxSize().itemDecoration(CardDefaults.shape)) { Text( "Item-0", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } } items(count = 10, key = { it + 1 }) { index -> Card(modifier = Modifier.fillMaxSize().itemDecoration(CardDefaults.shape)) { Text( "Item-${index + 1}", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } } } }
מידע חשוב על הקוד
- מגדיר את
textMotionשלLocalTextStyleהטקסט לערךAnimated. כך אפשר לשפר את עיבוד הטקסט במהלך אנימציות של פריסות או מעברים של שינוי גודל, ולמנוע חפצים של הצמדת פיקסלים. - הפונקציה מספקת גודל ספציפי של
364.dpלגובה של הערימה האנכית. תמיד צריך לציין גובה ספציפי, להשתמש במגדיר גובה או להחיל את המגדירfillMaxSizeכדי להגדיר את האזור החזותי למעברים בין כרטיסים. - בניגוד לרכיבים אחרים שמקבלים פרמטר צורה ישירות,
VerticalStackמנהל את הגבולות החזותיים של הפריטים שלו באמצעות משנה המאפייניםitemDecoration. בדוגמה הזו, הצורה זהה לכל הפריטים, כולל הפריט הראשוניitemDecoration, כדי לשמור על אפקטים חזותיים ועל חיתוך עקביים. בדוגמה הזו נשתמש בערך ברירת המחדלCardDefaults.shape.