הדרך הכי טובה לנצל את החידושים האחרונים בפיתוח ממשקי משתמש ל-Android ולוודא שהאפליקציה שלכם תישאר עדכנית בהתאם לשיטות המומלצות בתעשייה היא להשתמש במסגרת Android Jetpack Compose.
עם זאת, אם לא ביצעתם מיגרציה ואתם עובדים על אפליקציה שמבוססת על Android Views, יש כמה גישות שתוכלו לנקוט.
שימוש חוזר בתצוגות קיימות ב-SpatialPanels
SpatialPanels הם חלק מספריית Jetpack Compose ל-XR, אבל הם מקבלים גם Views. כשמשתמשים ב-Subspace ב-MainActivity, צריך להציב תצוגה קיימת ב-SpatialPanel כמו שמוצג בדוגמה הבאה.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
שימוש בממשקי API של Android Views ו-Compose
אפשר לעיין בהנחיות בנושא פעולה הדדית בין Views לבין Compose. במסמכי התיעוד האלה מוסבר איך להשתמש במסגרות האלה יחד, ויש בהם קישורים לדוגמאות קוד שאפשר להשתמש בהן.
שימוש ב-ComposeView כדי להוסיף חלוניות מרחביות ורכיבי תצוגה מסתובבים לקטע קיים
משתמשים ב-ComposeView בפריסת ה-XML כדי להוסיף רכיבים שניתן להגדיר וליצור תוכן חדש של XR. כדי למצוא את ComposeView בפונקציה onCreateView(), אפשר להשתמש בView binding או ב-findViewById.
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 = IntSize2d(500, 500), name = "panel entity" )