Usar o framework Android Jetpack Compose é a melhor maneira de aproveitar os avanços mais recentes no desenvolvimento de interface do Android e verificar se o aplicativo permanece atualizado com as práticas recomendadas do setor.
No entanto, se você não fez a migração e está trabalhando para espacializar um app baseado em Android Views, há algumas abordagens que podem ser usadas.
Reutilizar suas visualizações atuais em SpatialPanels
Embora os SpatialPanels façam parte da biblioteca Jetpack Compose para XR, eles
também aceitam Views. Ao usar Subspace na sua MainActivity,
coloque uma visualização em um SpatialPanel, conforme mostrado no exemplo
a seguir.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
Usar APIs de interoperabilidade do Android Views e do Compose
Consulte as orientações sobre a interoperabilidade entre Views e 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 novos conteúdos de
RV. Use a vinculação de visualizações ou o 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 Jetpack SceneCore
O Compose para XR é criado com base no Jetpack SceneCore. Se você estiver
espacializando um app baseado em Views, poderá continuar usando o código da interface atual
no Compose para XR ou trabalhar diretamente com o
Session do Jetpack SceneCore.
É possível criar painéis diretamente do SceneCore usando PanelEntity. Defina o tamanho do painel em metros usando dimensions ou em pixels usando pixelDimensions. Você pode 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" )