UI برای برنامه‌های مبتنی بر Views Android توسعه دهید

روش Compose را امتحان کنید
Jetpack Compose با استفاده از Jetpack XR SDK جعبه ابزار UI توصیه شده برای Android XR است.

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

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

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

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

setSubspaceContent {
   SpatialPanel(
       view = MyCustomView(this),
       modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
   )
}

از Android Views و APIهای قابلیت همکاری Compose استفاده کنید

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

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

از ComposeView در طرح XML خود برای افزودن Composables و ایجاد محتوای XR جدید استفاده کنید. از [ ViewBinding ][ViewBinding] برای فراخوانی ComposeView در تابع onCreateView استفاده کنید.

درباره راهنمای ComposeView بیشتر بخوانید .

override fun onCreateView(
   inflater: LayoutInflater,
   container: ViewGroup?,
   savedInstanceState: Bundle?
): View {
   val view = inflater.inflate(R.layout.fragment_first, container, false)
   val composeView = view.findViewById<ComposeView>(R.id.compose_view)
   composeView.apply {
       // Dispose of the Composition when the view's LifecycleOwner
       // is destroyed
       setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
       setContent {
           // In Compose world
           Orbiter(
               position = Edge.Top,
               offset = 10.dp,
               alignment = Alignment.End
           ) {
               SpatialPanel(SubspaceModifier.height(500.dp).width(500.dp)) {
                   Text("Spatial Panel with Orbiter")
               }
           }
       }
       return view
   }
}

مستقیماً با کتابخانه Jetpack SceneCore کار کنید

Compose for XR در بالای Jetpack SceneCore ساخته شده است. اگر یک برنامه مبتنی بر Views را فضاسازی می‌کنید، می‌توانید به استفاده از کد UI موجود خود در Compose for XR ادامه دهید یا به جای آن، مستقیماً با Session Jetpack SceneCore کار کنید.

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

val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
   panelContent,
   surfaceDimensionsPx = Dimensions(500f,500f,500f),
   dimensions = Dimensions(1f,1f,1f),
   name = "panel entity"
)