إنّ استخدام إطار عمل 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"
)