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

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

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

ومع ذلك، إذا لم تكن قد نقلت بياناتك وكنت تعمل على توفير ميزة "العرض المكاني" لتطبيق مستند إلى Android Views، هناك بعض الأساليب التي يمكنك اتّباعها.

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

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

setSubspaceContent {
   SpatialPanel(
       view = MyCustomView(this),
       modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
   )
}

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

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

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

استخدِم ComposeViewفي تنسيق XML لإضافة عناصر قابلة للتجميع وإنشاء محتوى جديد للواقع المعزّز. استخدِم [ViewBinding][ViewBinding] لاستدعاء ComposeView في الدالة onCreateView.

مزيد من المعلومات عن إرشادات ComposeView

override fun onCreateView(
   inflater: LayoutInflater,
   container: ViewGroup?,
   savedInstanceState: Bundle?
): View {
   val view = inflater.inflate(R.layout.fragment_first, container, false)
   val composeView = view.findViewById<ComposeView>(R.id.compose_view)
   composeView.apply {
       // Dispose of the Composition when the view's LifecycleOwner
       // is destroyed
       setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
       setContent {
           // In Compose world
           Orbiter(
               position = Edge.Top,
               offset = 10.dp,
               alignment = Alignment.End
           ) {
               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. يمكنك جعل اللوحات قابلة للنقل أو إعادة الحجم باستخدام المكونات. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إضافة سلوك شائع إلى الكيانات.

val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
   panelContent,
   surfaceDimensionsPx = Dimensions(500f,500f,500f),
   dimensions = Dimensions(1f,1f,1f),
   name = "panel entity"
)