IU do Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Consulte os documentos de referência da API para acessar todos os pacotes do Compose)
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 22 de outubro de 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
Estrutura
O Compose é uma combinação de sete IDs de grupos do Maven no androidx. Os grupos
contêm um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas
da versão.
Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.
| Grupo | Descrição |
|---|---|
| compose.animation | Crie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário. |
| compose.compiler | Transforme funções @Composable e ative otimizações com um plug-in do compilador Kotlin. |
| compose.foundation | Crie aplicativos do Jetpack Compose com elementos básicos prontos que podem ser usados para criar suas próprias peças de sistema de design. |
| compose.material | Crie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io. |
| compose.material3 | Crie IUs do Jetpack Compose usando componentes do Material Design 3, a nova versão do Material Design. O Material 3 inclui temas e componentes atualizados, além de recursos de personalização do Material You, como cores dinâmicas, e foi desenvolvido para ser coeso com o novo estilo visual do Android 12 e com a interface do sistema. |
| compose.runtime | Elementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler. |
| compose.ui | Componentes fundamentais do Compose UI necessários para interagir com o dispositivo, incluindo layout, desenho e entrada. |
Declarar dependências
Para adicionar uma dependência ao Compose, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para 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.compose.ui:ui:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
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.10
Versão 1.10.0-beta01
22 de outubro de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-beta01. A versão 1.10.0-beta01 contém estes commits.
Mudanças na API
- Adiciona uma otimização para o envio de mudanças de foco. Isso pode ser desativado com
isOptimizedFocusEventDispatchEnabled = false(I919fb, b/449228515). - Atualiza todas as APIs de toque indireto para usar o nome "APIs de ponteiro indireto" e corresponder às APIs de entrada de ponteiro. (I238ce, b/451607214)
- As funções
TextDirection,TextAlign,Hyphens,FontSynthesisvalueOfagora geramIllegalArgumentExceptionquando recebem um valor desconhecido. (I07c67). - Atualize
CompositionDataTree.makeTreepara transmitir valores padrão em vez de uma função de wrapper. (Id64a6, b/445229688). - As APIs de regra de teste
createComposeRule,createAndroidComposeRuleecreateEmptyComposeRule, que aceitam o parâmetroeffectContext, são estáveis, e o padrão do parâmetro éEmptyCoroutineContext. (If400c, b/450540702) UnplacedStateAwareModifierNodefoi renomeado comoUnplacedAwareModifierNode(I6a551, b/449719932).- Desfazer a otimização de captura de conteúdo (Ic000b, b/442364065).
- Adicionamos a flag de recurso
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled. Isso permitiu a otimização da performance, em que solicitações de coordenadas comoLayoutCoordinates.positionInRoot()usam os deslocamentos em cache que já temos emRectManager, em vez de percorrer toda a árvore em cada chamada. (Ieaadc).
Correções de bugs
- O
PlaceholderSpanagora usa corretamente o dimensionamento não linear de fontes para dimensionamento (Id2ead, b/324462728). - Use
ViewCompatpara realizar constantes de feedback háptico compatíveis no nível da plataforma, contando com o suporte de substituição para constantes mais recentes. (Ib5a00).
Versão 1.10.0-alpha05
8 de outubro de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-alpha05. A versão 1.10.0-alpha05 contém estes commits.
Correções de bugs
- Correção de um bug em que pop-ups aninhados eram posicionados incorretamente na parte de cima da tela. Agora, eles são ancorados corretamente ao pop-up principal. (Id4603, b/191279752).
- Correção de problema com o encapsulamento de foco com outras visualizações na hierarquia. (I95223, b/446028624).
- Correção de campos com parâmetros inline ausentes do inspetor em lambdas geradas pelo Kotlin 2.2.20 (I9855d, b/447110005).
- Correção do sombreamento de nomes de recursos de preenchimento automático entre módulos de interface e de base (I5da5a).
Contribuição externa
- O objeto
UiModesfoi renomeado como AndroidUiModes para refletir que as constantes dele são extraídas da API Android. (Ia0a77).
Versão 1.10.0-alpha04
24 de setembro de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-alpha04. A versão 1.10.0-alpha04 contém estes commits.
Mudanças na API
- A variante da regra de teste do Compose que aceita um parâmetro
CoroutineContextfoi promovida para estável. A anotação experimental foi removida, e os desenvolvedores não precisam mais ativar o uso dessa API. (I74e6e). ComposeUiFlags.isRectTrackingEnabledfoi removido. Essa lógica nem sempre está ativada. (Id78df).- A sobrecarga inline de
Updater#setfoi descontinuada porque estava agrupando o valor fornecido muitas vezes (Id679e). - Marque a propriedade semântica
onAutofillTextcomo obsoleta. (I6f81c). - Introdução do
UnplacedStateAwareModifierNode. Ele fornece um callback chamado quando o layout posicionado anteriormente não está mais posicionado. (I8fdd8, b/309776096). - Corrigimos a documentação de
RetainObserver.onRetainede adicionamosRetainObserver.onUnused, que espelhaRememberObserver.onAbandoned. (Ia6fc5). - Adição de
onVisibilityChangedNode(), que está produzindo umModifier.Node, usado porModifier.onVisibilityChanged()via delegação, o que permite expandir essa funcionalidade no seuModifier.Nodepersonalizado. (I70d84, b/443001320)
Correções de bugs
- Correção de um problema em que o conteúdo inline não era renderizado quando posicionado na última linha de um texto com elipse em várias linhas, apesar do marcador de posição preceder a região com elipse. (I76aaf, b/441829208)
Versão 1.10.0-alpha03
10 de setembro de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-alpha03. A versão 1.10.0-alpha03 contém estes commits.
Mudanças na API
- Renomeia
DelegatableNode.invalidateLayoutForSubtreecomoDelegatableNode.invalidateMeasurementForSubtree. (I94257, b/430106107) - Remove o matcher
isInHiddenAccessibilitySubtreeredundante. (I4476c, b/443792965). - Introduz rastreamentos de pilha do Compose baseados em chaves de grupo que são ativados por padrão para todos os apps minimizados. O mapeamento do ProGuard para esses rastreamentos será gerado pelo plug-in do Gradle do compilador do Compose a partir do Kotlin 2.3.0. (Ifbcb5).
- O
Modifier.skipToLookaheadSizeagora usa um lambda ativado por padrão que só ativa a omissão de tamanho quando a transição compartilhada está ativa, assim como oModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585). ComposeUiFlags.isOutOfFrameDeactivationEnabledfoi removido, e essa funcionalidade agora está sempre ativada. (I421ed).- Mova as funções de fábrica para criar instâncias
FillableDatapara o objeto complementar. Em vez de chamarFillableData(value), use os novos métodos de fábrica:FillableData.createFrom(value). (I2e200, b/441719650) - Introdução de
BeyondBoundsLayoutModifierNode, um novo nó de modificador para realizar um layout além do limite para pesquisa de foco. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()envia o foco para um dos filhos quando não é possível focar nele. Isso agora é consistente comFocusRequester.requestFocus()eFocusRequesterModifierNode.requestFocus(). Se você não precisar desse comportamento, defina a flagComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledcomo "false" no seu app. (Icca5c, b/436863604)- Forneça o tamanho da janela com base em DP em
WindowInfo(I9322b, b/424442112). - Remoção da flag
isNestedScrollDispatcherNodeFixEnabled. (If451a). - Adicionamos suporte para valores de data no preenchimento automático na API
FillableData.val dateMillisValue: Longadicionado para recuperar informações de data, e um construtorFillableData(dateMillisValue: Long)correspondente adicionado para criar instânciasFillableDatacom base em data. (Id072a)
Contribuição externa
- O objeto
UiModesfoi introduzido para declarar constantes usadas na anotaçãoUiMode(I03cb8).
Versão 1.10.0-alpha02
27 de agosto de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-alpha02. A versão 1.10.0-alpha02 contém estes commits.
Mudanças na API
- Atualize
FillableDatapara oferecer suporte a componentes não textuais, como alternâncias e listas, incluindo valores booleanos e inteiros emFillableDatae construtores de fábrica para criar instâncias booleanas e de lista deFillableDataque são convertidas emAutofillValueda plataforma. A propriedade e a ação semânticas relevantes também são adicionadas. (Ia8105, Icc5cf). - No modo sem toque, o sistema de visualização atribui o foco inicial/padrão a um dos itens focalizáveis na tela. Esse recurso é adicionado ao Compose e pode ser ativado em
ComposeUiFlags.isInitialFocusOnFocusableAvailable. (Ib9178). - Remoção da flag
isPointerInteropFilterDispatchingFixEnabled. (Iaa589). - Remoção da flag
isNestedScrollInteropPostFlingFixEnabled. (I2a756). - Adicione correspondências semânticas
isHiddenFromAccessibility()eisInHiddenAccessibilitySubtree(). (I9f5a1). - Adicionamos
runCurrent()aMainTestClockpara executar todas as tarefas pendentes no programador subjacente. Isso é para oferecer suporte à execução de testes em umStandardTestDispatcher, em que as tarefas são adicionadas ao programador em vez de serem executadas imediatamente quando têm um atraso de 0 ms. Um teste pode ser configurado para usar umStandardTestDispatchercriando umComposeTestRulee transmitindo umStandardTestDispatcherpara ele. Por padrão, os testes são executados em umUnconfinedTestDispatcher. Nesse caso,runCurrent()nunca precisa ser chamado. - Adição de compatibilidade com a execução de testes em um
StandardTestDispatcher. Historicamente, a estrutura de teste era (e ainda é) configurada usando umUnconfinedTestDispatcher, que difere de um ambiente de produção de maneiras sutis. Agora é possível mudar essa configuração criando seu próprioStandardTestDispatchere adicionando-o aoeffectContextao criar seuComposeTestRule(ou ao chamar runComposeUiTest). (I334d0, b/254115946) - Atualize o código para criar uma árvore de nós de
SlotTree. (I997d3)
Correções de bugs
- O Compose UI agora instala
RetainScopescom reconhecimento de ciclo de vida no Android. O comportamento padrão agora vai manter os valoresretainem todas as mudanças de configuração. (Id4a09, b/177562901).
Contribuição externa
- Adiciona a capacidade de
VelocityTrackercalcular a velocidade de um ponteiro com base em eventos rastreados usando um comportamento específico da plataforma. (I621e8)
Versão 1.10.0-alpha01
13 de agosto de 2025
Lançamento de androidx.compose.ui:ui-*:1.10.0-alpha01. A versão 1.10.0-alpha01 contém estes commits.
Mudanças na API
- Os eventos de pressionamento com um mouse ou touchpad em um
ComposeViewagora vão limpar o foco automaticamente se o pressionamento não ocorrer nos limites do nó focalizado. Isso resulta em uma UX de "toque para limpar o foco" mais esperada do que o comportamento atual ao usar dispositivos de entrada de ponteiro. Esse comportamento pode ser desativado com uma nova APIAbstractComposeView.isClearFocusOnPointerDownEnabled. (I6322b, b/282963174). - Introduza a interface
FillableDatapara oferecer suporte a vários tipos de componentes de preenchimento automático, além de texto. (If9bd2). - Nova API para ativar e desativar dinamicamente elementos compartilhados, além de permitir contabilizar se já há uma transição de elemento compartilhado em andamento. Nova API para configurar limites de destino alternativos quando o elemento compartilhado de destino é descartado durante a transição. Nova API para receber o
LayoutCoordinatesde umLookaheadScope. (I18dd4, b/409819304, b/395670637). - Introdução da flag
isNestedScrollInteropIntegerPropagationEnabledpara controlar o experimento de envio de números inteiros corretos para a interoperabilidade de rolagem aninhada. (If8316). - Adição de
requestFocusForChildInRootBounds()aDelegatableNodepara mover o foco para um elemento filho que se sobrepõe ao retângulo especificado. (I001ef). - Remoção das flags
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Adicionada a anotação
@CheckResultàs funções de localizador e seletorSemanticsNodepara forçar o uso dos valores retornados. (I6f86e, b/201652748). - Melhorar o desempenho do processo de captura de conteúdo (I3c7c0)
- Apresente
CompositionLocal, que pode ser usado para modificar o pincel do destaque de preenchimento bem-sucedido do preenchimento automático. (I52329). - Introduzimos uma nova interface "Interpolatable", que permite a interpolação automática entre diferentes tipos, supondo que um tipo saiba como converter do outro. Essa interface é usada em vários tipos de composição, como pincel e forma, mas também pode ser utilizada externamente. (I58eab).
- Agora o Scrollable oferece suporte melhor a eventos de rolagem da roda do mouse bidimensionais. Uma nova API de teste foi lançada para ajudar a testar casos de uso em
MouseInjectionScope. Também lançamos uma nova sobrecarga para métodos de rolagem emMouseInjectionScopee uma flag para controlar o novo comportamento chamadoisMouseWheel1DAxisLockingEnabled(I136df). - Adição de
DeviceConfigurationOverridespara tipo e estado do teclado, tipo e estado da navegação, estado da tela touchscreen e tipo de modo da interface (I282f0) - Adicionamos um novo
LineHeightStyle.ModechamadoTight. Esse modo ajuda a aplicar alturas de linha menores, mesmo quando elas podem cortar glifos mais altos. (Id3849) BaselineShiftagora tem um valor "Unspecified" para evitar o boxing.BaselineShift,Hyphens,LineBreak,TextAligneTextDirectionagora têm funções auxiliaresisSpecified.Hyphens,TextAlign,TextDecorationeTextDirectionagora têm métodosvalueOf()e de valor que permitem uma serialização/desserialização eficiente. (I8d44c).- Adicionada uma nova interface de método
getDisplayNamepara permitir nomes de exibição personalizados para instâncias de parâmetros de visualização. (I19bdf, b/241699422). - Quando os valores de Dp são comparados com "Unspecified" usando "menor que" ou "maior que", agora sempre retorna "false". Usar
Dp.compareTo(Unspecified)sempre retorna 0. Definir a flagComposeUiUnitFlags.isDpCompareToChangedcomo "false" vai retornarDp.compareTo()ao comportamento anterior, em que comparar "Unspecified" com "less-than" e "greater-than" nem sempre retorna "false", ecompareTo()com "Unspecified" corresponde ao comportamento deFloat.compareTo(). (Ifa88b, b/429221319)
Correções de bugs
- Mudança da minSdk padrão da API 21 para a API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
- Corrige um problema que impedia a criação de novos
AndroidComposeViewsdurante uma transição. (I2e23e, b/340894487, b/287484338). - Correção de um bug de cor ao usar um drawable vetorial que usa uma cor e o
fillColornão é totalmente opaco nem totalmente transparente. (I3b041, b/328677973) - Correção de um problema em que os ícones carregados via
painterResourcecom cores específicas do tema não eram atualizados quando o tema mudava. (I85ea0, b/424416571) - Introdução da semântica
onFillDataefillableData(I45d9e) - A codificação de estado específica da plataforma agora está sempre ativada no
StateRestorationTester. Isso alinha o comportamento do teste com a restauração do estado real do aplicativo, como a parcelização no Android. (I38211, b/408154192, b/382294247). - Correção de falhas ocasionais ao solicitar o foco. (57b31a11, b/431111149)
Versão 1.9
Versão 1.9.4
22 de outubro de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.4. A versão 1.9.4 contém estes commits.
Correções de bugs
- Correção de um problema em que o conteúdo de texto inline desaparecia se estivesse na última linha de um texto com reticências de várias linhas, mesmo que o conteúdo inline não estivesse na região com reticências. (I76aaf, b/441829208)
- Correção de um problema em que os callbacks do modificador
onLayoutRectChangednem sempre eram chamados quandodebounceMillisnão era zero. (72aba47, b/445324854)
Versão 1.9.3
8 de outubro de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.3. A versão 1.9.3 contém estes commits.
Correções de bugs
- Correção de um bug em que os modificadores
onVisibilityChanged/onFirstVisible/onLayoutRectChangednão recebiam callbacks se o layout movido tivesse mais de 170 descendentes. (4f2fdd, b/445356774)
Versão 1.9.2
24 de setembro de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.2. A versão 1.9.2 contém estes commits.
Correções de bugs
Modifier.onVisibilityChanged()agora é acionado corretamente quando um nó é desvinculado ou reutilizado. (Ic5ce20).Modifier.onVisibilityChanged()eonLayoutRectChanged()agora processam corretamente layouts principais usandoplaceWithLayer()para posicionar elementos filhos. (Ia05ac9).- Para
Modifier.onVisibilityChanged()eonLayoutRectChanged(), notifique corretamente em casos extremos, como remoção de uma camada/modificador de camada ou atualização das propriedades da camada. (Ia05ac).
Versão 1.9.1
10 de setembro de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.1. A versão 1.9.1 contém estes commits.
Correções de bugs
- Correção de um bug de cor ao usar um drawable vetorial que usa uma cor e o
fillColornão é totalmente opaco nem totalmente transparente. (I3b041, b/328677973)
Versão 1.9.0
13 de agosto de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0. A versão 1.9.0 contém estes commits.
Mudanças importantes desde a versão 1.8.0
- As mudanças importantes na versão 1.9.0 são abordadas neste post do blog.
- As verificações do lint enviadas com o Compose agora exigem uma versão mínima do AGP 8.8.2. Se não for possível atender a versão mínima do AGP, você pode fazer upgrade apenas do Lint usando
android.experimental.lint.version=8.8.2(ou uma versão mais recente) nogradle.properties. Para executar verificações de lint do Compose na IDE, é necessário usar o Android Studio Ladybug ou uma versão mais recente. - Mudança interruptiva: os nós modificadores
graphicsLayeragora implementamSemanticsModifierNode. Isso pode resultar em novasSemanticsNodesadicionadas à árvore semântica e, portanto, levar a falhas em testes que fazem suposições sobre a estrutura da árvore semântica. Por exemplo, testes que usamonChild,onParent,onSiblinge outros métodos semelhantes para fazer declarações podem falhar se um novo nó for adicionado entre os nós atual e de destino. A maneira recomendada de corrigir essas falhas é adicionar umtestTagdiretamente ao nó de destino. Outra abordagem é usar um comparador mais flexível, comoonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5).
Versão 1.9.0-rc01
30 de julho de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-rc01. A versão 1.9.0-rc01 contém estes commits.
Correções de bugs
- Correção de um problema em que os ícones carregados via
painterResourcecom cores específicas do tema não eram atualizados quando o tema do sistema mudava. (I85ea0, b/424416571) - Corrige erros nas APIs 21(Lollipop) e 28(Pie), em que métodos gráficos importantes foram renomeados durante a otimização. (Iebf99, b/425120571, b/420462749).
- Verifique se os modificadores
onLayoutRectChangedinseridos recentemente são chamados de volta inicialmente. (l9aa91), (lb348a). - Correção de um cache de deslocamento que estava sendo invalidado incorretamente, fazendo com que os modificadores
onLayoutRectChangedfossem chamados com coordenadas erradas (ibd4cd), (lddc57) - Correção de layouts rotacionados/inclinados que recebem coordenadas incorretas por modificadores
onLayoutRectChanged(lddc57, b/426750475).
Contribuição externa
- Correção de um problema em que os itens
dragAndDropSourceemLazyListdesapareciam ao rolar a tela. Obrigado, Victor Rendina! (dc3bcd3, b/425894792)
Versão 1.9.0-beta03
16 de julho de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-beta03. A versão 1.9.0-beta03 contém estes commits.
Correções de bugs
- Correção de um problema em que sombras internas uniformemente desfocadas não se moviam corretamente com um deslocamento.
Versão 1.9.0-beta02
2 de julho de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-beta02. A versão 1.9.0-beta02 contém estes commits.
Mudanças na API
- Muda o objeto complementar para experimental para corresponder à classe. (I8452a).
- A flag experimental
isTrackFocusEnabledfoi removida (I003fd).
Correções de bugs
- Quando nenhum
WindowInsetsinvade o conteúdo doComposeView, os valores deWindowInsetsRulersnão são fornecidos. (I71221)
Versão 1.9.0-beta01
18 de junho de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-beta01. A versão 1.9.0-beta01 contém estes commits.
Mudanças importantes
- Os nós modificadores
graphicsLayeragora implementamSemanticsModifierNode. Isso pode resultar em novasSemanticsNodesadicionadas à árvore semântica e, portanto, levar a falhas em testes que fazem suposições sobre a estrutura da árvore semântica. Por exemplo, testes que usamonChild,onParent,onSiblinge outros métodos semelhantes para fazer declarações podem falhar se um novo nó for adicionado entre os nós atual e de destino. A maneira recomendada de corrigir essas falhas é adicionar umtestTagdiretamente ao nó de destino. Outra abordagem é usar um comparador mais flexível, comoonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5).
Mudanças na API
- Mudança de
ShadowContextpara uma interface sealed (I3ce40). - Adiciona uma maneira entre módulos de criar um evento de toque indireto (para teste) (I22e4c).
- Torna
IndirectTouchEvent.nativeEventexperimental. (I6fda5). - Revisa a superfície da API com base no feedback do conselho de APIs. (Ibf378)
- A constante
FrameRateCategory.NoPreferencefoi removida.Modifier.requestedFrameRatefoi renomeado comoModifier.preferredFrameRate. (I2f976). WindowInsetsRulers: mudourulersIgnoringVisibilitypara o máximo. Mudança degetDisplayCutoutBounds()para ser uma função de extensão dePlacementScope.WindowInsetsAnimationPropertiesmudou paraWindowInsetsAnimation, egetAnimationProperties()mudou paragetAnimation(). (I3816f).- Mudança da classe
ShadowParamsparaShadow(I11cca) - Mudança do pacote da API Frame rate de
androidx.compose.ui.uiparaandroidx.compose.ui(I8994e) - Mudança de
InsetsRulerspara estar em código comum com o nomeWindowInsetsRulers. Simplificamos a API para que todos os encartes sejamWindowInsetsRulers. Extraímos propriedades de animação que não são réguas para uma classeAnimationProperties.WindowInsetsRulers.innermostOf()pode ser usado para mesclar váriosWindowInsetsRulers. (I2f0c6, b/415012444). - Adição de uma API de ferramentas para analisar informações de origem adicionadas pelo compilador do Compose. (Iceaf9, b/408492167)
Correções de bugs
- A flag para
isGetFocusedRectReturnEmptyEnabledfoi removida agora que o recurso foi totalmente verificado. (Ife722). - Correção de um bug em
performScrollToNode, que em alguns casos não alcançava o nó de destino. Com essa correção, ele sempre vai alcançar o nó de destino nesses casos. Um efeito colateral dessa mudança é que a posição exata de rolagem no final da ação pode ser diferente agora, o que afeta os testes de captura de tela e os testes que fazem suposições sobre a posição exata de rolagem. (I2c8a1)
Versão 1.9.0-alpha04
4 de junho de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-alpha04. A versão 1.9.0-alpha04 contém estes commits.
Mudanças na API
- Adição de APIs de modificadores para sombras personalizáveis. (I2058d, b/160665122).
- Adicione uma propriedade
SemanticsModifierNode.isImportantForBoundsque determina se o nó deve ser considerado ao calcular os limites. A propriedade é verdadeira por padrão e pode ser definida como falsa para indicar que o nó não deve ser considerado para limites. (I7ebec). - Adicione uma função de fábrica
SemanticsPropertyKeypara declarar propriedades semânticas específicas do Android que são disponibilizadas como extras de acessibilidade expostos viaAccessibilityNodeInfo.getExtras. (I2ed51). - Removidos os usos de
ComposeUiFlags.isRemoveFocusedViewFixEnablede descontinuada a flag. (I50328). - Introdução de um novo framework de sombra personalizável. Isso inclui
DropShadowPaintereInnerShadowPainter, além das dependênciasDropShadow/InnerShadow. A infraestrutura de sombra é compartilhada para que as mesmas sombras geradas possam ser compartilhadas em vários locais de chamada sem precisar ser geradas novamente n vezes. (I24f7a, b/160665122). - Apresente
CompositeShadereCompositeShaderBrush, que criam um resultado composto entre dois shaders. Adicione tambémShaderBrush#transformpara definir uma matriz de transformação para o shader. (I2621a, b/160665122).
Correções de bugs
- Correção de um bug no
NestedScrollInteropConnectionem que os métodos de movimento rápido estavam na ordem errada em relação às visualizações. (I56ad4). - Antes, as caixas de diálogo que ocupavam a tela inteira não eram mostradas na região de corte da tela. O bug foi corrigido para que as caixas de diálogo com
decorFitsSystemWindows = falseeusePlatformDefaultWidth = falsepossam ocupar a região de corte da tela. (I9e975). - Correção de um bug em que o indicador de foco verde do
TalkBacknão era desenhado depois de ser ativado enquanto o app Compose estava em segundo plano. (Ifd12a).
Versão 1.9.0-alpha03
20 de maio de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-alpha03. A versão 1.9.0-alpha03 contém estes commits.
Mudanças na API
- A flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledfaz com que, quando nada é focalizável em umComposeView, ela defina o retângulo como um valor vazio. Isso impede que uma pesquisa de foco escolha a visualização em que se concentrar. Isso é especialmente importante quando um IME tem uma opção "PRÓXIMO" e tenta se concentrar noComposeView, mas orequestFocus()falha. (Ibd0e2, b/369256395) - Introdução da flag
isNestedScrollDispatcherNodeFixEnabled. (I0d24a). DialogProperties'dialogContentTitlefoi renomeado comowindowTitle(Ibd27b).- Foram introduzidos os modificadores
Modifier.onFirstVisibleeModifier.onVisibilityChanged, que são de alto nível e criados com base emModifier.onLayoutRectChanged. Esses modificadores são criados especificamente para lidar com muitos requisitos comuns de aplicativos, como registrar impressões, reproduzir vídeos automaticamente etc. Eles foram criados pensando no desempenho para que possam ser usados em cenários críticos baseados em listas sem risco de sacrificar o desempenho de rolagem. Além dessas APIs de modificador, outras APIs paraRelativeLayoutBoundsforam adicionadas para oferecer suporte a esses casos de uso e facilitar a criação de modificadores personalizados semelhantes que se adequem exatamente ao caso de uso. (I759b8). - Mude
setDiagnosticStackTraceEnabledpara "experimental" para considerar o desenvolvimento futuro desse recurso. (I11db3) - Introdução às APIs
Modifier.scrollable2D,Scrollable2DStatee complementares para criação de estado. Também foram introduzidas funções comuns de extensão de rolagem. (Ic61c8, b/214410040). - Os valores de cores de 64 bits do Compose não são diretamente comparáveis ao
ColorLongsdo Android porque os IDs de espaço de cores estão fora de ordem para alguns espaços de cores. Para converter entre espaços de cores do Android, duas novas APIs foram adicionadas:toColorLong()efromColorLong(). (I36899). - Introduzimos
ViewConfiguration.minimumFlingVelocitypara permitir o controle da velocidade de deslize do limite inferior. (I11aab)
Versão 1.9.0-alpha02
7 de maio de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-alpha02. A versão 1.9.0-alpha02 contém estes commits.
Mudanças na API
- Adicione
dialogContentTitleaDialogProperties, que define o título da janela de conteúdo. bf9d670
Correções de bugs
- As réguas de encartes de janela foram desativadas temporariamente enquanto os testes internos são corrigidos. 8d1402
- Corrigimos como as mudanças de entrada de ponteiro são adicionadas ao
VelocityTrackeremDragGestureNode. Isso pode ser controlado com a nova flagisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb
Versão 1.9.0-alpha01
23 de abril de 2025
Lançamento de androidx.compose.ui:ui-*:1.9.0-alpha01. A versão 1.9.0-alpha01 contém estes commits.
Mudanças de comportamento
- As verificações do lint enviadas com o Compose agora exigem uma versão mínima do AGP 8.8.2. Se não for possível atender a versão mínima do AGP, você pode fazer upgrade apenas do Lint usando
android.experimental.lint.version=8.8.2(ou uma versão mais recente) nogradle.properties. Para executar verificações de lint do Compose na IDE, é necessário usar o Android Studio Ladybug ou uma versão mais recente.
Mudanças na API
- Remove a flag para ativar instruções de rastreamento para o rastreador de caminhos de hits (depuração). (I1b2a1)
InnerRectRulerseOuterRectRulesforam alterados para serem métodos. O parâmetro "name" foi removido da API públicaRectRulers.DerivedRulersagora é uma opção de construtor para réguas verticais e horizontais.MergedHorizontalRulerseMergedVerticalRulersforam substituídos pelos métodosminOfemaxOfpara gerar instâncias. (Iee89f, b/408192133).- O uso de
androidx.compose.ui.LocalSavedStateRegistryOwnerfoi descontinuado em favor deandroidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781) - Adição de um
Modifier.keepScreenOnpara definir que a tela não entre em modo de espera enquanto estiver presente (Ib5af4, b/408284174). - Adicione uma nova propriedade semântica
Shape, que pode ser definida quando a forma do elemento de interface é diferente do retângulo delimitador, por exemplo, um retângulo com cantos arredondados. (I1376f). - Correção de um problema com o envio de eventos de ponteiro em
AndroidViewse adição da flagisPointerInteropFilterDispatchingFixEnabledpara proteger as mudanças. (I0e272, b/372055500, b/408002332) FocusRestorernão fixa mais o item em foco anteriormente. Os usuários precisam usar uma chave para garantir que o item focado anteriormente tenha o mesmo hash de composição, para que o foco seja restaurado. (I4203b, b/330696779).- Permita que o Compose acione
ViewTreeObserver.OnScrollChanged. Esse comportamento é introduzido na flagisOnScrollChangedCallbackEnabled. Também apresentamos uma função de extensão deDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286). - O
currentCompositeKeyHashfoi descontinuado. UsecurrentCompositeKeyHashCode. A API de substituição codifica o mesmo hash com mais bits, o que reduz exponencialmente a chance de dois grupos aleatórios não relacionados na hierarquia de composição terem a mesma chave de hash. (I4cb6a, b/177562901). - Os projetos lançados com o Kotlin 2.0 exigem o KGP 2.0.0 ou mais recente para serem consumidos (Idb6b5)
- Adicionada compatibilidade com verificação de lint para
FocusRequesterpara garantir que ele seja lembrado na composição (I6bf91). - Adicionada a capacidade de definir a taxa de frames preferida ou a categoria de taxa de frames em que o elemento combinável precisa ser renderizado (Ie5201).
- Expor
MotionEventnativo no Android. (I17286). - Adição de
getChecked() + setChecked(int)e descontinuação deisChecked + setChecked(boolean)(Iaac9d). - O modificador
graphicsLayeragora aceita umblendModee umcolorFilter(Iab0e6) - Adicionado o local de composição
LocalResourcespara consultar recursos. A chamada deLocalResources.currentvai recompor quando a configuração mudar. Assim, as chamadas para APIs comostringResource()vão retornar valores atualizados. (I50c13, b/274786917). - Exposição da API experimental para elementos combináveis processarem eventos de toque indireto (Icff57).
- Esta versão melhora a geração de relatórios de exceções não processadas geradas durante as fases de layout e desenho do seu conteúdo combinável. Antes, uma exceção não identificada aqui falhava no executor de testes e encerrava prematuramente o conjunto de testes. Agora, essas exceções podem ser informadas de maneira mais elegante sem encerrar o conjunto de testes. (I9928b, b/314128080).
- A API experimental
GlobalAssertionsfoi descontinuada. O uso pretendido era executar verificações de acessibilidade. Para isso, consulteenableAccessibilityChecks(). (I50aa5). - O
SemanticsNodeInteraction.performTextInputSelectionnão é mais experimental e agora oferece suporte a um parâmetrorelativeToOriginaladicional, que permite aplicar a seleção ao texto original não transformado ou ao texto transformado. (I3a905, b/261561038, b/277018945). - Introdução da API para criar listas com marcadores personalizadas usando
AnnotatedString(I1d066, b/383269496, b/139326648). - Descontinue
runWithTimingDisabledem favor derunWithMeasurementDisabled, que descreve mais claramente o comportamento: todas as métricas são pausadas. Além disso, exponha a superclasseMicrobenchmarkScope, já que não é possível redeclarar a funçãorunWithMeasurementDisabledpara abrir o acesso porque ela é inline. (I9e23b, b/389149423, b/149979716). - Atualizamos a API Devices ui-tooling para incluir dispositivos mais recentes. (Ia2ac1).
- Adição do modo retrato do tablet à coleção de tamanhos de tela de visualização para ajudar o desenvolvedor a considerar janelas maiores (Ia1976)
- Introduzimos a API de valor de rastreamento para marcar/registrar rastreamentos com valores em um determinado momento. Os valores de rastreamento aparecem no Prefetto como uma nova faixa que pode ser vista na linha do tempo de um rastreamento. No Android, elas são implementadas usando
Trace.setCounter. (Idcf48)
Correções de bugs
- Correção do envio de observadores de remember em composições pausáveis para evitar o envio de remembered/forgotten na mesma aplicação (I570b2, b/404645679, b/407931790).
- Agora,
android:dialogThemepode ser definido para controlar propriedades de caixa de diálogo quandodecorFitsSystemWindowsé falso (I7922f, b/246909281). - Correção de um bug em que qualquer evento de movimento capturado fora de uma caixa de diálogo podia dispensá-la. (Ia78fd).
- As verificações do lint do Compose agora exigem uma versão mínima do AGP 8.8.2 na linha de comando e pelo menos o Android Studio Ladybug para suporte da IDE. Se você estiver usando uma versão mais antiga do AGP, defina
android.experimental.lint.version=8.8.2em gradle.properties para fazer upgrade da versão do Lint sem afetar o AGP. (I6f2a8) - Adicionada uma nova propriedade semântica
InputTextque captura o valor de umtextfieldantes da transformação de saída ser aplicada. (Iae46a, b/395911609, b/176949051). - Movemos a API
enableAccessibilityChecks(), que ativa as verificações de acessibilidade para Android, para pacotes separados, que sãocompose:ui:ui-test-accessibilityse você não estiver usandoTestRuleecompose:ui:ui-test-junit4-accessibilityao chamarTestRule(I3c318, b/391560768). - Adição de suporte para rastreamentos de pilha do Compose em
LaunchedEffecterememberCoroutineScope(I705c0, b/354163858).
Contribuição externa
- Mudança da função experimental
runComposeUiTestpara aceitar um bloco de suspensão. Também foi adicionada uma funçãorunComposeUiTestdescontinuada para compatibilidade binária (I3b88c, b/361577328).
Versão 1.8
Versão 1.8.3
18 de junho de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.3. A versão 1.8.3 contém estes commits.
Correções de bugs
- A flag para
isGetFocusedRectReturnEmptyEnabledfoi removida agora que o recurso foi totalmente verificado. (Ife722). - A flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledfaz com que, quando nada é focalizável em umComposeView, ela defina o retângulo como um valor vazio. Isso impede que uma pesquisa de foco escolha a visualização em que se concentrar. Isso é especialmente importante quando um IME tem uma opção "PRÓXIMO" e tenta se concentrar noComposeView, mas orequestFocus()falha. (Ibd0e2, b/369256395)
Versão 1.8.2
20 de maio de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.2. A versão 1.8.2 contém estes commits.
Correções de bugs
- Correção de NPE quando a caixa de diálogo é removida durante um fluxo de eventos ativo nela (6a7e7f).
- Correção de
onLayoutRectChangeque não era atualizado por linha do tempo limitada quando ocorriam atualizações somente de desenho. (03b82d)
Versão 1.8.1
7 de maio de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.1. A versão 1.8.1 contém estes commits.
Correções de bugs
- Correção de alguns problemas com
onLayoutRectChangedeLazyLayoutd791b11 - Pule solicitações de nova medição para itens pré-compostos. Esse bug afetou o desempenho de rolagem dos layouts lentos, já que a pré-busca não estava funcionando de maneira eficiente em alguns casos, e a medição estava ocorrendo no frame. 742087a
Versão 1.8.0
23 de abril de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0. A versão 1.8.0 contém estes commits.
Mudanças importantes desde a versão 1.7.0
- O Compose 1.8 tem suporte recém-adicionado para preenchimento automático semântico. Verifique se as versões da interface e do Foundation que você usa são a 1.8 ou mais recente, já que o preenchimento automático para componentes de texto precisa das versões mais recentes dos dois módulos. Para exemplos e uso da API, consulte a documentação de preenchimento automático neste link.
- O Compose 1.8 oferece suporte a outros tipos de feedback háptico:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Ele pode ser acessado viaLocalHapticFeedbacke, no Android, está disponível por padrão quando a API Vibrator indica que a resposta tátil é compatível. - Várias APIs de foco agora estão estáveis, incluindo
Modifier.focusRestorer(),onEntereonExitFocusProperties(I6e667). Agora, você pode especificar umFocusDirectionao chamarrequestFocus. Adicionamos uma APIrequestFocus(FocusDirection)afocusRequestereFocusTargetModifierNodepara permitir o foco com uma direção específica. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Versão 1.8.0-rc03
9 de abril de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-rc03. A versão 1.8.0-rc03 contém estes commits.
Correções de bugs
- Desativa algumas correções de interoperabilidade de foco que causaram uma regressão. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Versão 1.8.0-rc02
26 de março de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-rc02. A versão 1.8.0-rc02 contém estes commits.
Correções de bugs
- Foi corrigido um problema em que visualizações em foco incorporadas na hierarquia do Compose causavam uma composição reentrante quando a visualização em foco era removida de uma lista lazy. (765562).
Versão 1.8.0-rc01
12 de março de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-rc01. A versão 1.8.0-rc01 contém estes commits.
Correções de bugs
- Corrige uma falha que acontecia quando um
AndroidViewem foco era removido com o teclado de software ativo. (Ic725a). - Corrige alguns problemas na nova implementação do processamento de estado de foco. (b/395895685).
- Corrige um problema que bloqueia o preenchimento automático ao usar
LaunchedEffectpara solicitar o foco em um campo de texto. (b/392539099).
Versão 1.8.0-beta03
26 de fevereiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-beta03. A versão 1.8.0-beta03 contém estes commits.
Mudanças na API
- A API
enableAccessibilityChecks()que ativa as verificações de acessibilidade para Android foi movida para pacotes separados, que sãocompose:ui:ui-test-accessibilityse você não estiver usando a TestRule ecompose:ui:ui-test-junit4-accessibilityao chamarTestRule(I547ef, b/391560768). - Adicionada uma nova propriedade semântica
InputTextque captura o valor de um campo de texto antes da aplicação da transformação de saída. (Iae46a).
Correções de bugs
- Foi corrigido um problema que fazia com que os serviços de preenchimento automático salvassem o texto transformado em vez do texto de entrada. (Iae46a, b/395911609, b/176949051).
Versão 1.8.0-beta02
12 de fevereiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-beta02. A versão 1.8.0-beta02 contém estes commits.
Novos recursos
- Adicionada uma verificação de lint para alertar contra chamadas para
Configuration#screenWidth/heightDp. Em vez disso, é possível usarLocalWindowInfo.current.containerSizepara recuperar o tamanho da janela atual.
Versão 1.8.0-beta01
29 de janeiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-beta01. A versão 1.8.0-beta01 contém estes commits.
Mudanças na API
ContextualFlowRoweContextualFlowColumnforam marcados como descontinuados. Esse componente experimental foi introduzido na versão 1.7 e ainda não foi estabilizado. A implementação foi considerada indesejável. No futuro, um componente que resolva os casos de uso que este componente foi criado para resolver pode ser fornecido.FlowRoweFlowColumntêm sobrecargas experimentais introduzidas na versão 1.7 que incluem um parâmetrooverflow. O uso desse parâmetro foi descontinuado. Em vez dele, use as sobrecargas sem esse parâmetro. O comportamento padrão de "overflow" para essas sobrecargas será "Clip", como era desde a introdução.- Muitos casos de uso para
ContextualFlowRowpodem ser realizados usando FlowRow, mas reconhecemos que isso não é totalmente verdade.ContextualFlowRowé totalmente implementável no espaço do usuário, e é possível tentar copiar a implementação e adaptar, se quiser. No futuro, esperamos resolver esses casos de uso de uma maneira diferente. (Ibafec).
- O
SemanticsNodeInteraction.semanticsId()foi removido. UseSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a). - As APIs de preenchimento automático antigas foram descontinuadas. Em vez disso, use a nova API baseada em semântica. (I943ff).
- Reescreva a API
requestAutofillpara existir fora do gerenciador de preenchimento automático. (Id1929)
Correções de bugs
- Correção de um problema de foco em que
requestFocus()com um parâmetropreviouslyFocusedRectsem sentido (relacionado à direção do foco) ignorava umComposeView. (Ifdc2f, b/388590015). - Correção de um NPE ocasional ao usar
GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Se você estiver gravandodrawContent()dessa forma, use a função de extensãoGraphicsLayer#recorddentro deDrawScope, e não a função de membro emGraphicsLayer. (I75fc0, b/389046242) - Correção do layout de texto com reticências, que às vezes era traduzido incorretamente durante as animações. Consulte b/389707025 para mais informações (Ie55b1, b/389707025).
Versão 1.8.0-alpha08
15 de janeiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha08. A versão 1.8.0-alpha08 contém estes commits.
Mudanças na API
- Transformar
AutofillManagerem uma classe abstrata. (I0a3b0) - Foram corrigidos vários problemas relacionados ao foco, incluindo falhas quando o IME tenta se concentrar em
ComposeViewsem itens focalizáveis, mudança de foco emAndroidViewsfilho e solicitação de foco deixando umAndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752) - Mudança de
FocusEnterExitScope.cancelFocus()paracancelFocusChange()(I89959). - Agora é possível calcular oclusões combináveis com
RectInfo.calculateOcclusions(). - Adicionamos uma função de extensão em
DelegatableNodepara registrar um listener de mudanças no layout global. (I68b59).
Correções de bugs
- A atividade usada como host para o elemento combinável em teste ao usar
ComposeContentTestRule.setContentagora usa o temaTheme.Material.Light.NoActionBarpara evitar que aActionBarse sobreponha ao conteúdo do teste ao segmentar o SDK 35. Para desativar esse comportamento, remova a dependência deui-test-manifeste adicione uma entrada de atividade no AndroidManifest.xml do app de teste paraComponentActivitycom o tema de sua escolha. (I7ae1b, b/383368165). - As fontes de recursos com as mesmas configurações de variação agora evitam o excesso de cache, o que faz com que as configurações de variação incorretas sejam aplicadas. (If3dff, b/372044241).
- O
AnnotatedString.fromHtmlagora é compatível com tags<ul>/<li>. (I7c2fe, b/299662276, b/139326648).
Contribuição externa
- Adicionamos uma nova interface de área de transferência e um local de composição para ela. (I80809).
Versão 1.8.0-alpha07
11 de dezembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha07. A versão 1.8.0-alpha07 contém estes commits.
Mudanças na API
- Proprietário exposto de
LayoutNodepara ferramentas. (I26f7f) - O local de composição
LocalAutofillHighlightColorusa um tipo de cor. (I0e05b) - Mantenha
UrlAnnotationdescontinuado e os métodos dele marcados como experimentais. (Ic0021)
Correções de bugs
- Correção de uma falha no
IndexOutOfBoundsExceptionao usarLinkAnnotationdentro doBasicTextou do elemento combinável Text (be7605, b/374115892). - Corrigimos um problema em que os campos de texto preenchidos com forma personalizada não cortavam a linha indicadora. (I4f87f, b/380704151).
- Correção de planos de fundo ausentes em capturas de tela longas. (I4d57a).
- Agora, essa biblioteca usa anotações de nulidade do JSpecify, que são de uso de tipo. Os desenvolvedores Kotlin precisam usar o seguinte argumento do compilador para garantir o uso correto:
-Xjspecify-annotations=strict(esse é o padrão a partir da versão 2.1.0 do compilador Kotlin). (Idfef8, b/326456246). - Atualização do suporte do Compose para cores HDR e ampla gama ao executar no Android Q ou mais recente. (Icd8be, b/379135036)
- As fontes de recursos que não forem carregadas agora vão usar a fonte padrão sem aviso, em vez de gerar uma exceção na medição, como acontecia antes. (Ib6a49).
- Foi corrigida a perda de foco quando
AndroidViewé desanexado e anexado. (I53446) - Aceitar
requestFocus()de uma ação de layout fora dos limites. (Ia8461).
Contribuição externa
- Adicione
BringIntoViewResponderModifierNodeà interface, que oferece uma nova maneira de implementar a funcionalidade "Trazer para a frente" e permite a implementação em nível de plataforma. (Ia6dd8)
Versão 1.8.0-alpha06
13 de novembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha06. A versão 1.8.0-alpha06 contém estes commits.
Mudanças na API
- Adiciona o modificador
stylusHoverIcon. (Iff20a, b/331289114) - Muda o gerenciador do preenchimento automático para uma interface. (I84914, b/376080755).
- Adiciona
requestFocus(FocusDirection)afocusRequestereFocusTargetModifierNodepara permitir o foco em uma direção específica. (I5d9ec, b/245755256). FocusProperties.entereFocusProperties.exitforam substituídos poronEntereonExit, usando um escopo de receptor em vez do parâmetroFocusDirection. (I6e667)- Adição de suporte ao preenchimento automático na barra de ferramentas de texto. (Ie6a4c).
- Mudanças na API para
Modifier.focusRestorer()(I99c03):- O nome do parâmetro foi mudado para "fallback".
- O parâmetro agora é um
FocusRequester, e não uma lambda. - O parâmetro agora não é NULL, e o valor padrão é "Default".
- Remoção da anotação
@Experimentalda interface do gerenciador de preenchimento automático. O recurso ainda está em andamento para esta versão, mas não queremos introduzir a API @Experimental (Id8398). - O
LocalHapticFeedbackagora fornece uma implementaçãoHapticFeedbackpadrão quando a API Vibrator indica que a resposta tátil é compatível. Os seguintes itens foram adicionados aoHapticFeedbackType:Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Os componentes de clique longo do Wear Compose, comoButton,IconButton,TextButtoneCard, agora realizam o feedback hápticoLONG_PRESSquando um manipulador de clique longo é fornecido. (I5083d). - Remove
OverscrollConfigurationeLocalOverscrollConfiguratione adicionarememberPlatformOverscrollFactorypara criar uma instância ou personalizar parâmetros da implementação de overscroll padrão. Para desativar o overscroll, em vez deLocalOverscrollConfiguration provides null, useLocalOverscrollFactory provides null. Para mudar a cor / o padding do brilho, em vez deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), useLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516). - A API experimental
GlobalAssertionsfoi removida. O uso pretendido era executar verificações de acessibilidade. Para isso, consulteenableAccessibilityChecks(). (I59322).
Versão 1.8.0-alpha05
30 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha05. A versão 1.8.0-alpha05 contém estes commits.
Novos recursos
O preenchimento automático está exposto por trás de uma flag de recurso nesta versão. Estamos trabalhando para melhorar o desempenho e queremos receber feedback antecipado sobre as APIs. As APIs devem evoluir antes da versão estável com base no feedback.
- Para ativar o Preenchimento automático, defina
ComposeUiFlags.isSemanticAutofillEnabledcomo "true" emonCreatee use o Snapshot do Compose mais recente. - Essa versão do preenchimento automático permite salvar credenciais manualmente, usando a opção "Sugerir senha forte" e por navegação. Ele também oferece suporte ao preenchimento quando um campo de preenchimento automático recebe foco ou quando o preenchimento automático é acionado pela barra de ferramentas de texto em componentes de texto. O componente será destacado para indicar quando o preenchimento automático for concluído.
Mudanças na API
- Modifique a interface de preenchimento automático para seguir a estrutura
expect/actual. (I22dce) - Introduza
CompositionLocal, que pode ser usado para modificar a tonalidade do destaque de preenchimento automático bem-sucedido. (I32092). - Adicionada a API
Modifier.onRectChanged, que permite assinar a posição e o tamanho relativos à raiz/janela/tela de umLayoutNode. A API resolve muitos casos de uso que o modificadoronGloballyPositionedatual faz, mas com muito menos sobrecarga. Além disso, ela vem com recursos para reduzir e limitar a taxa de retorno de chamada de acordo com o que o caso de uso exige. (Id28c7, b/372765423, b/372757007, b/372994338). - Expande o gerenciador de preenchimento automático para incluir as APIs
commit()ecancel(), que ajudam os usuários a salvar credenciais recém-inseridas. (I2da00). - Apresenta uma nova interface
AutofillManagerque pode ser usada para ajustar a jornada de preenchimento automático dos usuários e uma flagisSemanticAutofillEnabledpara ativar essa nova versão do preenchimento automático. (I9d484). - Adicionada a API
Modifier.onRectChanged, que permite assinar a posição e o tamanho relativos à raiz/janela/tela de umLayoutNode. A API resolve muitos casos de uso que o modificadoronGloballyPositionedatual faz, mas com muito menos sobrecarga. Além disso, ela vem com recursos para reduzir e limitar a taxa de retorno de chamada de acordo com o que o caso de uso exige. (I3c8fa). - Adição de propriedades semânticas e tipos de dados para suporte estendido ao preenchimento automático. (I52c7d).
- Todos os métodos no builder
AnnotatedStringnão são mais experimentais (Ia89c8, b/261561823).
Correções de bugs
- As visualizações incorporadas no Compose agora podem receber eventos de seletor giratório se estiverem em foco (I4d53a, b/320510084).
- Foi corrigido um problema em que vários tipos de recursos não eram atualizados em mudanças de configuração (Ia9b99, b/352336694).
- Correção de um problema que impedia o funcionamento correto do
TextFieldao usar o teclado japonês POBox em alguns dispositivos Sony mais antigos. (Ia9b99, b/373743376) - Correção de um problema em que as caixas de diálogo apareciam na parte de baixo da tela em vez de ficarem centralizadas (Ia2ec, b/373093006).
- A segmentação da API 35+ não força mais as caixas de diálogo a ter
decorFitsSystemWindowsdefinido como "false". (Ibc94, b/364492593). - Correção de uma falha quando as camadas são movidas entre janelas (por exemplo, caixa de diálogo e conteúdo principal) (I675ba, b/330955281).
Versão 1.8.0-alpha04
16 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha04. A versão 1.8.0-alpha04 contém estes commits.
Mudanças na API
- Adição de callbacks
DelegatableNode#onDensityChangeeDelegatableNode#onLayoutDirectionChangepara permitir a atualização do estado do nó quando eles mudam (I04f3e, b/340662451). - Adiciona
WindowInfo#containerSizepara fornecer o tamanho do contêiner de conteúdo da janela atual. Isso pode ser recuperado usandoLocalWindowInfo. (Idc38c, b/369334429, b/360343819) - Introduzimos uma correção para elementos roláveis aninhados que são removidos da árvore de nós durante um movimento rápido em andamento. Agora, esses nós vão cancelar o movimento rápido e enviar corretamente o evento
onPostFlingcom a velocidade restante. Também estamos lançando a flagNewNestedScrollFlingDispatchingEnabledpara controlar o comportamento em caso de regressões. A flag será removida antes da versão Beta. (I05c37, b/371168883) - Introduzimos o
PointerInputModifierNode#touchBoundsExpansion, que pode ser usado para ampliar os limites de toque de um único modificador de entrada de ponteiro. (Iccf02, b/335339283) - Adiciona
WindowInfo#containerSizepara fornecer o tamanho do contêiner de conteúdo da janela atual. Isso pode ser recuperado usandoLocalWindowInfo. (I27767, b/369334429, b/360343819) - Remova
readOnlydeTextFieldspara fixar na versão estável do Foundation. (I3aaba). ParagrapheParagraphIntrinsicsagora recebem uma lista de todas as anotações aplicadas aoAnnotatedString. Antes, só havia uma lista deSpanStyles(I12f80).
Correções de bugs
- Atualizamos como os parágrafos são tratados em
AnnotatedString. Antes, só era possível criar parágrafos não sobrepostos. Agora, oAnnotatedStringpermite parágrafos totalmente sobrepostos que serão mesclados e parágrafos aninhados em que o parágrafo externo será dividido nos limites do interno, e o estilo do parágrafo interno será mesclado com o estilo do parágrafo externo (Ic9554). - Correção de uma falha em
AnnotatedStringcom umLinkAnnotationde comprimento zero. (89aac6)
Versão 1.8.0-alpha03
2 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha03. A versão 1.8.0-alpha03 contém estes commits.
Mudanças na API
- Atualização da versão do Kotlin para 1.9 (I1a14c)
- Introduzimos uma nova função semântica chamada "Carrossel" para emular o comportamento de lista em paginadores para serviços de acessibilidade. (Id354b, b/354109776, b/239672673).
invisibleToUser()foi renomeado comohideFromAccessibility. A função dele continua a mesma. Consulte a documentação para mais detalhes. (Ib43a3).
Correções de bugs
- Atualização da documentação para o modificador
SensitiveContent(Ib0442). - Correção de um problema em que alguns clipes de contorno genéricos eram ignorados em combinação com sombras de elevação em algumas versões do Android.
- Correção de um problema em que clipes vazios eram aplicados quando um clipe de contorno genérico era especificado em algumas versões do Android.
- Correção da exceção gerada quando o IME está ativo em uma visualização externa e a ação "Próxima" é usada para inserir o foco no
ComposeView. O comportamento declearFocus()se alinha ao comportamento de View em APIs < 28, em queclearFocus()pode fazer com que a View padrão seja focada. - Corrigimos um problema em que o posicionamento acontecia em nós separados em
LazyListao separar o gerenciamento da subcomposição para diferentes transmissões de layout. - Correção de um problema em que o teclado de software piscava quando o foco mudava de um
TextFieldpara umEditTextou qualquer outro editor baseado em visualização. - Os nós de rolagem aninhada agora vão enviar eventos
onPostFlingcorretamente depois de serem separados. - Melhorias gerais de desempenho
Versão 1.8.0-alpha02
18 de setembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha02. A versão 1.8.0-alpha02 contém estes commits.
Mudanças na API
- Agora,
TextOverflow.StartEllipsiseTextOverflow.MiddleEllipsisestão disponíveis, o que permite colocar reticências no início ou no meio da linha do texto de uma única linha. (I38913, b/185418980)
Correções de bugs
- Correção da
dismissOnClickoutsidedo Dalog (39a3d, b/364508685). - Não corte as sombras do conteúdo da caixa de diálogo (e8e2f, b/363027803).
- Correção de comportamento incorreto quando a pesquisa de foco se move entre o Compose e uma visualização (58377, b/350534714).
Contribuição externa
- O
MapAlignmentLinesagora aceita tipos concretosVerticalAlignmentLineouHorizontalAlignmentLine. (I02912) - Novo método comum
ByteArray.decodeToImageBitmap(): ImageBitmap. (I83c21).
Versão 1.8.0-alpha01
4 de setembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.8.0-alpha01. A versão 1.8.0-alpha01 contém estes commits.
Versão 1.7
Versão 1.7.8
12 de fevereiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.7.8. A versão 1.7.8 contém estes commits.
Versão 1.7.7
29 de janeiro de 2025
Lançamento de androidx.compose.ui:ui-*:1.7.7. A versão 1.7.7 contém estes commits.
Correções de bugs
- Correção de
IndexOutOfBoundsExceptionao transmitir umAnnotatedStringcom oLinkAnnotationpara o elemento combinável Text. (Ic96d2). - Foi corrigido um problema de tempo limite em testes em alguns casos raros quando
LinkAnnotationé usado noAnnotatedString. (I04a03)
Versão 1.7.6
11 de dezembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.6. A versão 1.7.6 contém estes commits.
Correções de bugs
- Antes, gerávamos um erro sempre que encontrávamos um evento principal quando o sistema de foco tinha invalidações pendentes. Agora, registramos um erro (I7ea0, b/346370327).
- A anotação experimental foi removida de
SemanticsPropertyReceiver.invisibleToUser(). Ele será descontinuado na versão 1.8 e substituído porSemanticsPropertyReceiver.hideFromAccessibility(). (I448f0, b/376479686) - Correção de um problema que impedia o funcionamento correto do
TextFieldao usar o teclado japonês POBox em alguns dispositivos Sony mais antigos. (I94e0e, b/373743376) - Correção de um problema de acessibilidade em que o inlineContent de
BasicTextnão era anunciado porTalkBack. (I67bcb, b/376479686)
Versão 1.7.5
30 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.5. A versão 1.7.5 contém estes commits.
Correções de bugs
- Correção de problemas em que a elevação e o corte com contornos personalizados não eram renderizados corretamente.
- Correção de uma falha de texto que ocorre com um
LinkAnnotationde largura zero. (Ic1e2e). - Corrige um anúncio em
Talkbackdo botão quando ele é criado como um elemento combinável Text clicável. (I1f588)
Versão 1.7.4
16 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.4. A versão 1.7.4 contém estes commits.
Versão 1.7.3
2 de outubro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.3. A versão 1.7.3 contém estes commits.
Correções de bugs
- Correção de um problema em que especificar um clipe de contorno genérico resultava em um limite de clipe vazio em determinadas versões do Android.
- Correção da exceção gerada quando o IME está ativo em uma visualização externa e a ação "Próxima" é usada para inserir o foco no
ComposeView. O comportamento declearFocus()se alinha ao comportamento de View em APIs < 28, em queclearFocus()pode fazer com que a View padrão seja focada. - Correção de um problema em que um
placeOrderincorreto era usado para invalidação de lookahead, corrigindo assim um caso extremo em que o posicionamento de lookahead era ignorado.
Versão 1.7.2
18 de setembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.2. A versão 1.7.2 contém estes commits.
Correções de bugs
- Melhoramos o desempenho das informações do nó de acessibilidade e dos eventos semânticos removendo o rastreamento detalhado. (I89156, b/362530618)
- O
ComposeViewnão vai mais falhar quando um tamanho de medição excepcionalmente grande for transmitido (da5db, b/347036173). - Correção de um problema de leitor de tela de acessibilidade em que os anúncios de
LiveRegionnos botões não eram feitos. (f66fa7, b/348590026)
Versão 1.7.1
10 de setembro de 2024
- Não há mudanças nos artefatos do Android. Os artefatos
-desktopforam removidos, e os artefatos-jvmStubse-linuxx64Stubsforam adicionados. Nenhum deles é destinada a uso. Elos são marcadores de posição auxiliares do Jetbrains Compose.
Versão 1.7.0
4 de setembro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0.
Mudanças importantes desde a versão 1.6.0
As mudanças importantes na versão 1.7.0 são abordadas neste post do blog.
Versão 1.7.0-rc01
21 de agosto de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-rc01. A versão 1.7.0-rc01 contém estes commits.
Mudanças importantes
- O módulo ui:ui agora exige uma versão mínima de foundation:foundation, que precisa ser pelo menos 1.7.0-rc01 ou mais recente. Isso é aplicado para corrigir uma incompatibilidade de comportamento entre a interface e a base em relação às mudanças de
NestedScrollSourceque ocorreram no início da versão 1.7.0-alpha01.
Versão 1.7.0-beta07
7 de agosto de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta07. A versão 1.7.0-beta07 contém estes commits.
Correções de bugs
- As funções
performTextReplacement,performTextInputeperformTextClearancerelacionadas à entrada de texto agora vão gerar erros de asserção quando forem chamadas emTextFieldssomente leitura.SemanticsNodeInteraction(I4ae8f).
Versão 1.7.0-beta06
24 de julho de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta06. A versão 1.7.0-beta06 contém estes commits.
Versão 1.7.0-beta05
10 de julho de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta05. A versão 1.7.0-beta05 contém estes commits.
Correções de bugs
- Correção de um bug em que a mudança do teclado de software fazia com que
TextFieldnão aceitasse entradas do novo teclado até que o foco fosse perdido e recuperado. - Correção de um problema em que as tentativas de manter o conteúdo da camada causavam efeitos colaterais indesejados ao renderizar com conteúdo
SurfaceView.
Versão 1.7.0-beta04
26 de junho de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta04. A versão 1.7.0-beta04 contém estes commits.
Correções de bugs
- Evita falhas ao medir linhas de texto muito grandes (por exemplo, 10 mil caracteres) (8157ab).
- Desative o suporte à renderização de software para a API
GraphicsLayer. (35ddd8). - Correção de uma falha na lógica de persistência de camada. (70b13e)
- A otimização de reutilização de objetos de camada foi revertida porque causava problemas de renderização. (70b13e)
Versão 1.7.0-beta03
12 de junho de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta03. A versão 1.7.0-beta03 contém estes commits.
Versão 1.7.0-beta02
29 de maio de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta02. A versão 1.7.0-beta02 contém estes commits.
Mudanças na API
SemanticsProperties.Editablefoi renomeado comoIsEditable, eSemanticsPropertyReceiver.editablefoi alterado para um valisEditable. Agora, a propriedade é booleana e sempre especificada por campos de texto. (I8acd8).- Renomeia o parâmetro de comparativo de mercado de acessibilidade. (I3d440)
- API atualizada para estilizar os links:
TextLinkStylesagora faz parte do construtorLinkAnnotatione do métodoAnnotatedString.fromHtml(I90b2b). Também removemos oTextDefaultsdo material (I5477b).
Correções de bugs
- O
LayoutCoordinates.introducesFrameOfReferencefoi renomeado comoLayoutCoordinates.introducesMotionFrameOfReferencepara refletir melhor a finalidade dele. Renomeou a função relacionada para calcular coordenadas com base nessa flag. (I3a330).
Versão 1.7.0-beta01
14 de maio de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-beta01. A versão 1.7.0-beta01 contém estes commits.
Mudanças na API
performCustomAccessibilityActionLabelledfoi renomeado comoperformCustomAccessibilityActionWithLabel, eperformCustomAccessibilityActionWherefoi renomeado comoperformCustomAccessibilityActionWithLabelMatching(I5387f)AnnotatedString.hasEqualsAnnotationsagora éhasEqualAnnotations(I685c0).- Atualizamos a API para receber links com tema do Material Design em texto. Especificamente, os métodos foram removidos do
TextDefaultspara construirLinkAnnotationstemáticos e analisar HTML com links temáticos. Em vez disso, adicionamos uma classeTextLinkStylesque permite estilizar os links como um parâmetro para o elemento combinável Text. (I31b93).
Correções de bugs
- Correção de outros casos de uso ao adicionar dinamicamente modificadores de entrada de ponteiro durante eventos 63e1504
Versão 1.7.0-alpha08
1º de maio de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha08. A versão 1.7.0-alpha08 contém estes commits.
Mudanças na API
- Adiciona suporte para implementações de forma mutáveis. Agora,
Shape#createOutlineé observado dentro das camadas gráficas. Portanto, a leitura de valores de estado dentro dele causa invalidações quando o estado muda, permitindo animações de forma mais eficientes. (Id1629, b/326070216). isPositionedByParentWithDirectManipulationfoi renomeado comointroducesFrameOfReferenceAgora, ele tem o efeito inverso. Por padrão, a maioria dosLayoutCoordinatesintroduz um frame de referência, e somente quando colocada sob manipulação direta a propriedade será falsa. Para consultar a posição apenas com aqueles que introduzem um frame de referência, usepositionInLocalFrameOfReference(...). OupositionInLocalLookaheadFrameOfReferencede umLookaheadScope. (Ifc5f7)- As APIs
LookaheadScopeforam estabilizadas (I21507) - Mude a lambda de ação para
getScrollViewportLengthde acordo com o feedback do conselho da API. (Ibc74a). - As APIs de contorno
GraphicsLayerforam atualizadas para consumir parâmetros de ponto flutuante em vez de números inteiros. Os valores de sentinelaUnsetOffset/UnsetSize IntSizeforam removidos em favor das constantes Unspecified já existentes nas classes in-line Offset e Size baseadas em ponto flutuante (I2fb03, b/333863462). - Ao injetar entrada do mouse durante os testes,
MouseInjectionScope.click(),MouseInjectionScope.doubleClick(),MouseInjectionScope.tripleClick()eMouseInjectionScope.longClick()agora aceitam um parâmetrobutton: MouseButtonpara torná-los mais universalmente aplicáveis. O valor padrão éMouseButton.Primarypara todos os métodos. (I31a23, b/190493367, b/261439695). onClickedfoi renomeado comoonClickemLinkInteractionListener. (Iaa35c).TextInclusionStrategy.isInsidefoi renomeado comoisIncluded. Faça com que o tipo de retorno deParagraph/MultiParagraph#getRangeForRect()não seja anulável. (I51f26).
Correções de bugs
- Foi corrigida a captura de tela longa para contêineres de rolagem com
reverseScrolling=true. (I7c59c)
Contribuição externa
- Adição de suporte para pré-busca de itens em
LazyListsaninhados (por exemplo, umLazyColumnque renderizaLazyRowsaninhados). Espera-se que essa mudança reduza as quedas de frames durante a rolagem dessesLazyLists. A implementação padrão é pré-buscar os dois primeiros itens aninhados, mas esse comportamento pode ser controlado pelas novas APIsLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)eLazyListPrefetchStrategy#onNestedPrefetch. (I51952).
Versão 1.7.0-alpha07
17 de abril de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha07. A versão 1.7.0-alpha07 contém estes commits.
Mudanças na API
ClickableTextestá marcado como descontinuado. Para adicionar links ao texto, crie umAnnotatedStringcom umLinkAnnotationcorrespondente ao seu link e transmita esseAnnotatedStringao elemento combinável Text. (I34d4b, b/323346994)- Introdução de
ViewConfiguration.HandwritingGestureLineMarginpara gestos de escrita manual. Suporte ao gestoJoinOrSplitparaBasicTextField(Ie6e13, b/325660505). - A
FocusProperties.entere aFocusProperties.exitnão são mais experimentais.FocusDirection.EntereFocusDirection.Exitnão são mais experimentais. OFocusRequester.Cancelnão é mais experimental (I461a1, b/261564106). - Ao consultar coordenadas de layout, agora é possível usar o argumento
excludeDirectManipulationOffsetpara excluir o deslocamento definido por layouts pai que posicionaram os filhos usandoPlaceable.PlacementScope.withDirectManipulationPlacement. Da mesma forma, um layout que muda a posição dos filhos com frequência agora pode colocá-los usandowithDirectManipulationPlacement(como rolagem, implementada por padrão). Isso ajuda as animações baseadas emapproachLayouta serem mais intuitivas, tendo agora a oportunidade de diferenciar o que compensar para animar e o que aplicar diretamente ao decidir animar a abordagem. (I60ec7) - A flag de recurso para capturas de tela longas foi removida. (I28648, b/329128246).
- O
LazyColumnagora renderiza cabeçalhos fixos corretamente em capturas de tela longas. (I8d239, b/329296635). - As fontes
NestedScrollDrag e Fling estão sendo substituídas porUserInputeSideEffectpara acomodar a definição estendida dessas fontes, que agora incluem animações (efeito colateral) e roda do mouse e teclado (UserInput). (I40579) - As APIs
ApproachLayoutModifierNodeeModifier.approachLayoutagora estão na versão estável, com novosisMeasurementApproachInProgress()eisPlacementApproachInProgress()para substituir os antigosisMeasurementApproachComplete()eisPlacementApproachComplete(), respectivamente. - Remoção de modificador
intermediateLayoutobsoleto (I3e91c). - Renomeie
GraphicsLayer#buildLayerpara "record" para espelhar os métodos begin/endRecording de APIs baseadas em Displaylist, comoRenderNodee Picture. - A
rememberGraphicsLayerfoi atualizada para aproveitar arememberObserver. (I312c1, b/288494724, b/330758155) - O uso de
UrlAnnotationfoi suspenso. UseLinkAnnotation.Url. Se você estiver usando o tema Material, use o objetoTextDefaultspara criar a anotação com o tema Material aplicado a ela (I8d180, b/323346545). - Os links de texto agora têm uma opção de estilo de estado pressionado, além de estilo normal, pairado e com foco (I5f864, b/139312671).
- O elemento
String.parseAsHtmlfoi renomeado comoAnnotatedString.Companion.fromHtml. (I43dcd) - Adição de argumentos de estilo (
linkStyle,focusedLinkStyle,hoveredLinkStyle) e um listener de interação de link ao métodoparseAsHtml. Ao analisar a string com tags HTML e<a>, o método vai construir umLinkAnnotation.Urlpara cada tag e transmitir os objetos de estilo e o listener de interação de link para cada anotação. (I7c977). LinkAnnotationagora usa os argumentos de estilização baseados em estado e umLinkInteractionListener. Adicione essa anotação aoAnnotatedStringpara receber um hiperlink. Ao transmitirfocusedStatee/ouhoveredState, é possível definir oconfigurationvisual para links quando eles são focados e/ou passam o cursor por cima. (I81ce4, b/139312671)ImeOptions.hintLocalesnão é mais anulável. Se você quiser transmitir uma lista de locais vazia, useLocaleList.Empty. (Ic5bc4).
Correções de bugs
- Processa dados de eventos de entrada históricos inválidos/corrompidos (ignora dados de deslocamento inválidos).
- Corrige eventos de ponteiro inesperados quando um modificador de entrada de ponteiro é adicionado dinamicamente antes de outro modificador de entrada de ponteiro durante um fluxo de eventos de entrada de ponteiro ativo (por exemplo, entre um hover enter e um hover exit [mouse/stylus]).
Versão 1.7.0-alpha06
3 de abril de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha06. A versão 1.7.0-alpha06 contém estes commits.
Novos recursos
- Adicionado o método
parseAsHtmlpara strings estilizadas: ele permite converter uma string marcada com tags HTML emAnnotatedString. Nem todas as tags são compatíveis. Por exemplo, ainda não é possível mostrar listas com marcadores. (I84d3d, I30626, b/139326648). - Implementamos suporte experimental para capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (
ScrollCaptureCallback). Esse recurso é experimental e pode não processar todos os casos corretamente no momento. Por isso, ela está desativada por padrão. Para ativar, defina a flagComposeFeatureFlag_LongScreenshotsEnabledcomo "true". (I2b055, b/329296471).
Mudanças na API
fun ClipEntry.getMetadata()mudou paraval ClipEntry.clipMetadata. (I50155).- As funções
ClipboardManager.getClipMetadataeClipboardManager.hasClipforam removidas. UseclipEntry.getMetadata()para ler os metadados da entrada de clipe atual. Verifique também o resultado deClipboardManager.getClippara saber se ele é nulo ou não e entender se a área de transferência tem um clipe atual. (I50498) - Agora é possível transmitir objetos
GraphicsLayerpara funçõesplaceable.placeWithLayer()(I1b22f) ClipboardManager.setClipagora aceita nulo para limpar a área de transferência. (I7d2e9).- Adicionados IDs de recursos para ajudar a ocultar visualizações usadas como detalhes de implementação em ferramentas de build (I99531).
- Adição do método de suspensão
GraphicsLayer#toImageBitmappara oferecer suporte à renderização de conteúdo de um bitmap em umGraphicsLayer. Essa é uma operação de renderização acelerada por hardware no nível 22 da API ou mais recente (inclusive), que oferece suporte a mais de 99% de todos os dispositivos Android. No nível 21 da API Android, isso volta para a renderização de software. (I9e114). - Método auxiliar para converter um
RectFdo Android emComposeRect(I39925, b/325660505). - Todos os parâmetros
KeyboardOptionsagora têm um valor não especificado por padrão. Adição do métodoKeyboardOptions.merge. KeyboardOptions.autoCorrectfoi renomeado comoautoCorrectEnablede transformado em anulável, em que nulo indica que nenhum valor foi especificado. (Ia8ba0, b/295951492)- A variante
BasicTextField(state)eBasicSecureTextFieldagora usamKeyboardActionHandlerem vez deKeyboardActionspara processar ações realizadas pelo teclado virtual. (I58dda).
Versão 1.7.0-alpha05
20 de março de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha05. A versão 1.7.0-alpha05 contém estes commits.
Novos recursos
- Introdução da nova API
GraphicsLayerpara gravar comandos de desenho em uma lista de exibição, além de outras propriedades que afetam a renderização da lista de exibição. Isso fornece um limite de isolamento para dividir uma cena complexa em partes menores que podem ser atualizadas individualmente sem recriar a cena inteira. As transformações feitas em umGraphicsLayerpodem ser realizadas sem gravar novamente a lista de exibição. Ao contrário deModifier.graphicsLayer,GraphicsLayerpermite a renderização de conteúdo combinável em outro lugar e é útil em casos de uso animados em que o conteúdo precisa ser renderizado em cenas diferentes.
Mudanças na API
GraphicsLayer.draw(Canvas)não é mais uma API pública. Em vez disso, use a função de extensãoDrawScope.drawLayer(GraphicsLayer)para desenhar a camada. (I7a7c0)- Dividir
restrictedConstraints()em dois métodos:fitPrioritizingWidth()efitPrioritizingHeight()(I6d7fd) - Introdução do stub
HardwareCanvaspara uso no Android L (I1c3b5, b/288494724). - Atualize o framework Compose para expor um local de composição
GraphicsContexte atualizar as implementações do proprietário,DelegateableNodeedrawWithCacheModifier para expor o acesso aoGraphicsContextpara acesso limitado que limpa automaticamente as instânciasGraphicsLayerquando os Modifiers são desativados. (I64a2f, b/288494724). - Introduzimos o
InterceptPlatformTextInputpara ajudar a escrever testes de baixo nível relacionados ao IME e outros casos de uso de IME de baixo nível. O uso dePlatformTextInputTestOverridefoi descontinuado. (I862ed, b/322680547). - A função de extensão
GraphicsLayer.setOutline(Outline)foi adicionada. (Ib81f4). - Introdução do construtor de função
GraphicsContextpara criar uma fábrica de instânciasGraphicsLayer(Ib98d6, b/288494724). - A API
GraphicsLayerfoi exposta para oferecer flexibilidade definida pelo desenvolvedor na captura de comandos de desenho que podem ser usados para desenhar em outro lugar e também aplicar diferentes efeitos visuais ao resultado final. (I80245, b/288494724). - Apresente o
Paragraph#getRangeForRect, que retorna um intervalo de texto coberto por uma determinada área retangular. (Iee516, b/325660505) - A substituição experimental de
BasicTextcom o argumentoonLinkClickedfoi removida. Uma API substituta para suporte a hiperlinks será lançada no futuro. (I107d5).
Correções de bugs
- Adição da definição de API
GraphicsLayerexpect/actual para oferecer suporte à captura e reprodução de comandos de desenho com efeitos visuais e transformações de composição opcionais. Introduza a interfaceGraphicsContextpara conter dependências gráficas, incluindo a criação e o gerenciamento de instânciasGraphicsLayer. (I4a8d6, b/288494724). - Correção de um problema de interoperabilidade com a pesquisa de foco 1D em que o foco ficava preso dentro de um
ComposeViewincorporado entre outras visualizações. (I08fd4).
Contribuição externa
LocalLifecycleOwnerfoi movido da interface do Compose paralifecycle-runtime-composepara que as APIs auxiliares baseadas no Compose possam ser usadas fora da interface do Compose. Agradecemos a contribuição de Jake Wharton. (I6c41b, b/328263448)- Exponha de forma consistente as propriedades de ponto flutuante de viés em todos os subtipos de alinhamento com base em viés. (I69f0f, b/328088992).
Versão 1.7.0-alpha04
6 de março de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha04. A versão 1.7.0-alpha04 contém estes commits.
Mudanças na API
- Suporte ao recurso de escrita à mão com stylus para BasicTextField2 em dispositivos após o Android U. (I002e4).
- Nesta CL, estamos adicionando a ação semântica
GetScrollViewportLengthpara que possamos transmitir informações sobre os componentes que estão sendo rolados no Compose para o sistema de acessibilidade. Essa CL também aplica o uso da propriedade em listas roláveis do Foundation. (Ic5fa2). - O
FocusRequester.createRefsagora é estável (I4d92c, b/261436820). - Introdução de
DelegatableNode.requireView()para permitir que nós modificadores recebam oViewatual do Android sem ler um local de composição. (I40768). - Nova API
Path.reverse()para inverter a direção de um caminho (I36348) - Adicionamos
hintLocalesaKeyboardOptionspara oferecer aTextFieldsa capacidade de sugerir IME com locais específicos para definir um idioma preferido. - Exponha a propriedade
platformLocaledeLocaleque retorna o objeto da plataforma subjacente, por exemplo,java.util.Locale. (I921c6).
Versão 1.7.0-alpha03
21 de fevereiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha03. A versão 1.7.0-alpha03 contém estes commits.
Mudanças na API
- Apresentamos o
ContextualFlowRowe oFlowRow/Columnotimizado com MaxLines e Overflow. Temos o prazer de anunciar melhorias nos recursos experimentaisFlowRoweFlowColumn, que agora oferecem suporte a maxLines e overflow, além da estreia deContextualFlowRoweContextualFlowColumn. Essa atualização foi projetada para oferecer componentes de desempenho ideal, em queContextualFlow*é perfeito para um grande número de itens usando uma pequena configuraçãomaxLinese botões dinâmicos +N "Ver mais", eFlowRoweFlowColumnsão perfeitos para um pequeno número de itens, menos de 100. Importante: para manter o comportamento atual emFlowRowouFlowColumn, em que todos os itens são compostos, independente de se encaixarem no máximo do eixo cruzado, definaoverflowcomoFlowRowOverflow.VisibleouFlowColumnOverflow.Visibledurante a inicialização. ConfiraContextualFlowRowSampleeFlowRowSamplepara ver exemplos desses novos recursos em ação. (Ib9135, b/293577082). - Adicione a propriedade semântica
maxTextLength, que deve ser definida em campos de texto que filtram o número máximo permitido de caracteres. (I24d9f, b/170648072). - O wrapper
Modifier.inspectablefoi descontinuado. Essa API cria mais invalidações do modificador do que o necessário. Por isso, o uso dela não é mais recomendado. Recomendamos que os desenvolvedores implementem o métodoinspectableProperties()emModifierNodeElementse quiserem expor propriedades de modificador a ferramentas. (Ib3236). - Novo construtor para
PopupPropertiesque permite controle total sobre flagsWindowManager.LayoutParams. (Ibb33e, b/312485503). - Introduzimos
DelegatableNode.requireLayoutCoordinates()como uma maneira de receber oLayoutCoordinatesatual de umModifier.Nodesem precisar substituironPlacede armazenar as coordenadas em uma propriedade. (Ia8657) - Introduzimos
DelegatableNode.currentLayoutCoordinatescomo uma maneira de receber oLayoutCoordinatesatual de umModifier.Nodesem precisar substituironPlacede armazenar as coordenadas em uma propriedade. (Iaebaa). BasicTextField2e as APIs relacionadas no pacoteandroidx.compose.foundation.text2foram movidas paraandroidx.compose.foundation.text. (I9f635).- Adição de uma nova API
ApproachLayoutModifierNodepara oferecer suporte à criação de lógica de abordagem personalizada em um nó de modificador explícito. Também foi adicionada uma nova APIDeferredTargetAnimationexperimental para animações cujo destino é desconhecido na instanciação. (I60745). - Novas APIs
Pathpara consultar a direção de um caminho e extrair contornos de umPath. (I63d04) - Adição de
PathHitTestePath.contains(Offset)para verificar se umPathcontém um ponto específico. (I3b218). - O
TextLayoutResultagora expõe o métodogetLineBaseline(lineIndex). Isso permite ler a linha de base de uma linha arbitrária do texto, além das propriedades de conveniênciafirstBaselineelastBaseline. (Ide4e8, b/237428541). - Adição de um método para comparar apenas as anotações de dois
AnnotatedStrings. (I32659)
Correções de bugs
- Correção de um problema de compatibilidade com versões anteriores com
SemanticsPropertyReceiver.performImeActioneSemanticsActions.PerformImeAction. (Id0528, b/322269946)
Versão 1.7.0-alpha02
7 de fevereiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha02. A versão 1.7.0-alpha02 contém estes commits.
Mudanças na API
- Correção de um problema de compatibilidade binária com
SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946). - O construtor
PopupPropertiesque usa um parâmetrousePlatformDefaultWidthnão é mais experimental. (I8f8d2). - Adicionada uma sobrecarga de
ComposeTestRule.waitUntilque usa uma descrição de string da condição a ser incluída na mensagem de tempo limite. (I9413e). - Nova API de semântica
unset()para remover propriedades semânticas adicionadas na mesma cadeia de modificadores. Nova propriedade semânticaisOpaque. (I8c583, b/317966058, b/246056649). - Remoção de
originalEventPositiondo método de cópia na API pública dePointerInputChange. (I7bead).
Correções de bugs
- Correção de um bug de acessibilidade que permitia que elementos que não eram guias nem botões de opção fossem clicáveis quando selecionados. (I2181c)
- O
VelocityTrackeragora tem a correção para adicionar pontos por padrão. A correção ainda pode ser desativada definindoVelocityTrackerAddPointsFixcomo "false" se houver algum problema. (Ib3877, b/269487059). - Correção da incompatibilidade binária com versões anteriores em
TextStyleeParagraphStyle. (I179f0, b/320819734)
Contribuição externa
- Adição de um novo construtor
DialogPropertiessem parâmetros específicos da plataforma. (I45829). - Adição de um novo construtor
PopupPropertiessem parâmetros específicos da plataforma. (I9a038)
Versão 1.7.0-alpha01
24 de janeiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.7.0-alpha01. A versão 1.7.0-alpha01 contém estas confirmações.
Mudanças na API
- Expansão de
ClipboardManagercom a adição deClipEntryeClipMetadatapara oferecer suporte a conteúdo arbitrário, como imagens. - Adiciona a API
DeviceConfigurationOverrideaoui-testpara permitir a substituição local do comportamento do conteúdo em teste, como especificar um tamanho, local, direção do layout, escala de fonte ou tema disponível.
Versão 1.6
Versão 1.6.8
12 de junho de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.8. A versão 1.6.8 contém estes commits.
Correções de bugs
- Corrigimos inconsistências no escalonamento de fontes quando a escala de fontes é menor que a tabela definida mais baixa. Nesse caso, fazemos a interpolação entre a escala linear 1x e a tabela definida mais baixa para que o tamanho da fonte aumente monotonicamente à medida que as escalas aumentam. (Icbae3)
Versão 1.6.7
1º de maio de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.7. A versão 1.6.7 contém estes commits.
Versão 1.6.6
17 de abril de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.6. A versão 1.6.6 contém estes commits.
Correções de bugs
- Correção de uma falha rara de
BasicTextField.
Versão 1.6.5
3 de abril de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.5. A versão 1.6.5 contém estes commits.
Versão 1.6.4
20 de março de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.4. A versão 1.6.4 contém estes commits.
Versão 1.6.3
6 de março de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.3. A versão 1.6.3 contém estes commits.
Versão 1.6.2
21 de fevereiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.2. A versão 1.6.2 contém estes commits.
Versão 1.6.1
7 de fevereiro de 2024
Lançamento do androidx.compose.ui:ui-*:1.6.1. A versão 1.6.1 contém estes commits.
Correções de bugs
- Correção de um problema de compatibilidade com versões anteriores com
SemanticsPropertyReceiver.performImeActioneSemanticsActions.PerformImeAction. (Ie0bb2, b/322269946). - Agora, os layouts emitem um erro ao medir quando um deles retorna um tamanho anormalmente grande. Esse tipo de erro normalmente acontece quando a medição usa restrições máximas diretamente sem verificar
Constraints.Infinity. A verificação ajuda os desenvolvedores a encontrar problemas com o layout que tem o tamanho errado, em vez de um layout que o contém. (I339a9).
Versão 1.6.0
24 de janeiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.0. A versão 1.6.0 contém estes commits.
Versão 1.6.0-rc01
10 de janeiro de 2024
Lançamento de androidx.compose.ui:ui-*:1.6.0-rc01. A versão 1.6.0-rc01 contém estas confirmações.
Correções de bugs
- Implementação otimizada de gráficos vetoriais para melhorar a performance minimizando recomposições adicionais.
Versão 1.6.0-beta03
13 de dezembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-beta03. A versão 1.6.0-beta03 contém estes commits.
Novos recursos
- Agora é possível separar um
LayoutCoordinatessem separar o nó. Proteja-se contra isso no Layout Inspector do Compose (If693)
Correções de bugs
PlatformImeOptionsagora é uma classe concreta em vez de uma interface. (If40a4).- Correção de recomposições extras downstream causadas por
LocalSoftwareKeyboardControllereLocalTextInputService, que recebiam novos valores sempre que uma raiz era recomposta. (I42190, b/310510985).
Versão 1.6.0-beta02
29 de novembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-beta02. A versão 1.6.0-beta02 contém estes commits.
Versão 1.6.0-beta01
15 de novembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-beta01. A versão 1.6.0-beta01 contém estes commits.
Mudanças na API
- O modificador
DragAndDropTargetagora usa oDragAndDropTargetde recebimento explicitamente e tem uma lambda para ativar uma sessão de arrastar e soltar. Agora há duas funções de fábrica para umDragAndDropModifierNode. Um para receber transferências e outro para transferir dados (I69481) - O
maximumFlingVelocityagora é representado como Float. Atualizamos a documentação para esclarecer a unidademaximumFlingVelocity. (I8adc7). onDragAndDropStartna fábricaDragAndDropModifierNodefoi renomeado comoacceptDragAndDropTransfer.acceptsDragAndDropTransferfoi adicionado ao modificadordragAndDropTargetpara aceitar de uma sessão de arrastar e soltar. Essa lambda retorna umDragAndDropTargetviável se houver interesse em uma sessão de arrastar e soltar. Outras lambdas para processar eventos de arrastar foram substituídas por essa. Uma função de fábricaDragAndDropTargetfoi adicionada para receber de sessões de arrastar e soltar (Iebf3a).DragAndDropInfofoi removido como um tipo. Agora,DragAndDropModifierNode.dragusa parâmetros para a lambdatransferData, o tamanho da decoração e a decoração de arrastarDrawScope.DragAndDropTargettem métodos para eventos específicos de arrastar e soltar em vez de ser um único método abstrato.onDragAndDropEventna função de fábrica de umDragAndDropModifierNodefoi renomeado comoonDragAndDropStartpara comunicar melhor que oDragAndDropTargetfornecido é válido apenas para uma determinada sessão de arrastar e soltar.O
DragAndDropEventTypefoi removido (I645b1).PlatformTextInputModifierNode.runTextInputSessionfoi renomeado comoestablishTextInputSession. (I03cd0)Melhora os nomes das APIs de nós transversais para torná-los mais compreensíveis. (Ia4474).
Substitua
OriginalTextporTextSubstitution. (Ifa5a8).PlatformTextInputModifierNode.textInputSessionfoi renomeado comorunTextInputSession(Ie9c6b).Os filhos de
SubcomposeLayout(e layouts comoLazyColumncom base nele), que são mantidos para serem reutilizados no futuro, são considerados desativados. Uma nova API de testeassertIsDeactivated()foi introduzida para testar esses nós. O restante das APIs de teste vai filtrar os nós desativados por padrão. (I2ef84, b/187188981).FocusDirection.IneFocusDirection.Outforam removidos. UseFocusDirection.EntereFocusDirection.Exit(I2f660).As APIs Material
SwipeToReveal(para cards e ícones) agora dependem de uma API baseada em slots (conforme recomendado pelo Compose) em vez de instâncias baseadas em classes de dados para criar esses slots. Essa é uma mudança incompatível. Consulte a demonstração e o exemplo de código para ver exemplos de como usar a nova API. (Ia8943).O construtor
FontStyle(int)foi descontinuado. UseFontStyle.NormalouFontStyle.Italic. (I66610)A interface
FontScalablefoi renomeada comoFontScaling(Ie804a).
Correções de bugs
- O
SoftwareKeyboardController.show()não vai mais mostrar o teclado de software se nenhum editor de texto estiver em foco. (I2165a, b/301477279) - Os eventos de tecla de hardware "Up" para teclas que não receberam um evento "Down" na mesma visualização do Compose agora serão ignorados. (Ib37b4, b/305518328)
- Adição de suporte ao renderizador para gradiente de varredura em
ArcLine. (I4d5bb). - Implementação de equals e hashcode para
PageSize.Fixed(Ie3ede, b/300134276). - Correção do problema de compatibilidade binária com a mudança de margem da janela (Iee695)
- A camada principal do material foi removida do ícone/botão do Material3, porque os microbenchmarks mostram um desempenho melhor sem ela (I55555).
- Os
TestDispatchers transmitidos comoeffectContextpara testes do Compose agora serão usados para criar os relógios de teste e de frame. (Ia7178).
Versão 1.6.0-alpha08
18 de outubro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha08. A versão 1.6.0-alpha08 contém estes commits.
Mudanças na API
- A lambda
onDrawDragShadowdeModifier.dragAndDrawSourcefoi renomeada comodrawDragDecoration, e o parâmetro de tamanho deDragAndDropInfofoi renomeado comodragDecorationSize. (Id0e30, b/303904810) - Introduza
SemanticsNodeInteraction.isDisplayed()eSemanticsNodeInteraction.isNotDisplayed()para verificar se um nó correspondente está visível ou não sem também fazer asserções nele. (I2c196, b/302100809) - Introduzimos um valor especial
Unspecifiedpara os camposTextAlign,TextDirection,HyphenseLineBreakdoParagraphTextStylepara substituirnull. Como essas classes são in-line, ao substituir o anulável por "Unspecified", evitamos o boxing de tipos primitivos. Construtores, getters e outros métodos emTextStylee estilo de parágrafo foram atualizados para aceitar os parâmetros mencionados como tipos não nulos. (I4197e, b/299490814) - Adicione a sobrecarga
GoogleFontpara ler umGoogleFontde XML. (If8f59). - Tornamos
LoremIpsumPreviewParameterProvideruma classe aberta. (I41bf5, b/266918816, b/300116360).
Correções de bugs
- O
FontFamilyResolveragora usaDispatchers.Mainpara corrotinas de gerenciamento de cache. (Ie8dd9) - O
AndroidViewBindingagora remove de forma síncrona as instânciasFragmentinfladas ao incluir umFragmentContainerViewno layout como parte doonReleaseusandocommitNow(em vez docommitusado anteriormente). Isso corrige problemas com o método de edição dinâmica ao substituir a composição após as mudanças. (I58fbf).
Versão 1.6.0-alpha07
4 de outubro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha07. A versão 1.6.0-alpha07 contém estes commits.
Mudanças na API
- Introdução de
PlatformTextInputMethodTestOverridepara escrever testes de editores de texto personalizados. (Id159b) - Adiciona o modificador
dragAndDropSourcepara iniciar sessões de arrastar e soltar e o modificadordragAndDropTargetpara receber de sessões de arrastar e soltar. (Ib7828, b/286038936). - Adicionamos coleções
ColorListeColorSetque evitam alocações. (I744bd). - Adicionamos a flag temporária
DisableNonLinearFontScalingInComposepara desativar o dimensionamento de fonte não linear. DefinaDisableNonLinearFontScalingInCompose = truenos seus testes se precisar de tempo para limpar. Essa flag será removida no Compose 1.6.0-beta01. (Ic9486).
Correções de bugs
- Análise otimizada de drawables vetoriais XML. (Ibb015).
Versão 1.6.0-alpha06
20 de setembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha06. A versão 1.6.0-alpha06 contém estas confirmações.
Mudanças na API
- Otimizações adicionais nos ícones do Material Design. (I3e08d).
- Adiciona a capacidade de percorrer a árvore de modificadores para cima/para baixo e encontrar nós semelhantes. (I2d234).
- Adição do callback
onRestoreFailed()ao modificadorfocusRestorer()(Ie1d43) - Adição de anotações androidx a várias APIs de gráficos para especificar
ColorInt,FloatRange,IntRange,Sizee muito mais. (Id65c8, b/290950582). - Adição de
showSystemUi=trueà definição dePreviewScreenSizes(Ib61d3).
Mudanças de comportamento
- O Compose agora usa escalonamento de fonte não linear para melhorar a legibilidade e a acessibilidade. Quando a escala de fonte é > 100% nas configurações do sistema, o texto pequeno aumenta de tamanho normalmente, mas o texto já grande aumenta apenas um pouco. Além disso, as alturas de linha definidas no SP são ajustadas automaticamente para permanecer proporcionais à altura pretendida na escala de 100%. Consulte as práticas recomendadas de escalonamento de fontes para mais informações. (I11518)
Versão 1.6.0-alpha05
6 de setembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha05. A versão 1.6.0-alpha05 contém estes commits.
Mudanças na API
- Ative a captura de conteúdo no
AndroidComposeViewAccessibilityDelegateCompat. (Ib2969). - As velocidades de movimento rápido em componentes de visualização, como
ScrollVieweRecyclerView, são limitadas aViewConfiguration.ScaledMaximumFlingVelocity. O Compose agora tem a própria versão domaximumFlingVelocity, que se aplica aoDraggable. (Ibf974). - Adiciona scaffolding inicial para oferecer suporte às APIs de arrastar e soltar da plataforma. (If84ce).
- Adição de
deviceIdaRotaryScrollEvent(Iba3bf). - A API
ui-toolingDevices foi atualizada para incluir dispositivos mais recentes (Ib25b4).
Versão 1.6.0-alpha04
23 de agosto de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha04. A versão 1.6.0-alpha04 contém estes commits.
Mudanças na API
- Adição de um método para desativar
ReusableComposition, removendo observações, mas mantendo os nós no lugar. A composição desativada pode ser ativada novamente chamandosetContent. (Ib7f31). - Adicione a interface
ReusableCompositionpara gerenciar o ciclo de vida e a reutilização de subcomposições. (I812d1, b/252846775). - O
Modifier.focusGroupfoi promovido para APIs estáveis. (I7ffa3). - Adição de anotações androidx a várias APIs de gráficos para especificar
ColorInt,FloatRange,IntRange,Sizee muito mais. (I70487, b/290950582). - A API
ColorFilterfoi atualizada para ter tipos de subclasse concretos e melhorar a capacidade de inspeção dos parâmetros. (I5fe29). - Apresentamos a biblioteca wear-tooling-preview para listar dispositivos Wear válidos que podem ser usados em prévias da interface (Ib036e).
- Criamos a interface
FontScalablepara processar a parte de escalonamento de fontes da interface Density. (I2cf3f).
Versão 1.6.0-alpha03
9 de agosto de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha03. A versão 1.6.0-alpha03 contém estes commits.
Mudanças na API
- Novo tipo de transição de entrada/saída que dimensiona o conteúdo com base no tamanho do contêiner de animação durante a entrada/saída. A função e a interface combináveis
LookaheadScopeagora estão estáveis (Ifb2ce). - Foi adicionado suporte à configuração de
privateImeOptions(Idb772).
Correções de bugs
- Agora,
PopupPositionProvider.calculatePositionatualiza automaticamente a posição do pop-up quando o estado lido no cálculo é alterado. (I676a1, b/292257547). - Correção de campos de texto que mostram o teclado e são editáveis quando
readOnlyé verdadeiro. Também corrigimos o teclado que não aparecia quandoreadOnlyera alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589). - Aplicação expandida de asserções globais em testes de interface. (I1f90d).
Versão 1.6.0-alpha02
26 de julho de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha02. A versão 1.6.0-alpha02 contém estes commits.
Mudanças na API
- Adicionada uma interface de localizador de serviços que pode ser implementada por implementadores da composição. Isso permite uma implementação da composição que delega a outro serviço de delegação de composição as pesquisas de composição originais. Não deve ser chamado diretamente e é usado para permitir a criação de APIs experimentais no ambiente de execução que podem ser encontradas em versões encapsuladas do compositor, como o módulo de UI. (I296b9).
- A API
PlatformTextInput*foi totalmente reformulada. (I6c93a, b/274661182, b/267235947, b/277380808). - A
SoftwareKeyboardControllere aLocalSoftwareKeyboardControllernão são mais experimentais.LocalSoftwareKeyboardControllertambém é umCompositionLocaladequado. (I4c364). LookaheadLayouteLookaheadLayoutScopeforam descontinuados em algumas versões e agora foram removidos. As APIs de substituição sãoLookaheadScope, que podem funcionar com qualquer layout. (I12ac3).- Adicionamos
SemanticsNodeInteraction.requestFocuscomo uma maneira mais conveniente e fácil de descobrir como solicitar o foco em testes. (Ie8722) - Adição de APIs experimentais para registrar declarações globais, que serão usadas por frameworks de teste no futuro. (I12d77).
Correções de bugs
- A primeira invocação do callback
updatedeAndroidViewagora será adiada até que a visualização seja anexada, em vez de ser executada quando a composição que apresenta oAndroidViewfor aplicada. Isso corrige um bug em que o callbackupdatenão era invalidado se um estado lido fosse alterado imediatamente por um efeito. (Ie9438, b/291094055).
Versão 1.6.0-alpha01
21 de junho de 2023
Lançamento de androidx.compose.ui:ui-*:1.6.0-alpha01. A versão 1.6.0-alpha01 contém estas confirmações.
Novos recursos
- Suporte a Lookahead em
LazyList. Isso permite queLazyListna passagem de Lookahead ignore qualquer animação (por exemplo, animação de posicionamento de itens,AnimatedVisibilityetc.) e calcule o tamanho e a posição de Lookahead para todos os filhos. Depois da passagem de lookahead, os filhos deLazyListpodem ser animados de forma independente da realidade, como visto na passagem de lookahead.
Mudança de comportamento: o includeFontPadding agora é "false" por padrão no Compose
includeFontPadding agora é "false" por padrão (21d806) no Compose.
includeFontPadding é um atributo legado que controla se um padding extra deve ser incluído na parte de cima da primeira linha e na parte de baixo da última linha do texto para acomodar caracteres que possam se estender acima ou abaixo das linhas de base do texto.
A atualização dessa versão do Compose vai modificar a renderização de todos os textos na sua interface removendo o padding extra na parte de cima da primeira linha e na parte de baixo da última linha de cada texto exibido.
Dependendo dos requisitos da interface e das métricas de fonte usadas, as mudanças devem ser mínimas. No entanto, você pode encontrar bloqueadores como: - Testes de captura de tela corrompidos. Corrija a interface, se necessário, e gere novamente as imagens de referência. - O texto está ligeiramente desalinhado. Remova os padding negativos personalizados ou adicione padding, se necessário.
Você pode ativar o includeFontPadding usando PlatformTextStyle para cada texto:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
É possível ativar o includeFontPadding para todos os textos configurando os estilos do Material. Os nomes dos parâmetros variam entre M2 e M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Saiba mais sobre o Compose includeFontPadding na documentação para desenvolvedores e nesta postagem do blog.
Se você tiver problemas/bugs relacionados a essa mudança, registre um bug usando o rastreador de problemas.
Mudanças na API
- Suporte para
InputConnection#requestCursorUpdates(I0c69b). - Adição de
FocusRequester.saveFocusedChildeFocusRequester.restoreFocusedChild(Ic557e, b/272302679, b/275157318) - Adicione o tipo
ResourceResolutionExceptionpara encapsular os objetos lançados ao tentar carregar recursos de bitmap com uma descrição do caminho do recurso que não foi carregado. (I19f44, b/230166331, b/278424788) - Acessibilidade otimizada para desempenho e alocações de memória. (Iede48).
- Adição de propriedades e ações semânticas para oferecer suporte à tradução de texto. (I4a6bc).
- Nova propriedade em
IntrinsincMeasureScopee nas implementações dela (por exemplo,MeasureScope) para indicar se a passagem de medida atual é uma passagem de Lookahead (I7a812). - A API
DrawScopefoi atualizada para permitir a retargeting da renderização em uma tela diferente com densidade/layoutdirection e tamanho alternativos. - O
DrawContextfoi atualizado para oferecer suporte à configuração de densidade e direção do layout, além de tornar o canvas configurável. (Ie1f9b, b/225408150). - Adicionamos
Paragraph#fillBoundingBoxespara calcular caixas delimitadoras de caracteres. (If30ee). - Adição de um conjunto de
MultiPreviewscomuns (Ia5a27).
Correções de bugs
- Adicionada a interface
FocusTargetModifierNode, que pode ser usada para criar umFocusTargetpersonalizado. (I9790e). - Os parâmetros
fallback*no construtorTextMeasurerforam renomeados comodefault*. (I940a5). SemanticsPropertyReceiver.performImeActionfoi renomeado comoonImeAction, eSemanticsActions.PerformImeActionfoi renomeado comoOnImeAction(I8e841).- Adiciona Wheel para diferenciar uma rolagem do mouse de uma ação de arrastar em rolagem aninhada (especificamente, em
NestedScrollConnection). (Ie57e4) - Adição da API
asComposePaintpara substituirtoComposePaint, já que o objeto retornado envolve oandroid.graphics.Paintoriginal (I22b4c) - Descontinue
SemanticsProperties.imeActione substitua por um novo parâmetro paraSemanticsActions.performImeAction. (I4a587). - Adição de suporte para seleção com o mouse. A seleção por toque vai aumentar por palavra e diminuir por caractere. (Ic0c6c, b/180639271).
- Os métodos
Paragraphque geravamAssertionErrorpara offsets fora dos limites agora geramIllegalArgumentException, assim comoMultiParagraph. (I549d3, b/243338896).
Versão 1.5
Versão 1.5.4
18 de outubro de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.4. A versão 1.5.4 contém estes commits.
Versão 1.5.3
4 de outubro de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.3. A versão 1.5.3 contém estas confirmações.
Correções de bugs
- (b/301209788) Às vezes, o
TextFieldaplicava comandos anteriores incorretamente ao focar e inserir texto em coreano, o que resultava na perda de caracteres.
Versão 1.5.2
27 de setembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.2. A versão 1.5.2 contém estes commits.
Correções de bugs
- Adição de uma solução alternativa para falhas quando a API de rolagem de acessibilidade era acessada de uma linha de execução em segundo plano.
- Correção de nós não anexados sendo adicionados à árvore semântica.
Versão 1.5.1
6 de setembro de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.1. A versão 1.5.1 contém estes commits.
Correções de bugs
- Correção de campos de texto que mostram o teclado e são editáveis quando
readOnlyé verdadeiro. Também corrigimos o teclado que não aparecia quandoreadOnlyera alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).
Versão 1.5.0
9 de agosto de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0. A versão 1.5.0 contém estes commits.
Versão 1.5.0-rc01
26 de julho de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-rc01. A versão 1.5.0-rc01 contém estas confirmações.
Correções de bugs
- Correção de uma falha que ocorria quando
SubcomposeLayoutera usado dentro demovableContentOf().
Versão 1.5.0-beta03
28 de junho de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-beta03. A versão 1.5.0-beta03 contém estes commits.
Correções de bugs
- Adição da interface FocusTargetModifierNode, que pode ser usada para criar um FocusTarget personalizado. (Ifb1d6).
- Correção de um problema com elementos combináveis Dialog e Popup que poderia fazer com que a janela filha não fosse redimensionada conforme o esperado quando
usePlatformDefaultWidth=true. (I112ee).
Versão 1.5.0-beta02
7 de junho de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-beta02. A versão 1.5.0-beta02 contém estas confirmações.
Mudanças na API
- Adição da API
asComposePaintpara permitir o consumo de uma instânciaandroid.graphics.Painta ser usada no Compose
Correções de bugs
- Adição da API
asComposePaintpara substituirtoComposePaint, já que o objeto retornado envolve oandroid.graphics.Paintoriginal (I22b4c)
Versão 1.5.0-beta01
24 de maio de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-beta01. A versão 1.5.0-beta01 contém estes commits.
Mudanças na API
- Alocações removidas em recomposição, animações de cores e
AndroidComposeView(Ib2bfa) - Adiciona a função auxiliar
CacheDrawModifierNode()para permitir a delegação (Icf8f9). - Apresentamos a propriedade
isLookingAhead, acessível emMeasureScope, para observar os resultados de previsão e influenciar a transmissão principal, se quiser. (Ibf4c3). - Nova propriedade semântica
traversalIndex, um ponto flutuante usado para reordenar nós na travessiaTalkBack(valores mais baixos vêm antes). (I9a81b, b/186443263). - Renomeação da propriedade Semântica
isContainerparaisTraversalGroup(I121f6). ColorProduceragora tem umoperator fun invokeem vez deproduce(I4a9a2).- Adicione a API de transformação
Pathpara aplicar transformações de tradução/escala/rotação a objetos de caminho. (I23434, b/233772232). - O método do
ColorProduceré chamado deproduce. (I78bde). toFrameworkColorSpacefoi renomeado comotoAndroidColorSpace(I4f547).ColorLambdafoi renomeado comoColorProducer. (I73b1a)- Introduzir APIs para converter entre os tipos de espaço de cores do Android e do Compose. (Ie7db4, b/279979665)
- Adição de um parâmetro de cor a
BasicTextpara permitir a animação ou definição eficiente da cor do texto. (Iffd88, b/246961787). TextRange.constrainfoi renomeado comoTextRange.coerceIn(I31be2).- Adicionamos
TextStyle.merge(...)otimizado com a lista completa de parâmetros. (Iad234, b/246961787). - Estabilizamos muitas APIs de texto, incluindo
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush)eMultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPaddingnão está mais descontinuado. Nossa intenção original era remover o campo, mas o feedback mostrou que os desenvolvedores precisam dessa opção de configuração. Portanto, a descontinuação foi removida do campo (I98e96, b/277703184).- Adição do método público
TextRange.constrain. (I97912) - Os
UrlAnnotations emAnnotatedStrings agora podem ser abertos por serviços de acessibilidade, como oTalkBack. (If4d82, b/253292081) - Adição da ação semântica
InsertTextAtCursorpara campos de texto. (I11ed5). - O construtor
LineHeightStyle.Alignment(topRatio)foi promovido a API estável. (I79c32, b/261565383) TextMeasurere as APIs relacionadas não são mais experimentais. (I74647, b/261581753).- Adição da ação semântica
PerformImeActionpara invocar a ação do IME em nós do editor de texto. (Ic606f, b/269633506). - As APIs
PlatformTextInputnão são mais experimentais para Android. (I668eb) - O nome do parâmetro de valor para
Enum.valueOfmudou (Ia9b89). - Mais exceções geradas de enum valueOf (I818fe)
- Introduzimos uma nova API
PlatformTextInputAdapterde baixo nível para criar implementações personalizadas de entrada de texto que se comunicam diretamente com as APIs da plataforma. (I58df4). - Adição do parâmetro
BlendModeaos métodosDrawScope.drawText,Paragraph.painteMultiParagraph.paintpara oferecer suporte a diferentes algoritmos de combinação ao desenhar texto no Canvas. (I57508). Font.MaximumAsyncTimeoutfoi renomeado comoFont.MaximumAsyncTimeoutMillis. Apenas renomear. (I07af5).- Valores de DPI atualizados dos dispositivos de referência
@Preview(Id6151, b/254528382). - Adicione os parâmetros
brushealphaaBasicTextpara permitir a animação ou a definição eficiente do pincel de texto. - Defina tipos de lambda sem caixa para Float, Double, Long, Int e Short em :ui:ui-unit (I6f18d, b/246961787).
Correções de bugs
- Remoção de várias alocações no rastreamento da velocidade do ponteiro (I26bae).
- Alocações reduzidas no gerenciamento de layout e entrada de ponteiro (I5333a).
- Otimizar o uso da memória do Vector e a renderização dos primeiros frames (I2f3c6)
- Alocações removidas ao desenhar linhas e pontos com o Canvas (I9f535)
- Adição de documentos a
AndroidFont.fontVariationSettings(I7d9e2).
Contribuição externa
- Melhoria no desempenho e redução das alocações nas APIs Vector (I906cb)
Versão 1.5.0-alpha04
10 de maio de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-alpha04. A versão 1.5.0-alpha04 contém estes commits.
Novos recursos
Modifier.NodeMelhorias na delegação Adicionamos uma capacidade aprimorada de delegar a outras instâncias deModifier.Nodede umDelegatingNode. Isso pode ser feito com as APIsdelegateeundelegate. Antes dessa mudança, cada API do nó delegador precisava ser delegada explicitamente ao nó delegado. Depois dessa mudança, as interfaces de nó serão delegadas implicitamente, a menos que oDelegatingNodeas substitua explicitamente. (67352bc)
Mudanças na API
- Introduza
NestedScrollModifierNode, umNestedScroll Modifier.Nodeque pode ser delegado. (I69513). - Adição dos parâmetros
onReseteonReleaseao elemento combinávelAndroidViewBinding, espelhando o elementoAndroidViewe permitindo o suporte à reutilização de visualização comViewBinding. (I00b1e, b/276802519). - Atualizamos a API Compose Path para oferecer suporte a operações de retorno e casos de uso de manipulação frequente de caminhos com reutilização mais rápida. (I7b797)
- Adicionamos
TextStyle.merge(...)otimizado com a lista completa de parâmetros. (Iad234, b/246961787). - Estabilizamos muitas APIs de texto, incluindo
Brush,DrawStyle,TextMotion,DrawScope.drawText,Paragraph.paint(Brush)eMultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPaddingnão está mais descontinuado. Nossa intenção original era remover o campo, mas o feedback mostrou que os desenvolvedores precisam dessa opção de configuração. Portanto, a descontinuação foi removida do campo (I98e96, b/277703184).
Correções de bugs
- Foi corrigida a regressão em que o teclado não aparecia para campos de texto em caixas de diálogo não criadas pelo elemento combinável
Dialog. (I82551, b/262140644)
Versão 1.5.0-alpha03
19 de abril de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-alpha03. A versão 1.5.0-alpha03 contém estes commits.
Novos recursos
- Novo comportamento padrão para
SubcomposeLayoutemLookaheadScope:SubcomposeLayoutsque não têm slots condicionais (por exemplo,TabRow,Scaffold,BoxWithConstraintsetc.) agora funcionam bem com animações de Lookahead.
Mudanças na API
- A nova
intermediateMeasurePolicypadrão que reutiliza a política de medição da passagem de Lookahead permite que os subtiposSubcomposeLayoutsem slots condicionais, comoScaffold,TabRoweBoxWithConstraints, funcionem com Lookahead por padrão (Id84c8). - O recompositor criado para uma janela do Android agora só vai bloquear chamadas para
withFrameNanosem vez de toda a composição quando receber uma notificaçãoON_STOP. Isso significa que as janelas associadas a atividades interrompidas vão continuar recompondo as mudanças de dados, mas as animações ou qualquer outro autor da chamada dewithFrameNanosserão bloqueados. (Id9e7f, b/240975572). - Muda
motionEventSpypara estável. (Ic5ec4, b/261560988). - Adição do método público
TextRange.constrain. (I97912) PlatformTextStyle.includeFontPaddingnão está mais descontinuado para incentivar os desenvolvedores a usar essa API de compatibilidade para alternar e testar a configuraçãoincludeFontPaddingcomo "false". (I98e96, b/277703184)
Versão 1.5.0-alpha02
5 de abril de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-alpha02. A versão 1.5.0-alpha02 contém estas confirmações.
Mudanças na API
- Nova API
SubcomposeLayoutque usa uma política de medição intermediária adicional para processar a lógica de medição/layout durante animações baseadas em Lookahead. (I017d3). - O PointerInput agora é lazy e usa Modifier.Node para melhorar o desempenho. Leia sobre a pequena mudança de comportamento. (15dab9)
- Muda as APIs experimentais para estáveis com eventos principais. (I9c7d8, b/261566839, b/261567368).
- Muda as APIs experimentais para estáveis em
PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749). - Adiciona uma maneira de instanciar um
SuspendingPointerInputModifierNodepara implementações mais complexas deModifier.Node. (Ic4933). - Os
UrlAnnotations emAnnotatedStrings agora podem ser abertos por serviços de acessibilidade, como oTalkBack. (If4d82, b/253292081) - Adição de uma API para interceptar teclas de hardware antes que elas sejam enviadas ao teclado virtual (I4f4c6, b/186800395).
- Adição da ação semântica
InsertTextAtCursorpara campos de texto. (I11ed5). - As ações de teste relacionadas a texto (por exemplo,
performTextInput) agora vão solicitar o foco diretamente, usando a ação semântica, em vez de clicar no campo. (I6ed05).
Correções de bugs
- Agora, as ações de teste de texto exigem que os campos de texto estejam ativados. (Iab328).
Versão 1.5.0-alpha01
22 de março de 2023
Lançamento de androidx.compose.ui:ui-*:1.5.0-alpha01. A versão 1.5.0-alpha01 contém estes commits.
Mudanças na API
- O Modifier.intermediateLayout agora não exige um LookaheadScope explícito. O bloco de medição em intermediateLayout tem IntermediateMeasureScope como receptor, que fornece CoroutineScope, LookaheadScope e MeasureScope convenientes.(Ibe2e5)
- LookaheadLayout foi substituído por LookaheadScope, que não é mais um Layout. Isso permite que o conteúdo filho em um LookaheadScope seja controlado diretamente pela MeasurePolicy do elemento pai. (Ibe2e5).
- Adiciona
Modifier.Node#coroutineScopepara permitir que Modifier.Nodes iniciem corrotinas. (I76ef9). - Permita que Modifier.Nodes leia CompositionLocals implementando a interface CompositionLocalConsumerModifierNode. (Ib44df).
- Propagação da classe @Deprecated para a propriedade. (I882d1)
Versão 1.4
Versão 1.4.3
3 de maio de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.3. A versão 1.4.3 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o
AndroidViewpodia não ser disposto corretamente quando usado com determinados Modificadores. (I4dc77, b/274797771) - Correção de um bug na pesquisa de foco 2D que afetava os menus
DropDown(b/276811828). - Foi corrigido um bug nas propriedades personalizadas de entrada/saída de foco que executavam o bloco de entrada/saída apenas na primeira vez que a lambda era invocada (b/277234245).
- Correção de uma regressão no sistema de foco que causava uma falha ao ler
focusProperties. (b/271324781, b/274897776)
Versão 1.4.2
19 de abril de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.2. A versão 1.4.2 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o
AndroidViewnão reutilizava os modificadores corretamente, o que poderia resultar em comportamento inesperado e falhas. (Ib67ee, b/275919849). - Foi corrigida uma regressão em que o teclado não aparecia para campos de texto em caixas de diálogo não criadas pelo elemento combinável
Dialog(I82551, b/262140644).
Versão 1.4.1
5 de abril de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.1. A versão 1.4.1 contém estas confirmações.
Correções de bugs
- Correção de um problema em que
ParentDataModifiernão afetavaAndroidView(b/274797771).
Versão 1.4.0
22 de março de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0. A versão 1.4.0 contém estas confirmações.
Mudanças importantes desde a versão 1.3.0
- Adição de uma nova API
PinnableContainer, que permite a fixação de itens de lista lentos para que eles não sejam descartados quando a rolagem passar dos limites. Por exemplo,Modifier.focusable()usa esse mecanismo para fixar o item em foco no momento (Ib8881, b/259274257, b/195049010). - O sistema de foco foi reescrito usando as novas APIs
Modifier.Nodeexperimentais (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589). - Adição da propriedade semântica
IsContainerem plataformas. Essa propriedade vai ser usada em uma mudança posterior, que determina a ordem de travessia com base no significado semântico de elementos como plataformas (I63379). - Adição do novo papel de acessibilidade
DropdownList. Ele pode ser usado para replicar o comportamentoTalkBackao colocar o foco noandroid.widget.Spinner. (I177e5, b/236159001). - Agora, você pode usar
PlatformTextStyle(emojiSupportMatch)para desativar o processamento de suporte a emojis em um único parágrafo (Ia7100, b/139326806). - Os testes de interface do Android Compose agora vão executar transmissões de layout para cada frame ao executar frames para ficar ociosos (por exemplo, com
waitForIdle). Isso pode afetar testes que são executados em frames individuais de animações de layout (I8ea08, b/222093277). - Adição de
TextMotionexperimental aoTextStylepara definir o texto comoStatic(default)ou animado. UseTextMotion.Animatedse o texto for dimensionado, transladado ou girado usando uma animação (I24dd7).
Versão 1.4.0-rc01
8 de março de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0-rc01. A versão 1.4.0-rc01 contém estas confirmações.
Mudanças na API
- Adicionada uma sobrecarga da função combinável
AndroidView, que aceita o parâmetroonReset. Isso permite que as instâncias de visualização sejam reutilizadas quando o nó na composição é descartado e reutilizado de maneira compatível. Isso é especialmente útil paraLazyRowseLazyColumnsde visualizações. (I3f10d, b/230099236). - Introduzimos uma nova API
PlatformTextInputAdapterde baixo nível para criar implementações personalizadas de entrada de texto que se comunicam diretamente com as APIs da plataforma. (I58df4).
Correções de bugs
- A ação semântica
SetTextdeBasicTextFieldagora vai atualizar o buffer de texto usando o mesmo caminho de código das atualizações do IME e das funções de teste (por exemplo,performTextReplacement). - As funções de teste de texto
performTextClearance,performTextReplacementeperformTextSelectionagora usamSemanticsActions. (I0807d, b/269633168, b/269624358).
Versão 1.4.0-beta02
22 de fevereiro de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0-beta02. A versão 1.4.0-beta02 contém estes commits.
Mudanças na API
- A API
modifierElementOf()foi removida. Em vez disso, estenda deModifierNodeElementdiretamente. (I2256b) - Adicionamos um novo callback
Modifier.Node.onReset()para permitir que você redefina algum estado local e processe corretamente o caso em que oLayoutserá reutilizado (por exemplo, como um item deLazyColumn). Corrigimos oFocusTargetModifierNodepara redefinir corretamente o estado de foco. (I65495, b/265201972). - Adição do parâmetro
BlendModeaos métodosDrawScope.drawText,Paragraph.painteMultiParagraph.paintpara oferecer suporte a diferentes algoritmos de combinação ao desenhar texto no Canvas. (I57508).
Correções de bugs
- O algoritmo de ordem de foco de acessibilidade foi aprimorado. Por exemplo, as barras superior/inferior são lidas com mais frequência primeiro/por último, respectivamente. (74e9c5)
Versão 1.4.0-beta01
8 de fevereiro de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0-beta01. A versão 1.4.0-beta01 contém estas confirmações.
Mudanças na API
PinnableContainer.PinnedHandle.unpin()foi renomeado comorelease()(I4667a).- Adição de
waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsewaitUntilDoesNotExistcomo API experimental emComposeTestRule, ampliando a APIwaitUntilpara passar a aceitar qualquer correspondente e qualquer contagem de nós. ConsulteComposeTestRulepara acessar mais documentos sobre o assunto (Ifa1b9, b/226934294). - O
Font.MaximumAsyncTimeoutfoi renomeado comoFont.MaximumAsyncTimeoutMillis(I07af5). - O
GoogleFont.Provider.AllFontsListUrifoi removido e vinculado a ele no ktdoc (I16f29).
Correções de bugs
- Adição de documentos a
AndroidFont.fontVariationSettings(I7d9e2).
Versão 1.4.0-alpha05
25 de janeiro de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0-alpha05. A versão 1.4.0-alpha05 contém estas confirmações.
Mudanças na API
- Introdução de novas sobrecargas experimentais para a função
runComposeUiTeste as funçõescreate*ComposeRuleque aceitam parâmetrosCoroutineContext. O contexto vai ser usado para a composição de teste e todas as chamadasLaunchedEffecterememberCoroutineScope()na composição (I10614, b/265177763). - Nova API para rastrear a velocidade unidimensional (If5a82).
- Agora,
FocusRequesterestá marcado como@Stable(I580ee). - Remoção de uma anotação experimental do construtor
DialogProperties, que usa um parâmetrousePlatformDefaultWidth(Ic4048). - Uma função foi adicionada à posição de cálculo e à tangente a uma distância em um caminho, com
PathMeasure.getPosition()ePathMeasure.getTangent()(I3b47c). - O setter público exposto acidentalmente foi removido em
PlatformParagraphStyle(I07f47). - Mais tipos/nulidade de funções inline/descontinuadas e ocultas (I24f91).
AnnotatedString.hasStringAnnotationsfoi adicionado para consultar anotações com alocações zero (I94dfe, b/246960758).- Nova sobrecarga para a função
TextMeasurer.measure, que usa umStringcomo texto (I47b2d, b/242705342). - As APIs
LineBreakeHyphensno TextStyle tiveram upgrade para a versão estável (Ic1e1d).
Contribuição externa
- Os métodos
notifyFocusedRectemTextInputSessioneTextInputServicenão foram descontinuados novamente (I23a04, b/262648050).
Versão 1.4.0-alpha04
11 de janeiro de 2023
Lançamento de androidx.compose.ui:ui-*:1.4.0-alpha04. A versão 1.4.0-alpha04 contém estas confirmações.
Novos recursos
- Adição de uma nova API
PinnableContainer, que permite a fixação de itens de lista lentos para que eles não sejam descartados quando a rolagem passar dos limites. Por exemplo,Modifier.focusable()usa esse mecanismo para fixar o item em foco no momento (Ib8881, b/259274257, b/195049010). - O sistema de foco foi reescrito usando as novas APIs
Modifier.Nodeexperimentais (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589). - Adição da propriedade semântica
IsContainerem plataformas. Essa propriedade vai ser usada em uma mudança posterior, que determina a ordem de travessia com base no significado semântico de elementos como plataformas (I63379). - Adição do novo papel de acessibilidade
DropdownList. Ele pode ser usado para replicar o comportamentoTalkBack'sao colocar o foco noandroid.widget.Spinner(I177e5, b/236159001). - Agora, você pode usar
PlatformTextStyle(emojiSupportMatch)para desativar o processamento de suporte a emojis em um único parágrafo (Ia7100, b/139326806). - Os testes de interface do Android Compose agora vão executar transmissões de layout para cada frame ao executar frames para ficar ociosos (por exemplo, com
waitForIdle). Isso pode afetar testes que são executados em frames individuais de animações de layout (I8ea08, b/222093277). - Adição de
TextMotionexperimental aoTextStylepara definir o texto comoStatic(default)ou animado. UseTextMotion.Animatedse o texto for dimensionado, transladado ou girado usando uma animação (I24dd7).
Mudanças na API
- O argumento
maxSize: IntSizefoi substituído emdrawTextporsize: Sizepara ficar inline com outras funçõesDrawScope. Osizeé definido comoSize.Unspecifiedpor padrão, o que não afeta o comportamento padrão anterior (Icd27d). - Remoção do construtor de fonte experimental descontinuado (I8a724, b/261435386).
- A classe de dados
Groupdas ferramentas de interface agora tem um campoisInline, que indica se o grupo é destinado a uma chamada para uma função combinável inline. Se oisInlinefortrue, a chamada vai ser para uma função combinável inline. No entanto, o valor pode ser falso em chamadas para funções combináveis inline que são de módulos compilados com uma versão do plug-in do compilador do Compose que não gera informações sobre a função inline (Idb846). - Upgrade de várias APIs anteriormente experimentais para a versão estável.
- A API Rotary Scroll Event agora é estável (I42ad3, b/261561229).
- A API
FontVariationagora é estável (I8779f, b/241016309). - Todos os construtores
Font()agora são APIs estáveis (I5948b, b/261435386). - O
DeviceFontFamilyNameagora é estável (I8b640, b/261435386). - O construtor
AndroidFontcomvariationSettingsagora é uma API estável e pode ser usado para criar novos tipos de descritores de fonte (I5adcc, b/261565807). - A API
createFontFamilyResolveragora é estável. Ela pode ser usada para capturar exceções não detectadas durante o carregamento de fonte assíncrono (Ibb481, b/261435386). - A API
Font.loadingStrategyagora é estável (I5937c, b/261435386). - A API
GoogleFontagora é estável (Ic90b0, b/261435386). - A API
TextUnit(float, TextUnitType)agora é estável (I90c84, b/261561612). - A API
pluralStringResourceagora é estável (I09849, b/261439703).
Versão 1.4.0-alpha03
7 de dezembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.4.0-alpha03. A versão 1.4.0-alpha03 contém estas confirmações.
Mudanças na API
ExperimentalComposeUiApifoi removida dePointerIcon(I23af8).- Ações foram introduzidas à página de acessibilidade:
PageUp,PageDown,PageLeft,PageRight. Essas opções estão disponíveis apenas na API 29 (Ida4ab). - A visualização do parâmetro
rememberNestedScrollConnectionfoi atualizada de visualização raiz para host (Ia5200). - Adição de uma API Modifier para consultar informações de rolagem de ancestrais (I2ba9d, b/203141462).
Clickablefoi usado para atrasar corretamente as interações de pressionamento quando gestos podem se tornar eventos de rolagem.- Os elementos
Clickablesforam corrigidos para passar a atrasar ondulações corretamente quando usados dentro de umScrollable ViewGroup. - As gavetas e planilhas foram atualizadas para atrasar corretamente os pressionamentos, em casos em que gestos podem se tornar eventos de rolagem.
CompositingStrategy.Alwaysfoi renomeado comoOffscreenpara indicar que agraphicsLayersempre vai ser renderizada em um buffer intermediário (I47dc1).- A sobrecarga de layout com vários slots de conteúdo agora está estável (I10566, b/248294649).
- As novas APIs experimentais
PerfettoTrace.record {}ePerfettoTraceRuleforam adicionadas para capturar rastros do Perfetto, também conhecidos como rastreamentos do sistema, como parte de um teste para inspecionar o comportamento e a performance (I3ba16). - Em testes de interface que usam uma regra do Compose, as continuações retomadas durante callbacks
withFrameNanosnão são enviadas até que todos os callbacks de frames sejam executados. Esse é o mesmo comportamento que o Compose apresenta quando é executado normalmente. No entanto, testes que dependem do comportamento antigo podem falhar. Isso só afeta o código que chamawithFrameNanosouwithFrameMillisdiretamente e tem uma lógica fora dos callbacks que é transmitida para essas funções e pode precisar ser movida para dentro deles. Exemplos de mudanças em testes de animação estão disponíveis no CL. - Foi adicionado o parâmetro opcional
onPerformTraversals: (Long) -> Unitao construtorTestMonotonicFrameClocke à função de fábrica para executar o código depois de callbackswithFrameNanos, mas antes de retomar as corrotinas dos autores das chamadas (Idb413, b/254115946, b/222093277, b/255802670). - Adição de EmojiCompat ao Compose (Ibf6f9, b/139326806).
- Adição de um novo parâmetro de plano de fundo a
@Previewpara incluir suporte a cores dinâmicas (I9f512).
Correções de bugs
- As notificações de captura de tela agora são enviadas depois que o
Recomposertermina de aplicar as mudanças. (Iad6c0, b/222093277). - Mudanças foram introduzidas em
captureToImagepara permitir a captura de tela de várias janelas. Isso é útil para testes de capturas de tela que usam pop-ups do Compose (I169c5).
Atualizações de dependência
- O Compose UI e o Compose Material agora dependem do Lifecycle 2.5.1 (I05ab0, b/258038814).
Versão 1.4.0-alpha02
9 de novembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.4.0-alpha02. A versão 1.4.0-alpha02 contém estas confirmações.
Mudanças na API
- Atualização do
GraphicsLayerScopepara expor o tamanho atual dographicsLayer. Isso é útil para calcular as transformações dagraphicsLayercomo uma função do tamanho do elemento combinável. (If8c43,b/181387080). - Lançamento da
CompositingStrategypara determinar quando usar uma camada combinável fora da tela para renderizar o conteúdo dagraphicsLayer. O Auto mantém o comportamento padrão, que usa internamente uma camada se um Alfa ou umRenderEffect/Overscrollfor empregado. Ele sempre introduz um buffer fora da tela onde oModulateAlphaevita usar um e prefere modular cada uma das instruções de desenho gravadas nagraphicsLayer. OModulateAlphaainda vai empregar um buffer fora da tela para usos relacionados aRenderEffect/Overscroll(I25e82, b/256382834). invalidateSubtree()foi adicionado aModifier.Nodepara permitir a invalidação de hierarquias inteiras de layout e desenho (I4bd90).- O
rememberNestedScrollInteropConnectionfoi promovido a estável. Introduzida a capacidade de transmitir uma visualização raiz pararememberNestedScrollInteropConnection. Com isso, visualizações personalizadas podem reagir melhor às restrições de rolagem, principalmente em visualizações não padrão, comoModalBottomSheetDialog(I9e107). - Adição da interface
ObserverNode, que pode ser usada pelas implementações deModifier.Nodeque precisam ser notificadas quando um valor lido muda (I5728b, b/247716483). - Adição de um novo construtor ao
Paint, que aceita umandroid.graphics.Paintnativo. Também foi adicionada uma função de extensãotoComposePaint()para converter um objeto Paint nativo atual no Compose Paint (Ica91b). - Adição do novo
FontFamily.Resolver.resolveAsTypefacepara uso no Android (I8950b). - Adição do
ToolingStatepara permitir que as ferramentas mudem os estados internos do elemento combinável (Ie6614). - Refatoração de ferramentas para oferecer melhor suporte às novas animações adicionadas (I8677b).
- O parâmetro
minLinesfoi adicionado ao Text,TextFieldeOutlinedTextFielddo Material e Material 3, o que permite definir a altura mínima do componente em termos de número de linhas (I4af1d).
Versão 1.4.0-alpha01
24 de outubro de 2022
Lançamento de androidx.compose.ui:ui-*:1.4.0-alpha01. A versão 1.4.0-alpha01 contém estas confirmações.
Mudanças na API
- Um novo método,
awaitEachGesture(), para detectores de gestos foi adicionado. Ele funciona de forma semelhante aforEachGesture(), mas o loop sobre gestos opera inteiramente dentro doAwaitPointerEventScope. Assim, os eventos não podem ser perdidos entre iterações. - O uso de
forEachGesture()foi descontinuado e substituído porawaitEachGesture(), porque permite que os eventos sejam perdidos entre gestos (Iffc3f, b/251260206). - A reciclagem de objetos de acessibilidade no AndroidX foi descontinuada. Descobrimos que mudanças de performance são insignificantes até mesmo nas versões com suporte mais antigas (I0a961).
DrawStylefoi adicionado como um atributo experimental aTextStyleeSpanStylepara permitir a exibição de texto contornado (If24b8, b/155421273).AnnotatedString.Builderagora implementakotlin.text.Appendable(I1a061, b/231030444).AnnotatedString.Builderagora tem um métodoappend(AnnotatedString, start: Int, end: Int)para anexar uma substring de umaAnnotatedStringe os estilos de interseção.- O parâmetro
DrawStylefoi adicionado às funções de pinturaParagrapheMultiParagraphpara permitir a exibição de texto destacado (Ic8102, b/155421273).
Contribuição externa
- Agradecemos a
vighneshpor adicionar dispositivos de TV às visualizações (Ie15cd).
Versão 1.3
Versão 1.3.3
11 de janeiro de 2023
Lançamento de androidx.compose.ui:ui-*:1.3.3. A versão 1.3.3 contém estas confirmações.
Correções de bugs
- Correção de uma falha que às vezes ocorre no Android 9 quando a atividade salva o estado da visualização do Compose (I0b755, b/260322832).
Versão 1.3.2
7 de dezembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.2. A versão 1.3.2 contém estas confirmações.
Correções de bugs
- Atualização para usar o Profobuf 3.21.8, que evita um alerta de segurança em
protobuf-javalite:3.19.4(CVE-2022-3171) (b/255545055).
Versão 1.3.1
9 de novembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.1. A versão 1.3.1 contém estas confirmações.
Versão 1.3.0
24 de outubro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0. A versão 1.3.0 contém estas confirmações.
Mudanças importantes desde a versão 1.2.0
- Novo pacote experimental de APIs
LookaheadLayoutque ativa comportamentos de animação que antes não eram possíveis. - Novo pacote de API experimental
Modifier.Nodeque é uma alternativa de melhor performance paraModifier.composed. - Suporte aprimorado para encartes de janela.
- Suporte para botões direcionais e teclado de hardware em LazyLists.
- A elevação máxima suportada em caixas de diálogo e pop-ups foi reduzida para 8 dp. Essa é uma mudança interruptiva de comportamento para alguns sistemas de design personalizados com base nas notas da versão beta01.
- Muitas pequenas melhorias não interruptivas na API
- Várias correções de bugs e melhorias no desempenho.
Versão 1.3.0-rc01
5 de outubro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-rc01. A versão 1.3.0-rc01 contém estas confirmações.
Mudanças na API
- Adição da nova API Hyphens experimental para oferecer suporte à hifenização automática em texto (Iaa869).
Correções de bugs
- As fontes
DeviceFontFamilyNamenão vão definir as configurações de variaçãowghteitalpor padrão, em vez de usar a configuração de plataforma para aTypefacecarregada (Ia7a6d, b/246989332). - Correção do vazamento de memória
LazyColumn:onModifierLocalsUpdatednão estava sendo chamado com o valor padrão quando os modificadores eram reutilizados (b/230168389).
Versão 1.3.0-beta03
21 de setembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-beta03. A versão 1.3.0-beta03 contém estas confirmações.
Mudanças na API
- Adiciona opções para personalizar a quebra de linha em "Texto" (I86907)
- O argumento
size:IntSizecomconstraints: Constraintsno métodoTextMeasurer.measurefoi mudado para oferecer suporte a restrições de largura mínima (I37530, b/242707525)
Correções de bugs
- A API
BackHandlerda AndroidX Activity agora funciona em um elemento combinávelDialog(I35342)
Versão 1.3.0-beta02
7 de setembro de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-beta02. A versão 1.3.0-beta02 contém estas confirmações.
Mudanças na API
- Adição de uma sobrecarga experimental para o Layout, que aceita uma lista de várias lambdas de conteúdo combinável. Isso permite outra forma de colocar itens mensuráveis de ameaça em diferentes lambdas de conteúdo (Ic1b4e).
Mudanças nas APIs Focus experimentais:
FocusDirection.IneFocusDirection.Outforam descontinuados e substituídos porFocusDirection.EntereFocusDirection.Exit(Ia4262, b/183746982).- Foram adicionadas duas novas propriedades de foco de entrada e saída com o objetivo de especificar um comportamento personalizado para
FocusManager.moveFocus(Enter)eFocusManager.moveFocus(Exit)(I5f3f9, b/183746982). - Agora é possível usar
FocusRequester.Cancelpara cancelar uma mudança de foco.FocusRequester.Cancelpode ser usado em qualquer uma destas propriedades de foco: para cima, para baixo, para a esquerda, para a direita, próximo, anterior, iniciar, encerrar, entrar e sair (Ib300f).
Versão 1.3.0-beta01
24 de agosto de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-beta01. A versão 1.3.0-beta01 contém estas confirmações.
Refatoração de nós do modificador
A camada que processa instâncias de Modifier/Modifier.Element e coordena o comportamento delas em LayoutNodes foi refatorada em grande parte. No momento, essa refatoração não afetou a API pública de nenhum dos modificadores no Compose e pode ser vista como apenas uma mudança de implementação. Apesar disso, essa é uma mudança importante por vários motivos (Ie4313).
Resumo das mudanças
As APIs experimentais Modifier.Node foram adicionadas para permitir que o estado seja mantido em uma instância que vai ser retida com o ciclo de vida do nó de layout e alocada por nó de layout e por uso da classe Modifier.Element que produziu o material.
De um modo geral, essa abstração oferece um mecanismo alternativo para produzir modificadores com estado sem depender da mecânica da API Modifier.composed.
Riscos
Essa mudança é estritamente binária e compatível com versões anteriores. Ela foi criada para oferecer suporte a versões anteriores, tanto em termos de comportamento observável como também prático e racional. Portanto, poucos subsistemas do Compose não foram afetados por essa refatoração. Além disso, é provável que o comportamento tenha mudado de formas que não foram abordadas em nossos testes e ainda não foram encontradas e corrigidas.
Faça upgrade para esta versão com cautela. Entre em contato caso isso gere algum erro.
APIs experimentais
Várias APIs experimentais foram adicionadas, todas relacionadas ao novo conceito de um "nó do modificador". Modifier.Nodes são criados como resultado de
fun modifierElementOf(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface IntermediateLayoutModifierNode
Mudança de comportamento interruptiva
A elevação máxima suportada em caixas de diálogo e pop-ups foi reduzida para 8 dp.
A elevação máxima suportada para caixas de diálogo e pop-ups do Compose foi reduzida de 30 dp para 8 dp. Essa mudança afeta pop-ups e caixas de diálogo personalizados do Material Design e da interface. Ela foi feita para reduzir um bug de acessibilidade nas versões do Android anteriores à S e para garantir que os serviços de acessibilidade dentro dessas janelas possam interagir com o conteúdo da caixa de diálogo ou do pop-up.
Essa mudança só vai afetar pessoas que criarem uma implementação de caixa de diálogo ou pop-up personalizada com uma elevação definida para níveis maiores que 8 dp. Nesses casos, o ideal é reduzir a elevação da caixa de diálogo ou do pop-up. Se precisar desativar esse novo comportamento, bifurque a caixa de diálogo ou pop-up com o conjunto de elevação preferido. Essa ação não é recomendada, já que a acessibilidade pode ser afetada de forma negativa, e cabe ao desenvolvedor garantir que a parte de baixo da caixa de diálogo ou pop-up seja interativa e legível pelos serviços de acessibilidade.
Mudanças na API
- Foi corrigido um problema em que o
painterResourcenão atualizava as mudanças de configuração (I58e73, b/228862715). rememberTextMeasurernão usa mais parâmetrosFontFamily.Resolver,DensityouLayoutDirection. Use o construtorTextMeasurerpara fornecer valores personalizados para esses parâmetros (Ia1da3).- A propriedade
DialogProperties.decorFitsSystemWindowsfoi adicionada para permitir que caixas de diálogo ofereçam suporte aWindowInsets(I57742, b/229378542). - Construtores de fontes foram movidos de volta para o arquivo Kotlin original a fim de manter a compatibilidade binária. Nenhuma mudança desde a última versão estável (Ieb2f3).
- Foi removido um operador desnecessário para várias definições de igual. Essa mudança não teve nenhum efeito (I6c309).
FontVariation.Settingé uma interface selada para permitir futuras APIs de limitação (I11021, b/143703328).CompositionGroup.findParametersfoi adicionada aSlotTree.kt. Essa mudança permite que as ferramentas extraiam parâmetros para umCompositionGroupsem precisar analisar toda a tabela de slots (I124fe).
Versão 1.3.0-alpha03
10 de agosto de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-alpha03. A versão 1.3.0-alpha03 contém essas confirmações.
Mudanças na API
LayoutCoordinates.findRootCoordinates()agora é público (I7fa37, b/204723384).- Foi adicionada uma API experimental para acessar
LayoutCoordinatesnoPlacementScope. Isso informa aos desenvolvedores onde o layout atual deve posicionar os filhos em relação à posição deles (I5482b, b/238632578). LayoutCoordinates.transformFromfoi adicionado para receber a transformação de uma Matrix de um conjunto deLayoutCoordinatespara outro (Ic5ab1, b/238632578).- O uso de
SemanticsModifier.idfoi descontinuado, e o ID semântico foi movido paraLayoutInfo.semanticsId(Iac808, b/203559524). - As fontes de recursos agora oferecem suporte para a configuração de variações de fonte (API 26 ou mais recentes) (I900dd, b/143703328).
- Adição de suporte a fontes variáveis em
DeviceFontFamilyNameFont(Ic1279, b/143703328). - Os construtores de fontes agora aceitam uma lista de
FontVariation.Settingpara configurar fontes variáveis em dispositivos O+ (I11a9d, b/143703328). - A API
FontVariationfoi adicionada para definir e usar fontes variáveis (I3c40c, b/143703328). - O construtor
LineHeightStyle.Alignmentagora é público (experimental) (I4bbbe, b/235876330). - O Paragraph agora é esperado|real e definido para Android e computador (Id387e, b/239962983).
- O Paragraph da interface agora é a interface Paragraph selada. Não há casos de uso para criar subclasses de parágrafos. Recomendamos entrar em contato se essa mudança afetar você (If5247, b/239962983).
- A anotação experimental foi removida de
PlatformTextStyleeLineHeightStyle(I64bef). - O uso de
TextInputService.show|hideSoftwareKeyboardfoi descontinuado. UseSoftwareKeyboardControllerno código do app eTextInputSessionno código de gerenciamento de IME (I14e4c, b/183448615). - Foi adicionada uma nova API para os tipos de animação já existentes (I26179).
Correções de bugs
@RequiresPermissionforam adicionadas a APIs que exigem a concessão da permissãoPOST_NOTIFICATIONSno SDK 33 e versões mais recentes (Ie542e, b/238790278).
Versão 1.3.0-alpha02
27 de julho de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estas confirmações.
Mudanças na API
- Foi adicionada uma nova propriedade
PointerInputChange#pressurepara recuperar a pressão (I45a5e, b/205164819). rememberTextMeasurerfoi adicionado para criar e lembrar facilmente de instâncias deTextMeasurerna composição (I8d66e).Rect,RoundRecteMutableRectagora oferecem suporte à sintaxeindo Kotlin para chamar a funçãocontains(Ie42b0, b/238642990).- Foram removidas funções desnecessárias do
KeyInjectionScope, já que elas podem ser facilmente implementadas com partes mais simples da API. As funções que foram removidas incluempressKeys,keysDownekeysUp(I81d77). - Nomes de constantes e parâmetros foram refatorados em
KeyInjectionScopepara incluir o sufixo "Millis", em que as unidades dessas constantes e parâmetros são milissegundos (Iabef5). - O método
toStringForLog()foi adicionado aEditCommandpara ajudar a resolver problemas de edição de texto (I53354, b/228862731). - Foi adicionada a função de extensão
drawTextemDrawScopepara fornecer uma maneira de renderizar texto com vários estilos em elementos combináveis e modificadores que operam em umDrawScope, comoCanvasedrawBehind(I16a62, b/190787898). - Foi introduzida uma nova API experimental chamada
TextMeasurer, que permite a computação arbitrária de layout de texto para criar resultados idênticos aBasicText, independentemente do ambiente de execução do Compose (I17101). mapTreefoi adicionada aSlotTree.kt. Isso permite que as ferramentas inspecionemSlotTreesem fazer uma cópia na memória primeiro, como o asTree. Para o Layout Inspector, isso oferece uma melhoria de desempenho de aproximadamente um fator 10 (I5e113).- A visualização do Compose passou por mudanças para ser armazenada em arquivos de saída binários e permitir que os desenvolvedores programem e reutilizem anotações
MultiPreviewde bibliotecas (I85699, b/233511976).
Correções de bugs
- Ao adicionar eventos
InputEventChangeao rastreadorVelocity, vamos considerar agora deltas, em vez de posições. Isso garante que a velocidade seja calculada corretamente para todos os casos, mesmo se o elemento de destino é movido (Icea9d, b/216582726, b/223440806, b/227709803). - Foi corrigida uma NPE causada por
AnnotatedString.toUpperCasequando há anotações (I0aca2, b/210899140).
Versão 1.3.0-alpha01
29 de junho de 2022
Lançamento de androidx.compose.ui:ui-*:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estas confirmações.
Mudanças na API
- Novo
LookaheadLayoutque permite a pré-visualização antes da medição ou layout finais. Isso possibilita um pré-cálculo do layout quando há mudanças, permitindo que a medição ou o layout pós-visualização usem o tamanho ou a posição pré-calculados para animar o tamanho e as posições de acordo com a segmentação. Ainda não é possível usarSubcomposeLayouts, mas isso será oferecido em uma versão futura (I477f5). - Adição do parâmetro Alfa opcional à variação Brush de
TextStyleeSpanStylepara modificar a opacidade de todo oText(Ic2fac, b/234117635). - O tipo de anotação
UrlAnnotatione os métodos associados foram lançados para oferecer suporte a linksTalkBackemAnnotatedStrings (I1c754, b/231495122). - A funcionalidade utilitária foi movida para o ambiente de execução (I4f729).
Correções de bugs
- O componente
TextLayoutResult.getLineForOffsetnão é gerado (Idc5d6, b/235876324).
Contribuição externa
- Uma nova API,
WindowInfo.keyboardModifiers, foi adicionada para observar o estado dela dentro de funções combináveis ou via snapshotFlow (Icdb8a).
Versão 1.2
Versão 1.2.1
10 de agosto de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.1. A versão 1.2.1 contém estas confirmações.
Correções de bugs
- O nullpoint do inspetor foi corrigido (b/237987764).
- Foi corrigida a exceção de transmissão de classe durante o método remember no inspetor (b/235526153).
Versão 1.2.0
27 de julho de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0. A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a 1.1.0
Melhorias na travessia de foco:
- A rolagem orientada por foco de listas lentas agora funciona usando a nova API principal
BeyondBoundsLayout. - Novas APIs de personalização de comportamento em
FocusOrdereFocusProperties. - Comportamento aprimorado com teclado físico ou controle remoto de TV.
- A rolagem orientada por foco de listas lentas agora funciona usando a nova API principal
Novas APIs para:
- Encartes de janela
- Primitivos importantes para animações orientadas por gestos, infinitas e de layout
- Recursos de
GraphicsLayer, incluindoRenderEffect
Várias correções de bugs e melhorias no desempenho.
Versão 1.2.0-rc03
29 de junho de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-rc03. A versão 1.2.0-rc03 contém estas confirmações.
- Nenhuma mudança desde a versão 1.2.0-rc02.
Versão 1.2.0-rc02
22 de junho de 2022
androidx.compose.ui:ui-*:1.2.0-rc02 é lançado. A versão 1.2.0-rc02 contém estas confirmações.
Versão 1.2.0-rc01
15 de junho de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-rc01. A versão 1.2.0-rc01 contém estas confirmações.
Mudanças na API
- As interfaces em bibliotecas de composição agora são criadas usando métodos de interface padrão do jdk8 (I5bcf1).
- Funções de ordem superior foram adicionadas à interface
KeyInjectionScopepara injetar pressionamentos de teclas enquanto outras teclas estão pressionadas ou ativadas. Essas funções incluemwithKeysDown,withKeysToggled, entre outras. Também foram adicionadas propriedades para conferir se uma tecla meta específica está inativa. Por exemplo,isCtrlDownpara conferir se uma tecla de controle está pressionada. ConsulteKeyInjectionScopepara consultar a documentação sobre cada função (I9f6cd, b/229831515). - Uma interface
OverscrollEffectexperimental foi introduzida para permitir o uso de efeitos de rolagem personalizados, assim como sobrecargas deModifier.scrollableque a aceitam. - A
LocalOverScrollConfigurationexperimental foi movida defoundation.gesturepara o pacote básico e renomeada comoLocalOverscrollConfiguration(If19fb, b/204650733). - A função
runComposeUiTestWithoutActivity {}foi renomeada comorunEmptyComposeUiTest {}, o que faz com que ela fique alinhada àcreateEmptyComposeRule()(I6fed7).
Versão 1.2.0-beta03
1º de junho de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-beta03. A versão 1.2.0-beta03 contém estas confirmações.
Mudanças na API
pressKeyTimes,isCapsLockOne amigos foram adicionados aKeyInjectionScope. Além disso, a API agora oferece suporte a padrões de injeção combinados de mouse e teclado, como ao clicar em um botão do mouse com a tecla meta pressionada (I4c8da, b/229831515).- Foi adicionado suporte experimental à injeção de eventos de tecla Use
performKeyInputpara enviar eventos de tecla ou os envie pela propriedadekeydoMultiModalInjectionScopedurante um gesto de entrada multimodal comperformMultiModalInput. ConsulteKeyInjectionScopepara ver a documentação da API (Ic5000, b/229831515). - Foi adicionada uma nova
GoogleFont.Provider.AllFontsListUripara acessar a fonte canônica da Internet do Google Fonts com suporte no Android. - Melhoria nas mensagens de erro geradas quando o GoogleFonts falha ao carregar no Compose (I0416c).
Correções de bugs
- Ao adicionar eventos
InputEventChangeao rastreador de velocidade, vamos considerar agora deltas em vez de posições. Isso garante que a velocidade seja calculada corretamente para todos os casos, mesmo se o elemento de destino é movido (I51ec3, b/216582726, b/223440806, b/227709803). - A configuração
Show Layout Boundsvai ser aplicada a elementos combináveis imediatamente após ser alternada do bloco de configurações rápidas, sem que você precise sair e entrar novamente na atividade (I843d5, b/225937688). - A pesquisa de string de acessibilidade não aciona o carregamento de fontes. Anteriormente, ela tentava carregar fontes para
StyleSpans, o que causava falhas se oFontFamily.Resolvertivesse sido substituído (I4609d). - Pressionar a tecla de excluir o próximo caractere quando o cursor estiver no final de um campo de texto não vai mais causar falhas.
DeleteSurroundingTextCommandeDeleteSurroundingTextInCodePointsCommandagora exigem que os argumentos do construtor não sejam negativos (Ica8e6, b/199919707).
Versão 1.2.0-beta02
18 de maio de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-beta02. A versão 1.2.0-beta02 contém estas confirmações.
Mudanças na API
- Reutilizar a funcionalidade em outros tipos de visualização (I19f39).
Correções de bugs
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerfoi renomeado comoDisposeOnDetachedFromWindowOrReleasedFromPoolpara indicar melhor quando os descartes ocorrem, em vez de apenas quando não ocorrem (If15ca).
Versão 1.2.0-beta01
11 de maio de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-beta01. A versão 1.2.0-beta01 contém estas confirmações.
Novos recursos
- Esta é a primeira versão Beta da 1.2.
Mudanças na API
- Foi adicionado o
BeyondBoundsIntervalexperimental, que pode ser usado por implementações personalizadas deLazyListao definir o layout de itens além dos limites visíveis (Ifabfb, b/184670295). - As versões codificadas de
Modifier.composedagora são APIs estáveis (Ie65e4, b/229988420). - Simplificação da API
rememberNestedScrollConnectionpara usar locais combináveis para coletar as informações de visualização atuais (I67ca7). - A anotação
@ComposableTargete as anotações marcadas por@ComposableTargetMarkeragora podem ser usadas no escopo do arquivo com o prefixo@file. Usar uma anotação de destino no escopo do arquivo faz com que o compilador suponha que todas as funções combináveis do arquivo sejam destinadas ao aplicador associado. Por exemplo, o uso de@file:UiComposabledeclara que todas as funções@Composablesegmentam o aplicador da interface do Compose. Uma função que precisa segmentar outro aplicador precisa fornecer explicitamente a anotação do marcador de destino para o aplicador desejado (I40804). Introduzida uma nova API de teste experimental e independente da plataforma: uma
interface ComposeUiTeste umafun runComposeUiTest(block: ComposeUiTest.() -> Unit), que podem ser usadas para executar testes da interface do Compose sem a necessidade de umaTestRule. Para executar um teste sem umaComposeTestRule, transmita o teste como lambda pararunComposeUiTeste use os métodos e membros no escopo do receptorComposeUiTest, que são os mesmos deComposeContentTestRule.As
fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)e osinterface AndroidComposeUiTestespecíficos do Android são adicionados para fornecer acesso à atividade subjacente, de forma semelhante àAndroidComposeTestRule. Para ter ainda mais controle, você mesmo pode instanciar umclass AndroidComposeUiTestEnvironment.A implementação para computadores é o
class DesktopComposeUiTest, mas nenhuma função de execução específica para computadores é oferecida no momento.A migração de um teste de
ComposeTestRuleparaComposeUiTestpode ser feita desta maneira (exemplo no Android). De:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }Para:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }Por enquanto,
ComposeContentTestRuleeComposeTestRulenão são estendidos a partir deComposeUiTest. Isso significa que as funções de extensão emComposeUiTestainda não podem ser chamadas na interfaceTestRule. QuandoComposeUiTestse qualificar para a API estável,ComposeContentTestRuleeComposeTestRuleserão modificadas para serem estendidas deComposeUiTest(Ib4e90).LineHeightBehaviorfoi renomeado comoLineHeightStyle.LineVerticalAlignmentfoi renomeado comoLineHeightStyle.Alignment.A classe
LineHeightTrimfoi renomeada comoLineHeightStyle.Trim.Os valores padrão do construtor de
LineHeightStyleforam removidos (I582bf, b/181155707).Brushfoi adicionado aTextStyleeSpanStylepara fornecer uma maneira de desenhar texto com coloração gradiente (I53869, b/187839528).Os atributos
trimFirstLineTopetrimLastLineBottomdoLineHeightBehaviorforam mudados para uma única enumeração:LineHeightTrim. OsLineHeightTrimtêm valores de quatro estados definidos por dois booleanos,FirstLineTopeLastLineBottom, Both e None (Ifc6a5, b/181155707).Adição de
LineHeightBehavioraTextStyleeParagraphStyle.LineHeightBehaviorcontrola se a altura da linha é aplicada à parte de cima da primeira linha e à parte de baixo da última linha. Ele também define o alinhamento da linha no espaço fornecido peloTextStyle(lineHeight).Por exemplo, é possível conseguir um comportamento semelhante ao que o CSS define com
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).As configurações de
trimFirstLineTopetrimLastLineBottomsó funcionarão corretamente quandoincludeFontPaddingfor falso (I97332, b/181155707).As funções
PlatformParagraphStyle.lerpePlatformSpanStyle.lerpforam mudadas para serem funções de nível superior (I9a268).
Correções de bugs
- A documentação de
PointerInputChange::copyagora informa corretamente que se trata de uma cópia superficial (I182f5). - Suporte a reticências quando a altura é limitada e não cabe em todas as linhas de texto (Ie528c, b/168720622).
includeFontPaddingativado por padrão. É possível desativar oincludeFontPaddingusando o atributoTextStyle.platformTextStyle. Em breve, vamos mudar o comportamento padrão. Até lá, temos tempo para integrar melhor as mudanças da altura da linha (aosp/2058653) e resolver os problemas de recorte doTextField(I01423, b/171394808).
Contribuição externa
- O
MouseInjectionScope.scroll(delta = someDelta)agora é invertido no Android quando rolamos verticalmente. Se someDelta for positivo, a rolagem será para baixo (Ifb697, b/224992993).
Versão 1.2.0-alpha08
20 de abril de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha08. A versão 1.2.0-alpha08 contém estas confirmações.
Mudanças na API
- As funções
pluralStringResourceforam marcadas como experimentais para permitir que a evolução apoie melhor a internacionalização no futuro (If24e4). - Paragraph e MultiParagraph agora aceitam o parâmetro Constraints. A transmissão de
Constraints.maxHeighté um ambiente autônomo no momento, mas vai permitir alguns cálculos no futuro, como o uso de reticências com base na altura (I6afee, b/168720622). SubcomposeSlotReusePolicy.getSlotsToRetain()agora aceita uma classe personalizada semelhante a MutableSet, que não permite adicionar novos itens a ela (Icd314).- PointerIcon agora é uma interface
@Stable(I9dafe). - O consumo parcial (para baixo OU na posição) foi descontinuado em
PointerInputChange. Useconsume()para consumir a mudança completamente. Você pode usarisConsumedpara determinar se outra pessoa já consumiu a mudança. - Agora, o
PointerInputChange::copy()sempre faz uma cópia superficial. Isso significa que se uma cópia dePointerInputChangefor consumida, todas as outras também serão. Se você quiser criar umaPointerInputChangedesvinculada, use o construtor (Ie6be4, b/225669674). - Foi ativada a interoperabilidade de rolagem aninhada entre a View e o Compose na direção Compose > View. Isso significa que um elemento pai combinável pode receber deltas de rolagem aninhados em uma visualização de rolagem aninhada (If7949, b/174348612).
- Nova
SemanticsProperty testTagsAsResourceId, que pode ser usada para adequar o Compose aos testes do UIAutomator projetados para o sistema de visualização (I39c20). - Mostra todos os pesos disponíveis para fontes de sistemas no Android ao usar
FontFamily.SansSerif. Isso usa internamente os nomes de fontes substitutas, como sans-serif-medium, nas APIs de 21 a 28. Essa é uma mudança de comportamento, já que apenas os pesos 400 e 700 tinham suporte das APIs de 21 a 28 (I380fe, b/156048036, b/226441992). - Os instrutores Paragraph e MultiParagraph reordenaram os argumentos de posicionamento antes dos argumentos opcionais (Idafaa).
AndroidFontagora usa typefaceLoader como um parâmetro construtor (I2c971).
Versão 1.2.0-alpha07
6 de abril de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha07. A versão 1.2.0-alpha07 contém estas confirmações.
Mudanças na API
- A nova função
Snapshot.withoutReadObservation { ... }foi adicionada. Ela permite que os usuários executem a lambda transmitida sem se inscreverem nas mudanças de valores de estado lidos durante esse bloco. Ela pode ser útil em casos de uso quando você quiser se beneficiar das leituras/gravações seguras para linhas de execução baseadas em snapshots, mas quiser ler o valor sem causar uma recomposição ou uma nova medição desnecessárias (I9f365, b/214054486). - A propriedade de extensão
consumeWindowInsetsdaComposeViewpermite que os desenvolvedores desativem o consumo deWindowInsetsdo Android. Isso permite separarComposeViewsna hierarquia para que elas apliquemWindowInsetssem interferirem umas nas outras (I0ef08, b/220943142). KeyboardType.Decimalfoi adicionado como alternativa aKeyboard.Numberpara a inclusão específica de separador decimal no editor de método de entrada (Iec4c8, b/209835363).PointerEventType.ScrollePointerEvent.scrollDeltaagora são APIs estáveis (I574c5, b/225669674).- A interoperabilidade de rolagem aninhada entre a View e o Compose para classes de visualização colaborativas foi ativada. Isso significa que o Compose agora pode enviar deltas de rolagem para um elemento pai da visualização (cooperante) (I5d1ac, b/174348612).
- A interface
FontFamily.Resolverfoi atualizada para integrar a configuração de acessibilidade de texto em negrito em todo o sistema (I6c1e7). - O uso de
Font(AssetManager, String, ...)foi descontinuado e substituído porFont(String, AssetManager, ...). Essa é uma API experimental (I1c7a4). - Foi adicionado um novo descritor de fonte
Font(DeviceFontFamilyName). Como opção, você pode pesquisar fontes instaladas no sistema durante cadeias de substitutos de fonte (I30468, b/219754572). - Foi adicionada uma configuração de compatibilidade temporária para
includeFontPaddingem TextStyle/ParagraphStyle.includeFontPaddingpode ser alterado porTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Essa é uma opção de configuração temporária para ativar a migração e vai ser removida (If47be, b/171394808). - A extensão
GoogleFont.Provider.isAvailableOnDevicefoi adicionada para ajudar na depuração (I64e31). - Foi adicionado o construtor
GoogleFont.Providerpara uso com@ArrayRes(Ic5ee1, b/225984280). - O
Compose GoogleFontagora é chamado deFont(GoogleFont). A API permanece estável (I125f2).
Correções de bugs
- A verificação de lint foi adicionada a material/Scaffold para garantir que o padding interno esteja sendo usado (Ifb111).
Versão 1.2.0-alpha06
23 de março de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha06. A versão 1.2.0-alpha06 contém estas confirmações.
Mudanças na API
- Adição da ação semântica
RequestFocuspara solicitar foco no destino focalizável (I17b71). - A análise de drawables vetoriais foi atualizada para oferecer suporte ao espelhamento automático a fim de virar o conteúdo de um
VectorPainter, se a direção atual do layout for RTL (I79cd9, b/185760237). As cores de sombra/ambiente foram atualizadas para serem parâmetros finais do
Modifier.graphicsLayerpara suporte à API (I3f864, b/160665122).Adição de implementações padrão às cores de sombra/ambiente no
GraphicsLayerScopepara garantir mudanças não interruptivas na API.Adição do tempo de evento aos eventos RSB (Ief8ae).
A
FocusOrderfoi mesclada comFocusProperties, efocusProperties()agora tem todos os recursos defocusOrder().FocusOrderefocusOrder()foram descontinuados. A funçãofocusOrder()que aceita umfocusRequesterprecisa ser substituída por um modificadorfocusRequester()em combinação comfocusProperties(). Isso permite que os modificadores tenham uma separação mais forte de problemas (I601b7).O upgrade de
RecyclerVieweComposeagora vai resultar em uma performance de rolagem muito melhor para RecyclerViews com as visualizações do Compose como filhas.ViewCompositionStrategy.Defaultfoi adicionado como uma forma de recuperar a estratégia padrão integrada.Acréscimo de
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, que é a nova estratégia padrão e gerencia os contêineres de pooling corretamente, como a RecyclerView (If7282).Foi adicionado suporte à anotação de classes de anotações, com a @Preview como uma primeira etapa para adicionar o recurso Multipreview. Essas anotações podem ser usadas para métodos de funções combináveis ou outras classes de anotação, que poderiam ser consideradas ndiretamente anotadas com a @Preview fornecida (I12eff).
Dispositivos de referência adicionados à lista de dispositivos para a @Preview (I071c9).
Correções de bugs
- As APIs de gráficos vetoriais foram atualizadas para usar a anotação combinável @VectorComposable adequada em vez de @UiComposable (I942bc).
- Remoção de crossinline de
AnnotatedString.Builder.withStyle(If84d5).
Contribuição externa
- compose-ui: adição das propriedades
ambientShadowColorespotShadowColoraoGraphicsLayerScope(I1ba1a, b/160665122). - Agora há suporte para os recursos plurais usando as funções
pluralStringResource(Ib2f23, b/191375123).
Versão 1.2.0-alpha05
9 de março de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha05. A versão 1.2.0-alpha05 contém estas confirmações.
Mudanças na API
- A interface
TextToolbaragora usa argumentos lambda em vez deActionCallback(Ib2eb9, b/197950089). - Atualização da nulidade no núcleo e na appcompat para corresponder ao Tiramisu DP2 (I0cbb7).
- A interface medida agora expõe a propriedade parentData (I3313f).
- O
Modifier.onPlacede a interfaceOnPlacedModifieragora estão na versão estável (Ib5482). - Oba! A animação do Compose agora permite a configuração "Escala de duração do Animator" das Opções do desenvolvedor (I5a4fc, b/161675988).
- Foi adicionado um modificador
BeyondBoundsLayoutlocal (If8b51, b/184670295). - Texto: o includeFontPadding agora fica desativado por padrão. Os
problemas de recorte resultantes de
includeFontPadding=falseforam corrigidos e nenhum corte deve ocorrer para scripts altos (I31c84, b/171394808).
Correções de bugs
ComposeContentTestRule.setContentagora gera umaIllegalStateExceptionse você tenta definir conteúdo quando já há um (I888a5, b/199631334).- A falha causada pelo conteúdo da área de transferência durante a leitura no Android foi corrigida (I06020, b/197769306).
- Exemplos de rolagem RSB aprimorados (I6a596).
Contribuição externa
- Atualização para usar as corrotinas Kotlinx 1.6.0 (I3366d).
Versão 1.2.0-alpha04
23 de fevereiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha04. A versão 1.2.0-alpha04 contém estas confirmações.
Mudanças na API
Adicionados os elementos
ComposableTarget,ComposableTargetMarkereComposableOpenTarget, que permitem gerar relatórios sobre o tempo de compilação quando uma função combinável é chamada para um aplicador que não foi projetado para uso.Na maioria dos casos, as anotações podem ser inferidas pelo plug-in do compilador do Compose. Portanto, o uso direto delas é raro. Os casos que não podem ser inferidos incluem a criação e o uso de um applier personalizado, funções combináveis abstratas (como métodos de interface), campos ou variáveis globais que são lambdas combináveis (as variáveis locais e os parâmetros são inferidos) ou o uso de
ComposeNodeou funções combináveis relacionadas.Para appliers personalizados, as funções combináveis que chamam
ComposeNodeouReusableComposeNodeprecisam adicionar uma anotaçãoComposableTargetà função e a qualquer tipo de parâmetro lambda combinável. No entanto, é recomendável criar uma anotação comComposableTargetMarkere, em seguida, usar essa anotação marcada em vez de usar aComposableTargetdiretamente. Uma anotação combinável marcada comComposableTargetMarkeré equivalente a umaComposbleTargetcom o nome totalmente qualificado da classe de atributo como o parâmetro do applier. Para conferir um exemplo de como usar aComposableTargetMarker, consulteanroidx.compose.ui.UiComposable(I38f11).Font(resId, ...)agora usa loadStrategy em uma API estável (Ief3d2).FontLoadingStrategyagora é uma API estável (I1ee35, b/174162090).Suporte ao carregamento de fonte assíncrono no texto (I77057, b/214587005).
A API Bridge foi adicionada para converter o
Font.ResourceLoaderpersonalizado emFontFamily.Resolver(Ia0060).
Correções de bugs
- O
FontFamily.Resolverfornecido é transmitido para subcomposições, como Popup. - O
Font.ResourceLoaderfornecido é transmitido para subcomposições, como Popup (I48fa5).
Versão 1.2.0-alpha03
9 de fevereiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha03. A versão 1.2.0-alpha03 contém estas confirmações.
Mudanças na API
- Os métodos
notifyFocusedRectnas classesTextInputSessioneTextInputServiceforam descontinuados e não serão chamados. UseBringIntoViewRequester(Ia4302, b/192043120, b/216842427, b/178211874). - Introdução do método
destroyDisplayListDatana classe de stubRenderNode(I1e659, b/216660268). - Adição de uma nova API que permite medir previamente os filhos do
SubcomposeLayoutque você pré-determinou (I857ea). Adição de
movableContentOf, que converte uma lambda combinável em uma que move o estado e os nós correspondentes para qualquer novo local em que ela é chamada. Quando a chamada anterior sai da composição, o estado é temporariamente preservado e, se uma nova chamada para o lambda entrar nela, o estado e os nós associados serão movidos para o local da nova chamada. Se nenhuma nova chamada for adicionada, o estado vai ser removido permanentemente e os observadores serão notificados.Se uma lambda
movableContentOfé chamada várias vezes na mesma composição, novos estados e nós são criados para cada chamada. À medida que as chamadas saem da composição e novas entram, o estado é movido das primeiras chamadas de saída para as de entrada na ordem em que são chamadas. Remoção permanente de todos os estados não reivindicados por novas chamadas (Ib4850).O
FontFamilyResolveragora está disponível peloLocalFontFamilyResolver.current.createFontFamilyResolver(context)ecreateFontFamilyResolver(context, coroutineScope)foram adicionados para criar novos resolvedores da FontFamily fora do uso do Compose.Os elementos Paragraph e MultiParagraph agora usam o
FontFamily.Resolver.O
TextLayoutResult.layoutInput.fontFamilyResolveragora contém o resolvedor usado para esse layout. OTextLayoutResult.layoutInput.resourceLoaderfoi descontinuado porque ele não é mais usado (Id5a45, b/174162090).Suporte ao carregamento de fontes assíncrono e opcional, com comportamento substituto. Esse caminho é usado pelo Text e TextField e exposto usando o FontFamilyResolver.
Suporte para o pré-carregamento de fontes usando o
FontFamilyResolver.preload.O
FontFamilyResolver.setAsyncLoadContextpermite definir o contexto de corrotina global usado para carregar fontes assíncronas (I87fe8, b/174162090).Adição de
AndroidFont, uma nova API de baixo nível, para fornecer novos tipos de descritores de recursos de fonte no Android. Por exemplo, carregar fontes de um back-end específico do app, localizar opcionalmente fontes pré-instaladas no dispositivo ou carregar uma fonte de um recurso que não é fornecido pelas fábricas de fontes atuais.A API
Font.ResourceLoadedfoi expandida para oferecer suporte ao carregamento de fonte opcional e assíncrono. Não é recomendável que os desenvolvedores de aplicativos usem essa API diretamente. Para adicionar novos tipos de fonte, consulteAndroidFont.A função da extensão
Font.AndroidResourceLoaderpermite criar umFont.ResourceLoaderquando estiver fora da composição.O parâmetro
loadingStrategyfoi adicionado às fontes baseadas em recursos para autorizar o carregamento assíncrono quando a fonte do recurso se refere a fontes XML para download (Ie5aea, b/174162090).O construtor
Typeface(FontFamily)foi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Com fontes disponíveis para download, essa chamada pode ser bloqueada por 10 segundos. Em vez disso, useFontFamilyResolver.preload.O uso de
fontResource(FontFamily): Typefacefoi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Em vez disso, useFontFamilyResolver.preload(If8e7c, b/174162090).O uso do construtor
SubcomposeLayoutStateque aceitamaxSlotsToRetainForReusefoi descontinuado. Em vez disso, há um novo construtor que aceita aSubcomposeSlotReusePolicy, uma nova interface que permite um controle mais granular sobre quais slots são retidos para reutilização futura (I52c4d).As funções HSV e HSL são expostas em
Colorcomo uma API não experimental. O espaço de cores do Oklab agora é uma API pública (I08fb6, b/180731008).A classe
AndroidComposeTestRule.AndroidComposeStatementfoi descontinuada, porque não deveria estar na API pública e não ajudava você em nada (Ibc46b).Renomeação da classe kt gerada internamente (Ia0b9e, b/174162090).
Remoção de
FontLoadingStrategy.values(I42a9d, b/174162090).O carregador de fonte global agora é chamado de
FontFamilyResolver(I4f773, b/174162090).O novo sistema de carregamento de fontes é usado para computadores (I9ce5c, b/174162090).
FontFamily.Resolver.resolveretornaState<Any>(I4406c, b/174162090).
Correções de bugs
- Os TextFields agora são mantidos acima do teclado quando estão
em foco, e o teclado é mostrado quando o modo de entrada simples é
ADJUST_PAN(I8eaeb, b/190539358, b/192043120). - O computador usa a composição local para o
FontFamily.Resolver. - O uso do
FontLoaderpara computadores foi descontinuado. - Nova fábrica
createFontFamilyResolverno computador (I6bbbb, b/174162090). - O tipo de entrada do teclado de software não pisca mais ao mudar o foco entre os campos de texto (I1bf50, b/187746439).
Versão 1.2.0-alpha02
26 de janeiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha02. A versão 1.2.0-alpha02 contém estas confirmações.
Mudanças na API
Modifier.onRotaryScrollEvent()eModifier.onPreRotaryScrollEvent()foram adicionados para dispositivos Wear com um botão lateral giratório (I18bf5, b/210748686).- A extensão
View.createLifecycleAwareRecomposerexperimental foi adicionada (I0cde6).
Contribuição externa
PointerEvent.scrollDelta.yagora está invertido no Android (retornando 1 em vez de -1 quando a roda do mouse é inclinada para a direita) (Ia9811).
Versão 1.2.0-alpha01
12 de janeiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estas confirmações.
Mudanças na API
FontFamily.canLoadSynchronouslyfoi descontinuada. Essa propriedade não tem significado semântico (Ica5ef).- O campo de identidade foi adicionado a
CompositionDatapara gerar IDs invariáveis no Layout Inspector (Ic116e). - Foram adicionados IDs de dispositivos Wear OS à lista de dispositivos de pré-lançamento (I93232).
Atualizações de dependência
- Agora depende do Kotlin
1.6.10.
Versão 1.1
Versão 1.1.1
23 de fevereiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.1.1. A versão 1.1.1 contém estas confirmações.
Correções de bugs
- A
NullPointerExceptionemandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayListfoi corrigida (aosp/1947059, b/206677462). - A falha causada pelo conteúdo da área de transferência durante a leitura no Android foi corrigida (I06020, b/197769306).
- RTL corrigido no elemento
LazyVerticalGrid(aosp/1931080, b/207510535).
Versão 1.1.0
9 de fevereiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.1.0. A versão 1.1.0 contém estas confirmações.
Mudanças importantes desde a versão 1.0.0
- Suporte estável para o efeito de rolagem do Android 12.
- Melhorias no dimensionamento da área de toque.
- Observe que, em relação ao Compose 1.0, os componentes do Material agora expandem o espaço de layout para satisfazer ao tamanho da área de toque das diretrizes de acessibilidade (links em inglês) do Material Design. Por exemplo, a área de toque do botão será expandida para um tamanho mínimo de 48 x 48 dp, mesmo que você defina um tamanho menor para o botão. Isso alinha o Compose Material ao mesmo comportamento dos Componentes do Material Design para ser consistente se você combinar visualizações e o Compose. Essa mudança também garante que, ao criar a interface usando os componentes do Compose Material, os requisitos mínimos para a acessibilidade da área de toque sejam atendidos.
- Suporte estável para a Coluna de navegação.
- Upgrade de várias APIs anteriormente experimentais para a versão estável.
- Compatibilidade com as versões mais recentes do Kotlin.
Versão 1.1.0-rc03
26 de janeiro de 2022
Lançamento de androidx.compose.ui:ui-*:1.1.0-rc03. A versão 1.1.0-rc03 contém estas confirmações.
Correções de bugs
- Atualização de compatibilidade com o Compose Material 1.1.0-rc03.
Versão 1.1.0-rc01
15 de dezembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.
Correções de bugs
- Correção de um bug que causava erro nas ações de rolagem de acessibilidade (I7cbfb).
SemanticsNodeInteraction.captureToImage()agora também funciona quandoHardwareRenderer.isDrawingEnabled()éfalse, permitindo o funcionamento durante a chamada (Idf3d0).
Versão 1.1.0-beta04
1º de dezembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-beta04. A versão 1.1.0-beta04 contém estas confirmações.
Novos recursos
- Foi adicionada compatibilidade com o Kotlin
1.6.0.
Mudanças na API
- Limpeza de nulidade em
androidx.core.view(I7078a, b/204917439). - APIs experimentais que permitem que os usuários consumam a PointerInputchange como um todo ou verifiquem se foi consumida ou não foram adicionadas (I2e59d).
- Suporte adicionado a eventos da roda de rolagem do mouse na camada de IU (Ia14eb, b/198214718).
- Sobrecargas experimentais de
Modifier.composedque aceitam chaves para comparação por igualdade e se qualificam para pular otimizações foram adicionadas (Ice799, b/205851704). - A
ComposeNotIdleExceptionagora é uma extensão deExceptionem vez deThrowablediretamente. Isso significa que as cláusulas de captura que capturavamExceptionagora podem detectarComposeNotIdleExceptions, o que não aconteceria anteriormente (I9c217).
Correções de bugs
- As alças de texto não são movidas quando a visibilidade do IME (editor de método de entrada, na sigla em inglês) muda (I25f2e).
Versão 1.1.0-beta03
17 de novembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-beta03. A versão 1.1.0-beta03 contém estas confirmações.
Mudanças na API
- O novo modificador Modifier.onPlaced foi adicionado para permitir que a mudança de posição seja observada. Portanto, é possível fazer outras mudanças no deslocamento do modificador filho com base na mudança de posição observada (I558fd).
- Remoção de
InjectionScope.flush()eInjectionScope.dispose(). A limpeza de todos os eventos e o descarte do escopo agora acontecem no fim do método perform*Input() chamado, como antes (I2bed8). - Remoção de
MultiModalInjectionScope.ToucheMultiModalInjectionScope.Mouse. Para injetar eventos de toque e mouse em gestos multimodais, agora é possível usarMultiModalInjectionScope.touch()eMultiModalInjectionScope.mouse(), os quais aceitam um lambda que tem o escopo receptor dessa modalidade (Idde18).
Correções de bugs
- O valor padrão de
durationMillisemTouchInjectionScope.swipeWithVelocityagora é calculado de modo que o deslizamento seja viável (I19deb).
Versão 1.1.0-beta02
3 de novembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-beta02. A versão 1.1.0-beta02 contém estas confirmações.
Mudanças na API
- Adição da API BringIntoView experimental, que permite enviar uma solicitação aos elementos pais de rolagem para mostrar um item (Ib918d, b/195353459).
- Novas APIs de animação para suporte a ferramentas. Mais especificamente, elas permitem que as ferramentas inspecionem as animações e as configurações delas em transições (I4116e).
Contribuição externa
- Adição de Modifier.pointerHoverIcon (I95f01).
Versão 1.1.0-beta01
27 de outubro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-beta01. A versão 1.1.0-beta01 contém estas confirmações.
Mudanças na API
- Adição da API experimental
BringIntoView, que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de mostrar um item (Ib918d, b/195353459). - Novas APIs de animação para suporte a ferramentas. Mais especificamente, elas permitem que as ferramentas inspecionem as animações e as configurações delas em transições (I4116e).
Versão 1.1.0-alpha06
13 de outubro de 2021
androidx.compose.ui:ui-*:1.1.0-alpha06 é lançado. A versão 1.1.0-alpha06 contém estas confirmações.
Mudanças na API
- Remoção da
ExperimentalComposeUiApidoViewRootForInspectoreLayoutInfo.ownerViewId(I5c2e3). - Adição de uma sobrecarga sem filhos para o Layout, com eficiência aprimorada (Ib0d9a).
- Remoção da
InternalCompilerApidos métodos do Composer que precisam ser chamados entre módulos (I1aa0b). SemanticsNodeInteraction.performSemanticsActionagora retorna aSemanticsNodeInteractionem que a função foi chamada (I9e5db).- O LocalInputModeManager CompositionLocal foi adicionado para detectar TouchMode/NonTouchMode (I6a83c, b/175899786).
- A
viewConfiguration: ViewConfigurationfoi adicionada aoLayoutInfopara permitir que os consumidores recebam o valor correto para itens como tempo limite do pressionamento longo (I76ca6).- A
viewConfiguration: ViewConfigurationfoi adicionada aoInjectionScopepara permitir que os testes ajustem a injeção de entrada com base em fatores como o tempo limite do pressionamento longo ou a tolerância de toque. - A duração padrão do gesto de tocar e manter pressionado e de toque duplo na
entrada de toque e do mouse foi mudada para ter como base os valores em
InjectionScope.viewConfiguration.
- A
- Implementação do ExpedDropdownMenu com base na ExpedDropdownMenuBox com TextField e DropdownMenu (If60b2).
- O dismissOnOutsideClick foi adicionado à PopupProperties, substituindo dismissOnClickOutside, que foi descontinuado. A nova propriedade recebe a posição do clique e os limites de âncoras, fornecendo um controle mais preciso sobre a necessidade de invocar onDismissRequest. Isso pode ser útil, por exemplo, para evitar que a âncora seja dispensada ao ser tocada.
- O updateAndroidWindowManagerFlags foi adicionado à PopupProperties, oferecendo controle de baixo nível sobre as sinalizações transmitidas pelo pop-up para o WindowManager do Android. O parâmetro da lambda vão ser as flags calculadas com base nos valores de PopupProperties que resultam em flags do WindowManager, por exemplo, focalizável. O resultado da lambda serão as flags finais transmitidas para o WindowManager do Android. Por padrão, o updateAndroidWindowManagerFlags não muda as flags calculadas com base nos parâmetros. Essa API precisa ser usada com cuidado, somente nos casos em que o pop-up tem requisitos de comportamento muito específicos (I6e9f9).
- O uso de
Recomposer.statefoi descontinuado e substituído peloRecomposer.currentStatepara mudar o tipo para um StateFlow (Ic2ab3, b/197773820). flush()edispose()foram adicionados aInjectionScope. Use-os quando quiser transferir todos os eventos na fila imediatamente e quando quiser descartar o escopo, respectivamente (Ifb73a).performScrollToNode(matcher: SemanticsMatcher), que rola um contêiner rolável até o conteúdo correspondente, foi adicionado (Ic1cb8).- O
InjectionScopeagora implementaDensity, permitindo que você converta facilmente entre px e dp noperformTouchInpute amigos (I8fe1f).
Correções de bugs
- O AndroidView agora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner para a própria visualização via ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner (I38f96, b/179708470).
- Foi corrigido o SwipeToDismissBox do WearOS, que às vezes não processava ações de deslizar (I9387e).
- O tempo padrão entre os eventos de entrada injetados foi modificado de 10 ms para 16 ms. Isso pode mudar o resultado dos testes que realizam gestos de entrada, como um gesto de deslizar específico (I829fd).
Versão 1.1.0-alpha05
29 de setembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-alpha05. A versão 1.1.0-alpha05 contém estas confirmações.
Mudanças na API
- O suporte à comunicação entre modificadores foi adicionado (Id5467, b/198826874).
- Ponteiros históricos experimentais foram adicionados ao PointerEventChange (Ic1fd8, b/197553056, b/199921305).
density: DensityelayoutDirection: LayoutDirectionforam adicionados aLayoutInfo, permitindo que os consumidores deLayoutInfointerpretem as dimensões e a posição expostas emLayoutInfocorretamente (I002f1).- O suporte experimental à injeção de eventos de mouse foi adicionado. Use
performMouseInputpara começar a enviar eventos de mouse ou envie eventos de mouse usando a propriedadeMousedoMultiModalInjectionScopedurante um gesto de entrada multimodal comperformMultiModalInput. Consulte oMouseInjectionScopepara ver a documentação disponível da API (Iaa4a8, b/190493367).
Correções de bugs
- Correção do suporte à acessibilidade para roláveis lentos e não lentos, em relação à rolagem (I6cdb0).
- Melhoria do
TouchInjectionScope.swipeWithVelocity. Agora, ele aceita uma variedade maior de variáveis de entrada e sugerirá mudanças na entrada se não for possível criar um gesto de deslizar (I40fbe, b/182477143).
Versão 1.1.0-alpha04
15 de setembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estas confirmações.
Mudanças na API
- A classe
PointerEventagora tem umPointerEventTypepara oferecer suporte a eventos de passagem do cursor (I091fa). - Permite que os filhos aceitem a entrada de ponteiro fora dos limites de entrada do ponteiro do pai. Os pais podem interceptar essas chamadas com uma propriedade PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655).
performGestureeGestureScopeforam descontinuados e substituídos porperformTouchInputeTouchInjectionScope(Ia5f3f, b/190493367).- A propriedade
touchBoundsInRootfoi adicionada àSemanticsNode, que inclui o tamanho mínimo da área de toque para que os desenvolvedores possam garantir que ela atenda aos valores mínimos de acessibilidade (I2e14b, b/197751214). - Refeita a implementação do elemento inspecionável (I927bc, b/191017532).
- Mudança do nome de parâmetro do elemento inspecionável para corresponder ao composto (I3a482, b/191017532).
performTouchInputeTouchInjectionScopeforam adicionados para substituirperformTouchInputeTouchInjectionScope, abrindo o caminho para outras modalidades (como o mouse).TouchInjectionScopetem os mesmos métodos que oGestureScope, com exceção demovePointerToemovePointerBy, que foram renomeados comoupdatePointerToeupdatePointerBy. Todos os outros métodos são os mesmos.O comportamento da
TouchInjectionScopeé quase idêntico ao daGestureScope, com dois pequenos detalhes:- Ao enviar um evento para baixo enquanto os ponteiros eram movidos sem
enviar um evento de movimento (em outras palavras, a função
updatePointerTo()era usada, mas não amove(), e depois a funçãodown()era chamada), a implementação anterior avançava o horário do evento e enviava um evento de movimento antes de enviar o evento para baixo. A nova implementação ainda envia o evento de movimento, mas não avança o horário do evento nesse cenário específico. - Ao enviar um evento para cima enquanto os ponteiros eram movidos sem enviar um evento de movimento (semelhante ao exemplo acima), a implementação anterior avançava o horário do evento e enviava um evento de movimento antes de enviar o evento para cima. A nova implementação não faz nem uma coisa nem outra: as novas posições dos ponteiros serão refletidas apenas pelo evento para cima.
Por fim, a
TouchInjectionScopeintroduz um novo métodocurrentPosition(pointerId: Int)para receber a posição atual do ponteiro específico (If1191, b/190493367).- Ao enviar um evento para baixo enquanto os ponteiros eram movidos sem
enviar um evento de movimento (em outras palavras, a função
Correções de bugs
- Permissão para que o clipe amplie os limites da área de toque além da região do clipe para que ela respeite o tamanho mínimo (I43e10, b/171509422).
- Adoção de suporte à rolagem esticada em dispositivos com Android 12 (Iccf3c, b/171682480).
Versão 1.1.0-alpha03
1º de setembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estas confirmações.
Novos recursos
- O Compose
1.1.0-alpha03foi atualizado para depender do Kotlin1.5.30(I74545).
Mudanças na API
- Adição de
Modifier.inspectablepara unir outros modificadores (I1909b, b/191017532). - A API
BlurredEdgeTreatmentfoi adicionada para simplificar os casos de uso de desfoque em combinações mais usadas de flags de recorte e TileModes. A maioria dos casos de uso envolve permitir que o conteúdo desfocado seja renderizado fora dos limites do conteúdo original e desfocar regiões fora desses limites com preto transparente. Ou, ainda, recortar conteúdo para limites de conteúdo com amostragem da borda mais próxima para kernels de desfoque que se estendem além dos limites de conteúdo (I6b4b7, b/166927547). - Foi adicionado suporte ao RenderEffect no Compose para computador. O OffsetEffect e o modificador de desfoque foram adicionados como uma maneira simples de introduzir efeitos visuais de desfoque em uma parte da hierarquia combinável (I0f6aa, b/166927547).
- Introdução da API RenderEffect
que pode ser configurada opcionalmente em
um
Modifier.graphicsLayerpara mudar o conteúdo da camada em si. Isso pode ser usado para desfocar o conteúdo de elementos combinável e elementos filhos em uma hierarquia de composições. (I47c4d, b/166927547) - AwaitPointerEventScope agora tem withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Adição de um tamanho mínimo da área de toque da ViewConfiguration para uso na entrada de semântica e ponteiros para garantir a acessibilidade (Ie861c).
- Foi adicionado suporte a TileMode.Decal, que é útil para definir o comportamento do Edge para RenderEffects baseados em desfoque (I7e8ed, b/166927547).
performScrollToIndex,performScrollToKey,hasScrollToIndexActionehasScrollToKeyActionagora são APIs estáveis (I142ae, b/178483889)- Um método de teste para receber os limites cortados foi adicionado (I6b28e).
Correções de bugs
- Remoção do método isBounded de BlurredEdgeTreatment para conferir explicitamente se o parâmetro de forma é nulo (I85d68).
Versão 1.1.0-alpha02
18 de agosto de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.
Mudanças na API
- O PointerEvent agora oferece suporte à leitura do estado do botão do mouse e do modificador do teclado (I6310c, b/180075467).
- Os gestos injetados agora usam o horário do MainTestClock como a
fonte da verdade do tempo. O horário atual para eventos injetados em
performGestureserá inicializado no horário atual do MainTestClock (Ifb364, b/192064452). - Adição do construtor
DpRect(DpOffset, DpSize)(I2cf16, b/194219828) - Adição da classe DpSize (I7abb1, b/194219828)
Correções de bugs
- A análise de XML de gráficos vetoriais foi atualizada para oferecer suporte a ColorStateLists como propriedades de tonalidade de cor raiz em VectorDrawables (I86915, b/195668138).
Versão 1.1.0-alpha01
4 de agosto de 2021
Lançamento de androidx.compose.ui:ui-*:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.
Mudanças na API
RelocationRequester.bringIntoViewagora aceita um retângulo como parâmetro, o que nos permite mostrar uma parte de um elemento combinável (Ice2c5, b/194330245).- A classe
AnimatedImageVectore as APIs relacionadas agora estão no novo móduloandroidx.compose.animation:animation-graphics(I60873). - Adição de modificador experimental para lidar com solicitações de realocação (I65a97, b/178211874).
A API BrushPainter foi adicionada para oferecer suporte ao desenho de um pincel arbitrário em um Painter, semelhante ao ColorPainter.
Atualização da API Brush para que ela tenha um parâmetro de tamanho intrínseco que seja consultado na BrushPainter (Ia2752, b/189466433).
Atualização do método DrawScope#drawImage, que consome os retângulos de origem e destino para consumir um parâmetro FilterFilter opcional. Isso é útil para pixel art, que precisa ficar pixelada ao ser ampliada. O elemento combinável BitmapPainter + Image foi atualizado para também consumir um parâmetro FilterFilter opcional (Ie4fb0, b/180311607).
Adição do método
GestureScope.advanceEventTimepara oferecer mais controle sobre o tempo dos eventos em um gesto (Ibf3e2).
Correções de bugs
- Para oferecer melhor suporte ao encadeamento de
modificadores de desenho, a implementação do Modifier.paint
precisa chamar drawsContent.
Anteriormente, Modifier.paint era esperado para um nó de folha na
cadeia de modificadores, mas isso o impedia
de ser configurado em um contêiner combinável (como uma caixa)
ou de adicionar outras decorações na parte de cima, como
Modifier.paint().border(). Com o Modifier.paint chamando drawContent depois de desenhar o conteúdo do pintor especificado, temos uma consistência de comportamento melhor com o padrão do modificador (Ibb2a7, b/178201337, b/186213275). - Agora, as caixas de diálogo seguem o comportamento de tamanho da plataforma. Defina
usePlatformDefaultWidthcomo falso para substituir esse comportamento. (Iffaed, b/192682388). - A
InfiniteAnimationPolicyfoi movida para :compose:ui (I5eb09, b/160602714). - A rolagem usando ações semânticas para listas lentas e componentes de rolagem regulares agora é animada (Id9066, b/190742024).
Versão 1.0
Versão 1.0.5
3 de novembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.5. A versão 1.0.5 contém estas confirmações.
Correções de bugs
- Uma falha de rastreamento de instâncias derivedStateOf foi corrigida (aosp/1792247).
Versão 1.0.4
13 de outubro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.4. A versão 1.0.4 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.31.
Versão 1.0.3
29 de setembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.3. A versão 1.0.3 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.30.
Versão 1.0.2
1º de setembro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.2. A versão 1.2.0 contém estas confirmações.
Atualização para aceitar a versão 1.0.2 do Compose. O Compose 1.0.2 ainda é compatível com o Kotlin 1.5.21.
Versão 1.0.1
4 de agosto de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.1. A versão 1.0.1 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.21.
Versão 1.0.0
28 de julho de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0. A versão 1.0.0 contém estas confirmações.
Principais recursos da versão 1.0.0
Esta é a primeira versão estável do Compose. Confira mais detalhes na postagem do blog oficial sobre o lançamento do Compose (link em inglês).
Problemas conhecidos
Se você está usando o Android Studio Bumblebee Canary 4 ou o AGP
7.1.0-alpha04/7.1.0-alpha05, pode encontrar esta falha:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Para corrigi-la, aumente temporariamente a minSdkVersion para 24+ no arquivo
build.gradle. Esse problema será corrigido na próxima versão do Android Studio Bumblebee e no AGP7.1(b/194289155).
Versão 1.0.0-rc02
14 de julho de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.
Correções de bugs
- Agora, as caixas de diálogo seguem o comportamento de tamanho da plataforma. Defina
usePlatformDefaultWidthcomo falso para substituir esse comportamento. (Iffaed, b/192682388).
Versão 1.0.0-rc01
1º de julho de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.
Novos recursos
- Divisão do módulo de interface em
ui-toolingeui-tooling-preview(Iefa28, b/190649014).
Mudanças na API
- Remoção de
FocusManager#moveFocusIneFocusManager#moveFocusOutexperimentais obsoletos (I227d7, b/170154986, b/186567354, b/168510304) - Agora, o Canvas oferece suporte ao parâmetro contentDescription para acessibilidade (Ib547c).
- Renomeação de
useDefaultMaxWidthemPopupPropertiesparausePlatformDefaultWidth(I05710). - Agora, as caixas de diálogo podem usar toda a largura da tela (I83929, b/190810877).
- Foi adicionado suporte experimental a representações de cores HSV e HSL (Id7cf8, b/180731008).
Mudanças de comportamento
- O Compose
@Previewagora oferece umLocalActivityResultRegistryOwnerque permite visualizar os elementos combináveis que usam APIs comorememberLauncherForActivityResult(), que dependem do proprietário já existente (Ib13d1, b/185693006). - O Compose
@Previewagora oferece umLocalOnBackPressedDispatcherOwnerque permite visualizar os elementos combináveis que usam APIs comoBackHandler, que dependem do proprietário já existente (Ia1c05, b/185693006).
Correções de bugs
InfiniteAnimationPolicyfoi movido paraandroidx.compose.ui:ui(I5eb09, b/160602714).- AnimatedImageVector foi temporariamente removido para mudar a estrutura do módulo (I41906, b/160602714).
Versão 1.0.0-beta09
16 de junho de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta09. A versão 1.0.0-beta09 contém estas confirmações.
Mudanças na API
- Os tipos enumerados Role e LiveRegionMode foram mudados para classes in-line com construtor privado (Id1890).
- A KeyboardCapitalization foi convertida em uma classe in-line (Id5a1c).
- Mudança de HapticFeedbackType para uma classe in-line (I255ec).
- Modifier.pointerInteropFilter é @ExperimentalComposeUiApi (Iede6c).
- TextAlign, FontSynthesis e TextDirection agora são classes in-line (I212fe).
- Mudança de TextOverflow para uma classe in-line (I433af).
- FontStyle agora é uma classe in-line (I9e48b).
Correções de bugs
- Por enquanto, as constantes de chave são @ExperimentalComposeUiApi. O código de consumo pode declarar constantes particulares antes da estabilização (Ia5d48).
- Agora, os testes do Compose podem ser executados no Robolectric. Até o momento,
as seguintes limitações foram identificadas:
- Não há bitmap nativo, então
ImageBitmap()leva a uma NullPointerException. - Não há desenho, então
captureToImage()vai aguardar indefinidamente a próximo transmissão de desenho (ou seja, há impasses). - Nenhuma fonte foi carregada. Por isso, todo texto será medido de forma incorreta. Todos os caracteres têm uma altura fixa de aproximadamente 20 px e largura de 1 px.
ComposeTestRule.waitUntil {}não gera a linha de execução principal enquanto está aguardando, ficando efetivamente igual aComposeTestRule.mainClock.advanceTimeUntil {}. Provavelmente mais limitações vão ser identificadas no futuro (I284fa).
- Não há bitmap nativo, então
Regras de perfil adicionadas
Nesta versão, adicionamos as regras de perfil aos seguintes módulos do Compose (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
O que são as regras de perfil?
As regras de perfil para uma biblioteca são especificadas em um arquivo de texto
baseline-prof.txtlocalizado no diretóriosrc/mainou equivalente. O arquivo especifica uma regra por linha. Nesse caso, uma regra é um padrão para a correspondência de métodos ou classes na biblioteca. A sintaxe dessas regras é um superconjunto do formato de perfil do ART legível que é usado junto comadb shell profman --dump-classes-and-methods .... Essas regras podem ter uma das duas formas destinadas a métodos ou classes.Uma regra de método tem o seguinte padrão:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>E uma regra de classe tem o seguinte padrão:
<CLASS_DESCRIPTOR>Aqui,
<FLAGS>é um ou mais dos caracteresH,SeP, para indicar se esse método precisa ser sinalizado como "Hot" (frequente), "Startup" (de inicialização) ou "Post Startup" (pós-inicialização).O
<CLASS_DESCRIPTOR>é o descritor da classe à qual o método desejado pertence. Por exemplo, a classeandroidx.compose.runtime.SlotTableteria o descritorLandroidx/compose/runtime/SlotTable;.A
<METHOD_SIGNATURE>é a assinatura do método e inclui o nome, os tipos de parâmetro e os tipos de retorno do método. Por exemplo, o métodofun isPlaced(): BooleanemLayoutNodetem a assinaturaisPlaced()Z.Esses padrões podem ter caracteres curinga (
**,*e?) para que uma única regra inclua vários métodos ou classes.
O que as regras fazem?
Um método com a flag
Hindica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.Um método com a flag
Sindica que ele é chamado na inicialização e precisa ser compilado com antecedência para evitar o custo da compilação e interpretação dele no momento da inicialização.Um método com a flag
Pindica que ele é chamado após a inicialização.A presença de uma classe nesse arquivo indica que ela é usada durante a inicialização e precisa ser pré-alocada no heap para evitar o custo do carregamento dela.
Como isso funciona?
- As bibliotecas podem definir essas regras que serão empacotadas nos artefatos do AAR. Quando um app é criado com esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário, compacto e específico para o app. O ART poderá usar esse perfil quando o app for instalado em dispositivos para compilar antecipadamente um subconjunto específico do app e melhorar o desempenho dele, especialmente a primeira execução. Isso não terá efeito nos aplicativos depuráveis.
Versão 1.0.0-beta08
2 de junho de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta08. A versão 1.0.0-beta08 contém estas confirmações.
Mudanças na API
- A enumeração
NestedScrollSourcefoi substituída por uma classe in-line (Ie321b, b/187055290). FocusManager.clearFocus(forcedClear = true)foi renomeado comoFocusManager.clearFocus(force = true)(Ia0c41).- Os usos de tipos enumerados para classes inline foram refatorados para evitar problemas com a adição de instruções quando novos valores de tipos enumerados são adicionados (I2b5eb).
- A
@ExperimentalComposeUiApifoi removida dasPopupProperties(I01fa6). - O
PointerTypefoi mudado de uma enumeração para uma classe in-line (If5058). - As propriedades de semântica de ContentDescription e Text não são mais valores únicos, mas sim listas. Isso permite mesclá-las sem alterações em vez de como concatenações. Também disponibilizamos APIs de teste melhores para usar essas mudanças (Ica6bf, b/184825850).
- A função
Modifier.focusModifier()foi descontinuada e substituída porModifier.focusTarget()(I6c860). Modifier.onSizeChanged()eModifier.onGloballyPositioned()não são mais funções in-line (I727f6, b/186109675).- A enumeração
KeyboardTypefoi substituída por uma classe in-line (I73045, b/187055290). - A enumeração
FocusStatefoi substituída por uma interfaceFocusState(Iccc1a, b/187055290). - A enumeração ImeAction foi substituída por uma classe in-line (I18be5, b/187055290).
- A
PlaceholderVerticalAlignfoi convertida em uma classe in-line (If6290). - TextUnitType agora é uma classe in-line (I4cba9).
- As funções
AnnotatedString.withAnnotationagora são ExperimentalTextApi em vez de ExperimentalComposeApi (I0cd0a).- O construtor TextUnit com TextUnitType agora é ExperimentalTextApi em vez de ExperimentalComposeApi.
Correções de bugs
- Correção do bug introduzido na versão beta07 em que os itens LazyColumn/Row eram exibidos parcialmente após a rolagem (I8c9ac, b/188566058).
- Agora,
detectDragGesures,detectVerticalGesturesedetectHorizontalGesturesconsomem a mudança de posição automaticamente, sem necessidade de chamar change.consumePositionChange nos callbacks onDrag (I42fc4, b/185096350, b/187320697). - LayoutModifiers que forneciam linhas de alinhamento foram corrigidos. Foi corrigido um bug em que o elemento pai não era medido novamente quando as linhas de alinhamento dos elementos filhos mudavam (I4401f, b/174315652).
- O
Modifier.onGloballyPositioned()foi mudado para informar as coordenadas desse modificador na cadeia de modificadores, e não as coordenadas de layout depois de aplicar todos os modificadores. Isso significa que agora a ordem dos modificadores afeta as coordenadas que seriam informadas (Ieb67d, b/177926591).
Versão 1.0.0-beta07
18 de maio de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta07. A versão 1.0.0-beta07 contém estas confirmações.
Mudanças na API
- A interface
ViewRootForInspectorfoi adicionada para uso no inspetor (Ib70df). SubcomposeLayoutStateagora é compatível com a configuração de contagem de slots reutilizáveis. O layout vai manter os slots de contagem ativos, em vez de os descartar, para reutilizar o slot na próxima vez que um novo for necessário (Ieb981).- A enumeração KeyEventType foi substituída por uma classe in-line (Id670a, b/187055290).
- A enumeração
FocusDirectionfoi substituída por uma classe in-line (Ib6d03, b/187055290, b/184086802). - Foi adicionada a possibilidade de elevar o estado de SubcomposeLayout, que permite pré-compor o conteúdo em um slotId obrigatório e faz a próxima medição ser transmitida mais rapidamente, já que, quando tentarmos subcompor com o slotId fornecido da próxima vez, não vai haver composições necessárias (I42580, b/184940225).
- Uma alça de seleção de clipe foi adicionada (Iff80d, b/183408447).
- As APIs não utilizadas relacionadas ao suporte do LayoutInspector foram removidas (I2ac78).
Correções de bugs
- LazyColumn/Row manterá até dois itens visíveis anteriormente ativos (não descartados), mesmo quando eles já tiverem rolado para fora da tela. Isso permite que o componente reutilize as subcomposições ativas quando precisarmos compor um novo item, o que melhora o desempenho de rolagem (Ie5555).
- Os
TextGeomerticTransformeTextDecorationemAnnotatedStringserão aplicados conforme fornecidos (I61900, b/184760917).
Versão 1.0.0-beta06
5 de maio de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta06. A versão 1.0.0-beta06 contém estas confirmações.
Mudanças na API
- Resolução de conflitos com o gesto de navegação (I1145e).
@ComposeCompilerApinão mais@RequiresOptIn(Iab690).- Novas APIs de acessibilidade CollectionInfo e CollectionItemInfo, que permitem marcar a coleção e os itens relacionados para serviços de acessibilidade (Id54ef, b/180479017).
- Novo
SemanticsActions.ScrollToIndexpara rolar uma lista com itens indexados até um item com determinado índice, eSemanticsProperties.IndexForKeypara conferir o índice de um item de uma lista com itens com chave. As duas ações são implementadas por LazyList.- Novo
SemanticsNodeInteraction.performScrollToIndex, que rola uma lista até o índice especificado, eSemanticsNodeInteraction.performScrollToKey, que rola uma lista até o item com a chave especificada (I4fe63, b/178483889, b/161584524).
- Novo
- A ownerViewId foi adicionada a GraphicLayerInfo (I19f62).
- Novas sobrecargas de Font() para carregar fontes de recursos, File e FileDescriptor (I5d382).
- Novo
errorda API de acessibilidade, que permite marcar um nó com uma entrada inválida (I12997, b/180584804, b/182142737). - Adicionadas sobrecargas de
Font()para carregar fontes de recursos, File e FileDescriptor (I43007). - Suporte para salvar a AnnotatedString no
TextFieldValue.Saver. As funções utilitáriasaddTtsAnnotatione withAnnotation foram adicionadas aoAnnotatedString.Builder(I8cbdc, b/178446304). - Nova função do construtor TextUnit
TextUnit(value: Float, type: TextUnitType)(I7ecce, b/178446304).
Versão 1.0.0-beta05
21 de abril de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta05. A versão 1.0.0-beta05 contém estas confirmações.
Mudanças na API
- Adição de
FocusManager.moveFocus(In)eFocusManager.moveFocus(Out)experimentais (Ic5534, b/183746743) - Adição da API experimental
performTextInputSelection(I2dcbb, b/178510628) - O uso da interface
InputEventCallbackfoi descontinuado. Não era possível usar a interface em nenhuma API pública, e não havia utilidade no código (I34a02, b/184003208). - Função
TextLayoutResult/createTextLayoutResultcom uso suspenso. Trata-se de uma função pública não utilizada que foi adicionada para teste. A função não faz nada que possa ser utilizado para compor APIs de texto. A função está com uso suspenso e será removida mais tarde (I80413).
Correções de bugs
- Foram corrigidas ações de rolagem de acessibilidade em
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRighteaccessibilityActionScrollDown. Em vez de rolar até o final, agora a rolagem é feita por uma tela na direção indicada (Ieccb0). - Os arquivos AndroidManifest de ui-test-manifest e ui-tooling-data agora são compatíveis com o Android 12 (I6f9de, b/184718994).
Versão 1.0.0-beta04
7 de abril de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta04. A versão 1.0.0-beta04 contém estas confirmações.
Mudanças na API
hideSoftwareKeyboardeshowSoftwareKeyboardemSoftwareKeyboardControllerforam renomeados comohide()eshow(), respectivamente.- Fornecida a interface completa do CompositionLocal para LocalSoftwareKeyboardController, possibilitando que ela seja definida, já que é especialmente útil em testes (I579a6).
- Adição da API de acessibilidade LiveRegion. Se o nó estiver marcado como uma região ativa, os serviços de acessibilidade notificarão automaticamente o usuário sobre as mudanças (Idcf6f, b/172590946).
- Introdução de TextOverflow.Visible (Ic8f89).
Correções de bugs
- Corrigido o problema que ocorria quando os itens de
LazyColumn/LazyRowlocalizados nas bordas eram posicionados incorretamente depois da rolagem rápida (Ie4d13, b/183877420). AndroidViewBindingagora remove corretamente os fragmentos inflados pelaFragmentContainerViewquando oAndroidViewBindingé removido da hierarquia combinável (Ib0248, b/179915946).AndroidViewBindingagora aninha corretamente os fragmentos inflados ao usar aFragmentContainerViewquando aComposeViewestá dentro de umFragment, corrigindo problemas ao salvar e restaurar o estado dele (I70eb0, b/179915946).- O Compose ViewBinding agora depende do
Fragment
1.3.2e mostra de maneira consistente os fragmentos inflados usandoFragmentContainerViewapós as mudanças na configuração (I0743d, b/179915946).
Versão 1.0.0-beta03
24 de março de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações.
Mudanças na API
- Verificação adiada para dependências da ViewTree e da ComposeView (I8dbbf, b/182466548).
- Parâmetros
startX/endXestartY/endYopcionais foram adicionados às funçõesswipeUp/swipeDown/swipeLeft/swipeRightnoGestureScope(I49e2d, b/182063305).
Versão 1.0.0-beta02
10 de Março de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações.
Mudanças na API
- Adicionada nova API de local de composição,
LocalSoftwareKeyboardController, para substituir a interface SoftwareKeyboardController anterior no TextField (I5951e, b/168778053). - Adicionada nova API local de composição,
LocalSoftwareKeyboardController, para substituir a interface SoftwareKeyboardController anterior no TextField (I84472, b/168778053). - Os seguintes
SemanticsMatchers foram removidos:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Marcamos o seguinte
SemanticsMatcherscomo @ExperimentalTestApi:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- Os seguintes
SemanticsMatchers foram adicionados:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(I2f502)
Correções de bugs
- Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).
androidx.compose.ui:uinão depende mais de AppCompat ou Fragment. Se você estiver usando uma ComposeView no aplicativo com Fragment e/ou AppCompat, confira se está usando o AppCompat/Fragment 1.3 ou mais recente. Essas versões são necessárias para definir corretamente os proprietários do ciclo de vida e de estado salvo necessários para uma ComposeView (I1d6fa, b/161814404).- Foram corrigidos
rememberSaveable { mutableStateOf(0) }corrompidos quando usados dentro de um destino navigation-compose (I1312b, b/180042685, b/180701630). - Adicionada nova API de local de composição,
LocalSoftwareKeyboardController, para substituir a interface SoftwareKeyboardController anterior no TextField (I658b6, b/168778053). - Correção da rara NoSuchElementException no
tearDownRegistry()deComposeRootRegistry(Iddce1).
Versão 1.0.0-beta01
24 de fevereiro de 2021
Lançamento do androidx.compose.ui:ui-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.
Esta é a primeira versão do Compose 1.0.0 Beta.
Mudanças na API
- O callback onStart foi adicionado a
detectDragGestures(I67269, b/179995594). - Modificadores de tamanho para intrínsecos não são mais experimentais (I15744).
- O MeasureBlocks foi renomeado como MeasurePolicy, que se tornou uma interface divertida. As APIs de layout foram atualizadas / simplificadas para usar MeasurePolicy (Icab48, b/167662468, b/156751158).
InteractionStatefoi substituído por[Mutable]InteractionSource.- As interfaces são responsáveis por emitir / coletar eventos de interação.
- Em vez de transmitir
interactionState = remember { InteractionState() }para componentes comoButtoneModifier.clickable(), useinteractionSource = remember { MutableInteractionSource() }. - Em vez de
Interaction.Pressed in interactionState, use as funções de extensão em InteractionSource, como InteractionSource.collectIsPressedAsState(). - Para casos de uso complexos, use InteractionSource.interactions para observar o fluxo de interações. Consulte as amostras e a documentação do InteractionSource para mais informações
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378).
- Adição da interface AccessibilityMananger e LocalAccessibilityMananger em CompositionLocals (I53520).
- Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
- Typealiases substituídos por tipos subordinados:
ColorStopagora éPair<Float, Color>SpanStyleRangeagora é AnnotatedString.RangeParagraphStyleRangeagora éAnnotatedString.Range<ParagraphStyle>StringAnnotationagora éAnnotatedString.Range<String>- (I8dd1a)
- Criação da nova TextInputSession para sessões de entrada pelos componentes de texto de baixo nível, como o CoreTextField (I8817f, b/177662148).
- Placeable agora expõe measuredSize, representando o tamanho em que o layout filho é realmente medido. Esse tamanho pode não respeitar as restrições de medidas (Ib2729, b/172560206, b/172338608).
- Foi adicionado o modificador selectionGroup, que permite marcar a coleção de Tabs ou RadioButtons para fins de acessibilidade (Ie5c29).
A
defaultFactoryparacompositionLocalOfestaticCompositionLocalOfagora é obrigatória, não opcional.Essa mudança remove um possível erro para tipos não anuláveis, em que nenhuma fábrica padrão era fornecida. Anteriormente, isso forneceria uma referência nula para um tipo não anulável.
Para tipos anuláveis, considere fornecer
{ null }como a fábrica padrão.Não recomendamos o uso de locais com tipos não anuláveis, a menos que um padrão simples possa ser fornecido. Se não houver esse padrão, o lambda
defaultFactorygerará uma exceção. No entanto, isso significa que os consumidores do local terão uma dependência implícita sendo fornecida, mas não aplicada pelo sistema de tipos (Ifbd2a).Métodos de módulos de interface descontinuados foram removidos (I646f6).
Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize foi renomeado como width/height/size (I5b414).
O
Modifier.tapGestureFilterfoi removido. UseModifier.pointerInput { detectTapGestures(...) }(I266ed, b/175294473).O consumo parcial foi removido do sistema de entrada do ponteiro. A forma recomendada de coordenar o consumo parcial é Modifier.nestedScroll (Ie9c9b).
A orientação foi movida para o pacote básico. VelocirtTracker foi movido de ui.gesture para ui.input.pointer (Iff4a8, b/175294473).
imageResource e vectorResource agora são funções de extensão nos elementos complementares ImageBitmap e ImageVector, respectivamente. As funções
load{Image,Vector,Font}Resourceforam excluídas (I89130).AnimationClockObservable e subclasses foram removidos. AnimatedFloat foi removido (Icde52, b/177457083).
Providers foi renomeado como CompositionLocalProvider.
- O construtor Composition não aceita mais um parâmetro chave e foi descontinuado.
- A currentCompositeKeyHash foi transformada em uma propriedade combinável de nível superior, em vez de uma função combinável de nível superior.
- CompositionData e CompositionGroup foram movidos para o namespace androidx.compose.runtime.tooling.
- ComposableLambda foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
- ComposableLambdaN foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
- A função snapshotFlow foi movida para o namespace androidx.compose.runtime.
- O método de mesclagem de SnapshotMutationPolicy não é mais experimental.
- A função clearRoots de nível superior de @TestOnly foi removida. Ela não é mais necessária.
- As funções keySourceInfoOf e resetSourceInfo foram removidas. Elas não são mais necessárias.
- Composer.collectKeySourceInformation foi removido. Ele não é mais necessário.
- Os métodos isJoinedKey, joinedKeyLeft e joinedKeyRight foram removidos. Eles não são mais necessários.
- Várias APIs de nível superior foram movidas e reorganizadas em arquivos diferentes. Devido à semântica de classe de arquivos do Kotlin, essa mudança corrompe a compatibilidade binária, mas não a compatibilidade com a fonte. Portanto, isso não vai ser um problema para a maioria dos usuários
- (I99b7d, b/177245490).
ComponentActivity.setContent()foi removido de compose:ui. Use o deandroidx.activity:activity-compose:1.3.0-alpha01.viewModel()eLocalViewModelStoreOwnerforam removidos de compose:ui. Use os deandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01(I6f36b).O Modifier.scrollable foi reformulado. Agora, ele usa a interface Scrollable em vez da classe ScrollableController (I4f5a5, b/174485541, b/175294473).
O suporte a CustomEvens do PointerInputModifier foi removido (I02707, b/175294473).
SnapshotStateObserver não é mais experimental (Id2e6a).
Algumas APIs descontinuadas foram excluídas (Ice5da, b/178633932).
longPressGestureFilter e doubleClickGestureFilter foram removidos. Use Modifier.pointerInput com funções auxiliares, como detectTapGestures (I2fedf, b/175294473).
Foram removidos os usos refatorados da API String.format em vários métodos toString para não aproveitar o String.format internamente (Id1290).
Declarações dp foram removidas (I798d2).
Remoção de androidx.compose.runtime:runtime-dispatch (I55feb).
As ações de texto agora verificam o foco automaticamente (I13777, b/179648629).
Remoção de
runBlockingWithManualClock(I15cdc, b/179664814).A posição de rolagem em Modifier.verticalScroll()/horizontalScroll() agora é representada com o Ints (I81298).
FlingConfig foi renomeado como FlingBehavior e agora permite a personalização da animação suspensa em vez da redução de valores predefinidos (I02b86, b/175294473).
Foi adicionada uma função auxiliar útil para definir a mesma ação para todos os callbacks ImeAction (I63447, b/179226323).
O callback SoftwareKeyboardController foi removido de todos os campos de texto para ser substituído por uma nova API em breve (Iae869, b/168778053).
FontSpan e FontWeigthStyleSpan não são mais usados e foram removidos (Ie5b56, b/177423444).
Foram feitas as seguintes mudanças na API do Material Design:
- Adição do parâmetro contentPadding a Top/BottomAppBar para permitir a personalização do padding padrão.
- Reordenados parâmetros no BackdropScaffold para seguir as diretrizes da API para parâmetros obrigatórios antes dos opcionais.
- O parâmetro
iconem BottomNavigationItem foi movido para depois deselectedeonClick. - O parâmetro
alwaysShowLabelsem BottomNavigationItem foi renomeado comoalwaysShowLabel. - Os parâmetros
bodyContentem alguns componentes foram renomeados comocontent. - Parâmetros reordenados em
ButtonDefaults.buttonColors(). Como o tipo dos parâmetros não mudou, isso não vai causar um erro no seu código. Confira se está usando parâmetros nomeados ou atualize a ordem manualmente; caso contrário o código não vai funcionar da mesma forma que antes. - Adição do parâmetro
secondaryVariantadarkColors(). Essa cor costuma ser a mesma quesecondaryno tema escuro, mas é adicionada para consistência e maior personalização. - Como ElevationDefaults e animateElevation() não eram muito usados / úteis, eles foram removidos da plataforma da API pública.
onValueChangeEndemSliderfoi renomeado comoonValueChangeFinishede transformado em anulável.- O parâmetro
textemSnackbarfoi renomeado comocontentpara manter a consistência. - Adição do parâmetro
contentPaddingaDropdownMenuItempara permitir a personalização do padding padrão. Além disso,contentpassou a ser uma extensão emRowScope. ModalDrawerLayoutfoi renomeado comoModalDrawer.BottomDrawerLayoutfoi renomeado comoBottomDrawer- (I1cc66).
Correções de bugs
- Adição da API para usar recursos AnimatedVectorDrawable no Compose. Use
animatedVectorResource para carregar um XML
<animated-vector>como um AnimatedImageVector e anime-o com painterFor (I8ea91). - Adição da nova API local combinável LocalSoftwareKeyboardController para substituir a interface SoftwareKeyboardController anterior no TextField (I658b6, b/168778053).
Versão 1.0.0-alpha12
10 de fevereiro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estas confirmações.
Mudanças na API
- O suporte a ViewGroups foi removido do UiApplier. Os elementos combináveis emitView com uso descontinuado foram removidos (Ifb214).
- Agora, Modifier.pointerInput requer que as chaves remember indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
- CompositionReference foi renomeada como ComposeContext (I53fcb).
- Bounds foi renomeado como DpRect (I4b32a).
- Atualização de testes: hasText() vai conferir se há texto de entrada e de etiqueta/dica/marcador no campo de texto (Iab803).
- O elemento combinável viewModel() e o objeto LocalViewModelStoreOwner foram movidos para androidx.lifecycle.viewmodel.compose. Para usá-los, adicione uma dependência separada do androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I7a374).
- Permissão de ação anulável em AccessibilityAction e mudança de rótulo de ação em AccessibilityAction e CustomAccessibilityAction de CharSequence para String (I0dc82).
- Para se adequar melhor às convenções de nomenclatura com ImageBitmap e ImageVector, o ImagePainter foi renomeado como BitmapPainter para o VectorPainter paralelo (Iba381, b/174565889).
- Melhoria das APIs de teste de substring que agora usam substrings como argumentos (Icbe78).
- Foi adicionado um
Modifier.focusOrder(), que aceita um FocusRequester sem especificar uma ordem de foco personalizada como lambda. Isso é útil quando precisamos apenas especificar uma referência, mas não uma ordem de foco personalizada para um elemento combinável (I4f52a, b/179180978). - ComponentActivity.setContent foi movido para androidx.activity.compose.setContent no módulo androidx.activity:activity-compose (Icf416).
- Os métodos de desestruturação e copy() foram removidos de várias classes em que raramente eram usados (I26702, b/178659281).
- O pop-up foi movido para ser específico da plataforma. AndroidPopupProperties foi renomeado como PopupProperties, e
isFocusablefoi movido para um parâmetrofocusableemPopupProperties(Ieeea5). - Caixa de diálogo movida para ser específica da plataforma. Renomeação de AndroidDialogProperties para DialogProperties (I4ef69, b/179138130).
- LayoutNode passou a ser interno (I8a7b1, b/175103944).
- Constraints.enforce foi substituído por Constraints.constrain (I8b8ea).
- O uso de loadFontResource foi descontinuado. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi descontinuado. Use painterResource (I6b809).
- Por motivos de performance, a semântica ScrollAxisRange agora usa lambdas que retornam Floats em vez de valores Float diretos (If4a35, b/178657186).
- A semântica EditableText foi adicionada para marcar o texto de entrada editável do campo para acessibilidade e os métodos de teste correspondentes para conferir a semântica (I8e07a).
- OwnerLayer/OwnerScope/OwnerSnapshotObserver passaram a ser internos (I4ffaf, b/175103944)
- toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).
- IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).
- A API Snapshot foi atualizada para ser mais consistente com as diretrizes da API, bem como com a ocultação de classes de implementação internas da API pública (Id9e32).
- Adicionadas ações de semântica de expansão e recolhimento. Expand e halfExpand foram adicionados em ModalBottomSheetState (Ib5064).
- O uso de Modifier.dragGestureFilter foi descontinuado. Use
Modifier.pointerInput { detectDragGestures (...)}. Outra opção é usar Modifier.draggable para arrastar apenas um eixo (I0ba93, b/175294473). - Ambients foi renomeado para corresponder à renomeação de Ambient como CompositionLocal. Ambients costumava ser chamado de AmbientFoo. Agora, CompositionLocals será chamado de LocalFoo (I2d55d).
- O BaseTextField de uso descontinuado foi removido. Use BasicTextField (I71368).
- A seleção foi movida para a base (I7892b).
- Da mesma forma que removemos o elemento combinável
state { 0 }e agora promovemos o uso deremember { mutableStateOf(0) }, também vamos remover o elemento combinávelsavedInstanceState { 0 }. UserememberSaveable { mutableStateOf(0) }para salvar e restaurar automaticamente se o tipo usado dentro de MutableState puder ser armazenado no pacote. Se você transmitia um objeto de economia personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetrostateSaver. O uso será assim:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004). - Adição de semântica de senha para acessibilidade (I231ce).
- ProgressBarRangeInfo.Indeterminate foi adicionado para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).
- O uso dos utilitários
emptyContent()e(@Composable () -> Unit).orEmpty()foi descontinuado por não terem mais valor ou impacto positivo na performance (I0484d). snapshotFlowewithMutableSnapshotnão são mais experimentais (I6a45f).- Os recompositores agora podem ser fechados. Os recompositores fechados continuarão a recomposição até que as corrotinas filhas sejam compostas. Recomposer.shutDown foi renomeado para eliminar o contraste com o fechamento (Ib6d76).
- UiSavedStateRegistry foi renomeado como SaveableStateRegistry, AmbientUiSavedStateRegistry foi renomeado como AmbientSaveableStateRegistry, e ambos foram movidos para o pacote androidx.compose.runtime.saveable (I30224).
- O artefato androidx:compose:runtime:runtime-saved-instance-state foi renomeado como androidx:compose:runtime:runtime-saveable (I6dcac).
- Várias APIs antigas que tiveram o uso descontinuado no pacote da interface foram excluídas (I2f2dc).
- O uso do artefato compose:runtime-dispatch foi descontinuado. A interface MonotonicFrameClock agora pode ser encontrada em compose:runtime, e a classe AndroidUiDispatcher pode ser encontrada em compose:ui (Ib5c36).
- As classes Outline.* não são mais classes de dados (I4879e, b/178001427).
view.captureToImage()foi removido sem nenhuma substituição (I7fcd2).- A API ColorMatrix, usada para modificar valores RGB de conteúdo de origem da API Refactored ColorFilter, foi introduzida para ser uma interface e corresponder à implementação de PathEffect (Ica1e8).
- Adição do parâmetro layoutDirection ao createOutline de Shape. Isso permite criar formas com reconhecimento da direção do layout (I57c20, b/152756983).
- O uso de onImeActionPerformed foi descontinuado. Agora, use KeyboardActions (If0bbd, b/179071523).
- Adicionado um elemento de
contexto de corrotina
InfiniteAnimationPolicyque vai ser aplicado em animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes comComposeTestRule(I50ec4, b/151940543). - canDrag foi removido de Modifier.scrollable (Id66e7, b/175294473).
- Renomeação de LayoutCoordinates.parentCoordinates como LayoutCoordinates.parentLayoutCoordinates para permitir uma nova propriedade parentCoordinates. A propriedade parentCoordinates agora oferece os LayoutCoordintes do modificador pai. Isso tornará os casos de uso mais completos para onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591).
- O uso de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter foi descontinuado. Use Modifier.clickable ou Modifier.pointerInput com a função detectTapGestures (I6baf9, b/175294473).
- O unregisterProvider de SaveableStateRegistry foi removido. Agora, registerProvider() retorna o objeto SaveableStateRegistry.Entry, que você pode usar para cancelar inscrição (Ic4274, b/178583739).
- rememberSavedInstanceState() foi renomeado como rememberSaveable() e movido para o pacote androidx.compose.runtime.saveable (I1366e, b/177338004).
- Remoção de CoreText e CoreTextField da API pública.
- .
- A sobrecarga SelectContainer descontinuada foi removida
- (I99c19).
- Os testes em que o Compose é usado em hierarquias adicionadas ou removidas diretamente do WindowManager agora são mais estáveis (Ie81ed, b/175765614).
- Recomposer.current() foi removido. Por padrão, [Abstract]ComposeView agora usa recompositores criados de forma lenta e com escopo de janela gerados pelo ViewTreeLifecycleOwner para a janela. As marcações de animação com base em withFrameNanos e em recomposição vão ser pausadas enquanto o ciclo de vida do host estiver parado (I38e11).
- O Recomposer.runningRecomposers agora oferece um StateFlow global de RecomposerInfo somente leitura para observar o estado de composição em andamento no processo. Use essa API em vez de Recomposer.current(), que agora teve o uso descontinuado (If8ebe).
- Saver, listSaver(), mapSaver() e autoSaver foram movidos de androidx.compose.runtime.savedinstancestate para androidx.compose.runtime.saveable (I77fe6).
- Os EditCommands aceitam AnnotatedString. No entanto, essa é uma mudança apenas na API, e a edição de texto em vários estilos ainda não foi implementada (I4c3ea).
- O tempo de atividade e a duração foram removidos (Ib9bf4, b/177420019).
- ComposeData.asTree() e APIs relacionadas foram movidas para o módulo ui-tooling-data separado e marcadas como experimentais (Ic95b8).
- Os parâmetros em RounderCornerShape, CutCornerShape e CornerBasedShape foram renomeados de esquerda/direita para início/fim para oferecer suporte ao espelhamento automático do formato na direção RTL. AbsoluteRounderCornerShape e AbsoluteCutCornerShape foram introduzidos para os casos em que o espelhamento automático não é desejado (I61040, b/152756983).
A API à qual o plug-in do compilador do Compose é destinado foi refatorada para usar uma interface em vez de uma classe concreta. A interface também não usa mais um parâmetro de tipo.
Essa é uma mudança interna que não afeta a compatibilidade do código-fonte, mas é uma alteração interruptiva binária (I3b922, b/169406779).
Remoção da função pública StringBuilder.deleteAt não intencional (Id6ed9).
Correções de bugs
- ComposeViews colocadas em hierarquias de visualização que são filhas de outra composição agora hospedam composições filhas dos ancestrais (I92883).
- A API imageFromResource do Compose foi atualizada para reutilizar o cache de drawable de recurso ao carregar objetos ImageBitmap (If3627, b/178751994).
Versão 1.0.0-alpha11
28 de janeiro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estas confirmações.
Mudanças na API
- WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
- O uso de Key.DPadUp foi descontinuado. Use Key.DirectionUp (Iab335, b/177954892).
- A interface do proprietário é interna a partir de agora (If8e35).
- Adição da API FocusManager.moveFocus() para mover o foco de forma programática (I045cb, b/177681839).
- Mudança de PopupPositionProvider para usar coordenadas relativas à janela em vez de coordenadas globais. Renomeação de parentGlobalBounds como anchorBounds e mudança de windowGlobalBounds para windowSize: IntSize (I2994a).
- Duration e Uptime vão ser substituídos por milissegundos Long, e essa etapa vai remover a dependência de entrada do ponteiro nessas classes (Ia33b2, b/175142755, b/177420019).
- AmbientSavedStateRegistryOwner foi adicionado de forma semelhante aos já existentes AmbientLifecycleOwner e AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- A API de gráficos vetoriais foi atualizada para ser oferecer suporte à análise de tonalidades aplicada à raiz dos gráficos vetoriais (Id9d53, b/177210509).
- Adição de toolType a PointerInputChange para diferenciar dispositivos (Iac787, b/175142755).
- AmbientWindowManager foi renomeado como AmbientWindowInfo (I2686a, b/177084714, b/177084983).
- O uso dos métodos de coordenadas globais foi descontinuado, e foram criados novos métodos de coordenadas baseados em janela (Iee284).
- Modifier.toolingGraphicsLayer, que adiciona um modificador de camada gráfica quando a inspeção é ativada, foi adicionado (I315df).
- FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer mudanças (I2d898, b/177000821).
- SemanticsPropertyReceiver.hidden foi renomeada como invisibleToUser e marcada como @ExperimentalComposeUiApi. AccessibilityRangeInfo foi renomeado como ProgressBarRangeInfo. stateDescriptionRange foi renomeado como progressBarRangeInfo. AccessibilityScrollState foi renomeado como ScrollAxisRange. horizontalAccessibilityScrollState foi renomeado como horizontalScrollAxisRange. verticalAccessibilityScrollState foi renomeado como verticalScrollAxisRange (Id3148).
- PointerInputData foi removido, e PointerInputChange foi modificado para fornecer todos os campos de PointerInputData. PointerInputEvent e PointerInputEventData agora são internos porque não são usados em nenhuma API pública (Ifff97, b/175142755).
- Atualização da implementação de densidade do GraphicsLayerScope para oferecer compatibilidade com as conversões de dp em pixels brutos (Ied528, b/176819695).
- A API de matriz foi atualizada para seguir a ordem principal das linhas e fornecer constantes de índice com o objetivo de auxiliar nas conversões entre diferentes representações de matrizes e corresponder à lógica de conversão do framework entre SkMatrix e Matrix4 internamente (I432e6).
- Remoção dos métodos monotonicFrameAnimationClockOf experimentais (Ib753f, b/170708374).
- String.fintPrecedingBreak e String.fingFollowingBreak foram movidos para a InternalTextApi (I657c4).
- androidx.compose.ui.util.isSurrogatePair foi removido da API pública (Ia9494).
- TransformedText.transformedText foi renomeado como TransformedText.text
- TransformedText não é mais uma classe de dados (Ie672a).
data classfoi removido das seguintes classes:- InlineTextContent
- LocaleList (I605c7).
- As seguintes classes não são mais classes de dados:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99).
- Alteração de VisualTransformation para ser uma interface funcional (I3bba4).
- Adição de um tipo de parâmetro de referência de função (I5e1bd).
- Adição de limites transformados ao InspectorNode (Ice42f).
Correções de bugs
- Os elementos onCommit, onDispose e onActive foram descontinuados e substituídos pelas APIs SideEffect e DisposableEffect (If760e).
Mudanças nas funções de fábrica de Font/FontFamily/Typeface
- Foram adicionadas funções de fábrica que começam com letra maiúscula.
- Funções antigas de fábrica com letras minúsculas foram descontinuadas.
- As novas funções de fábrica retornam a FontFamily em vez das subclasses.
- Os construtores das subclasses foram ocultados para que só possam ser construídos pelas funções de fábrica.
- Renomeação de Font.asFontFamily como Font.toFontFamily (I42aa7).
Adição de
ComposeContentTestRule, que estendeComposeTestRulee definesetContent, que foi removido deComposeTestRule. Foi adicionado um método de fábricacreateEmptyComposeRule()que retorna umaComposeTestRulee não inicia uma atividade para você. Use isso quando quiser iniciar a atividade durante o teste, por exemplo, usandoActivityScenario.launch(I9d782, b/174472899).animateAsState agora é animateFooAsState, em que Foo é o tipo da variável que está sendo animada. Por exemplo, Float, Dp, Offset etc (Ie7e25).
O parâmetro de descrição de conteúdo foi adicionado a Image e Icon. Ele é usado para fornecer a descrição para os serviços de acessibilidade (I2ac4c).
Remova displaySize, porque isso precisa ser evitado. Normalmente, é melhor usar o tamanho de onRoot() ou pelo menos o tamanho da janela (I62db4).
OnSizeChanged estava relatando o tamanho do conteúdo do layout. Agora, ele informa o tamanho na posição em que está na cadeia do modificador (I36b78, b/177562900).
A API emit() e todas as sobrecargas foram descontinuadas e renomeadas como ComposeNode. As APIs são idênticas, apenas um nome diferente para seguir as convenções de nomenclatura do Compose (I4137b).
TextFieldValue aceita AnnotatedString. No entanto, essa é uma mudança apenas na API, e a edição de texto em vários estilos ainda não foi implementada.
initialfoi removido dos parâmetros do construtor EditingBuffer (I326d5).
Os elementos invalidate e compositionReference() foram descontinuados e substituídos por currentRecomposeScope e rememberCompositionReference, respectivamente (I583a8).
AnnotatedString foi alterada para ser estendida de kotlin.CharSequence. Portanto, length e subSequence agora são funções de instância, e as funções de extensão foram removidas (Iaf429).
O RememberObserver substituiu o CompositionLifecycleObserver, e o uso de CompositionLifecycleObserver foi descontinuado.
RememberObserveré uma substituição deCompositionLifecycleObservercom semânticas modificadas e métodos renomeados. A mudança para a nova API pode ser feita de maneira mecânica para objetos que são lembrados apenas uma vez e continua a ser a prática recomendada. No entanto, se uma referência foi lembrada mais de uma vez em uma composição,onRememberedé chamado para cada referência em queonEnteré chamado apenas uma vez.onEnterera chamado várias vezes quando o objeto era usado em subcomposições, comoWithConstraintseScaffold, tornando a única garantia de chamada deonEnternão confiável, e foi removido paraRememberObserver.A interface
RememberObserveradiciona a funçãoonAbandoned, que é chamada se a instância deRememberObserveré retornada do callback transmitido pararemember, mas não é lembrada no estado de composição e, portanto, a chamada deonRememberednunca ocorre. Isso poderá ocorrer se uma exceção encerrar a composição antes de ela ser concluída ou se a composição for descartada porque o estado para o qual ela estava produzindo uma composição não é mais atual ou necessário. Se a instância deRememberObserverapós a recomendação de referência única acima estiver rastreando um recurso externo,onForgotteneonAbandonedvão indicar que o recurso não é mais necessário. Se o objeto estiver rastreando o trabalho iniciado ou os recursos alocados emonRemembered, a funçãoonAbandonedpode ser ignorada, porque não vai ser chamada se aonRememberedfor chamada (I02c36).Operações aritméticas entre 2 ou mais TextUnits foram suspensas. As funções TextUnit.Sp e TextUnit.Em foram descontinuadas para dar preferência às funções de extensão, como Int.sp e Int.em (I48369).
Recursos em bibliotecas sem recursos declarados explicitamente como públicos (por exemplo, com public.xml) agora são particulares por padrão (Ia1dcc, b/170882230).
O uso de ScrollableColumn/Row foi descontinuado. O uso do ScrollableColumn é menos eficiente se comparado ao LazyColumn quando você tem um conteúdo de rolagem grande, porque com o LazyColumn, só é possível escrever, medir ou desenhar elementos visíveis. Para evitar que os usuários escolhessem uma forma não eficiente, decidimos descontinuar o uso de ScrollableColumn e de ScrollableRow e, em vez disso, promover o uso de LazyColumn e LazyRow. Os usuários ainda podem decidir que não precisam do comportamento lento e usar os modificadores diretamente como Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Novo método de fábrica
items(count: Int)para o escopo de LazyColumn/LazyRow/LazyVerticalGrid. Agora,items(items: List)eitemsIndexed(items: List)são funções de extensão, então você vai precisar fazer a importação delas manualmente quando forem usadas. Novas sobrecargas de extensão para matrizes:items(items: Array)eitemsIndexed(Array)(I803fc, b/175562574).Use ImeAction.None em vez de ImeAction.NoAction.
- Use ImeAction.Default em vez de ImeAction.Unspecified (Ie1bcc).
Experimente usar o TestCoroutineDispatcher nos testes (I532b6).
TextInputService.onStateUpdated foi renomeado como updateState (Id4853).
A Transition baseada em TransitionDefinition foi descontinuada (I0ac57).
TextUnitType.Inherit foi removido. Use TextUnitType.Unspecified (I9ff64).
Versão 1.0.0-alpha10
13 de janeiro de 2021
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações.
Alteração interruptiva
A reestruturação da API do compilador interno permite criar lotes de mudanças nos nós gerados como resultado da composição na fase de "aplicar mudanças", após a conclusão de todas as funções
@Composable.Essa é uma mudança comportamental que pode afetar o código do aplicativo, já que os nós não estão mais disponíveis em APIs internas e experimentais até que as mudanças sejam aplicadas. Isso pode ser resolvido com código circundante com dependências em um composto
SideEffectpara adiar a execução do código até que os nós tenham sido criados e inicializados (I018da).
Mudanças na API
- Adicionado o elemento Modifier.focusOrder(), que pode ser usado para especificar uma ordem de travessia de foco personalizada (I90cf5, b/175899543, b/170155556, b/170155429).
- O elemento focusObserver descontinuado foi removido. Use onFocusChanged ou onFocusEvent (I3ecb9, b/175156387).
- Mudanças na API EditOperations.
- Renomeação de EditOperation como EditCommand.
- Adição do sufixo Command para implementações concretas do EditOperation.
- EditCommands não são mais classes de dados.
- Renomeação da função EditOperation.process como applyTo.
- Renomeação de InputEventListener como InputEventCallback
- (I0a366).
- Remoção de Px Squared, PxCubed, PxInverse. Alteração de Size.center() para ser uma propriedade (I973f7).
- O módulo ui-test agora vai poder configurar a criação de Recompositores para IUs em teste (Ibebd8).
- Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
@ExperimentalTestingfoi renomeado para@ExperimentalTestApipara ser consistente com anotações de API experimentais semelhantes (Ia4502, b/171464963).- Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
- Foram removidas as classes DpInverse, Dp Squared e DpCubed (I4d62b).
- Constraints#satisfiedBy foi renomeado como isSatiendedBy (I9cf5c).
- Adição de callback para notificar o proprietário quando os limites do layoutnode mudam (I72fd1).
- Adição de isSpecified, isUnspecified e useOrElse para classes in-line com uma constante Unspecified (I93f7b, b/174310811).
Expansão das APIs [Abstract]ComposeView para permitir a reciclagem de visualizações baseadas no Compose, descartando a composição delas para recriar novamente mais tarde. Foram adicionadas APIs para instalar e descobrir Recomposers e CompositionReferences com escopo de janela para criar composições filhas.
Adição do ViewComposeStrategy para configurar a estratégia de descarte de composição do [Abstract]ComposeViews. O comportamento padrão é descartar na remoção da janela (I860ab).
Remoção da API public Any.identityHashCode() (I025d7).
A API toStringAsFixed foi removida e substituída por String.format para uso direto (Iaba6b).
Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
O nativeClass foi movido para o módulo ui e definido como interno. Atualização dos usos de nativeClass em implementações equivalentes para usar "is MyClass" (I4f734).
O uso de Modifier.focus() e Modifier.focusRequester() foi descontinuado. Use Modifier.focusModifier() e Modifier.focusReference() (I75a48, b/175160751, b/175160532, b/175077829).
Introdução do SelectionRegistrar.notifySelectableChange para notificar atualizações do Selectable ao SelectionManager (I6ff30, b/173215242).
Lançamento da propriedade Outline.bounds para receber o retângulo delimitador para várias implementações de contorno (I16e74, b/175093504).
O uso de TestUiDispatcher foi descontinuado. Em vez disso, use Dispatchers.Main (Ic171f, b/175385255).
ImeOptions e KeyboardOptions não são mais uma classe de dados (I3c898, b/16868431).
Mudanças na API VisualTransformation
- Renomeação de OffsetMap como OffsetMapping.
- Renomeação de OffsetMapping.identityOffsetMap como OffsetMapping.Identity.
- PasswordTransformation não é mais uma classe de dados.
- OffsetMapping foi movido para o próprio arquivo
- (I0bdf3).
Position foi renomeado como DpOffset e getDistance() foi removido (lb2dfd).
Mudança de Dp.isFiinite() para um Dp.isFiite (I50e00).
Correções de bugs
- O Recomposer agora expõe um fluxo do estado atual, permitindo o monitoramento da sua atividade e da atividade de efeitos associados (Ifb2b9).
- O keyEvent nativo agora pode ser acessado pelo keyEvent.nativeKeyEvent (I87c57, b/173086397).
animate()agora é substituído poranimateAsState(), que retorna umState<T>em vez deT. Isso permite uma performance melhor, já que o escopo de invalidação pode ser restrito ao local em que o valor do State é lido (Ib179e).- Adição da API Semantics Role e adição de Role como um parâmetro de SemanticsModifier clicável, selecionável e alternável. Modifier.progressSemantics foi mudado para que o controle deslizante também possa usá-lo (I216cd).
- Nova API baseada em corrotina
Animatableque garante exclusividade mútua entre as animações.- Nova DecayAnimationSpec para oferecer suporte à animação de redução multidimensional
- (I820f2, b/168014930).
Versão 1.0.0-alpha09
16 de dezembro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações.
Mudanças na API
- O KeyEvent.Alt de uso descontinuado agora foi removido. Use KeyEvent.isAltPressed (Idd695).
- O uso de Modifier.keyInputFilter e Modifier.previewKeyInputFilter foi descontinuado. Use Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- O uso de Modifier.focusObserver foi descontinuado. Use Modifier.onFocusChanged ou Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
- Para suspender as APIs de entrada de ponteiro, HandlePointerInputScope foi renomeado como AwaitPointerEventScope, e handlePointerInput() como awaitPointerEventScope() (Idf0a1, b/175142755).
- A API Autofill agora é experimental e requer ativação (I0a1ec).
- Adição de declarações de desestruturação para criar instâncias de FocuSRequester (I35d84, b/174817008).
- accessibilityLabel foi renomeado como contentDescription. accessibilityValue foi renomeado como stateDescription (I250f2).
- Eventos personalizados foram removidos da API de entrada do ponteiro de suspensão (Ia54d5, b/175142755).
- Várias novas funções foram introduzidas no SelectionRegistrar, e onPositionChange foi renomeado notifyPositionChange (Ifbaf7).
- Mais membros de LayoutNode marcados como internos (I443c6).
- Introdução de LayoutInfo para ser usado por ferramentas e testes (I9b190).
- AndroidOwner agora é interno (Ibcad0, b/170296980).
- A anotação de ExperimentalPointerInput foi removida (Ia7a24).
- Adição do sistema de rolagem aninhado. Consulte Modifier.nestedScroll para mais detalhes (I36e15, b/162408885).
- subcomposeInto(LayoutNode) agora é interno (Id724a).
A interface
Applierfoi modificada para simplificar a criação de árvores de baixo para cima, em vez de cima para baixo.O método
insert()foi renomeado comoinsertTopDown().Um novo método,
insertBottomUp(), foi adicionado.Uma Applier insere nós na árvore que está editando com
insertTopDown()ouinsertBottomUp(), dependendo de qual apresenta melhor desempenho.Algumas árvores, como
LayoutNodeeView, são muito mais eficientes para criação de baixo para cima do que de cima para baixo. Antes dessa mudança, uma pilha de inserções era necessária para implementar de baixo para cima. Ela precisava ser copiada para cada Applier, que precisava da construção de baixo para cima para ter bom desempenho. Com essa mudança, umAppliersubstitui uminsertBottomUp()para criar uma árvore de baixo para cima, einsertTopDown()para criar a árvore de cima para baixo (Icbdc2).Adição das propriedades dismissOnBackPress e dismissOnClickOutside às AndroidDialogProperties. Elas permitem configurar quando o lambda onDismissRequest da caixa de diálogo será invocado (If5e17).
Adição da API painterResource para lidar com o carregamento opaco de objetos Painter de formatos de recursos rasterizados (como PNGs) ou VectorDrawables. Os consumidores não precisam mais determinar o tipo de recurso com antecedência e podem chamar esse método para receber um objeto Painter para uso em elementos combináveis Image ou modificadores de Painter (I2c703, b/173818471).
Adição de Modifier.clearAndSetSemantics para limpar a semântica dos descendentes e definir novas (I277ca).
O ContentDrawScope foi movido para o módulo ui-graphics para ser usado com o DrawScope (Iee043, b/173832789).
Introdução da API de gráficos PathEffect para fornecer padrões diferentes para formas traçadas. O elemento NativePathEffect foi descontinuado e substituído pela implementação real/esperada do PathEffect (I5e976, b/171072166).
Interfaces IdlingResource foram adicionadas ao Compose como variantes com suporte do Compose dos recursos de inatividade do Espresso. Elas podem ser registradas e ter o registro cancelado usando ComposeTestRule (I433f3).
Remoção do registro (ou do cancelamento do registro) global de ComposeIdlingResource e do registro (ou do cancelamento do registro) global dos relógios para ComposeIdlingResource (I32660).
Correções de bugs
- Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
Remoção de SlotTable, SlotReader e SlotWriter da API pública. Antes, eles eram marcados como InternalComposeAPI. Agora, eles são internos do módulo do Compose.
CompositionData e CompositionGroup foram adicionados como substitutos da API de IU para extrair as informações da composição. Elas são públicas, mas não são destinadas para uso fora da API de interface, já que fornecem as informações brutas que a API de interface interpreta (I31a9c).
ShaderBrush foi refatorado para criar lentamente uma instância de sombreador quando as informações de dimensionamento do ambiente de desenho estão disponíveis. Isso é útil para definir gradientes que ocupam os limites de desenho completos de um elemento combinável no momento da composição, sem precisar fazer implementações DrawModifier personalizadas.
As APIs do construtor de função de gradiente foram descontinuadas e substituídas pelos métodos de fábrica em um objeto Gradient (I511fc, b/173066799).
LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed foram descontinuados. Use LazyColumn e LazyRow (I5b48c).
BuildCompat.isAtLeastR suspenso (Idb37e).
Adição da função de fábrica buildAnnotatedString para criar uma AnnotatedString. Descontinuação do uso da função builder da annotatedString (Idfe0b).
Remoção dos métodos de extensão em Float e Double para converter valores em radianos. Agora essa é uma função particular no PathParser de implementação, que é o único lugar em que isso era usado (I25f52).
Versão 1.0.0-alpha08
2 de dezembro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.
Mudanças na API
- A ação semântica Dismiss foi adicionada (I2b706).
- As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. Foi criado o arquivo DrawModifierDeprecated.kt para incluir os métodos typealiases/helper para ajudar na migração das APIs descontinuadas para as atuais (Id6044, b/173834241).
- Modifier.drawLayer foi renomeado como Modifier.graphicsLayer. Além disso, as classes relacionadas foram atualizadas para GraphicsLayer, de acordo com o feedback da API (I0bd29, b/173834241).
- Novos métodos placeable.placeWithLayer() e placeable.placeRelativeWithLayer() foram adicionados para permitir que layouts personalizados e modificadores de layout coloquem um filho na introdução de uma camada gráfica para os desenhos deles. Com isso, podemos primeiramente otimizar os desenhos refeitos, para que, quando precisarmos mover um filho, não seja necessário redesenhar o conteúdo. Em segundo lugar, podemos aplicar transformações de desenho a um filho (Ibd8f6, b/170296989, b/171493718, b/173030831).
<T>foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).- Adição de APIs Modifier.scale/rotate
como conveniências para drawLayer.
- O elemento
Modifier.drawOpacityfoi renomeado comoModifier.alpha. Modifier.drawShadowfoi renomeado comoModifier.shadow(I264ca, b/173208140).
- O elemento
- Tornou os campos de posição e de tempo de atividade do PointerInputData não anuláveis (Id468a).
- Agora, o MaterialTheme define as cores corretas para as alças e para o segundo plano da seleção. Apps que não são do Material podem usar manualmente AmbientTextSelectionColors para personalizar as cores usadas para seleção (I1e6f4, b/139320372, b/139320907).
- WindowManager.isWindowFocused foi adicionado para conferir se a janela do host está em foco, assim como um WindowFocusObserver que fornece um callback de onWindowFocusChanged (I53b2a, b/170932874).
- A API TransformOrigin foi atualizada
para que a sintaxe de desestruturação retorne
pivotFractionXepivotFractionYcomocomponent1ecomponent2(If43c4, b/173586560). - Uma verificação de lint foi adicionada para posicionamento e nomeação do parâmetro lambda combinável e conferir a consistência com as diretrizes do Compose.
Também ocorreu a migração de algumas APIs usando
childrencomo o nome da lambda final paracontent, de acordo com a verificação e as orientações do lint (Iec48e). - Uma API foi adicionada para conferir se as teclas modificadoras Alt, Ctrl, Meta ou Shift eram pressionadas quando um evento de tecla era enviado (I50ed9).
- Uma nova sobrecarga de
Modifier.drawLayer()foi adicionada. É necessário um bloco de lambdas em um novo GraphicsLayerScope, onde você define os parâmetros de camada de uma forma que permite pular a recomposição e o novo layout quando a mudança de estado acontece. O DrawLayerModifier agora é interno como forma de preparo para a migração da lógica para o método placeable.placeWithLayer() do LayoutModifier (I15e9f, b/173030831). - Ambientes nomeados com
Ambientcomo sufixo foram descontinuados e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440). androidx.compose.ui.text.Typefacefoi movido paraandroidx.compose.ui.text.font.Typeface(Ic2b81).- Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
- Nova API de entrada do ponteiro de suspensão para detector de gesto de arrastar, incluindo o bloqueio de orientação (Icef25).
- VectorAsset foi renomeado como ImageVector. VectorAsset foi movido e renomeado como Builder para ser uma classe interna de ImageVector, de acordo com as diretrizes da API. Foram adicionados typealias de VectorAssetBuilder para vincular ImageVector.Builder para compatibilidade (Icfdc8).
- ImageAsset e métodos relacionados foram renomeados como ImageBitmap (Ia2d99).
- O parâmetro zIndex foi adicionado a place() do PlacementScope. Agora, Modifier.zIndex() funciona como um LayoutModifier, e qualquer layout personalizado pode definir zIndexes para seus filhos diretamente no bloco de canais (I711f7, b/171493718).
- Propriedades semânticas de base movidas para interface (I6f05c).
- O uso de place(Offset) e placeRelative(Offset) foi descontinuado. Use sobrecargas com deslocamentos int (I4c5e7).
- Remoção de APIs descontinuadas anteriormente: Modifier.onPositioned foi removida; agora use Modifier.onGloballyPositioned. Modifier.onDraw foi removida; agora use Modifier.onDrawBehind. Modifier.plus foi removida, então use Modifier.then. Color.Unset foi removida, então use Color.Unspecified. A classe PxBounds foi removida, então use a Rect (Ie9d02, b/172562222).
- A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
- O detector de gestos de toque, dois toques, tocar e manter pressionado e indicação de pressionamento foi adicionado usando a nova entrada de ponteiro de suspensão. Alguns utilitários também foram adicionados, o que facilita a gravação de detectores de gesto próprios pelos desenvolvedores (I00807).
idfoi renomeado comolayoutIdparaLayoutIdParentData. OMeasurable.idfoi renomeado comoMeasurable.layoutId(Iadbcb, b/172449643).- Novo detector de gestos multitoque, incluindo auxiliares para detectar rotação, zoom e movimento (Ic459d).
- Introdução às APIs SweepGradientShader e SweepGradientBrush (Ia22c1).
- O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
Foram adicionadas APIs de rolagem baseadas em corrotinas:
LazyListState.snapToItem e LazyListState.smoothScrollBy e APIs de nível inferior foram adicionadas para controle de rolagem. Essas APIs fornecem uma interface de suspensão para controlar a rolagem, que aguarda até que a rolagem seja concluída antes de retornar (Ie5642).
Modifier.focusable precisa ser adicionado na base. Use-o para adicionar comportamentos focalizáveis a um componente, com semântica e acessibilidade corretas (I41eb9, b/152525426, b/162865824).
Fornecer implementações padrão de métodos e propriedades na AnimationClockTestRule, que podem ser delegadas ao
clockdela (I7ea3d e b/173399709).AndroidComposeTestRule agora pode aceitar telas de início de atividades personalizadas (Ib8288, b/153623653, b/154135019).
O uso de TextLayoutResult.getLineVisibleEnd foi descontinuado. Como substituto, TextLayoutResult.getLineEnd agora tem um novo parâmetro visibleEnd (I73282).
API TextFieldValue atualizada.
- TextFieldValue.composition agora é somente leitura.
- Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
Compatibilidade com TtsAnnotation para mecanismo de conversão de texto em voz (I54cc6).
Novas APIs para executar animações em corrotinas (Ied662).
Correções de bugs
- O parâmetro de alinhamento do Box foi renomeado como contentAlignment (I2c957).
- Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
- Adição do parâmetro resetInput para TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
- Uma verificação de lint foi adicionada para parâmetros Modifier em funções combináveis. Essa verificação de lint confere a nomenclatura, o tipo de retorno, o valor padrão e a ordem do parâmetro para garantir consistência com as diretrizes do Compose (If493b).
- Opção temporariamente adicionada para permitir que o TestAnimationClock seja orientado pelo MonotonicFrameClock (I1403b, b/173402197).
- Adição do wrapper Android Typeface. Você pode carregar um Android
Typeface usando a função
typeface, ou seja,typeface(Typeface.DEFAULT). Além disso,typefaceFromFontFamily()foi renomeado comotypeface()(I52ab7). - Foi adicionada uma verificação de lint para conferir se as funções de fábrica do Modifier estão definidas como extensões nele. Assim, elas podem ser encadeadas juntas (I07981).
- Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
- O Recomposer não aceita mais um EmbeddingContext. As dependências de programação necessárias são adquiridas no effectCoroutineContext. O FrameManager foi descontinuado. As integrações de plataforma precisam inicializar o próprio gerenciamento global de snapshots (I02369).
- Transmissão de informações de estilo para o nó de acessibilidade (If5e8d).
- TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
Compose UI: versão 1.0.0-alpha07
11 de novembro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.
Mudanças na API
- A classe
inline ScaleFactor foi adicionada para representar fatores de escala
para os eixos horizontal e vertical
independentes uns dos outros a fim de
oferecer suporte a casos de uso de escalonamento não uniforme.
- Adição do método computeScaleFactor ao ContentScale.
- ContentScale.FillBounds foi adicionado para realizar o escalonamento não uniforme e esticar os limites de src para ocupar completamente o destino.
- Adição de métodos de operador para calcular parâmetros ScaleFactor com parâmetros Size
- (Ic96a6, b/172291582).
- Adição das fábricas BiasAlignment e BiasAbsoluteAlignment para criar alinhamentos (Iac836, b/169406772).
- Permissão para um desenvolvedor limpar o foco à força (I90372).
- Foi corrigido um bug em que a elevação não era desenhada para visualizações dentro do Compose (If7782).
- Criação da API onDrawBehind dentro do ContentDrawScope para corresponder à convenção de nomenclatura de Modifier.drawBehind (I4fc3a, b/171955269).
- Adicionado suporte à distância da câmera para complementar rotaçãoX/rotaçãoY de transformações 3D em APIs de camada (I40213, b/171492100).
- SelectContainer foi adicionado sem o callback (Ibfadb).
- A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
- FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
- Remoção da opacidade do modificador drawShadow() por ele ser confuso (I82c62, b/171624638).
- MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
- Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).
- O FocusState2 descontinuado foi removido (I686cb, b/168686446).
- O ZIndexModifier agora é interno (I1808b, b/171493718).
- O tipo de retorno do método de interpolação linear nos parâmetros Size foi atualizado para retornar um Size não nulo a fim de evitar caixas de seleção desnecessárias (Ib0044).
- TestMonotonicFrameClock foi adicionado para testar código que depende do MonotonicFrameClock do Compose para aguardar eventos de frame de composição usando runBlockingTest do kotlinx-coroutines-test (I4402f).
- Remoção de GestureScope.localToGlobal (I15299, b/171462785).
- O localizador de
onAllNodesWithSubstringfoi adicionado (I81dd7, b/171462889). - O uso do módulo androidx.ui.test foi descontinuado. Migre para androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8).
Correções de bugs
- captureToBitmap foi movido para captureToImage (I86385).
- O elemento foundation.Text foi descontinuado e substituído por material.Text. Para uma API de texto básica e discreta que não consome valores de um tema, consulte androidx.compose.foundation.BasicText (If64cb).
- Atualização de TextFields para aceitar KeyboardOptions (Ida7f3).
- Renomeação de KeyboardOptions como ImeOptions (I82f36).
- KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
- provideDefault foi adicionado como alternativa para fornecer ambientes e pode ser usado para especificar valores de ambiente que só vão ser definidos quando não houver um valor de ambiente já fornecido (Id6635, b/171024925).
- O uso de BaseTextField foi descontinuado. Use BasicTextField (I896eb).
- Introdução do módulo ui-test-junit4 (Ib91f8).
- Renomeação de
relativePaddingFromcomopaddingFrom. O modificadorpaddingFromBaselinefoi adicionado como conveniência para especificar distâncias de limites de layout para linhas de base de texto (I0440a, b/170633813). - LaunchedTask foi renomeado como LaunchedEffect para fins de consistência com as APIs SideEffect e DisposableEffect. Para incentivar as práticas recomendadas, o uso de LaunchedEffect sem parâmetros de assunto não será permitido (Ifd3d4).
- Introdução de recursos combináveis que são recompostos quando a configuração é atualizada (I6387c, b/167352819).
- O Recomposer agora exige um CoroutineContext na construção (Ic4610).
- Soma dos valores
zIndexquando váriosModifier.zIndex()são aplicados. Antes, o primeiro estava ganhando (Ic514c, b/170623936). - Mudanças na implementação interna de SlotTable que não afetarão a API pública (If9828).
- Adição da opção IME (editor de método de entrada, na sigla em inglês) de correção automática do teclado (I57b8d).
- androidx.ui.test movido para androidx.compose.ui.test (I9ffdb).
- Remoção de KeyboardOptions.toImeOptions da API pública (Ic2e45).
Contribuição externa
- Desativação da publicação de artefato interno androidx.compose.ui:ui-text-android (Ib93fa).
Versão 1.0.0-alpha06
28 de outubro de 2020
androidx.compose.ui:ui-*:1.0.0-alpha06 é lançado. A versão 1.0.0-alpha06 contém estas confirmações.
Mudanças na API
- Recomposer agora é um ComposeReference e um pai de composição válido. Agora, o Recomposer explícito é obrigatório em menos lugares (I4036f).
- O uso de VectorPainter foi substituído por rememberVectorPainter para indicar melhor que a API combinável usa internamente o método "remember" para manter dados entre composições (Ifda43).
- A API Modifier.drawWithCache foi atualizada para expor ContentDrawScope como um escopo de receptor em vez de DrawScope para fornecer às implementações a capacidade de reordenar comandos de desenho. Isso é útil para casos de uso de mistura/tonalização, em que os pixels do conteúdo precisam ser renderizados primeiro para que o algoritmo correspondente do modo de mistura seja aplicado corretamente (Ie7ec8).
- SimpleContainer movido para PopupTestUtils.kt (I78c57).
- ConsumedData não é mais uma classe de dados. Consulte https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 para mais detalhes (I1737f).
- Handle Position Rtl foi corrigido (I6e1e0).
- Refatoração de DrawScope e
ContentDrawScope para que sejam interfaces
em vez de classes abstratas.
- Criação da implementação CanvasDrawScope do DrawScope.
- Implementações refatoradas do DrawScope para usar o CanvasScope.
- Criação do DrawContext para unir dependências para o DrawScope.
- Métodos descontinuados no DrawScope foram removidos (I56f5e).
- Alteração interruptiva: o valor de retorno foi removido de
PointerInputFilter.onPointerEvent(...), já que o único valor que poderia ser mudado nos eventos de ponteiro é o dos dados de consumo. Em vez de retornar dados dePointerInputFilter.onPointerEvent(...), agora é possível mudar os dados de consumo dos PointerEvents transmitidos (I6acd0). - MeasureScope e IntrinsicMeasureScope foram transformados em interfaces (I1a087, b/170461665).
- Ocultação da função de mesclagem para AlignmentLine (I9da1a, b/170612900, b/170611568).
- Adição da capacidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
- Adição da opção SelectAll no menu de seleção (Ief02b).
- DrawTransform.rotate foi atualizado para usar
um parâmetro de rotação padrão do centro para corresponder
à documentação.
- DrawScope.rotateRad foi atualizado para consumir um Offset de modo que o ponto de rotação corresponda a outros métodos de transformação.
- O uso da sobrecarga DrawScope.rotateRad que consumia pontos flutuantes para as coordenadas x e y da rotação foi descontinuado
- (Iffcbb, b/170434992).
Correções de bugs
- A verificação de lint da API para MissingGetterMatchingBuilder está ativada para androidx (I4bbea, b/138602561).
- Adição de teste (I6b8ae).
- Ativação de transições em ComposeTestRule. Remoção da opção para ativar o cursor piscante na ComposeTestRule (If0de3).
- Adição da opção IME (editor de método de entrada, na sigla em inglês) KeyboardCapitalization (I8ac38).
- Adição da opção de teclado de linha única para CoreTextField (I72e6d).
- SimpleContainer foi movido para PopupTestUtils.kt (I65c3e).
- A API Radius foi renomeada como CornerRadius para expressar melhor a forma de uso dela no Compose. Atualização da documentação para indicar que raios negativos dos cantos são fixados a zero (I130c7, b/168762961).
- Melhoria da interoperabilidade do Android ao continuar enviando MotionEvents às visualizações filhas do Android que retornam um valor falso para onTouchEvent em todas as ações, exceto
ACTION_DOWN(I94c5a e b/170320973). - Box agora é uma função inline (Ibce0c, b/155056091).
Contribuição externa
- Suporte a diferentes localidades para
AnnotatedString.capitalizeeAnnotatedString.decapitalize(I4aa7f).
Versão 1.0.0-alpha05
14 de outubro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.
Mudanças na API
- Adição de uma DSL para especificar informações do inspetor (Ic9a22).
- LongPress movido para Text (Iff2bc).
- O Modifier.pointerInput experimental suspende o modificador de entrada (Ia77d2).
- Adição de ações de acessibilidade para copiar/colar/cortar (I6db4f).
- Remoção do construtor público para AndroidOwner (Iacaef).
- Pop-ups e caixas de diálogo agora herdam FLAG_SECURE da janela mãe. Adição de opção para configurar isso explicitamente (I64966, b/143778148, b/143778149)
Os dados de consumo agora são mutáveis. Além disso, chamadas para funções de extensão que usam consumo agora não retornam mais um novo PointerInputChange, mas mudam o PointerInputChange fornecido.
Essa é a primeira etapa de um processo de duas etapas para tornar os dados do PointerEvent mutáveis, de forma que outros dados de ponteiro não possam ser editados pelo código do usuário. A segunda etapa será remover o tipo de retorno
List<PointerInputChange>dePointerInputFilter.onPointerEvent(...)(Id067e).Desativação de Selection em Text, e uma Demo (Ie7e97).
onGloballyPosition agora é uma função in-line (I15830).
OnPositionedModifier foi renomeado como OnGloballyPositionedModifier, e onPositioned() foi renomeado como onGloballyPositioned(). (I587e8, b/169083903).
A propriedade hasPendingMeasureOrLayout foi adicionada ao Owner, informando se ele tem algum trabalho de layout pendente (I3d9f8, b/169038599).
Uma API foi adicionada para limpar programaticamente o foco (Ie1dc2, b/161487952).
PointerInputFilter.onPointerInput(...)foi removido.PointerInputFilter.onPointerEvent(...)precisa ser usado no lugar dele (I6f04a)Mudanças no Size
- Remoção de Size.getFlipped
- Remoção de Size.rem
- Size.truncDiv foi removido (Ief44d, b/169790720).
Como parte da padronização de valores de sentinela para classes inline, Color.Unset foi renomeada como Color.Unspecified para consistência com outras classes inline (I97611, b/169797763).
Introdução de TextOverflow.None. Quando overflow for "None", o Text não vai mais ser processado e vai informar o tamanho real para o LayoutNode (I175c9, b/158830170).
O parâmetro de escopo em AnnotatedString.Builder.addStringAnnotation foi renomeado para marcar a consistência da API (I7c8cb)
Correções de bugs
- O desempenho de rolagem de LazyColumn/Row foi melhorado com menos trabalho na subcomposição em cada rolagem. O novo método hasInvalidations() foi adicionado para a classe Composition. O método hasPendingChanges() do Recomposer foi renomeado como hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- Atualização dos parâmetros Size.Unspecified para Float.NaN, em vez de Float.POSITIVE_INFINITY. As implementações do Painter foram atualizadas para conferir o Size.Unspecified, assim como Sizes não finitos (I95a7e).
- Agora, a ordem das chamadas place() em Layouts personalizados define a ordem de desenho para os filhos (Ibc9f6).
- Foi adicionado suporte a AnnotatedString para conversão do SpannableString para acessibilidade (Ief907).
- Foram adicionados stubs para classes Android que estão em plataformas mais antigas a fim de evitar o uso de reflexão, quando possível (Ia1790).
- Correção de bug: se a exibição do teclado de software causava a tradução do app, as coordenadas da entrada do ponteiro ficavam incorretas (Ic4cec, b/163077821)
Versão 1.0.0-alpha04
1º de outubro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.
Mudanças na API
- OwnerScope foi adicionado para permitir a coleta de escopos de observação de desenho e layout quando eles deixam de ser válidos (Ic4cf8).
- OnRemeasuredModifier e onSizeChanged() foram adicionados para receber um callback quando o layout do conteúdo é medido novamente e quando o tamanho muda, respectivamente (I657cf, b/154108792).
- Adição de ação semântica de clique longo (I6281b, b/156468846).
- Agora, o FocusManager é privado (I7872f).
Atualização da implementação para criar uma implementação dedicada do DrawCacheModifier em vez de adicionar propriedades opcionais no DrawModifier.
Atualização da documentação para vários métodos (Ibd166).
TextRange agora é inline para evitar a criação de objetos (Id034b).
PlacementScope#parentWidth e PlacementScope#parentLayoutDirection não podem mais ser lidos do bloco de posição de um layout personalizado (Icc1ae, b/168295623).
Adição de AccessibilityScrollState às propriedades semânticas (Ifeda9).
Modifier.drawWithCache foi adicionado para oferecer suporte à criação de um objeto de desenho que recria condicionalmente dependências a informações de tamanho/estado (I376dc).
O ParagraphConstraints foi removido. Agora, a largura é transmitida diretamente para o Paragraph (Ica712).
Correções de bugs
- Atualização de várias APIs Graphics
- As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
- Os métodos Rect.expandToInclude e Rect.join foram removidos.
- Documentação do Radius atualizada para informar oval, além de elíptico.
- Foi adicionada documentação para indicar que o construtor público da classe Radius in-line não pode ser chamado diretamente, mas os objetos Radius precisam ser instanciados pelos construtores de função deles.
- Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
- O uso de Rect.shift foi descontinuado e substituído por Rect.translate.
- Remoção das APIs RoundRect.grow e Rect.shrink.
- Renomeação de RoundRect.outerRect para Rect.boundingRect.
- Remoção dos métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium.
- Renomeação de RoundRect.longestSide para RoundRect.maxDimension.
- Renomeação de RoundRect.shortestSide para RoundRect.minDimension.
- Mudança de RoundRect.center para que seja uma propriedade em vez de uma função.
- O construtor RoundRect foi atualizado para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
- As APIs Size, que pressupunham ser um retângulo com origem em 0,0, foram removidas.
- Adição de uma API de destruição ao Radius.
- Migração de várias funções de extensão RoundRect para serem propriedades
- (I8f5c7, b/168762961).
- O uso de foundation.Box foi descontinuado. Use foundation.layout.Box (Ie5950, b/167680279).
- Stack foi renomeado como Box. O uso do elemento Box anterior vai ser descontinuado e substituído pelo novo Box em compose.foundation.layout. O comportamento do novo Box quando tem vários filhos é os empilhar um em cima do outro. Isso é diferente do Box anterior, que se comportava de maneira semelhante à Column (I94893, b/167680279).
- O uso de parâmetros de decoração do Box foi descontinuado. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
- Atualização de várias APIs Graphics
- As APIs DrawScope foram atualizadas com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois dele ser invocado.
- Atualização da documentação do clipPath para se referir ao Path em vez do retângulo arredondado.
- Correção do espaçamento na documentação para o parâmetro correto em clipPath.
- DrawScope.drawCanvas foi renomeado como drawIntoCanvas, e o parâmetro de tamanho foi removido.
- Renomeação de parâmetros dx/dy no método de inset como horizontal e vertical.
- Recuo extra adicionado, fornecendo o mesmo valor de recuo a todos os quatro limites.
- A documentação sobre o método do recuo que indicava que o recuo seria aplicado a todos os quatro lados foi removida.
- Atualização da documentação da classe Rect.
- Os comentários sobre os parâmetros Rect foram atualizados para corresponder ao estilo kdoc.
- Rect.join e Rect.expandToInclude foram removidos.
- Foi criada uma sobrecarga para Rect.translate(offset) e o Rect.shift foi descontinuado
- (If086a, b/167737376).
- Anotação de rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).
- SelectContainer foi removido do topo para desativar a seleção padrão e evitar comportamentos inesperados. É possível usar especificamente um SelectionContainer para agrupar o conteúdo que precisa ser selecionável (I8dfe0, b/158459594).
Versão 1.0.0-alpha03
16 de setembro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.
Mudanças na API
- Remoção das ações de semântica de rolagem para frente/para trás. Adição de etapas em AccessibilityRangeInfo (Ia47b0).
- Remoção de
onInvalidate()doOwner:OwnedLayerprocessa a invalidação (Ica72b, b/162061312). Remoção dos métodos de operador na API Size que consomem parâmetros Offset. O resultado dessas operações não é claro, e o tipo de resultado é inesperado para elas. Ex.: "size - offset" retorna um deslocamento ou um resultado de tamanho com a diferença?
Também foram removidos os métodos descontinuados na classe Size (Iec902, b/166514214).
Correções de bugs
- Foram corrigidos itens de LazyColumn, que às vezes eram desenhados incorretamente, causando falhas em algumas condições (Ibcf17, b/163066980, b/165921895).
- O elemento DpConstraints e as APIs que o usavam foram descontinuados (I90cdb, b/167389835).
createAndroidComposeRuleeAndroidInputDispatcherforam movidos deandroidx.ui.test.androidparaandroidx.ui.test(Idef08, b/164060572).- Os usos da gravidade foram renomeados de forma consistente para align ou alignment nas APIs de layout (I2421a, b/164077038).
- onNode e outros métodos globais foram adicionados à ComposeTestRule, porque os atuais vão ser descontinuados (Ieae36).
Versão 1.0.0-alpha02
2 de setembro de 2020
Lançamento de androidx.compose.ui:ui-*:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.
Mudanças na API
- Remoção de callback para notificar o proprietário quando os limites do layoutnode mudam (If654e, b/166106882).
- Foi adicionado suporte a parâmetros de tipo de preenchimento em caminhos de gráficos vetoriais para oferecer suporte a cortes de formas, de acordo com as regras de preenchimento de caminho evenOdd ou NonZero (I43dd2).
- O tempo de atividade e a velocidade agora são classes in-line (I48f4a).
- Duration agora é uma classe inline (I565eb).
- Adição de callback para notificar o proprietário quando os limites do layoutnode mudam Ic40b3
Foi corrigido um problema em que o construtor da função Rect com deslocamento e raio criava o retângulo na ordem esquerda, direita, cima e baixo em vez de esquerda, cima, direita e baixo.
Os métodos complementares descontinuados no Rect foram removidos e substituídos por construtores de funções.
Adição de testes para verificar métodos em Rect.kt (I08460, b/165822356).
Correções de bugs
- Adição de MutableRect, um retângulo que pode ser modificado (I71bd2, b/160140398).
- A Matrix4 foi substituída por Matrix. Todas as outras partes do pacote vectormath foram removidas Ibd665, b/160140398
A convenção de chamada para funções combináveis mudou. Essa é uma alteração interruptiva binária. Todas as bibliotecas precisam ser recompiladas para funcionar com essa versão do plug-in compilador do Compose.
Essa mudança não cria uma alteração interruptiva no nível da origem, uma vez que as únicas APIs que foram modificadas são APIs do compilador que têm uma permissão explícita (I7afd2, b/158123185).
Foi corrigida a falha que podia ocorrer durante o envio para um PointerInputFilter e fazia com que o PointerInputFilter fosse removido de forma síncrona I58f25
Versão 1.0.0-alpha01
26 de agosto de 2020
androidx.compose.ui:ui-*:1.0.0-alpha01 é lançado. A versão 1.0.0-alpha01 contém estas confirmações.
Versão 0.1.0-dev
Versão 0.1.0-dev17
19 de agosto de 2020
Lançamento de androidx.compose.ui:ui-*:0.1.0-dev17. A versão 0.1.0-dev17 contém estas confirmações.
Mudanças na API
- O uso de
emitViewfoi descontinuado. UseAndroidView, se possível, para emitir Views dentro do Compose. A composição direta de Views e ViewGroups não vai estar disponível no futuro, a menos que sejam folhas combináveis. Nesse caso, a composição direta é possível usando o AndroidView (I29b1e, b/163871221). - O uso de
FocusState2foi descontinuado e substituído porFocusState(Ia8b79, b/160822876, b/160923332). - As sobrecargas descontinuadas de AndroidView foram removidas (I946b9, b/163802393).
- Agora, as emissões personalizadas podem declarar que um ou mais setters podem ser ignorados e recompostos independentemente da emissão (Ibbd13).
As classes Vector foram mudadas para não serem mais classes de dados, já que a mesma instância de objeto é usada na composição.
A flag mutableStateOf em VectorPainter foi adicionada para redesenhar condicionalmente se o conteúdo do vetor for mudado.
Refatoração da instância VectorComponent para fazer parte do VectorPainter enquanto é reutilizada em composições.
GroupComponent e PathComponent foram atualizados para que os campos de nome fossem mutáveis (Ieae45, b/151378808).
Removidos
onChildPositionedeOnChildPositionedModifier. Os desenvolvedores precisam usaronPositionedeOnPositionedModifierno layout filho (I4522e, b/162109766).Offset agora é uma classe inline (Iaec70).
Adição de um parâmetro modificador a SelectionContainer (I4aada, b/161487952).
Remoção do FocusModifier obsoleto (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940).
Adição do lambda
mergePolicyaSemanticsPropertyKey. É possível usá-la para definir uma política personalizada para a mesclagem de semântica mergeAllDescendants. A política padrão será usar o valor pai se já estiver presente. Caso contrário, o valor filho (Iaf6c4, b/161979921).Constraints agora é uma classe in-line (I88736).
Adição de FocusManager, que move a lógica de foco comum de AndroidComposeView (I528ef, b/161487952, b/162206799).
Atualização de nomes de PointerEventPass para a versão Alfa (Ifda6f).
IntOffset agora é uma classe inline (Iac0bf).
IntSize agora é uma classe inline (I2bf42).
PlacementScope.placeAbsolute()foi renomeado comoPlacementScope.place(), e oPlacementScope.place()anterior foi renomeado comoPlacementScope.placeRelative(). Por essa razão, o métodoPlacementScope.place()não espelhará de forma automática a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, usePlacementScope.placeRelative()(I873ac, b/162916675).AlertDialog agora usa FlowRow para botões (I00ec1, b/161809319, b/143682374).
Transformação de alguns utilitários de teste em não públicos porque não estavam onde precisavam estar. Isso será disponibilizado ao público no futuro (I32ab1).
Organização refatorada do código de entrada do ponteiro (Ie3f45).
O elemento PxBounds foi descontinuado e substituído por Rect. Atualização de todos os usos de PxBounds com rect e adição de descontinuação/substituição por anotações para auxiliar na migração (I37038, b/162627058).
Remoção de KeyEvent2. Use KeyEvent (Ied2d0, b/162097587).
KeyEvent tem uma propriedade Unicode que pode ser usada para receber o caractere Unicode gerado pela combinação de estado especificada de tecla e tecla meta (If3afc).
Transformação do evento personalizado DelayUp e das classes relacionadas em uma API de ativação, já que é muito provável que sejam mudados (I56d6f).
Dois PointerEventPasses que não são mais necessários foram removidos (I3dd9d).
Adição de cor, sombra e TextDecoration de parâmetro a Paragraph.paint. Essa função é útil para evitar a recriação desnecessária de parágrafos (I81689).
Correções de bugs
- Remoção dos callbacks onFocusChanged do TextField. Use Modifier.focusObserver (I51089, b/161297615).
- O uso de Modifier.drawBorder foi descontinuado. Use Modifier.border. A classe de dados Border foi substituída por BorderDraw (I4257d, b/158160576).
As chamadas FrameManager descontinuadas foram removidas.
As APIs combináveis internas mudaram para reduzir a quantidade de sobrecarga a fim de rastrear objetos de estado, como
mutableStateof()(I80ba6).Remoção de VerticalScroller e HorizontalScroller. Use ScrollableColumn/Row. Modifier.drawBackground foi removido. Use Modifier.background (I73b0d, b/163019183).
Correção da falha que ocorria quando algo que salvava o estado era usado dentro do loop. Agora, é permitido ter a mesma chave em savedInstanceState(), a API UiSavedStateRegistry está ajustada para esse novo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
O elemento combinável
state { ... }foi descontinuado e substituído pelas chamadas explícitas deremember { mutableStateOf(...) }para maior clareza. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrãoby mutableStateOf()para delegação de propriedade de classe (Ia5727).RRect foi renomeado como RoundRect para se ajustar melhor aos padrões de nomenclatura do Compose. Construtores de função semelhantes foram criados para RRect, e os construtores de função RRect foram descontinuados (I5d325).
Versão 0.1.0-dev16
5 de agosto de 2020
androidx.compose.ui:ui-*:0.1.0-dev16 é lançado. A versão 0.1.0-dev16 contém estas confirmações.
Mudanças na API
- O uso de OnChildPositioned foi descontinuado. Use OnPositioned no filho (I87f95, b/162109766).
- O uso de setViewContent foi descontinuado. Use setContent (I7e497, b/160335130).
- Adição da API AndroidViewBinding para inflar e compor recursos de layout com base em ViewBinding (I081c6).
- KeyEvent2 foi substituído por KeyEvent (I2d770, b/162097585).
- Adicionado suporte à tecla de hardware Alt (I9036b).
- O uso de FocusManager foi descontinuado. Use Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester() (I74ae4, b/162211322).
- loadVectorResource é compatível com atributos trimPath (I808fe).
- A caixa de diálogo foi movida para a interface (I47fa6).
- Remoção de dois PointerEventPasses que não são mais necessários (I33ca7).
- Foi implementado o PointerInteropModifier, que permite receber MotionEvents e interagir com o Compose como se você estivesse implementando uma visualização do Android (Ieb08c).
- O modificador de tag descontinuado foi removido. Use layoutId (Idaa05, b/162023919).
- As APIs com suporte à leitura da direita para a esquerda foram atualizadas. LayoutDirectionAmbient foi adicionado e pode ser usado para ler e mudar a direção do layout. Modifier.rtl e Modifier.ltr foram removidos (I080b3).
- Adicionado suporte ao corte de caminho em gráficos vetoriais (Ie16c9, b/158188351).
- Foi adicionado o Modifier.layout(), que permite criar um modificador de layout personalizado conveniente (I73b69, b/161355194).
- Uma nova API AndroidView foi adicionada, e as já existentes foram descontinuadas (I5bcfd).
- O uso de Modifier.plus foi descontinuado. Use Modifier.then. "Then" tem um sinal mais forte de ordem, mas também proíbe o tipo
Modifier.padding().background() + anotherModifier, que interrompe a cadeia e é mais difícil de ler (Iedd58, b/161529964). - Subclasses de visualização [Abstract]ComposeView foram adicionadas para hospedar conteúdo do Compose em uma hierarquia de visualizações (I46357).
RoweColumnagora executam funções in-line reduzindo significativamente a sobrecarga de uso (I75c10).- SubcomposeLayout foi adicionado. Ele é um primitivo de baixo nível que permite compor os filhos durante a medição se quisermos usar alguns valores disponíveis posteriormente, durante a medição para a composição da subárvore. Por exemplo, WithConstraints não é implementado usando SubcomposeLayout (I25cc8).
SemanticsNode.positionInRootfoi adicionada para receber a posição de um SemanticNodes em relação à raiz da hierarquia do Compose (Icdf26, b/161336532).- Passagem dos MotionEvents do Android para o Compose e de volta para o Android (I14be8, b/158034713).
- Remoção de dropdownPopup (I00430).
- Correção da posição do pop-up em telas cortadas (Idd7dd).
- Adição da ação de acessibilidade para receber o TextLayoutResult (I9d6e6).
- Adição de RemeasurementModifier, que permite medir novamente o layout de maneira síncrona. Em geral, você não precisa dele, já que a nova medida de layout é feita automaticamente, mas o usamos em LazyColumnItems durante a rolagem (I5f331, b/160791058).
- Remoção de getLineEllipsisOffset/getLineEllipsisCount. Use getLineVisibleEnd/getLineEnd/isLineEllipsized (I85aa2).
- Adição de Marks/Annotations para seguir práticas recomendadas (I66b20).
- Exposição de mais APIs de linha em TextLayoutResult (I79bd2).
- Os conversores de vetor integrados para converter unidades integradas agora podem ser acessados por meio de Foo.VectorConverter. Por exemplo: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter etc. (I3e273).
Correções de bugs
- Resolução de variados problemas de API (I077bc).
- Remoção da interface OffsetBase não utilizada.
- Alinhamento das classes Offset e IntOffset para que tenham uma superfície de API consistente.
- IntOffset.Origin foi renomeado como IntOffset.Zero para ser consistente com a API Offset.
- O método nativeCanvas foi movido da interface Canvas para que os consumidores possam criar as próprias instâncias.
- A classe stub EmptyCanvas foi criada para refatorar DrawScope para ser um parâmetro não nulo em vez de lateinit e garantir a não nulidade do campo.
- Os tipos enumerados ClipOp foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados FilterQuality foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados StrokeJoin foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PointMode foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PaintingStyle foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PathFillType foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados StrokeCap foram renomeados para seguir o padrão Pascal Case.
- Atualização da implementação de DrawCache para não usar mais parâmetros lateinit.
- Atualização de DrawScope para não usar mais delegação lenta para os parâmetros internos fillPaint e strokePaint.
- Atualização do composto Image para evitar o uso do Box e ter menos sobrecarga.
- Atualização da classe Outline para ter anotações @Immutable.
- PathNode foi atualizado para ter anotações @Immutable em cada instrução de caminho.
- A subcomposição Vector foi atualizada para remover verificações condicionais redundantes para fins de igualdade, já que o Compose já as processa.
- O uso de métodos construtores complementares de Rect foi descontinuado e substituído por construtores de função.
- As classes Brush e construtores de função foram atualizados com APIs @Immutable e @Stable.
- Atualização da enumeração VertexMode para seguir o padrão Pascal Case.
- Atualização do método DrawScope selectPaint para substituir condicionalmente os parâmetros de traço na pintura quando eles tiverem mudado.
- Atualização de Size para adicionar a desestruturação da API, renomear UnspecifiedSize para Unspecified e remover métodos não utilizados.
- Atualização do consumo da API BlendMode para mapear adequadamente entre os modos BlendModes e PorterDuff do framework do Android, dependendo do nível da API. Introdução da API BlendMode#isSupported para determinar se BlendMode é compatível com o dispositivo antes de ser usado (I0ef42).
- Adição de LazyItemScope no parâmetro itemContent de listas Lazy. Ele fornece modificadores para preencher o tamanho máximo pai, que resolve o caso de uso quando o item precisa preencher a janela de visualização, e o Modifier.fillMaxSize() normal não funciona, já que o item é medido com restrições de infinito (Ibd3b2, b/162248854).
SemanticsNodeInteraction.performPartialGesturefoi removido. UseSemanticsNodeInteraction.performGesture(Id9b62).LazyColumnItemsfoi renomeado comoLazyColumnFor.LazyRowItemsfoi renomeado comoLazyRowFor(I84f84).- Nivelação do pacote
foundation.shape.cornerparafoundation.share(I46491, b/161887429). AndroidComposeTestRulefoi renomeado comocreateAndroidComposeRule(I70aaf).- Adição de mais APIs a
TextLayoutResult(Id7e04). FilledTextFielddo Material Design foi renomeado comoTextField, e oTextFieldde base foi renomeado comoBaseTextFielda fim de facilitar a descoberta e o uso da API mais simples desejada (Ia6242, b/155482676).- Modifier.drawBackground foi renomeado como Modifier.background (I13677).
Versão 0.1.0-dev15
22 de julho de 2020
Lançamento de androidx.compose.ui:ui-*:0.1.0-dev15. A versão 0.1.0-dev15 contém estas confirmações.
Atualização de dependências
- Para usar a versão
0.1.0-dev15do Compose, será necessário atualizar suas dependências de acordo com os novos snippets de código mostrados acima em Como declarar dependências.
Mudanças na API
- O uso de FocusModifier foi descontinuado e substituído por Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. Os elementos FocusState e FocusDetailedState foram descontinuados e substituídos por FocusState2 (I46919, b/160822875, b/160922136).
- Adição de um modificador para observar a mudança do estado do foco (I05866, b/160924455, b/160923326).
- Adição de um modificador para solicitar mudanças de foco (I8dd73, b/161182057, b/160924778).
- Ajuste no menu da Barra de Ferramentas Google para mostrar os comandos de copiar, recortar e colar corretamente (Id3955).
- As propriedades de semântica de valor único agora usam um estilo de chamada.
Por exemplo, "semantics {hidden = true}" agora é escrito como:
semantics { hidden() }(Ic1afd, b/145951226, b/145955412). - Adição de Modifier.focus para substituir o FocusModifier (Ib852a, b/160924778).
- FloatingToolbar foi adicionado à seleção do TextField (Ie8b07).
- Adição de uma anotação de API experimental à API relacionada a entrada de chaves (I53c0a).
- Adição de uma anotação de API experimental a todas as APIs relacionadas a foco (I53b24, b/160903352).
- Adição de FocusState2, que substituirá FocusDetailedState (I0a3ba, b/160822595).
- Adição de ExperimentalFocus, que é uma anotação @OptIn para a API Focus (I1544b, b/160820961).
- Foi adicionada uma classe de unidade IntBounds, que representa os limites de pixels inteiros do layout. A API de PopupPositionProvider foi atualizada para usar essa classe (I0d8d0, b/159596546).
- Applier agora requer um método clear() para descartar composições (Ibe697).
- O uso de KeyEvent foi descontinuado e substituído por KeyEvent2 (I68730).
- Adição de uma nova sinalização opcional, useUnmergedTree, aos localizadores de teste (I2ce48).
- Criação da API experimental LayoutNode (I4f2e9).
Adição de métodos de cópia a vários tipos de classe in-line, incluindo:
- Offset
- Size
- Radius
- Motion
TransformOrigin
O método de objeto complementar Size.copy foi descontinuado e substituído pelo método de cópia de instância (Ife290, b/159905651).
Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
TextDirection foi renomeado como ResolveTextDirection (I3ff38).
O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível dentro do callback com o objeto do escopo da medida (Ic7d9d).
SelectionHandles foi refatorado para reutilização (I420e0).
Clickable foi removido. Use Modifier.clickable (I84bdf).
TestTag e Semantics foram excluídos. Agora, use Modifier.testTag e Modifier.semantics (I15ff0, b/158841414).
Antes da mudança, o plug-in do compilador do Compose interceptava chamadas a construtores dentro de uma função @Composable se houvesse um (I5205a, b/158123804).
Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).
Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).
Foi adicionado um parâmetro modificador ao elemento combinável AndroidView (I48a88, b/158746303).
O uso de Semantics() foi descontinuado. Use Modifier.semantics() (I72407, b/158841414).
Adicionado o elemento combinável viewModel(), que permite criar ou usar o ViewModel já criado de forma semelhante a como ele funciona em Activity ou Fragment (I5fdd1).
Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).
Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe inline para usar um valor long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração, a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel. Classe Px excluída na íntegra (I3ff33).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I086f4).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (Id3434).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I97a5a).
O uso de TestTag foi descontinuado. Use Modifier.testTag (If5110, b/157173105).
A implementação padrão, de ambiente autônomo, de ParentDataModifier#modifyParentData foi removida. Ela era equivalente a não implementar a interface primeiro (I0deaa).
A ScaleFit descontinuada foi removida. Use ContentScale (Ifbc5b).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I19d02).
O componente DropdownMenu foi adicionado ao ui-material, uma implementação do menu do Material Design (I9bb3d).
O método LayoutTag() descontinuado foi removido. Use Modifier.tag(). O Modifier.matchParent() descontinuado foi removido. Use Modifier.matchParentSize() (If8044).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I57bff).
O Modifier.semantics voltou a ser usado para permitir o uso de componentes de alto nível (I4cfdc).
Consolidadas as implementações de CanvasScope para que agora existam apenas DrawScope e ContentDrawScope. CanvasScope foi renomeado como DrawScope. DrawScope foi atualizado para implementar a interface de Density e fornecer LayoutDirection. A subclasse DrawScope foi excluída em ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL, porque DrawScope já fornece isso de maneira automática (I1798e).
DoubleTapGestureFilter agora desambigua SingleTapGestureFilter na árvore (If92b1).
A API Alignment foi atualizada, e foi adicionado suporte ao alinhamento absoluto, que não vai ser espelhado automaticamente no contexto RTL (I38cd3).
Mudança na API DrawLayer Modifiers: outlineShape foi renomeada como Shape e tem o valor padrão RectangleShape, agora não anulável. clipToOutline foi renomeado como clip. clipToBounds foi removido porque é o mesmo que clip == true com RectangleShape (I7ef11, b/155075735).
As APIs combináveis de nível superior que expõem uma tela foram atualizadas para expor CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a um Canvas podem usar o método de extensão drawCanvas, que fornece um callback para emitir comandos de desenho (I80afd).
A API WithConstraints lambda final mudou. Agora, em vez de dois parâmetros, ela tem um escopo de receptor que, além de restrições e layoutDirection, fornece as propriedades minWidth, maxWidth, minHeight e maxHeight no Dp (I91b9a, b/149979702).
LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).
A interface LayoutModifier descontinuada foi removida (I2a9d6).
As funções de medições intrínsecas em Layout e LayoutModifier2 agora têm um receptor IntrinsicMeasureScope que fornece uma API de consulta intrínseca com a direção de layout propagada implicitamente (Id9945).
Os filhos de Layout e LayoutModifier podem ser medidos com uma direção de layout diferente (Ibd731).
Um novo Modifier.zIndex() foi adicionado para controlar a ordem do desenho dos filhos no mesmo layout pai. A propriedade elevation em DrawLayerModifier foi renomeada como shadowElevation e não controla mais a ordem do desenho. A ordem dos parâmetros para DrawShadow foi modificada: o elevation agora é o primeiro e o shape o segundo, com RectangleShape como padrão (I20150, b/152417501).
Remoção de onSizeChange e onPositionChange em Owner (I5c718).
Constraints2, uma cópia de Constraints que só aceita valores de restrições do Int em vez de IntPx, foi adicionado. IntPx vai ser removido, e todas as restrições inteiras vão ser consideradas pixels como o Android.
- Adição de IntSize também, que acabará substituindo IntPxSize (I4b43a).
Alignment se tornou instanciável com valores arbitrários. Alignments 1D foi adicionado (Ia0c05).
alignToSiblings agora aceita um Measured em vez de Placeable (I5788d).
-
- ScaleFit foi renomeado como ContentScale.
- O ContentScale foi movido de ui-graphics para ui-core para ficar no mesmo módulo que a API Alignment.
- FillMaxDimension foi renomeado como Crop.
- ContainerMinDimension foi renomeado como Fit.
- Fit foi renomeado como Inside para melhor correspondência.
- Equivalentes de ImageView.ScaleType
- Foi adicionada a documentação que indica que a combinação de Crop e Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_CROP, que Fit usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_INSIDE e que Inside usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_INSIDE.
Compatibilidade com RTL para modificadores de desenho (I0aaf9).
Lançamento da API para inflar o Android Views no XML. Consulte a demonstração do ViewInCompose para ver mais detalhes (I42916).
Melhora na API DrawModifier:
- O escopo do receptor foi definido para draw() ContentDrawScope.
- Todos os parâmetros em draw() foram removidos.
- DrawScope tem a mesma interface que o antigo CanvasScope.
- ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
positionInParent e boundsInParent foram adicionados para LayoutCoordinates (Icacdd, b/152735784).
DrawLayerModifier e drawLayer() agora definem clickToBounds e clipToOutline como falsos por padrão (I0eb8b, b/152810850).
LayoutResult foi renomeado como MeasureResult (Id8c68).
Adição de LayoutModifier2, uma nova API para definir modificadores de layout. LayoutModifier foi suspensa (If32ac).
O Modifier plus operator foi substituído por funções de extensão de fábrica (I225e4).
As propriedades translationX/Y foram adicionadas para oferecer suporte ao ajuste da lista de exibição para comandos de desenho de determinada camada. Isso é útil para mover conteúdos em resposta a animações ou eventos de toque (I8641c).
Os parâmetros pivotX e pivotY foram adicionados às APIs Layer para oferecer suporte à rotação e ao dimensionamento em torno de um determinado ponto em uma camada (Icf7c3).
Adição de OnPositionedModifier e OnChildPositionedModifier para substituir as funções compostas OnPositioned e OnChildPositioned (I2ec8f).
Adição de LayerModifier, um modificador que permite adicionar um RenderNode a um Layout. Ele permite definir o recorte, a opacidade, a rotação, o dimensionamento e as sombras. Ele vai substituir o RepaintBoundary (I7100d, b/150774014).
A direção do layout passou a ser propagada do nó de layout pai para os filhos. Adição de modificador de direção de layout (I3d955).
O componente Stack é compatível com a direcionalidade da direita para a esquerda (Ic9e00).
Foi adicionado suporte inicial ao layout RTL no Compose (Ia5519).
Density e DensityScope foram unidos em uma única interface. Agora você pode usar DensityAmbient.current em vez de ambientDensity(). Em vez de withDensity(density), apenas with(density) (I11cb1).
O LayoutCoordinates foi mudado para fazer com que providedAlignmentLines seja um Set em vez de um Map e fazer com que LayoutCoordinates implemente o operador get() em vez de extrair um valor. Isso facilita a modificação de um ou mais valores do conjunto sem criar uma nova coleção para cada modificador (I0245a).
LayoutGoordinates não tem mais uma propriedade de posição. A propriedade de posição não faz sentido ao considerar LayoutModifiers, rotação ou dimensionamento. Em vez disso, os desenvolvedores precisam usar parentCoordinates e childToLocal() para calcular a transformação de um LayoutCoordinate em outro.
LayoutCoordinates usa IntPxSize para a propriedade Size em vez de PxSize. Os layouts usam tamanhos de pixel inteiros, então todos os tamanhos de layout precisam usar números inteiros, e não valores de pontos flutuantes (I9367b).
Melhorias na superfície da API de Constraints (I0fd15)
Foi criada a API CanvasScope, que envolve um objeto Canvas, para expor uma superfície de API de desenho declarativa e sem estado. As transformações estão contidas no próprio escopo do receptor, e as informações de dimensionamento também têm escopo para os limites inseridos correspondentes. Não é necessário que um consumidor mantenha o próprio objeto de estado Paint para configurar operações de desenho.
- Inclusão do CanvasScopeSample, bem como atualização do app de demonstração para incluir uma demonstração gráfica declarativa (Ifd86d).
Foi removida a API MaskFilter, que não é usada porque tem uso limitado e não é otimizada para aceleração de hardware na maioria dos casos de uso (I54f76).
RectangleShape movido de androidx.ui.foundation.shape.* para androidx.ui.graphics.* (Ia74d5, b/154507984).
Todos os usos anuláveis de Color foram substituídos na API por não anuláveis e usam Color.Unset em vez de null (Iabaa7).
Introdução do parâmetro opcional rect extra a ImagePainter para permitir o desenho de uma subseção de ImageAsset subjacente (I0ea9e).
Adição de Unset Color para representar um valor não definido sem Colors embaladas (If901a).
Adição dos métodos de extensão Canvas.rotate e Canvas.scale para consumir coordenadas dinâmicas opcionais para transformações. O padrão deles é o canto superior esquerdo da atual tradução de Canvas.
O Canvas.rotateRad também foi movido para ser um método de extensão para fins de consistência (Ibaca6).
Criação da API PixelMap para oferecer compatibilidade com consultas de informações de pixel de um ImageAsset (I69ad6).
toFrameworkRect/toFrameworkRectF foi renomeado como toAndroidRect/toAndroidRectF para corresponder à convenção de nomenclatura para conversões de objetos entre o Compose e as APIs do framework do Android sobre os quais elas são realizadas. Os documentos dessas APIs também foram atualizados (I86337).
A API VectorPainter foi adicionada para substituir a API de subcomposição já existente em gráficos vetoriais. O resultado da subcomposição é um objeto VectorPainter em vez de um DrawModifier. Os elementos combináveis DrawVector foram descontinuados e substituídos por elementos VectorPainter.
A API Image(Painter) foi renomeada como PaintBox(Painter). Foi criado o elemento combinável Vector, que se comporta como o Image, mas com um VectorAsset em vez de um ImageAsset (I9af9a, b/149030271).
Image foi renomeado como ImageAsset para diferenciar melhor os dados do Image e o futuro composto Image, usado para participar do layout e desenhar conteúdo. Foi criado o método de extensão _Body:Created em android.graphics.Bitmap, Bitmap.asImageAsset(), para criar uma instância de um ImageAsset útil para combinar o desenvolvimento de aplicativos para Android tradicionais com o framework do Compose (Id5bbd).
Adição de TextDirection.Content (I48f36).
Adição do operador TextDecoration.plus (I0ad1a).
Forcefoi removido dos valores de enum TextDirectionAlgorithm (Icc944).TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).
Implementação de LongpressAndDrag para seleção de TextField (I17919).
Adição de AnnotatedString.getStringAnnotations que retorna todas as anotações dentro do intervalo (I1fa00).
O nome do pacote foi mudado para Locale e LocaleList de androidx.ui.text para androidx.ui.intl (I8132c).
O cursor do TextField tem uma animação intermitente (Id10a7).
Mudança de API: AnnotatedString(builder: Builder) foi renomeada como anotadorString(builder: Builder) (Ia6377).
Mudança de API: AnnotatedString.Item foi renomeada como AnnotatedString.Range (I2d44d).
AnnotatedString.Builder.addAnnotationString foi renomeada como addStringAnnotation (I5059e).
Agora é possível ocultar/mostrar o teclado do software usando o SoftwareKeyboardController que é entregue pelo callback onTextInputStarted (I8dc44, b/151860051).
O operador mais foi adicionado para o estilo (texto/parágrafo/período) que delega para a função merge() (Ia1add).
FontWeight.lerp não se ajusta mais. Ainda é uma classe de dados (I521c2).
O construtor FontWeight agora é público, não é mais uma classe de dados (Id6b1f).
getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount foram adicionados a TextLayoutResult (IBc801).
O módulo ui-text foi renomeado como ui-text-core (I57dec).
Foi removida a classe Size, que não é usada porque há uma classe Size duplicada no módulo ui-geometry sendo consumida (I1b602).
Adição do Adapterlist, um componente de lista de rolagem que apenas compõe e apresenta os itens visíveis. Os problemas conhecidos atualmente incluem o fato de que ele só é vertical e não processa integralmente todos os casos de mudança nos filhos (Ib351b).
Adição de parâmetros de padding, borda, forma e plano de fundo a Box (I05027, b/148147281).
Correções de bugs
- O callback onFocusChange em campos de texto foi renomeado como onFocusChanged (Ida4a1).
- O uso de VerticalScroller e HorizontalScroller foi descontinuado. Use ScrollableColumn e ScrollableRow para ter uma experiência integrada com o comportamento e os parâmetros de Column/Row, ou Modifier.verticalScroll e Modifier.horizontalScroll no seu elemento. Da mesma forma, o elemento ScrollerPosition foi descontinuado e substituído pelo ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
runOnIdleComposefoi renomeado comorunOnIdle(I83607).- Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
- Agora é possível compor a interface do Compose dentro de ViewGroups sem precisar de uma nova composição. Consulte ViewInteropDemo para ver um exemplo (I9ab0b, b/160455080).
- Adição de sortWith e removeRange ao MutableVector (Icccf7).
- Implemente as alças de seleção para arrastar para mudar a seleção de TextField (I27032).
- Remoção da classe inline do Shader que encapsulava a classe NativeShader. NativeShader foi renomeada como Shader. A classe in-line Shader encapsulada não adicionava valor à superfície da API e era uma classe in-line. Portanto, use a classe NativeShader diretamente (I25e4d).
O PainterModifier foi refatorado para não fornecer mais dimensionamento com base nas restrições e no parâmetro ContentScale fornecidos. As implementações do Painter dimensionam o próprio conteúdo de desenho com base no tamanho especificado do DrawScope em que estão sendo desenhados.
Foi corrigido o problema em que o bitmap de cache de VectorPainter era dimensionado para o tamanho padrão em vez de para o tamanho fornecido para desenhar.
ImagePainter foi atualizado para dimensionar o próprio conteúdo em vez de confiar em PainterModifier para fazer isso por ele (I6ba90).
Adição da função withFrameNanos de nível superior para tempo de animação (Ie34c5).
A anotação @Untracked foi descontinuada. Substitua por @ComposableContract(tracked=false) (Id211e).
O uso de androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue foi descontinuado. Os elementos TextField, FilledTextField e CoreTextField que usam esse tipo também foram descontinuados. Use androidx.ui.input.TextFieldValue (I4066d, b/155211005).
Foi corrigido o problema em que o envio de entrada do ponteiro causava uma falha se PointerInputFilters era removido por meio de subcomposição durante o envio. Isso já foi corrigido (I1f48b, b/157998762).
Foi corrigido o problema em que o envio de entrada do ponteiro causava uma falha se PointerInputFilters era removido por meio de subcomposição durante o envio. Isso já foi corrigido (Iab398, b/157998762).
Classe de raio refatorada para ser uma classe in-line. Os métodos de criação complementares foram removidos e substituídos pelo construtor de função com parâmetro padrão para que o raio ao longo do eixo y corresponda ao parâmetro obrigatório de raio do eixo x.
DrawScope.drawRoundRect foi atualizado para consumir um único parâmetro de raio, em vez de dois valores flutuantes separados para o raio ao longo dos eixos x e y (I46d1b).
O composto Recompose não é mais uma abstração útil. A maioria das recomposições precisa acontecer como resultado de atribuições MutableState. Para qualquer coisa além disso, é recomendável usar a função
invalidatepara acionar uma recomposição do escopo atual (Ifc992).O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (Iede0b).
Muda a estratégia de geração de código do compilador do Compose. Antes da mudança, ele transformava chamadas em funções compostas. Com essa mudança, agora transformamos o corpo de uma função combinável e deixamos o local de chamadas praticamente inalterado.
Isso significa que a maior parte da lógica que se comunica com o ambiente de execução do Compose acontece no início do corpo da função e não no local de chamadas.
Essa deve ser uma mudança compatível com a fonte para todo o uso do Compose. A maioria dos usuários do Compose não precisa atualizar nenhum código como resultado dessa mudança.
Para oferecer suporte a esse trabalho, a assinatura JVM de todas as funções compostas mudou. Uma função combinável que aceita um único parâmetro é transformada em uma função que aceita três parâmetros. Os parâmetros adicionais são o Composer, um número inteiro "chave", um inteiro de bitmask usado para propagar metadados por meio de chamadas.
O Compose agora também transforma argumentos padrão em uma função composta. Ele faz isso sem introduzir uma sobrecarga padrão sintética adicional da própria função. Portanto, essa mudança resultará na definição de menos funções.
Mudanças comportamentais intencionais conhecidas resultantes disso:
- Algumas chamadas serão ignoradas.
- As expressões compostas em expressões de argumento padrão agora são corretamente inscritas e processadas.
Esse trabalho incluiu algumas otimizações: 1. O resultado das comparações de parâmetros é propagado pelo gráfico de chamadas para outras funções combináveis. Isso resulta em menos comparações no tempo de execução e reduz o tamanho da tabela de slots, além de gerar mais pulos de funções combináveis que não foram ignoradas anteriormente. 2. Os parâmetros que são determinados como "estáticos" no momento da compilação não são mais comparados ou armazenados no ambiente de execução. Isso reduz o número de comparações e o tamanho da tabela de slots. 3. A estrutura do controle de fluxo do corpo das funções é usada para minimizar o número de grupos gerados. Isso reduz o tamanho da tabela de slots e resulta em menos trabalho para o ambiente de execução. 4. Parâmetros de envio e destinatário não utilizados para funções não são incluídos para determinar a possibilidade de pular a função, quando não são usados dentro do corpo da função.
A maioria das mudanças interruptivas foi feita em APIs a que o compilador é destinado diretamente. O uso típico do Compose não vai ser afetado: 1. Composer::startExpr foi removido. 2. Composer::endExpr foi removido. 3. O Composer::call foi descontinuado. 4. As sobrecargas que não são varargs de
keyforam removidas. Use a versãovarargdaqui em diante. 5. A anotação Pivotal foi descontinuada. Usekeycomo substituto. 6. ScopeUpdateScope::updateScope foi modificado para esperar uma Function3 em vez de Function1. 7. restartableFunction e restartableFunctionN foram atualizados para incluir outros parâmetros de tempo de compilação (I60756, b/143464846).Modificadores descontinuados do LayoutAlign foram removidos (I10877).
A classe RepaintBoundary foi removida e substituída por DrawLayerModifier (I00aa4).
Agora, Button, FloatingActionButton e Clickable têm um parâmetro
enabledseparado. Alguns dos parâmetros no Button foram renomeados ou reordenados (I54b5a).ButtonStyle foi substituído por funções distintas, e a sobrecarga de texto (string) foi removida. Confira exemplos atualizados para informações de uso (If63ab, b/146478620, b/146482131).
Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do
Ambient<T>para ver detalhes (I4c7ee, b/143769776).O comportamento padrão de TextDirection agora é determinado por LayoutDirection. Por exemplo, se LayoutDirection é RTL, TextDirection padrão vai ser RTL. Antes era TextDirection.ContentOrLtr/Rtl (I4e803)
Correção de bug: quando o peso e o estilo da fonte são aninhados em uma AnnotatedString, o texto não é renderizado de maneira correta (I77a9d).
Foram adicionados parâmetros comumente usados a Text(). Se você está criando um estilo de texto local para transmitir um pequeno número desses parâmetros, como Text(style = TextStyle(textAlign = TextAlign.Center)), pode fornecer os parâmetros diretamente: Text(textAlign = TextAlign.Center) (I82768).
O módulo ui-android-text foi renomeado como ui-text-android (I68cbe).