פיתוח ממשק משתמש מרחבי לאפליקציות שמבוססות על Android Views

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

הדרך הכי טובה לנצל את החידושים האחרונים בפיתוח ממשקי משתמש ל-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.

מידע נוסף על 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 = IntSize2d(500, 500),
    name = "panel entity"
)