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

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

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

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

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

على الرغم من أنّ SpatialPanel هي جزء من مكتبة Compose في Jetpack لتطبيقات الواقع المعزّز ، إلا أنّها تقبل أيضًا 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"
)