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

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

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

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

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

SpatialPanels הם חלק מהספרייה של Jetpack Compose for XR, אבל הם יכולים לקבל גם תצוגות. כשמשתמשים ב-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. אם אתם מפתחים אפליקציה מבוססת-תצוגה תלת-ממדית, תוכלו להמשיך להשתמש בקוד הממשק המשתמש הקיים ב-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"
)