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

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

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

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

استفاده مجدد از «نماهای» موجود در «پانل‌های فضایی»

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

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

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

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

از ComposeView برای افزودن پانل‌های فضایی و چرخان‌ها به یک تکه‌برنامه موجود استفاده کنید

از ComposeView در چیدمان XML خود برای افزودن «ترکیب‌شونده‌ها» و ایجاد محتوای 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 ساخته شده است. اگر درحال فضایی‌سازی کردن برنامه مبتنی بر «نماها» هستید، می‌توانید به استفاده از کد واسط کاربر موجودتان در Compose for XR ادامه دهید یا انتخاب کنید که مستقیماً با Session Jetpack SceneCore کار کنید.

می‌توانید بااستفاده از PanelEntity، پانل‌ها را مستقیماً از SceneCore بسازید. اندازه پانل را بااستفاده از dimensions برحسب متر یا بااستفاده از pixelDimensions برحسب پیکسل تنظیم کنید. می‌توانید بااستفاده از عناصر مربوطه، پانل‌ها را قابل‌جابه‌جایی یا تغییر اندازه کنید. برای کسب اطلاعات بیشتر، افزودن رفتار مشترک به نهادها را ببینید.

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