ב-Jetpack Compose Glimmer, GlimmerHorizontalPager היא פריסה שניתנת לגלילה אופקית, והדפים שלה מסודרים ברצף.
הוא דומה ל-HorizontalPager הרגיל שנמצא ב-Compose Foundation, אבל הוא מותאם למשקפיים עם תצוגה פנימית עם התנהגויות Glimmer וערכי ברירת מחדל.
כברירת מחדל, רק דף אחד מוצג באופן בולט בכל פעם. כדי לספק חוויה חלקה, רכיב ה-pager משתמש באנימציות של הצמדה כדי לוודא שדף תמיד מתמקם בדיוק בגבולות של אזור התצוגה אחרי שהמשתמש מסיים את תנועת הגלילה.
GlimmerHorizontalPager.פרמטרים חשובים ואפשרויות פריסה
רכיב GlimmerHorizontalPager מספק פרמטרים שאפשר להתאים אישית כדי לשלוט במרווחים, ביישור הפריסה ובטעינה מדורגת. דוגמאות לפרמטרים כאלה:
| פרמטר | תיאור |
|---|---|
|
אובייקט |
|
הוספת ריווח מסביב לגבולות התוכן הכוללים אחרי החיתוך. שימושי להוספת ריווח לפני הדף הראשון או אחרי הדף האחרון. |
|
הרווח האופקי בין הדפים בתצוגת הדפים. |
|
משבצת שניתנת להגדרה ומציגה את אינדיקטור הדף הפעיל. ברירת המחדל היא |
|
מספר הדפים שייווצרו ויוצבו מעבר לאזור התצוגה הגלוי כאופטימיזציה לטעינה מראש. כדי לשמור על יעילות ההרכבה העצלנית, מומלץ להימנע מהגדרת ערכים גדולים. |
מידע על כל הפרמטרים הזמינים מופיע במאמרי העזרה.
המלצה להנפשת טקסט
במהלך אנימציות ומעברים של הצמדת דפים במשקפיים עם תצוגה פנימית, יכולים להופיע ארטיפקטים של הצמדת פיקסלים ברינדור טקסט שמוגדר כברירת מחדל. ההגדרה
TextMotion.Animated מבטיחה עיבוד חלק של אנימציות פריסה:
Text( text = "Page: $page", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), )
דוגמה: תצוגת דפים אופקית
בדוגמת הקוד הבאה אפשר לראות איך יוצרים רכיב בסיסי של דפדוף אופקי עם 10 דפים, ומציבים רכיב Card בכל דף:
// Hoist the pager state, specifying the total page count with a lambda. val pagerState = rememberGlimmerPagerState(pageCount = { 10 }) GlimmerHorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize(), ) { page -> // Use Glimmer components like Card and Text for optimized glasses styling. Card(modifier = Modifier.fillMaxWidth()) { Text( text = "Page: $page", // Recommended: use TextMotion.Animated for smooth transitions in a pager. style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } }
מידע חשוב על הקוד
- State: מאתחל
GlimmerPagerStateבאמצעותrememberGlimmerPagerState(pageCount = { 10 })כדי לנהל את המצב של מכשיר הפייג'ר. - תוכן של משבצת בדף: מקבל את אינדקס הדף
pageבתוך פונקציית ה-lambdaGlimmerPagerScopeכדי לעבד כל כרטיס. - סגנון טקסט של אנימציה חלקה: מעתיק את
LocalTextStyle.currentומפעיל במפורש אתTextMotion.Animated. - אינדיקטור אוטומטי של דפים: בניגוד לרכיבי החלפה בין דפים רגילים של Compose שדורשים רכיב אינדיקטור חיצוני,
GlimmerHorizontalPagerמטמיע כברירת מחדל אינדיקטור של דפים בסגנון נקודות.
אינדיקטורים של הדף
כברירת מחדל, התג GlimmerHorizontalPager מעבד אינדיקטור דף שמבוסס על נקודות באמצעות GlimmerHorizontalPagerDefaults.PageIndicator. האינדיקטור מתאים את ערכת הצבעים שלו באופן אוטומטי:
- הנקודה הפעילה משתמשת בצבע התוכן שנקבע מתוך
surfaceהסמוך ביותר.
אפשר להעביר PageIndicator מותאם אישית כדי לציין צבעים ספציפיים, או להחליף את הנקודה בפריסה מותאמת אישית משלכם:
GlimmerHorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize(), // Use a page numbers instead of the default dot-indicator pageIndicator = { Text( text = "${pagerState.currentPage + 1} / ${pagerState.pageCount}", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } )