ساختن واسط کاربر فضایی برای برنامه‌های مبتنی بر Views در Android

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

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

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

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

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

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

استفاده کردن از میاناهای برنامه‌سازی کاربردی هم‌کنش‌پذیری Android Views و Compose

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

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

از ComposeView در چیدمان XML خود برای افزودن Composables و ایجاد محتوای 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 ویژه واقعیت گسترده برپایه 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 = IntSize2d(500, 500),
    name = "panel entity"
)