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

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

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