שימוש ב-Android Jetpack Compose framework הוא הדרך הטובה ביותר לנצל את ההתקדמות האחרונה בפיתוח ממשק המשתמש של Android, ולוודא שהאפליקציה שלכם נשארת מעודכנת בשיטות המומלצות בתחום.
עם זאת, אם לא העברתם את האפליקציה ואתם עובדים על הוספת מרחביות לאפליקציה שמבוססת על תצוגות ב-Android, יש כמה גישות שאפשר לנקוט.
שימוש חוזר בתצוגות הקיימות ב-SpatialPanels
למרות ש-SpatialPanel הוא חלק מספריית Jetpack Compose for XR, הוא גם מקבל תצוגות. כשמשתמשים ב-Subspace ב-MainActivity, צריך להציב תצוגה קיימת ב-SpatialPanel, כמו בדוגמה הבאה.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
איך משתמשים בממשקי API של יכולת פעולה הדדית בין תצוגות Android ל-Compose
הנחיות לגבי יכולת פעולה הדדית בין Views ל-Compose במאמר הזה נסביר איך להשתמש במסגרות האלה ביחד, ונספק קישורים לדוגמאות קוד שתוכלו להשתמש בהן.
שימוש ב-ComposeView כדי להוסיף חלוניות מרחביות ורכיבי Orbit ל-Fragment קיים
משתמשים ב-ComposeView בפריסת ה-XML כדי להוסיף רכיבים שניתן לשלב וליצור תוכן XR חדש. משתמשים ב-View binding או ב-findViewById כדי למצוא את ComposeView בפונקציה onCreateView().
מידע נוסף על ההנחיות של ComposeView
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { val view = inflater.inflate(R.layout.example_fragment, container, false) view.findViewById<ComposeView>(R.id.compose_view).apply { // Dispose of the Composition when the view's LifecycleOwner // is destroyed setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { // In Compose world SpatialPanel(SubspaceModifier.height(500.dp).width(500.dp)) { Text("Spatial Panel with Orbiter") } } } return view }
עבודה ישירות עם ספריית Jetpack SceneCore
Compose for XR מבוסס על Jetpack SceneCore. אם אתם מוסיפים מרחביות לאפליקציה שמבוססת על תצוגות, אתם יכולים להמשיך להשתמש בקוד הקיים של ממשק המשתמש ב-Compose ל-XR, או לבחור לעבוד ישירות עם Session של Jetpack SceneCore.
אתם יכולים ליצור לוחות ישירות מ-SceneCore באמצעות PanelEntity. מגדירים את גודל הלוח במטרים באמצעות dimensions, או בפיקסלים באמצעות pixelDimensions. אתם יכולים להשתמש ברכיבים המתאימים כדי לאפשר למשתמשים להזיז את הלוחות או לשנות את הגודל שלהם. מידע נוסף זמין במאמר הוספת התנהגות נפוצה לישויות.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )