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(
view = MyCustomView(this),
modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
)
}
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 RA. Use [ViewBinding
][ViewBinding] para chamar o
ComposeView
na função onCreateView
.
Leia mais sobre as orientações de ComposeView
.
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view = inflater.inflate(R.layout.fragment_first, container, false)
val composeView = view.findViewById<ComposeView>(R.id.compose_view)
composeView.apply {
// Dispose of the Composition when the view's LifecycleOwner
// is destroyed
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
// In Compose world
Orbiter(
position = Edge.Top,
offset = 10.dp,
alignment = Alignment.End
) {
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
. Faça com que os painéis sejam móveis ou redimensionáveis
usando componentes. Para mais informações, consulte Adicionar comportamento comum a
entidades.
val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
panelContent,
surfaceDimensionsPx = Dimensions(500f,500f,500f),
dimensions = Dimensions(1f,1f,1f),
name = "panel entity"
)