Desenvolver a interface de apps baseados em visualizações do Android

Teste o jeito do Compose
O Jetpack Compose usando o SDK do Jetpack XR é o kit de ferramentas de UI recomendado para o Android XR.

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