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 SpatialPanel
s 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" )