Jetpack Compose para XR
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 23 de setembro de 2026 | - | - | 1.0.0-beta01 | - |
Declarar dependências
Para adicionar uma dependência ao XR Compose, inclua o repositório Maven do Google no seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta01") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.0
Versão 1.0.0-beta01
23 de setembro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-beta01 e androidx.xr.compose:compose-testing:1.0.0-beta01. A versão 1.0.0-beta01 contém estes commits.
Mudanças na API
- Removemos
DragPolicy, que estava descontinuado. UseSubspaceModifier.movable(). (I108d4). - Removemos o
ResizePolicydescontinuado e os usos dele emSpatialPaneleSpatialExternalSurface. Remova uma funçãoSubspaceModifier.resizabledescontinuada. Use o novoSubspaceModifier.resizablecom um novoResizePolicy. (I59e6b) - Adição do parâmetro
isPitchUpdateEnabledpara permitir a ativação ou desativação do acompanhamento de tom de forma independente. (Ie9e86). - A capacidade de aceitar valores nulos de
pitchLimitsfoi removida, ePitchLimits.UNCONSTRAINEDfoi renomeado comoPitchLimits.FullRange. (I0154f) ExposedDropdownMenuagora é uma função de extensão emExposedDropdownMenuBoxScopeem vez de um membro. Talvez seja necessário atualizar seu código com uma nova importação. (Ie8a65).- A classe
SurfaceProtectiondescontinuada foi removida. UseSpatialExternalSurfaceProtection. (Iab2c6). - A função do Orbiter que usa um
OrbiterPoseProviderfoi descontinuada em favor da que usaSpatialAlignment. (I4d12b) - Agora, o
SpatialActivityPanelexige umSpatialActivityPanelController(instanciado usandorememberSpatialActivityPanelController) para iniciar e gerenciar atividades incorporadas. (Id25c6). - O parâmetro
upDirectionfoi removido derotateToLookAtUsere parâmetros de restrições de rotação foram adicionados (isYawUpdateEnabledepitchLimits). (I1370a)
Correções de bugs
- Correção de vários problemas de
InteractionPolicy. Ocorria uma falha se um evento de entrada acontecesse no momento em que o elemento combinável ou filho (por exemplo, um Orbiter) iniciava uma sequência de descarte. Também corrige um problema em que uma criança recebia eventos de passar o cursor. (Ifc477). - Redução do tamanho do painel no
RotateToLookAtUserActivitypara evitar cortes em dispositivos com campo de visão menor. (I8d672).
Problemas conhecidos
- Há um problema com os painéis do Compose XR em que a criação de muitos painéis em uma única atividade pode causar corrupção no que está sendo visualizado, mesmo depois que os painéis são destruídos.
Versão 1.0.0-alpha17
12 de agosto de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha17 e androidx.xr.compose:compose-testing:1.0.0-alpha17. A versão 1.0.0-alpha17 contém estes commits.
Mudanças na API
- Remova a classe de valor
Meter. Ela é substituída porvirtualPixelDensityemScenecore. (I690ee). - A API
SpatialGltfModelagora é experimental e precisa ser ativada para uso. (I4557e). - Tornar
systemredimensionável e anulável (Ib0093). - Exposição de
DensityemSubspaceSemanticsInfopara testes. (I2e826). - A opção padrão
ResizePolicyfoi renomeada comosystem, e uma nova opçãoDefaultsem parâmetros foi adicionada (Ic8b16). FollowTargetfoi marcado como experimental Toda a APIFollowingSubspaceagora é experimental. (Id4ee3).- Remoção das APIs
GltfAnimation(Ic2894) - O método parametrizado
MovePolicy.default()foi renomeado comoMovePolicy.system(). Introduzimos uma propriedadeval MovePolicy.Defaultpara representar o comportamento padrão de movimento. (Iedcc9). - Ampliar os requisitos de ativação do
ExperimentalMoveAnchorPolicyparaPlaneSemanticePlaneOrientation(Ief927) - Remoção de
resetMinsdeVolumeConstraints.offset(Ib2f2f). - A função
SceneCoreEntitySizeAdapterdescontinuada foi removida. (Ib6722). - A sobrecarga
Subspacedescontinuada foi removida comallowUnboundedSubspace. (I8e97f). - A sobrecarga do modificador de semântica descontinuada foi removida. (I4ac10).
Correções de bugs
- Correção do problema em que filhos de um
Composablecom umInteractionPolicyanexado acionavam eventos de entrada (Icdba6)
Versão 1.0.0-alpha16
15 de julho de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha16 e androidx.xr.compose:compose-testing:1.0.0-alpha16. A versão 1.0.0-alpha16 contém estes commits.
Mudanças na API
- Remoção das APIs
ComponentOverride(I820c4) - As APIs
GltfAnimationeSpatialGltfModelAnimationforam marcadas como experimentais. Algumas propriedades foram transformadas em getters. (I8d689, b/524771027) - Corrigimos o comportamento geral da densidade estabelecendo que a conversão entre metros e pixels seja constante. O Meter.kt foi descontinuado. Agora,
Session.scene.virtualPixelDensitypode ser usado como alternativa. (I122ff, b/430097855, b/474168798) - Atualização do modificador redimensionável para usar um
ResizePolicyem vez de dois modificadores (I7fb0f, b/496257436, b/519672992). - Adição de um parâmetro de tolerância:
Dp = Dp(0.5f)a todas as declarações públicas de igualdade de dimensão e posição usando pontos flutuantes emSubspaceAssertions.kt. O comportamento de tolerância padrão (0.5.dp) está totalmente documentado. (I266cb, b/521491915). - Adição de sobrecarga móvel com parâmetro
movePolicye descontinuação detransformingMovableemovable(Ic88c1, b/481781189) - Adicionamos novas variantes não interativas do item de lista padrão e do item de lista segmentada que seguem as especificações do Material Expressive. A versão não expressiva foi descontinuada. (Ide4de, b/491994186).
- No Subspace, o parâmetro
allowUnboundedSubspacefoi descontinuado e está oculto. Agora, o comportamento sem limites pode ser alcançado usandoSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) no modificador Subspace. O parâmetroallowUnboundedSubspacefoi removido deFollowingSubspace. (Ia72ae, b/433624021). Session.createconvertido em uma função de suspensão. (I5d27f).- Adição de
SubspaceModifier.spatializedAudioOutput, que permite espacializar a reprodução de áudio usandoExoPlayerouSoundEffectPlayer(I46697, b/489421980, b/497867019). - Atualizamos
ComponentActivity.requestHomeSpace()erequestFullSpace()para retornarSpaceRequestResultna verificação de status. (If1672) AnchorEntityfoi atualizado para ser chamado deAnchorSpace(Ifa95e, b/513619219).- Método
fromResourcesem restrições deSpatialGltfModelSource(I1f5a1, b/503047416). - Os membros de
SubspaceSemanticsMatchersão públicos: a propriedadedescription, métodos de fábrica complementares (expectValue,keyIsDefined,keyNotDefined), funções de membro (matches,matchesAny) e operadores (and,or,not). (I972a4, b/460427288) - Atualizamos
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfoeSubspaceSemanticsModifierNodepara usar tipos de semântica espacial selecionados. (I80dea, b/460427288) - Renomeou
positionparaalignemSpatialAlignmente removeu métodos individuais de ajuste direcional em favor de uma APIalignunificada. (I9bdb2, b/479805937). - As APIs do modo de espaço descontinuadas foram removidas de
SpatialConfiguration. (I1ef5c, b/458712461) - Lançamento de
SubspaceSemanticsConfiguration. É uma configuração de propriedades semânticas para um nó espacial. Essa classe expõe com segurança métodos de consulta para semântica 3D sem vazar recursos semânticos 2D fundamentais para consumidores externos. (Id025e, b/460427288) - Introdução de
SubspaceSemanticsPropertyReceiver: um wrapper dedicado que limita as propriedades do contêiner de layout 3D a campos válidos (inicialmentetestTagecontentDescription). (I5cf5c, b/460427288)
Correções de bugs
- Atualizamos o
hasContentDescriptiondo modificador semântico para usar a correspondência de substrings por padrão. (I08214) - Adição de um
FollowBehavior.ExponentialDecay()restrito que oferece um comportamento de acompanhamento suave guiado pela física elástica. (I7449c, b/485639909, b/500493335)
A maioria das APIs será afetada por isso. Especificamente, o LocalSession CompositionLocal e todos os CompositionLocals que dependem de LocalSession (por exemplo, LocalSpatialConfiguration, LocalSpatialCapabilities etc.) agora serão resolvidos como null ou as versões não XR dele antes da inicialização do Session.
Quando o Session estiver disponível, a recomposição será acionada com o estado correto. (I0cfa4, b/514712835, b/514712835)
- Esclarecemos a documentação de
ComponentActivity.requestHomeSpaceeComponentActivity.requestFullSpacesobre comportamento de suspensão, cancelamento e simultaneidade. Testes atualizados para verificar a propagação deCancellationException. (I22f75, b/493289528)
Versão 1.0.0-alpha15
17 de junho de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha15 e androidx.xr.compose:compose-testing:1.0.0-alpha15. A versão 1.0.0-alpha15 contém estes commits.
Mudanças na API
- Descontinuamos
ResizePolicye o antigo modificador redimensionável, substituindo-o por uma nova sobrecargaSubspaceModifier.resizableeSubspaceModifier.transformingResizable. (I9e4bc). - APIs
SpatialGltfModelatualizadas: adicionamos suporte para carregar modelos de recursos usandoSpatialGltfModelSource.fromResource. Renomeamos a velocidade paraplaybackSpeedemSpatialGltfModelAnimatione adicionamos um método resume().SpatialGltfModelStatus.Loaded e Loading agora são objetos. (I523de). rotateToLookAtUserfoi marcada como uma API experimental. (I86c16).- Movemos e renomeamos a variável protegida
targetCurrentPosepara a variável localcurrentTargetPoseMeter. (Ia557c). - Atualize os kdocs
SpatialPaneleSpatialExternalSurfacepara incluir onde o objeto é renderizado dentro do tamanho do layout (I72104). - Encapsulamos a lógica de carregamento
SpatialGltfModelemSpatialGltfModelStatee esclarecemos o comportamento de falha. (Ibe98b). - Esclarecimento de
depthem kdocsSubspaceModifer.size(I0f84f).
Versão 1.0.0-alpha14
19 de maio de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha14 e androidx.xr.compose:compose-testing:1.0.0-alpha14. A versão 1.0.0-alpha14 contém estes commits.
Mudanças na API
- Introduzimos
transformingMovablepara o movimento 3D padrão processado pelo sistema e uma nova sobrecarga paramovablepara processar comportamentos de movimento personalizados. (I50960). SpatialGltfModel.fromData()foi removido. (I4d083).- Adicionamos uma nova interface de nó modificador,
SubspaceMeasuredSizeAwareModifierNode, que fornece um callbackonRemeasuredapós a transmissão de medição.SubspaceLayoutAwareModifierNodeagora estende essa nova interface. O modificadoronSizeChangedfoi atualizado para usaronRemeasured, garantindo que o callback seja acionado logo após a medição, não após a veiculação. (Iafbae). - Atualização de
InteractionPolicypara umInterface(I0ff30). - O Compose
compileSdkfoi atualizado para a API 37. Isso significa que é necessária uma versão mínima do AGP 9.2.0 ao usar o Compose. (Id45cd) - Kdocs de
Sizeatualizados (Iefa9a).
Versão 1.0.0-alpha13
6 de maio de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha13 e androidx.xr.compose:compose-testing:1.0.0-alpha13. A versão 1.0.0-alpha13 contém estes commits.
Mudanças na API
- A API Orbiter ainda vai passar por outras mudanças. Recomendamos suprimir os avisos de descontinuação para Orbiters e ficar de olho nas mudanças do Orbiter nas próximas versões.
- Quem usa
SceneCoreEntitypara renderizar glTFs precisa garantir que está transmitindosession.scene.activitySpaceao parâmetroparentda chamadaGltfModel.createpara que os glTFs sejam renderizados. - Adição da API
SpatialGltfModelpara permitir que os desenvolvedores adicionem Gltfs aos apps do Compose para XR. Os desenvolvedores também podem consultar animações e nós nos modelos Gltf. (I8b542, b/495422586) - Muda
SceneCoreEntitySizeAdapterde classe para interface (I5a784, b/475292310). SurfaceProtectionfoi renomeado comoSpatialExternalSurfaceProtectionKdocs deSpatialExternalSurfaceatualizados (Ifad0a, b/485231082).- A
currentWindowAdaptiveInfofoi descontinuada e a V2 foi lançada (I40ecf, b/424442112). - O modificador
resizableagora é público e aplicável a grupos (por exemplo,SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - O modificador
movableagora é público. Esse modificador funciona bem, no momento, paraSpatialPanelseSpatialExternalSurface. No entanto, a intenção é que eles sejam compatíveis com todos osSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063). SpatialEnterTransitioneSpatialExitTransitionmarcados como@Immutable(If1710, b/487757837).- A API
SpatialGltfModelestá marcada como restrita para esta versão até que sejam realizados mais testes. (Ibf003, b/466090694) DeviceTrackingMode.LAST_KNOWNfoi renomeado comoSPATIAL_LAST_KNOWN(com um substituto descontinuado),INERTIAL_LAST_KNOWNfoi adicionado para rastreamento de 3DoF eTRACKING_DEGRADEDfoi adicionado aTrackingState. (Ie661c, b/445466590).- Remoção do
SpatialLayoutSpacerdescontinuado (I7b36c). - Remoção da API de padding descontinuada (If1886)
- Adicionamos
floatRangeaos valores de viés. Remoção do valor padrão deLayoutDirection(I9d74e)
Correções de bugs
- Adicionamos exemplos de código e documentação KDoc para
SpatialColumn,SpatialRoweSpatialCurvedRow. (Iaf54f, b/495777633)
Versão 1.0.0-alpha12
25 de março de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha12 e androidx.xr.compose:compose-testing:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estes commits.
Mudanças na API
- Adicione a API
SpatialGltfModele as APIsSpatialGltfModelAnimationpara renderizar glTFs e controlar animações. MudamosSpatialGltfModelStateparaAutoCloseable. Agora, ele precisa ser fechado para liberar os recursos. (I11fde, b/466065486, b/481379924). No entanto, a APISpatialGltfModelestá marcada como restrita para esta versão até que sejam realizados mais testes. (Ibf003, b/466090694) - Adicionamos uma sobrecarga vazia descontinuada para
SubspaceModifier.rotate. (Idceb6) - A função
SpatialSmoothFeatheringEffectfoi renomeada comospatialSmoothFeatheringEffecte movida para um módulo de desenho. Atualizamos o valor de suavização padrãoSpatialExternalSurfacepara nulo, o que imita a funcionalidade antiga ZeroFeatheringEffect. (I5fdaa, b/460426800) - Contato removido:
onPointSourceParamsAvailable. Uma API de espacialização de áudio diferente será disponibilizada em breve. (I86507, b/458513439) - Adicionado comportamento RTL para modificadores de subespaço de deslocamento. Também adicionamos
absoluteOffsetpara ignorar a direção do layout. (I30e4b, b/474409165)
Versão 1.0.0-alpha11
25 de fevereiro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha11 e androidx.xr.compose:compose-testing:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estes commits.
Novos recursos
- Adição do parâmetro
SuperSamplingaSpatialExternalSurfaces(Icd4d1)
Problemas conhecidos
- Um problema com
SurfaceEntityno SceneCore pode fazer com que os apps falhem ao criar instâncias deSpatialExternalSurface. Esse problema foi resolvido nas versõesandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12e nas versões subsequentes. Os apps afetados precisam ser atualizados para as versões mais recentes.
Mudanças na API
- Mudanças no padding do modificador de subespaço para reconhecimento da direção do layout. (I53e25).
SpatialCapabilitiesagora está lacrado e não pode ser estendido. (I07aef).- As APIs
SpatialRoweSpatialColumnque aceitam um parâmetroSpatialAlignmentgenérico foram descontinuadas. Em vez disso, use as APIs que aceitamverticalAlignmentouhorizontalAlignmentparaSpatialRoweSpatialColumn, respectivamente. (Iec390). - Combinação de APIs de função de sobrecarga
SubspaceLayout(Idd30a) SubspaceModifier.lookAtUserfoi renomeado comorotateToLookAtUser, e o parâmetroupfoi renomeado comoupDirection. (Icafb8).- Transformar
SpatialRowem uma função inline (Ia2f20). - Transformar
SpatialColumnem uma função in-line (I681be). - API de outdoor removida (Ib76cd)
Versão 1.0.0-alpha10
28 de janeiro de 2026
Lançamento de androidx.xr.compose:compose:1.0.0-alpha10 e androidx.xr.compose:compose-testing:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estes commits.
Mudanças na API
- Remoção da API descontinuada:
ApplicationSubspace(Ia6596, b/468345186) - Atualização de
SpatialShapepara uma interface selada (I7e3f5, b/460426800). - Remoção de APIs descontinuadas no
SpatialAlignment. (Ib0b61, b/468011887) - Descontinuação de
SpatialLayoutSpacere introdução deSpatialSpacer. (I2ebf3, b/466071383) - Atualizamos a API
UserSubspacepara substituir a terminologia "bloqueio lento" por "bloqueio flexível". (I9ded1, b/464035984).
Versão 1.0.0-alpha09
03 de dezembro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha09 e androidx.xr.compose:compose-testing:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.
Mudanças na API
- Adição de modificadores
LookAtUsere Billboard, que permitem que o conteúdo esteja sempre de frente para o usuário. (I49b99). - Adiciona a capacidade de definir um
InteractionPolicycomoSpatialExternalSurfaceseSpatialPanels, permitindo a detecção de cliques e outros eventos de entrada 3D. (Iae155) - Adicionada sobrecarga de tamanho e modificador
requiredSizecom largura, altura e profundidade como valores Dp. (I92f79). - A interface
ParentLayoutParamsModifieragora estendeDelegatableSubspaceNode. (I1a6d4) - O
ApplicationSubspacefoi descontinuado em favor da API Subspace.- O comportamento da API Subspace foi alterado para fornecer apenas um subespaço em todo o aplicativo na postura e escala recomendadas.
- A API
PlanarEmbeddedSubspaceé introduzida para fornecer subespaços incorporados em contextos 2D. (Id3343)
- Adição da flag
shouldAutoInvalidateà APISubspaceModifier.Node. (I93902). - Adicionado
required(Size|Width|Depth|Height)em APIs que permitem aos desenvolvedores restringir o tamanho de um@SubspaceComposablea um intervalo específico, ignorando as restrições de medição recebidas do elemento pai. (Ifaa78). - Adição de
SubspaceModifier.onSizeChanged, que oferece um callback simples e focado para os desenvolvedores reagirem quando o tamanho de um@SubspaceComposablemuda. (I994f9). - A API Volume foi removida. A API
SceneCoreEntityprecisa ser usada em vez da API Volume. (I4162b) - Divida
SubspaceLayoutModifierNode.requestRelayouteminvalidateMeasurement/invalidatePlacement. (I14805) - Adição da API
SpatialGltfModel, que permite que os desenvolvedores renderizem glTFs em Compose. (Icc91f). - Introdução da API combinável
SpatialGltfModelpara renderizar facilmente glTFs (Iade67).
Correções de bugs
- Correção de um bug de layout em
SceneCoreEntity. Agora ele vai respeitar as restrições corretamente. (I11bb8) - Reduzir os módulos jxr-compose para
Compile sdk = 34(I2d5db)
Versão 1.0.0-alpha08
22 de outubro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha08 e androidx.xr.compose:compose-testing:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.
Mudanças na API
- Mudamos
ResizePolicypara aceitaronResizeStart,onResizeUpdateeonResizeEnd. (I7e21f).
Correções de bugs
- Evita falhas ao destruir uma atividade com um Subspace. (I595a1)
Versão 1.0.0-alpha07
24 de setembro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha07 e androidx.xr.compose:compose-testing:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.
Mudanças na API
- Melhoria do KDocs para
SpatialMainPanel. (I27b70, b/444467891) - Introduzimos o
SpatialArrangementpara organizar filhos ao longo do eixo principal em layouts 3D, comoSpatialRoweSpatialColumn. Essa nova API oferece opções de organização conhecidas do Compose 2D, incluindoStart,End,Center,SpaceBetween,SpaceAroundeSpaceEvenly, com suporte total para direções de layout LTR e RTL. (I7db38, b/436289959) - Adicionamos uma interface básica para
SubspaceModifier.Nodepara melhorar a segurança de tipo e a usabilidade das interfaces de extensão, comoCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
- Remover restrições de
SpatialExternalSurface(I33315, b/439646773) - Introduza
SubspaceModifieraos elementos combináveis do Subspace e substitua o parâmetro de restrições porSubspaceModifiercomSubspaceModifiersrelacionados ao tamanho. SeallowUnboundedSubspacefor verdadeiro, os subespaços ainda poderão ter restrições ilimitadas. (Ib06e6, b/433331675) - Descontinuação de
SubspaceModifiersmóvel e redimensionável agora queDragPolicy()eResizePolicy()fazem parte da APISpatialPaneleSpatialExternalSurface(I397bf, b/437924639). - Adicionamos suporte para
LayoutDirectionem layouts espaciais. O elemento combinável usandoSpatialAlignmentagora posiciona corretamente os elementos em contextos LTR e RTL. (I964bb, b/436300273). - Adicione parâmetros redimensionáveis e móveis às APIs
Panelpara garantir que esses comportamentos só possam ser aplicados a contêineres compatíveis. (Id491c). - Adição de
sizeIn,widthIn,heightIn,depthInSubspaceModifiersque permitem definir restrições mínimas e máximas exatas para largura, altura e profundidade. (I1af09, b/433330761)
Versão 1.0.0-alpha06
13 de agosto de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha06 e androidx.xr.compose:compose-testing:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.
Correções de bugs
- Recrie o
ComposeXrOwnerLocalsquando o proprietário do ciclo de vida for destruído. (9123ce1)
Versão 1.0.0-alpha05
30 de julho de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha05 e androidx.xr.compose:compose-testing:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.
Novos recursos
- Tornamos a classe de anotação
SubspaceComposablepública. (Ic2a34, b/399432430) - Dois novos elementos combináveis
SpatialExternalSurfaceque representam esferas de 180 e 360 graus. (I40ef2, b/391705799) - Adição de
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147). - Adição da API
SceneCoreEntitypara melhorar a interoperabilidade entreSceneCoree o Compose para XR. (I50bb3, b/423020989) - Foi fornecida a API
GravityAlignedsubspacepara oferecer suporte ao recursoGravityAlignede sem escalonamento (I07359).
Mudanças na API
- O
SpatialDialog()vai seguir a configuração de pressionamento deSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132) - Atualize
minimumPanelDimensionpara um novo tamanho padrão de dimensão deDimensions(0.1f, 0.1f, 0.1f)devido à representação em metros. (Ib852a). - Os subespaços e orbitadores agora vão manter o estado interno no espaço da casa e quando o app estiver em segundo plano. No modo de espaço compacto, o Subspace ainda vai configurar a cena em preparação para a mudança para o modo de espaço ampliado. (I40317, b/416037751).
SpatialDialogsagora vai reter o estado quando o app estiver em segundo plano. (I6aa56).ApplicationSubspaceagora vai herdar a escala e a posição recomendadas do sistema. (I4565f, b/418834194)- Adição de uma mensagem de erro melhor e acionamento do erro mais cedo quando um
SubspaceComposableé usado em um contexto nãoSubspaceComposable. (Iee2ae, b/416484684) - Atualização de
ExperimentalSubspaceVolumeApide "Aviso" para "Erro" porque os avisos costumam ser ignorados ao usar APIs combináveis de maneira incorreta. (I427aa, b/424864286) - O subespaço e
ApplicationSubspaceagora são restritos porrecommendedContentBoxInFullSpace. Antes, ele era limitado pelo campo de visão deSpatialUser. (I41015, b/423074142) - Atualização de
SpatialElevationpara usar o tamanho mínimo e não mais o tamanho codificado (I2dbe6, b/427785338). - Atualize como fazemos o scrim do
SpatialAcitivityPanelpara atualizar quando uma variável de chave é modificada. (I0f64d, b/427999029) - Remova
VolumeConstraints.Unboundede defina os valores de restrição padrão como o equivalente. (Ie24ec, b/407938414) SpatialFeatheringSizenão é mais público (I1c15b, b/399432430).- O XR
Placeablefoi renomeado comoSubspacePlaceablepara diferenciá-lo doPlaceabledo Compose. (I74874). - Remoção das configurações do Orbiter e adição de
shouldRenderInNonSpatialcomo um novo parâmetro. Além disso, remova a classeEdgeOffsete adicioneorbiterOffsetTypecomo um novo parâmetro para consolidar as funçõesOrbiter(). Além de renomearOrbiterEdgecomoContentEdge. (Iebf3d). - Renomeado
MeasurableparaSubspaceMeasurablepara diferenciar o tipo do tipoMeasurabledo Compose. (I9726c). MeasureResultfoi renomeado comoSubspaceMeasureResult(I9f34d).- A API
setSubspaceContentfoi removida em favor do uso dosetContentdo Compose com um elemento combinávelSubspace. (Ifff4c, b/421427391, b/421427391). MeasurePolicyfoi renomeado comoSubspaceMeasurePolicy. (I37a9b, b/422553904)- Transforme
SubspaceSemanticsInfoem uma interface selada porque não será possível adicionar membros sem os padrões. (I372f9, b/423704068) - Atualização da documentação de
SpatialExternalSurfacee renomeação deContentSecurityLevelparaSurfaceProtection(I3c460, b/420982808). - Fornecido construtor sobrecarregado para modificador móvel que permite ancoragem. (Ic0c70)
- Adicionamos mais um provedor de posição para dicas. Agora, os desenvolvedores podem controlar se a dica é colocada acima, abaixo, à esquerda ou à direita da âncora. Adicione uma API que receba uma forma para acentos circunflexos, para que mais formas personalizadas possam ser fornecidas. (Ie513c, b/374766087, b/418854637).
CoreEntityfoi removido comoPublishedApi(Ifee05).
Correções de bugs
- Correção de um problema em que
SpatialDialogpiscava ao ser renderizado. (Ife73c, b/401619909) - Correção de um problema em que
SpatialDialognão podia encobrir o painel de atividades. (I8ca6c, b/367442109) - Correção da caixa de diálogo de XR que não mostrava alguns conteúdos (I17cd5, b/418062437).
- Correção de um problema em que o
SpatialPopupera dispensado quando clicado dentro do conteúdo. (If262c, b/417245722) - Corrigimos o problema em que, ao encadear
resizable().movable(), o SpatialPanel não era redimensionado corretamente para o novo tamanho. (I02ee3, b/422264230) - Correção da sobreposição de
topBarcom o menu emSpatialComposeVideoPlayer(Id33bc, b/427168167). - Correção do raio do canto que não estava sendo renderizado (I975fe, b/428261830).
Versão 1.0.0-alpha04
7 de maio de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha04 e androidx.xr.compose:compose-testing:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.
Novos recursos
- Adicionada a interface
CompositionLocalConsumerSubspaceModifierNodepara permitir que tiposSubspaceModifierpersonalizados acessem valores locais de composição. - Adicionamos uma nova API
SpatialPanelque segue o estilo de implementação doAndroidViewdo Compose e descontinua oViewBased SpatialPanelanterior. - Adicionamos o objeto complementar
VolumeConstraints.Unbounded, que representa restrições ilimitadas. - Adicionamos
SubspaceModifier.onPointSourceParamspara permitir uma fonte de áudio espacializada. - Um
ApplicationSubspacepúblico foi adicionado, oferecendoVolumeConstraintsopcionais para definir uma área 3D em que o app pode renderizar conteúdo espacial. Por padrão, se nenhuma restrição for especificada, o subespaço será limitado pelo campo de visão atual daSpatialUserem largura e altura. Os usuários podem fornecer restrições a serem usadas se não for possível determinar o campo de visão. Caso contrário, os valores padrão de largura e altura do campo de visão serão usados. - Adicionado
SpatialExternalSurface, que pode ser usado para renderizar conteúdo estereoscópico.SpatialExternalSurfacepode ser personalizado com modificadores (exceto alfa) e um efeito de esmaecimento de borda. - Adicionamos um novo modificador de subespaço
pointerHoverIconque permite aos usuários definir o ícone do ponteiro espacial.
Mudanças na API
- Removemos a restrição
RequiresApi(34)de todos os pacotes do Jetpack XR. Essa restrição era redundante, já que o Jetpack XR está disponível apenas em dispositivos com nível 34 ou mais da API. (Iae0f8) - Os projetos lançados com o Kotlin 2.0 exigem o KGP 2.0.0 ou mais recente para serem consumidos (Idb6b5).
- O processamento de volta agora funciona em painéis espaciais sem atividades incorporadas. Para que o processamento de volta funcione, é necessário especificar
android:enableOnBackInvokedCallback="true"no manifesto do Android. - O processamento de volta agora funciona em caixas de diálogo espaciais. Para que o processamento de volta funcione, é necessário especificar
android:enableOnBackInvokedCallback="true"no manifesto do Android. - Os
SpatialPanels baseados em Compose e em visualização agora podem se dimensionar com base no conteúdo. - Agora, os desenvolvedores podem definir seus próprios valores de
SpatialElevationLevelpersonalizados e não estão limitados aos níveis predefinidos. - Agora é possível personalizar o nível de elevação do Orbiter usando o parâmetro
elevation. - Por padrão, o subespaço agora pode ser limitado pelo campo de visão do
SpatialUserem largura e altura. Se não for possível determinar o campo de visão, os valores padrão de largura e altura serão usados. - Adição dos novos callbacks
onMoveStarteonMoveEndao modificadorMovable. Os callbacksonMoveStarteonMoveEndsão chamados quando o usuário começa e termina de mover um elemento combinável de subespaço com o modificador móvel. - O parâmetro
namefoi removido de APIs espaciais, comoSpatialRoweSpatialPanel. Para depurar árvores de composição espacial, useSubspaceModifier.testTag. - Remoção de uma sobrecarga sem suporte de
SpatialPopupque só temspatialElevationLevelecontent. Use a interface compatível comonDimissRequest. - O callback
onPoseChangedo modificador Movable foi removido. UseonMove. SubspaceModifiersnão vai mais aplicar os efeitos se estiverem separados ou em processo de separação.- A API
SpatialRowatual foi dividida emSpatialRoweSpatialCurvedRow. Se você usava o parâmetrocurveRadiusdoSpatialRow, agora useSpatialCurvedRow, que oferece o mesmo comportamento. MainPaneleActivityPanelnão têm mais barras de título quando executados em uma imagem do sistema semelhante e recente.- Os modificadores Alfa e de escala agora podem ser combinados e vão multiplicar os valores para o valor Alfa ou de escala final aplicado.
- O callback
onPoseChangedo modificador Movable foi otimizado para realizar movimentos de postura mais suaves. - Os modificadores móveis e redimensionáveis agora vão executar os callbacks na linha de execução principal para garantir que as mudanças de estado acionem a recomposição.
- Adição da observação de estado às fases de layout e medição para garantir que as mudanças de estado em
SubspaceLayoutacionem um novo layout. - Atualizações otimizadas da cadeia de modificadores para reutilizar melhor os modificadores atuais.
Correções de bugs
- A tela de escurecimento para quando um
SpatialDialogé mostrado. (Ic4594) - As solicitações de readequação feitas enquanto os nós modificadores estão separados agora serão ignoradas.
- Removidas as fases de relayout acionadas pelos modificadores Movable e Resizable.
- Corrigimos uma falha no elemento combinável
MainPanel()que ocorria quando uma das dimensões era definida como zero, diretamente ou durante um cálculo de layout, por exemplo, um cálculo deSpatialRow/SpatialColumn. Em vez disso, o painel vai ficar oculto. Observação: essa correção aborda especificamente falhas durante a fase de layout. O redimensionamento do painel para zero por interação do usuário será tratado separadamente. O painel oculto não tem recursos de acessibilidade da interface. - Correção do problema com
maintainAspectRatiodo modificador redimensionável. A proporção será mantida. - Correção de um problema com subespaços aninhados que eram posicionados incorretamente em um único frame.
- Correção de um problema em que as bordas arredondadas às vezes não eram aplicadas quando deveriam ser.
NestedSubspacesnão vai mais aparecer por um frame no local errado.
Versão 1.0.0-alpha03
26 de fevereiro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha03 e androidx.xr.compose:compose-testing:1.0.0-alpha03, sem mudanças significativas desde a última versão Alfa. A versão 1.0.0-alpha03 contém estes commits.
Versão 1.0.0-alpha02
12 de fevereiro de 2025
Lançamento de androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.
Novos recursos
- O painel de atividades agora pode escurecer o conteúdo quando uma caixa de diálogo espacial é ativada.
- A API
Orbiteragora pode ser usada em contextosSubspaceComposablee vai anexar Orbiters ao elemento combinável pai mais próximo com base emSubspaceLayout. - Introdução de
LayoutCoordinatesAwareModifierNodepara permitir modificadores personalizados com base no posicionamento. - Adição de métodos de ciclo de vida de anexação/desanexação a
SubspaceModifier.Node. - Adição de
scaleWithDistanceao modificador móvel. QuandoscaleWithDistanceestá ativado, o elemento do subespaço movido aumenta ou diminui. Ele também vai manter qualquer escala explícita que tinha antes do movimento.
Mudanças na API
SessionCallbackProviderfoi removido em favor deSpatialCapabilities.
Outras mudanças
- Reduzimos
minSDKpara 24. Todas as APIs do Jetpack XR ainda exigem a API 34 no tempo de execução. - Os construtores
OrbiterEdgeOffset.inner,EdgeOffset.outereEdgeOffset.overlapnão são mais métodos@Composable, o que permite que sejam usados em contextos não combináveis. - Atualize os níveis de elevação espacial para corresponder à especificação de UX mais recente.
- Implemente a interface
SubspaceSemanticsInfoemMeasurableLayout. SubspaceModifierElementfoi renomeado comoSubspaceModifierNodeElement
Correções de bugs
- Correções para estabilizar a ordenação de
SubspaceModifier.SubspaceModifiervai funcionar de maneira mais confiável. Agora, os modificadores de deslocamento, rotação, escalonamento, capacidade de movimentação e redimensionamento podem ser usados em qualquer ordem.
Versão 1.0.0-alpha01
12 de dezembro de 2024
Lançamento de androidx.xr.compose:compose-*1.0.0-alpha01.
Recursos da versão inicial
Lançamento inicial para desenvolvedores do Jetpack Compose para XR. Use conceitos conhecidos do Compose, como linhas e colunas, para criar layouts de interface espacial em XR, seja portando um app 2D para XR ou criando um novo app XR do zero. Essa biblioteca oferece elementos combináveis espaciais e de subespaço, como painéis espaciais e orbitadores, que permitem colocar sua interface 2D baseada em Views ou Compose em um layout espacial. Ele apresenta o elemento combinável do subespaço de volume, que permite posicionar entidades do SceneCore, como modelos 3D, em relação à sua interface. Saiba mais neste guia para desenvolvedores:
Subspace: esse elemento combinável pode ser colocado em qualquer lugar na hierarquia da interface do app, permitindo manter layouts para interfaces 2D e espaciais sem perder o contexto entre os arquivos. Isso facilita o compartilhamento de elementos como a arquitetura de apps entre a realidade estendida e outros formatos sem precisar elevar o estado por toda a árvore da interface ou reprojetar o app.SpatialPanel: um painel espacial é um elemento combinável de subespaço que permite mostrar conteúdo do app. Por exemplo, você pode exibir reprodução de vídeo, imagens estáticas ou qualquer outro conteúdo em um painel espacial.
Orbitador: um orbitador é um componente espacial de UI. Ele foi projetado para ser anexado a um painel espacial correspondente e contém itens de navegação e ação contextual relacionados a esse painel. Por exemplo, se você criou um painel espacial para mostrar conteúdo de vídeo, é possível adicionar controles de reprodução de vídeo dentro de um orbiter.
Volume: posicione entidades do SceneCore, como modelos 3D, em relação à sua interface.
Layout espacial: é possível criar vários painéis espaciais e colocá-los em um layout espacial usando
SpatialRow,SpatialColumn,SpatialBoxeSpatialLayoutSpacer. UseSubspaceModifiers para personalizar seu layout.Componentes de interface espacial: esses elementos podem ser reutilizados na sua interface 2D, e os atributos espaciais só ficam visíveis quando os recursos espaciais estão ativados.
SpatialDialog: o painel vai recuar um pouco na profundidade Z para mostrar uma caixa de diálogo elevada.SpatialPopUp: o painel vai recuar um pouco na profundidade Z para mostrar um pop-up elevado.SpatialElevation:SpatialElevationLevelpode ser definido para adicionar elevação.
SpatialCapabilities: os recursos espaciais podem mudar à medida que os usuários interagem com seu app ou o sistema, ou até mesmo ser alterados pelo próprio app, por exemplo, ao passar para o Espaço Compacto ou Ampliado. Para evitar problemas, seu app precisa verificar
LocalSpatialCapabilities.currentpara determinar quais APIs são compatíveis com o ambiente atual.isSpatialUiEnabled: elementos de interface espacial (por exemplo, SpatialPanel)isContent3dEnabled: objetos 3DisAppEnvironmentEnabled: o ambienteisPassthroughControlEnabled: se o aplicativo pode ou não controlar o estado de transmissão diretaisSpatialAudioEnabled: áudio espacial
Problemas conhecidos
- No momento, um minSDK de 30 é necessário para usar o Jetpack Compose para XR. Como alternativa, adicione a seguinte entrada de manifesto
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>para criar e executar com um minSDK de 23. - No momento, os apps do Jetpack XR exigem a solicitação da permissão
android.permission.SCENE_UNDERSTANDINGno AndroidManifest. - Quando um app é iniciado diretamente no Espaço Ampliado usando a propriedade
PROPERTY_XR_ACTIVITY_START_MODEno manifesto, as atividades/aplicativos são abertos inicialmente no Espaço Compacto antes de fazer a transição para o Espaço Ampliado. - Os glTFs em elementos combináveis de volume podem piscar inicialmente no local errado.
- Usar um SpatialDialog em um painel que foi movido significativamente vai empurrar o conteúdo na direção errada.