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

כדאי לנסות את הכתיבה
ערכת הכלים המומלצת לבניית ממשק משתמש ל-Android XR היא Jetpack Compose באמצעות Jetpack XR SDK.

הדרך הכי טובה לנצל את החידושים האחרונים בפיתוח ממשקי משתמש ל-Android ולוודא שהאפליקציה שלכם תישאר עדכנית בהתאם לשיטות המומלצות בתעשייה היא באמצעות מסגרת Android Jetpack Compose.

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

שימוש חוזר בתצוגות קיימות ב-SpatialPanels

SpatialPanels הם חלק מהספרייה Jetpack Compose for 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 לצורך פעולה הדדית

אפשר לעיין בהנחיות בנושא פעולה הדדית בין תצוגות לבין כתיבה. במסמכי התיעוד האלה מוסבר איך להשתמש בשני המסגרות יחד, ויש בהם קישורים לדוגמאות קוד שאפשר להשתמש בהן.

שימוש ב-ComposeView כדי להוסיף חלוניות מרחביות ורכיבי תצוגה מסתובבים לקטע קיים

משתמשים ב-ComposeView בפריסת ה-XML כדי להוסיף פונקציות Composables וליצור תוכן 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"
)