השימוש במסגרת Android Jetpack Compose הוא הדרך הטובה ביותר לנצל את השיפורים האחרונים בפיתוח ממשקי המשתמש של Android, ולוודא שהאפליקציה שלכם תמיד תהיה עדכנית בהתאם לשיטות המומלצות בתחום.
שימוש חוזר בתצוגות הקיימות ב-SpatialPanels
SpatialPanel
הם חלק מספריית Jetpack Compose for XR, אבל הם יכולים לקבל גם תצוגות (Views). כשמשתמשים ב-setSubspaceContent
ב-MainActivity, צריך להציב תצוגה קיימת ב-SpatialPanel
, כפי שמתואר בדוגמה הבאה.
setSubspaceContent { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this) } }
שימוש בממשקי API לתאימות הדדית של Android Views ו-Compose
הנחיות בנושא יכולת פעולה הדדית בין Views לבין Compose במסמך הזה מוסבר איך משתמשים בפלטפורמות האלה יחד, ויש בו קישורים לדוגמי קוד שאפשר להשתמש בהם.
שימוש ב-ComposeView כדי להוסיף לקטעים קיימים חלוניות מרחביות ורכיבי Orbiter
משתמשים ב-ComposeView
בפריסה של קובץ ה-XML כדי להוסיף רכיבים של Composables וליצור תוכן XR חדש. משתמשים בקישור תצוגה או ב-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. אם אתם ממיינים לאופן מרחבי אפליקציה שמבוססת על Views, תוכלו להמשיך להשתמש בקוד הממשק המשתמש הקיים ב-Compose for XR, או לעבוד ישירות עם Session
של Jetpack SceneCore.
אפשר ליצור לוחות ישירות מ-SceneCore באמצעות PanelEntity
. מגדירים את גודל החלונית במטרים באמצעות Dimensions
, או בפיקסלים באמצעות PixelDimensions
. אתם יכולים להשתמש ברכיבים המתאימים כדי להזיז את הלוחות או לשנות את הגודל שלהם. מידע נוסף זמין במאמר הוספת התנהגות משותפת לישויות.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = PixelDimensions(500, 500), name = "panel entity" )