استفاده از چارچوب 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"
)