Usar o framework do Android Jetpack Compose é a melhor maneira de aproveitar os avanços mais recentes no desenvolvimento de interfaces do Android e verificar se o aplicativo continua atualizado com as práticas recomendadas do setor.
No entanto, se você ainda não migrou e está trabalhando para espacializar um app baseado em Android Views, há algumas abordagens que podem ser usadas.
Reutilizar as visualizações atuais em SpatialPanels
Embora um SpatialPanel faça parte da biblioteca Jetpack Compose para XR, ele
também aceita visualizações. Ao usar Subspace na MainActivity,
coloque uma visualização atual em um SpatialPanel, conforme mostrado no exemplo
abaixo.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
Usar as APIs de interoperabilidade do Compose e das visualizações do Android
Consulte as orientações sobre interoperabilidade entre visualizações e o Compose. Esta documentação aborda o uso desses frameworks juntos e contém links para exemplos de código que você pode usar.
Usar uma ComposeView para adicionar painéis espaciais e orbitadores a um fragmento atual
Use um ComposeView no layout XML para adicionar elementos combináveis e criar conteúdo de XR. Use a vinculação de visualizações ou findViewById para encontrar o
ComposeView na função onCreateView().
Leia mais sobre as orientações do 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 }
Trabalhar diretamente com a biblioteca SceneCore do Jetpack
O Compose para XR é baseado no Jetpack SceneCore. Se você estiver
espacializando um app baseado em visualizações, poderá continuar usando o código de interface
no Compose para XR ou trabalhar diretamente com o
Session do Jetpack SceneCore.
Você pode criar painéis diretamente do SceneCore usando PanelEntity. Defina o tamanho do painel em metros usando dimensions ou em pixels usando pixelDimensions. É possível tornar os painéis móveis ou redimensionáveis
usando os componentes correspondentes. Para mais informações, consulte Adicionar comportamento comum a entidades.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )