إنّ استخدام إطار عمل Android Jetpack Compose هو أفضل طريقة للاستفادة من أحدث التطورات في تطوير واجهة مستخدم Android والتأكّد من أنّ تطبيقك متوافق مع أفضل الممارسات في المجال.
ومع ذلك، إذا لم تكن قد نقلت بياناتك وكنت تعمل على توفير ميزة "العرض المكاني" لتطبيق يستند إلى Android Views، هناك بعض الأساليب التي يمكنك اتّباعها.
إعادة استخدام "طرق العرض" الحالية ضمن "لوحات العرض المكانية"
على الرغم من أنّ SpatialPanel
هي جزء من مكتبة Jetpack Compose لتطبيقات الواقع المعزّز، إلا أنّها
تقبل أيضًا Views. عند استخدام setSubspaceContent()
في MainActivity،
ضَع عرضًا حاليًا في SpatialPanel
كما هو موضّح في المثال التالي.
setSubspaceContent { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this) } }
استخدام واجهات برمجة تطبيقات Android 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 = PixelDimensions(500, 500), name = "panel entity" )