איך יוצרים ממשק משתמש מרחבי לאפליקציות קיימות ל-Android שמבוססות על תצוגות

מכשירי XR רלוונטיים
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
משקפי XR
משקפי XR עם חיבור חוטי

שימוש ב-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"
)