Android kullanıcı arayüzü geliştirmesindeki en son gelişmelerden yararlanmanın ve uygulamanızın sektördeki en iyi uygulamalara uygun kalmasının en iyi yolu Android Jetpack Compose çerçevesini kullanmaktır.
Ancak taşıma işlemini yapmadıysanız ve Android Views tabanlı bir uygulamayı mekansallaştırmaya çalışıyorsanız kullanabileceğiniz birkaç yaklaşım vardır.
Mevcut görünümlerinizi SpatialPanels'de yeniden kullanma
SpatialPanel
, XR için Jetpack Compose kitaplığının bir parçası olsa da Görünümleri de kabul eder. MainActivity'nizde setSubspaceContent
kullanırken aşağıdaki örnekte gösterildiği gibi mevcut bir görünümü SpatialPanel
içine yerleştirin.
setSubspaceContent {
SpatialPanel(
view = MyCustomView(this),
modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
)
}
Android Views ve Compose birlikte çalışabilirlik API'lerini kullanma
Görünümler ve Oluştur arasında birlikte çalışabilirlik hakkındaki kılavuza göz atın. Bu dokümanlar, bu çerçevelerin birlikte kullanımını kapsar ve kullanabileceğiniz kod örneklerinin bağlantılarını içerir.
Mevcut bir parçaya uzamsal paneller ve yörünge araçları eklemek için ComposeView kullanın
Composables eklemek ve yeni XR içerikleri oluşturmak için XML düzeninizde ComposeView
kullanın. onCreateView
işlevinde ComposeView
işlevini çağırmak için [ViewBinding
][ViewBinding] öğesini kullanın.
ComposeView
yönergeleri hakkında daha fazla bilgi edinin.
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
}
}
Doğrudan Jetpack SceneCore kitaplığıyla çalışma
XR için Compose, Jetpack SceneCore'un üzerine inşa edilmiştir. Görünümlere dayalı bir uygulamayı mekansallaştırıyorsanız XR için Compose'da mevcut kullanıcı arayüzü kodunuzu kullanmaya devam edebilir veya bunun yerine doğrudan Jetpack SceneCore'un Session
ile çalışmayı seçebilirsiniz.
PanelEntity
simgesini kullanarak panelleri doğrudan SceneCore'dan oluşturabilirsiniz. Bileşenleri kullanarak panelleri taşınabilir veya yeniden boyutlandırılabilir hale getirin. Daha fazla bilgi için Öğelere ortak davranış ekleme başlıklı makaleyi inceleyin.
val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
panelContent,
surfaceDimensionsPx = Dimensions(500f,500f,500f),
dimensions = Dimensions(1f,1f,1f),
name = "panel entity"
)