يُعدّ استخدام إطار عمل Android Jetpack Compose أفضل طريقة للاستفادة من أحدث التطوّرات في تطوير واجهة مستخدم Android والتأكّد من أنّ تطبيقك يظل مواكبًا لأفضل الممارسات في المجال.
ومع ذلك، إذا لم تكن قد نقلت بياناتك، وكنت تعمل على تحويل تطبيق مستند إلى طرق عرض Android إلى تطبيق مكاني، فهناك بعض الطرق التي يمكنك اتّباعها.
إعادة استخدام طرق العرض الحالية ضمن SpatialPanels
على الرغم من أنّ SpatialPanel جزء من مكتبة Jetpack Compose for XR، فإنّه
يقبل أيضًا طُرق العرض. عند استخدام Subspace في MainActivity،
ضَع طريقة عرض حالية في SpatialPanel كما هو موضّح في المثال
التالي.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
استخدام واجهات برمجة التطبيقات الخاصة بإمكانية التشغيل التفاعلي بين طرق عرض Android و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. إذا كنت
تُضفي طابعًا مكانيًا على تطبيق يستند إلى 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" )