تطوير واجهة مستخدم للتطبيقات المستندة إلى طرق عرض Android

تجربة طريقة "الكتابة"
‫Jetpack Compose باستخدام حزمة تطوير البرامج (SDK) لمنصة Jetpack XR هي مجموعة أدوات واجهة المستخدم المقترَحة لمنصة Android XR.

يُعدّ استخدام إطار عمل Android Jetpack Compose أفضل طريقة للاستفادة من أحدث التطورات في تطوير واجهات المستخدم على Android والتأكّد من أنّ تطبيقك يواكب أفضل الممارسات في المجال.

ومع ذلك، إذا لم تكن قد نقلت بياناتك وكنت تعمل على تحويل تطبيق يستند إلى Android Views إلى تطبيق مكاني، يمكنك اتّخاذ بعض الإجراءات.

إعادة استخدام طرق العرض الحالية ضمن SpatialPanels

على الرغم من أنّ SpatialPanels تشكّل جزءًا من مكتبة Jetpack Compose for XR، إلا أنّها تقبل أيضًا عناصر View. عند استخدام Subspace في MainActivity، ضَع طريقة عرض حالية في SpatialPanel كما هو موضّح في المثال التالي.

setContent {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
        ) { MyCustomView(this@ActivityWithSubspaceContent) }
    }
}

استخدام واجهات برمجة التطبيقات المتوافقة مع Android Views وCompose

راجِع الإرشادات حول التوافقية التشغيلية بين Views وCompose. يتناول هذا المستند استخدام هذين الإطارين معًا، ويتضمّن روابط تؤدي إلى نماذج الرموز التي يمكنك استخدامها.

استخدام ComposeView لإضافة لوحات فضائية ومدارات إلى جزء حالي

استخدِم ComposeView في تصميم XML لإضافة عناصر قابلة للإنشاء وإنشاء محتوى جديد للواقع الممتد. استخدِم ربط العرض أو 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 = IntSize2d(500, 500),
    name = "panel entity"
)