توسعه رابط کاربری مکانی برای برنامه‌های مبتنی بر Views اندروید

دستگاه‌های XR قابل اجرا
این راهنما به شما کمک می‌کند تا برای این نوع دستگاه‌های XR تجربه ایجاد کنید.
هدست‌های XR
عینک‌های XR سیمی

استفاده از چارچوب Android Jetpack Compose بهترین راه برای بهره‌گیری از آخرین پیشرفت‌ها در توسعه رابط کاربری اندروید و تأیید به‌روز بودن برنامه شما با بهترین شیوه‌های صنعت است.

با این حال، اگر مهاجرت نکرده‌اید و در حال کار بر روی مکانی‌سازی یک برنامه مبتنی بر Android Views هستید، چند رویکرد وجود دارد که می‌توانید اتخاذ کنید.

استفاده مجدد از نماهای موجود خود در SpatialPanels

اگرچه SpatialPanel ها بخشی از کتابخانه Jetpack Compose for XR هستند، اما Viewها را نیز می‌پذیرند. هنگام استفاده از Subspace در MainActivity خود، یک View موجود را همانطور که در مثال زیر نشان داده شده است، در SpatialPanel قرار دهید.

setContent {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
        ) { MyCustomView(this@ActivityWithSubspaceContent) }
    }
}

استفاده از Viewهای اندروید و ایجاد APIهای تعامل‌پذیری

برای راهنمایی در مورد قابلیت همکاری بین Views و Compose به این راهنما مراجعه کنید. این مستندات نحوه استفاده از این چارچوب‌ها را با هم پوشش می‌دهد و حاوی پیوندهایی به نمونه کدهایی است که می‌توانید استفاده کنید.

استفاده از ComposeView برای اضافه کردن پنل‌های فضایی و مدارگردها به یک قطعه موجود

از یک ComposeView در طرح‌بندی XML خود برای افزودن Composableها و ایجاد محتوای XR جدید استفاده کنید. از View binding یا 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 بر حسب پیکسل تنظیم کنید. می‌توانید با استفاده از اجزای مربوطه، پنل‌ها را قابل حرکت یا قابل تغییر اندازه کنید. برای اطلاعات بیشتر، به Add common behavior to entitys مراجعه کنید.

val panelContent = MyCustomView(this)
val panelEntity = PanelEntity.create(
    session = xrSession,
    view = panelContent,
    pixelDimensions = IntSize2d(500, 500),
    name = "panel entity"
)