يُعدّ استخدام إطار عمل Android Jetpack Compose أفضل طريقة للاستفادة من أحدث التطورات في تطوير واجهات المستخدم على Android والتأكّد من أنّ تطبيقك يواكب أفضل الممارسات في المجال.
ومع ذلك، إذا لم تكن قد نقلت بياناتك وكنت تعمل على تحويل تطبيق يستند إلى Android Views إلى تطبيق مكاني، يمكنك اتّخاذ بعض الإجراءات.
إعادة استخدام طرق العرض الحالية ضمن SpatialPanels
على الرغم من أنّ SpatialPanel
s تشكّل جزءًا من مكتبة 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" )