Usar o framework do Android Jetpack Compose é a melhor maneira de aproveitar os avanços mais recentes no desenvolvimento de interfaces do Android e garantir que seu app permaneça atualizado com as práticas recomendadas do setor.
No entanto, se você não tiver feito a migração e estiver trabalhando para espacializar um app baseado em Views Android, há algumas abordagens que podem ser usadas.
Reutilizar visualizações existentes em SpatialPanels
Embora os SpatialPanel
s façam parte da biblioteca Jetpack Compose para XR, eles também aceitam visualizações. Ao usar
setSubspaceContent
na
MainActivity, coloque uma visualização em um
SpatialPanel
, conforme mostrado no exemplo a seguir.
setSubspaceContent { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this) } }
Usar visualizações do Android e APIs de interoperabilidade do Compose
Consulte orientações sobre a interoperabilidade entre Views e Compose. Esta documentação aborda o uso desses frameworks e contém links para exemplos de código que você pode usar.
Use uma ComposeView para adicionar painéis espaciais e orbitadores a um fragmento
Use um ComposeView
no layout XML para adicionar elementos combináveis
e criar novos conteúdos 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 para 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 for XR é baseado no Jetpack
SceneCore. Se você estiver espacializando um app baseado em visualizações, poderá
continuar usando o código de interface existente no Compose para XR ou trabalhar
diretamente com o Session
do Jetpack SceneCore.
É possível criar painéis diretamente no 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 = PixelDimensions(500, 500), name = "panel entity" )