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.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
4 de setembro de 2024 1.7.0 - - 1.8.0-alpha01

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.

GrupoDescrição
compose.animationCrie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário.
compose.compilerTransforme funções @Composable e ative otimizações com um plug-in do compilador Kotlin.
compose.foundationCrie 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.materialCrie 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.material3Crie 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.runtimeElementos 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.uiComponentes 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.foundation:foundation:1.7.0"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.7.0")
}

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.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.8

Versão 1.8.0-alpha01

4 de setembro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha01. A versão 1.8.0-alpha01 contém estas confirmações.

Versão 1.7

Versão 1.7.0

4 de setembro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0. A versão 1.7.0 contém estas confirmações.

Mudanças importantes desde a versão 1.6.0

  • O desempenho de Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollable e Modifier.draggable foi melhorado significativamente. Como parte desse esforço, as seguintes alterações na API foram feitas, além das alterações internas
    • Foi adicionada uma nova API Indication, IndicationNodeFactory. Isso leva a implementações de indicação de melhor desempenho em comparação com a API rememberUpdatedInstance anterior, atualmente descontinuada. Para informações sobre a migração, consulte developer.android.com.
    • clickable / combinedClickable / selectable / toggleable agora aceita um parâmetro MutableInteractionSource anulável. Se for nulo, e a indicação fornecida for um IndicationNodeFactory, ela só poderá ser criada lentamente quando necessário, o que melhora a performance. Se você não estiver elevando e usando o MutableInteractionSource, é recomendável transmitir um valor nulo em vez de transmitir remember { MutableInteractionSource() }.
    • O uso de Indication#rememberUpdatedInstance foi descontinuado Ela tem uma alta penalidade de desempenho inevitável e impede outras otimizações. Em vez disso, use a nova API IndicationNodeFactory.
  • O BasicTextField que usa um TextFieldState agora está estável. Recomendamos que todos os sites de chamadas comecem a migrar do BasicTextField(value, onValueChange) para o BasicTextField(TextFieldState).
  • O uso do ClickableText foi descontinuado. Para adicionar links clicáveis ao texto, use BasicText com a nova anotação LinkAnnotation no AnnotatedString. LinkAnnotation permite o estilo personalizado com base no estado do link (por exemplo, focado, passando o cursor sobre ele).
  • Introdução de ContextualFlowRow e Enhanced FlowRow/Column com MaxLines e Overflow. Temos o prazer de anunciar melhorias nos testes experimentais de FlowRow e FlowColumn, agora com suporte a maxLines e overflow, além do lançamento do ContextualFlowRow e do ContextualFlowColumn. Essa atualização foi projetada para fornecer componentes de desempenho ideal, em que ContextualFlow* é perfeito para um grande número de itens que usam uma configuração maxLines pequena e o botão dinâmico +N "Ver mais", e FlowRow e FlowColumn é perfeito para um pequeno número de itens, menos de 100 itens. Importante: para manter o comportamento atual em FlowRow ou FlowColumn, em que todos os itens são compostos, independente de se encaixarem no máximo do eixo cruzado, defina o overflow como FlowRowOverflow.Visible ou FlowColumnOverflow.Visible durante a inicialização. Explore o ContextualFlowRowSample e o FlowRowSample para ver exemplos desses novos recursos em ação. (Ib9135, b/293577082).
  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyColumn e LazyRow. Anteriormente, era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (I2d7f7, b/150812265).
  • Implementação experimental de suporte para capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (ScrollCaptureCallback).
  • As origens de arrastar e deslizar NestedScroll estão sendo substituídas por UserInput e SideEffect para acomodar a definição estendida dessas origens, que agora inclui animações (Efeito colateral) e roda do mouse e teclado (UserInput).
  • As solicitações de pré-busca do LazyLayout podem ser marcadas como urgentes agora, o que significa que esperamos que esse item seja necessário no próximo frame e queremos ignorar o orçamento para trabalhar com mais antecedência (Id513f).
  • Compatibilidade com o recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
  • Várias APIs foram promovidas para a versão estável.
    • Pagers, ajustes, encartes de janela

Versão 1.7.0-rc01

21 de agosto de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-rc01. A versão 1.7.0-rc01 contém estas confirmações.

Correções de bugs

  • Correção de uma regressão em que a falha ocorria quando qualquer elemento estava focado dentro de um pai focalizável (ou clicável) e desativado. (b/317561689).

Versão 1.7.0-beta07

7 de agosto de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta07. A versão 1.7.0-beta07 contém estas confirmações.

Correções de bugs

  • As funções SemanticsNodeInteraction relacionadas à entrada de texto performTextReplacement, performTextInput e performTextClearance agora vão gerar erros de declaração quando forem chamadas no TextFields somente leitura. (I4ae8f).
  • Corrigida uma falha visual nos hiperlinks. (I23311).
  • Correção do modificador contentReceiver que não funcionava com alguns IMEs.
  • Geração de velocidade: impede a propagação de valores NaN na interface e na base do Compose.

Versão 1.7.0-beta06

24 de julho de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta06. A versão 1.7.0-beta06 contém estas confirmações.

Versão 1.7.0-beta05

10 de julho de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta05. A versão 1.7.0-beta05 contém estas confirmações.

Correções de bugs

  • Correção para o tratamento de valores Nan em SnapFlingBehavior e Pager.

Versão 1.7.0-beta04

26 de junho de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta04. A versão 1.7.0-beta04 contém estas confirmações.

Correções de bugs

  • Evite falhas ao medir linhas de texto muito grandes (por exemplo, com 10 mil caracteres) (8157ab).
  • Correção da medição de texto muito grande que causava falhas no novo BasicTextField (6b7575).
  • Reverte uma mudança de comportamento na medição de linhas/colunas que interrompe o uso de texto em determinados cenários (69e8ba).

Versão 1.7.0-beta03

12 de junho de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta03. A versão 1.7.0-beta03 contém estas confirmações.

Versão 1.7.0-beta02

29 de maio de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta02. A versão 1.7.0-beta02 contém estas confirmações.

Mudanças na API

  • Foi adicionada uma API experimental para configurar o comportamento de pré-busca de LazyGrids semelhante à API experimental existente para LazyLists. Isso inclui suporte à pré-busca de itens em LazyGrids aninhados. Assim como LazyListPrefetchStrategy, o padrão de implementação é pré-buscar os dois primeiros itens aninhados de cada grade, mas isso pode ser configurado pelas novas APIs LazyGridPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I591c4).
  • SemanticsProperties.Editable foi renomeado como IsEditable, e SemanticsPropertyReceiver.editable mudou para um valor isEditable. A propriedade agora é um booleano e sempre é especificada por campos de texto. (I8acd8).
  • Os valores padrão de basicMarquee foram movidos para o objeto MarqueeDefaults. (I12ff6).
  • O parâmetro basicMarquee delayMillis foi renomeado como repeatDelayMillis. (I12ff6).
  • Atualização da API para definir o estilo dos links: a TextLinkStyles foi movida para TextStyle e a TextDefaults foi removida do Material Design (I5477b).

Correções de bugs

  • LayoutCoordinates.introducesFrameOfReference foi renomeado como LayoutCoordinates.introducesMotionFrameOfReference para refletir melhor a finalidade Renomeação da função relacionada para calcular coordenadas com base nessa sinalização. (I3a330).
  • "Padrão" removido das propriedades MarqueeDefaults. (I1d8a0).
  • "Marquee" removido de MarqueeDefaults propriedades. (Iad4f4).
  • TextLinkStyles foi removido da classe TextStyle. Em vez disso, TextLinkStyles faz parte do construtor LinkAnntation e do método AnnotatedString.fromHtml (I90b2b).
  • Correção de um bug em que o Pager se ajustava ao se deslocar em direção a um limite enquanto já estava posicionado no limite. (I9f373, b/339171222).
  • O BTF2 agora tem gestos corretos de seleção do mouse. (Ibe8c6).

Contribuição externa

  • Enviar novamente "Crie um tipo de conteúdo para calcular o tempo de escrita/avaliação com base na pré-busca para aumentar a precisão" (Iea622).
  • O tipo de conteúdo para calcular o tempo de escrita/medição com base na pré-busca para melhorar a precisão (Ibccb1).
  • Modificadores de WindowInsetsPadding disponíveis no conjunto de origem comum (I070b2).

Versão 1.7.0-beta01

14 de maio de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta01. A versão 1.7.0-beta01 contém estas confirmações.

Mudanças na API

  • A propriedade KeyboardOptions.shouldShowKeyboardOnFocus foi adicionada novamente como oculta obsoleta para compatibilidade binária (I15cfe).
  • Modifier.anchoredDraggable agora inverte os deltas de arrastar por padrão para componentes com orientação horizontal quando usado em um layout RTL. (I3c6d9).
  • AnnotatedString.hasEqualsAnnotations agora é hasEqualAnnotations (I685c0).
  • A API para receber links com tema do Material Design no texto foi atualizada. Mais especificamente, os métodos do TextDefaults foram removidos para criar um LinkAnnotations com tema e analisar o HTML com links temáticos Em vez disso, foi adicionada uma classe TextLinkStyles, que permite estilizar os links como um parâmetro para o elemento combinável Text (I31b93).
  • onDragStarted e onDragStopped substituídos por callbacks que não são de suspensão. (I59de8).

Correções de bugs

  • Correção de um bug em que o Pager falhava quando a contentPadding era maior do que as restrições de entrada. O Pager agora força os valores negativos retornados de PageSize para 0. (Iba5d8, b/314008560).

Versão 1.7.0-alpha08

1o de maio de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha08. A versão 1.7.0-alpha08 contém estas confirmações.

Novos recursos

  • Menu de contexto de clique com o botão direito do mouse adicionado a BasicTextField e SelectionContainer com itens para ações recortar, copiar, colar e selecionar tudo. (If8c93, Ia2b49, I6f268).

Mudanças na API

  • As solicitações de pré-busca do LazyLayout podem ser marcadas como urgentes agora, o que significa que esperamos que esse item seja necessário no próximo frame e queremos ignorar o orçamento para trabalhar com mais antecedência (Id513f).
  • isPositionedByParentWithDirectManipulation foi renomeado como introducesFrameOfReference Observe que agora ela tem o efeito inverso, o que significa que, por padrão, a maioria das LayoutCoordinates introduz 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, use positionInLocalFrameOfReference(...). Ou positionInLocalLookaheadFrameOfReference de um LookaheadScope. (Ifc5f7).
  • onClicked foi renomeado como onClick dentro de LinkInteractionListener (Iaa35c).
  • Mude o lambda de ação para getScrollViewportLength de acordo com o feedback do conselho de API. (Ibc74a).
  • As APIs de delegação de escrita à mão da stylus foram renomeadas. (Ica45f, b/327271923).
  • TextInclusionStrategy.isInside foi renomeado como isIncluded. Tornar o tipo de retorno Paragraph/MultiParagraph#getRangeForRect() não anulável (I51f26).

Correções de bugs

  • "Selecionar tudo" adicionado a todos os menus contextuais de texto em SelectionContainer. (Ib750e, b/240143283).
  • A captura de tela longa foi corrigida para rolar contêineres com reverseScrolling=true. (I7c59c).
  • Correção de um problema em que o currentValue do AnchoredDraggableState mudava ao se aproximar dos limites do estado (Iea30b, b/333846848).

Contribuição externa

  • PrefetchExecutor renomeado como -> PrefetchScheduler para refletir melhor as próprias responsabilidades. (Ib9154).
  • Foi adicionado suporte à pré-busca de itens em LazyLists aninhado (por exemplo, um LazyColumn que renderiza LazyRows aninhado). Essa mudança deve reduzir a queda de frames durante a rolagem da LazyLists. O padrão de implementação é fazer a pré-busca dos dois primeiros itens aninhados. No entanto, esse comportamento pode ser controlado pelas novas APIs LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I51952).

Versão 1.7.0-alpha07

17 de abril de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha07. A versão 1.7.0-alpha07 contém estas confirmações.

Novos recursos

  • Foi adicionado um objeto TextDefaults que contém métodos para criar um LinkAnnotation e analisar a string com tag HTML que aplica MaterialTheme aos links. (I98532, b/139312671).
  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyVerticalGrid e LazyHorizontalGrid. Anteriormente, era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (Ib7d12, b/330510929).
  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyVerticalStaggeredGrid e LazyHorizontalStaggeredGrid. Anteriormente, era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (I69bc9, b/330511290).

Mudanças na API

  • Adiciona ContextMenuColors e o LocalContextMenuTheme ProvidableCompositionLocal associado. Para modificar as cores do menu de contexto nos campos de texto e no texto selecionável, informe o local de composição. (Ifa154).
  • Os links de texto receberam a opção de estilo de estado pressionado, além do estilo normal, passando o cursor e em foco. (I5f864, b/139312671).
  • Introdução do ViewConfiguration.HandwritingGestureLineMargin para gestos de escrita à mão. Suporte a gestos de escrita à mão para BasicTextField. (Ie6e13, b/325660505).
  • Removemos DelegatableNode.scrollIntoView da versão 1.7, já que não tínhamos tempo para terminar de estabilizar o restante da plataforma de API relacionada. Essa função será reintroduzida na versão 1.8 (I6cf61, b/333421581, b/332900232).
  • Ao consultar as coordenadas de layout, agora é possível usar o argumento excludeDirectManipulationOffset para excluir o deslocamento definido pelos layouts pais que posicionaram os filhos usando Placeable.PlacementScope.withDirectManipulationPlacement. Da mesma forma, um layout que muda a posição dos filhos com frequência pode agora colocá-los usando withDirectManipulationPlacement (como o recurso de rolagem, implementado por padrão). Isso ajuda as animações baseadas em approachLayout a serem mais intuitivas, permitindo diferenciar o deslocamento a ser animado e o que aplicar diretamente ao decidir animar a abordagem. (I60ec7).
  • Introdução de requestScrollToItem para LazyStaggeredGrid. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamando requestScrollToItem. Isso não muda o comportamento existente, a menos que requestScrollToItem seja chamado. (I63983).
  • Apresente requestScrollToPage no Pager. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamando requestScrollToPage. Isso não muda o comportamento existente, a menos que requestScrollToPage seja chamado. (Ic4213).
  • requestScrollToItem foi introduzido para LazyGrids. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamando requestScrollToItem. Isso não muda o comportamento existente, a menos que requestScrollToItem seja chamado. (I0a7a0).
  • ClickableText foi marcado como descontinuado. Para adicionar links ao texto, crie uma AnnotatedString com um LinkAnnotation correspondente ao seu link e transmita esse AnnotatedString para o elemento combinável Text (I34d4b, b/323346994).
  • O uso de UrlAnnotation foi descontinuado. Utilize LinkAnnotation.Url. Se você estiver usando temas do Material Design, use o objeto TextDefaults para criar a anotação com aplicação de temas do Material Design (I8d180, b/323346545).
  • String.parseAsHtml foi renomeado como AnnotatedString.Companion.fromHtml (I43dcd).
  • Foram adicionados argumentos de estilo (linkStyle, focusedLinkStyle, hoveredLinkStyle) e um listener de interação de link ao método parseAsHtml. Ao analisar a string marcada como HTML com tags <a>, o método cria um LinkAnnotation.Url para cada uma dessas tags e transmite os objetos de estilo e o listener de interação de link para cada anotação. (I7c977).
  • LinkAnnotation agora usa os argumentos de estilo baseado em estado e uma LinkInteractionListener. Adicione essa anotação ao AnnotatedString para receber um hiperlink. Ao transmitir focusedState e/ou hoveredState, você pode definir a configuração visual para links quando eles estiverem em foco e/ou passarem o cursor sobre eles. (I81ce4, b/139312671).
  • A flag de recurso para capturas de tela longas foi removida. (I28648, b/329128246).
  • LazyColumn agora renderizará cabeçalhos fixos corretamente em capturas de tela longas. (I8d239, b/329296635).
  • Estabilização da maioria das APIs experimentais restantes que foram introduzidas com o novo BasicTextField. (I714e2).
  • Adição do parâmetro textObfuscationCharacter a BasicSecureTextField, que controla qual caractere usar ao ofuscar o conteúdo. (I0588b).
  • As origens de arrastar e deslizar NestedScroll estão sendo substituídas por UserInput e SideEffect para acomodar a definição estendida dessas origens, que agora inclui animações (Efeito colateral) e roda do mouse e teclado (UserInput). (I40579).
  • Introdução do LocalBringIntoViewSpec, um comportamento de rolagem de foco dependente da plataforma que é aplicado à camada do modificador rolável. (I27aa5, b/317453911).
  • TextFieldCharSequence foi removido. TextFieldBuffer.originalValues foi substituído por TextFieldBuffer.originalText e TextFieldBuffer.originalSelection. (I2c7d6).
  • ImeOptions.hintLocales não é mais anulável. Se você quiser transmitir uma lista de localidades vazia, use LocaleList.Empty. (Ic5bc4).
  • getOffsetFractionForPage foi renomeado como getOffsetDistanceInPages (Ia05e2).

Correções de bugs

  • Quando InputTransformations são mescladas com next, as KeyboardOptions agora são mescladas corretamente pelas opções individuais usando o novo método KeyboardOptions.merge. (Ie5304, b/295951492).
  • O targetValue do AnchoredDraggableState agora não considera mais os limites de posicionamento. Agora, ele tem um limite implícito de 50%, o que significa que o targetValue muda no ponto médio entre duas âncoras. (I82c2c).

Contribuição externa

  • Renomeação de duas APIs de rolagem (I56a75).

Versão 1.7.0-alpha06

3 de abril de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha06. A versão 1.7.0-alpha06 contém estas confirmações.

Novos recursos

  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyColumn e LazyRow. Anteriormente, era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (I2d7f7, b/150812265).
  • Os clientes de LazyColumn/LazyRow agora podem desativar a manutenção de um índice com base na chave para a próxima passagem de medição chamando um LazyListState.requestToScroll que não seja de suspensão. (I98036, b/209652366).
  • Adição do método parseAsHtml para strings com estilo: ele permite converter uma string marcada com tags HTML em AnnotatedString. Nem todas as tags são compatíveis. Por exemplo, ainda não é possível exibir listas com marcadores. (I84d3d).
  • Implementação experimental de suporte 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 flag ComposeFeatureFlag_LongScreenshotsEnabled como "true". Essa sinalização será removida antes da versão 1.7 Beta. (I2b055, b/329296471).
  • A nova API GraphicsLayer foi lançada para oferecer mais flexibilidade no posicionamento e na renderização de instâncias GraphicsLayer e oferecer suporte a recursos de renderização intrínsecos sem precisar coordenar com implementações combináveis para especificar instâncias do modificador GraphicsLayer.

Mudanças na API

  • Todos os parâmetros KeyboardOptions agora têm um valor não especificado por padrão. Método KeyboardOptions.merge adicionado.
  • KeyboardOptions.autoCorrect foi renomeado como autoCorrectEnabled e definido como anulável, em que "null" indica que nenhum valor foi especificado. (Ia8ba0, b/295951492).
  • outOfBoundsPageCount foi renomeado como beyondViewportPageCount (I129c6).
  • fun ClipEntry.getMetadata() é alterado para val ClipEntry.clipMetadata. (I50155).
  • TextFieldState.valueAsFlow() foi removido. Prefiro usar snapshotFlow { state.text } ou snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629).
  • Os parâmetros InputTransformation.transformInput foram reorganizados. Contato removido: originalValue: TextFieldCharSequence. Em vez disso, TextFieldBuffer agora carrega esse valor com o mesmo nome. O parâmetro valueWithChanges: TextFieldBuffer também foi removido. TextFieldBuffer agora é o escopo do receptor na função. (I919cc).
  • A variante BasicTextField(state) e BasicSecureTextField agora usam KeyboardActionHandler em vez de KeyboardActions para processar ações realizadas pelo teclado de software. (I58dda).
  • APIs de delegação de escrita à mão com a stylus para oferecer suporte à escrita à mão com a stylus em algo falso campos de entrada de texto. (I9c09c, b/327271923).
  • KeyboardOptions.shouldShowKeyboardOnFocus foi renomeado como showKeyboardOnFocus (Ib4b7a, b/295951492).
  • Remoção do parâmetro hintMediaTypes de Modifier.contentReceiver. Recomendamos que os desenvolvedores verifiquem o tipo de mídia do TransferableContent recebido, porque ele pode ser incompatível com o hintMediaTypes configurado. (I82f99).
  • Reordenamos os parâmetros de BasicSecureTextField. Remoção dos parâmetros keyboardType e imeAction em favor da classe KeyboardOptions completa, mantendo os mesmos padrões adequados para BasicSecureTextField O parâmetro scrollState também foi removido. (Ibbfa9).
  • O tipo de TextFieldState.text é alterado de TextFieldCharSequence para apenas CharSequence. Portanto, TextFieldState.selection: TextRange e TextFieldState.composition: TextRange? foram adicionados para ler os valores de seleção e composição atuais diretamente do objeto de estado.
  • TextFieldState.forEachTextValue foi removido. (Idb2a2).
  • Funções ClipboardManager.getClipMetadata e ClipboardManager.hasClip removidas Use clipEntry.getMetadata() para ler os metadados da entrada do clipe atual. Além disso, confira o resultado de ClipboardManager.getClip, caso ele seja nulo ou não, para entender se a área de transferência tem um clipe atual. (I50498).
  • ClipboardManager.setClip agora aceita "null" para poder limpar a área de transferência. (I7d2e9).
  • ReceiveContentListener é convertido em uma interface de função. Além disso, a sobrecarga Modifier.receiveContent que usa uma lambda foi removida, já que agora ReceiveContentListener é uma interface de função
  • Modifier.receiveContent foi renomeado como Modifier.contentReceiver. (I1e6af).
  • TransferableContent.consumeEach foi renomeado como TransferableContent.consume (I1e462).
  • rememberTextFieldState mudou para uma API estável. (I37999).

Correções de bugs

  • Correção de um bug em que a variante BasicTextField(state) não funcionava com teclados CJK(baseados em composição). (I54425).
  • Correção de um bug em que o Modifier.dragAndDropTarget() podia referenciar dados desatualizados em determinados cenários com a reutilização de Modifier.Node (I05bb1).
  • Reversão de uma mudança recente no contrato em que as chamadas AnchoredDraggableState#anchoredDrag seriam ajustadas ao final de uma operação anchoredDrag. (I95715).

Versão 1.7.0-alpha05

20 de março de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha05. A versão 1.7.0-alpha05 contém estas confirmações.

Mudanças na API

  • Remoção da composição experimental LocalTextLinkStyle local para definir o estilo de hiperlinks (Iebfa7).
  • A substituição experimental de BasicText com o argumento onLinkClicked foi removida Uma API substituta para o suporte a hiperlinks será lançada no futuro. (I107d5).
  • Remoção dos métodos e propriedades relacionados aos Codepoints em TextFieldState e TextFieldBuffer. Os sufixos inChars também foram removidos das APIs restantes relacionadas à seleção e à composição (Ief7ce).
  • O currentValue do AnchoredDraggable agora será atualizado ao transmitir por um ponto de fixação. Use settledValue para receber a semântica currentValue anterior, atualizada apenas ao fixar uma âncora. O progresso agora é exposto como uma função (que exige pontos de partida e de chegada) em vez de uma propriedade. (Ibe6e8, b/318707189, b/298271489, b/294991954).
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits e TextFieldDecorator receberam upgrade para a versão estável. (I9582b).
  • InterceptPlatformTextInput foi introduzido para ajudar a criar testes de baixo nível relacionados ao IME e outros casos de uso de IME de baixo nível. O uso de PlatformTextInputTestOverride foi descontinuado. (I862ed, b/322680547).
  • Divisão de restrictedConstraints() em dois métodos: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd).

Contribuição externa

  • Foram adicionadas duas novas APIs isLastScrollForward/isLastScrollBackward para verificar a direção de rolagem da ação de rolagem mais recente e retornar "false" se ainda não houver nenhuma. (I63a0e).

Versão 1.7.0-alpha04

6 de março de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha04. A versão 1.7.0-alpha04 contém estas confirmações.

Mudanças na API

  • Compatibilidade com o recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
  • hintLocales foi adicionado a KeyboardOptions para permitir que TextFields sugira a IMEs com localidades específicas para predefinir um idioma preferido. (Id18c2).
  • Remoção das sobrecargas experimentais BasicTextField2 e BasicSecureTextField que usavam os parâmetros value: String e onValueChange: () -> String. (I568b4).
  • Adicione uma função applySemantics opcional a InputTransformation para influenciar a semântica da BasicTextField2 em que ela é aplicada. (I74a2f, b/170648072).
  • Neste CL, adicionamos a ação semântica GetScrollViewportLength para que possamos exibir informações sobre os componentes que estão sendo rolados no Compose para o sistema de acessibilidade. Essa CL também aplica o uso dessa propriedade nas listas roláveis de fundação. (Ic5fa2).
  • BasicTextField2 foi renomeado como BasicTextField. (Ie5713).
  • O FocusRequester.createRefs agora está estável (I4d92c, b/261436820).
  • DelegatableNode.scrollIntoView() foi introduzido para permitir que os nós modificadores façam solicitações scrollIntoView diretamente. (I2b3b7, b/299939840).
  • O DelegatableNode.requireView() foi introduzido para permitir que os nós modificadores recebam o View atual do Android sem ler um local de composição. (I40768).
  • Informações de layout contextuais no escopo da linha de fluxo contextual e da coluna de fluxo contextual, apresentando o índice de linha, a posição e as restrições de largura e altura máximas para permanecer na posição especificada. Os itens que excedem a largura/altura máxima podem fluir para a próxima linha ou ser omitidos com base nas configurações de sobrecarga. (Id13f8, b/292114798).

Correções de bugs

  • Correção de um bug em que, em determinadas condições, alternar os atributos enabled ou readOnly de TextField causava uma falha (Iae17b).

Versão 1.7.0-alpha03

21 de fevereiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha03. A versão 1.7.0-alpha03 contém estas confirmações.

Mudanças na API

  • O DelegatableNode.requireLayoutCoordinates() foi introduzido como uma forma de acessar o LayoutCoordinates atual de um Modifier.Node sem precisar substituir o onPlaced e armazenar as coordenadas em uma propriedade. (Ia8657).
  • O DelegatableNode.currentLayoutCoordinates foi introduzido como uma forma de acessar o LayoutCoordinates atual de um Modifier.Node sem precisar substituir o onPlaced e armazenar as coordenadas em uma propriedade. (Iaebaa).
  • Otimizações de performance em DraggableAnchors usado por AnchoredDraggable. (I89cff).
  • A BasicTextField2 e as APIs relacionadas no pacote androidx.compose.foundation.text2 foram movidas para androidx.compose.foundation.text. (I9f635).
  • BasicTextField2 não aceita mais um parâmetro CodepointTransformation. Use BasicSecureTextField ou OutputTransformation. (Id34ff).
  • Foi adicionado um método para comparar apenas as anotações de dois AnnotatedStrings. (I32659).
  • Apresentação do ContextualFlowRow e do Enhanced FlowRow/Column com MaxLines e Overflow. Temos o prazer de anunciar melhorias nos testes experimentais de FlowRow e FlowColumn, agora com suporte a maxLines e overflow, além do lançamento do ContextualFlowRow e do ContextualFlowColumn. Essa atualização foi projetada para fornecer componentes de desempenho ideal, em que ContextualFlow* é perfeito para um grande número de itens que usam uma configuração pequena de maxLines e o recurso dinâmico +N "Ver mais", enquanto FlowRow e FlowColumn são perfeitos para um pequeno número de itens, menos de 100 itens. Importante: para manter o comportamento atual em FlowRow ou FlowColumn, em que todos os itens são compostos, independente de se encaixarem no máximo do eixo cruzado, defina overflow como FlowRowOverflow.Visible ou FlowColumnOverflow.Visible durante a inicialização. Explore o ContextualFlowRowSample e o FlowRowSample para ver exemplos desses novos recursos em ação. (Ib9135, b/293577082).

Correções de bugs

  • A animação do cursor não solicita mais frames entre os estados ativado e desativado (Ia2253).
  • KeyboardOptions min construtores de cópia descontinuados agora copiarão corretamente todas as propriedades (If12de).

Versão 1.7.0-alpha02

7 de fevereiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha02. A versão 1.7.0-alpha02 contém estas confirmações.

Mudanças na API

  • HorizontalPager, VerticalPager e PagerState são promovidos para a versão estável. (I67660, b/316966909).
  • O local de composição LocalTextLinkStyle foi adicionado, permitindo mudar o estilo dos links no texto em todo o app Se você estiver usando seu próprio tema no app, defina essa composição localmente de acordo com o tema. Ao usar o tema do Material Design, a cor do link será definida por padrão como a cor primária do Material Design. (I7eb10).
  • Introdução do modificador receiveContent, que oferece aos desenvolvedores uma maneira de receber conteúdo avançado no Jetpack Compose.
  • O receiveContent se integra ao BasicTextField2 para aceitar conteúdo avançado fornecido pelo teclado do software ou pela ação de colar na área de transferência. (I81b72).
  • Nessa mudança, estamos substituindo SnapFlingBehavior por TargetedFlingBehavior no pager para desbloquear outros casos de uso e oferecer mais flexibilidade. (I762ea).
  • Nessa mudança, estamos tornando as APIs do Snapping estáveis. Também estamos excluindo alguns códigos de teste e adicionando mais exemplos ao Snapping. (Id8da9).
  • Introdução de TargetedFlingBehavior, um FlingBehavior que permite a propagação de informações sobre o estado da animação em andamento e o deslocamento de rolagem de destino. (I6a207).

Correções de bugs

  • O BasicTextField2 agora mantém o cursor visível durante a digitação quando ele tiver sido rolado para fora da visualização ou sair da visualização devido a uma entrada. (Ieb856, b/237190748).

Contribuição externa

  • Foi adicionada uma API experimental para configurar o comportamento de pré-busca de LazyLists. (I022a4).

Versão 1.7.0-alpha01

24 de janeiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha01. A versão 1.7.0-alpha01 contém estas confirmações.

Novos recursos

  • Um novo Indication API, IndicationNodeFactory, foi adicionado. Isso leva a implementações de Indication de melhor performance em comparação com a API rememberUpdatedInstance anterior, atualmente descontinuada. Para informações sobre a migração, consulte developer.android.com.
  • clickable / combinedClickable / selectable / toggleable agora aceita um parâmetro MutableInteractionSource anulável. Se for nulo e a Indication fornecida for uma IndicationNodeFactory, a Indication só poderá ser criada lentamente quando necessário, o que melhora a performance. Se você não estiver elevando e usando o MutableInteractionSource, é recomendável transmitir um valor nulo.

Mudanças na API

  • A DecayAnimation foi introduzida no AnchoredDraggable. Essa mudança adiciona um parâmetro decayAnimationSpec a AnchoredDraggable, permitindo usar uma animação de redução ao definir uma das âncoras. A mudança também inclui renomear o animationSpec atual para snapAnimationSpec, o que ajuda a entender o caso de uso de cada especificação.
  • O BasicTextField2 está disponível para uso experimental. Ele precisa estar aproximadamente em paridade de recursos com BasicTextField, e o comportamento precisa estar pronto para produção. No entanto, a API continua sendo experimental por enquanto. Antes da estabilização, ele será renomeado como BasicTextField e movido para o mesmo pacote.
  • O primeiro rascunho da API OutputTransformation foi introduzido para BasicTextField2. Essa API substitui a maioria dos casos de uso de VisualTransformation no BasicTextField antigo. No entanto, ela ainda não está completa e algumas coisas não funcionarão corretamente, mas gostaríamos de receber seus comentários sobre a usabilidade da API em seus casos de uso. (aosp/2708848).
  • Introdução de LinkAnnotation, que permite adicionar links e elementos clicáveis ao texto. O recurso de vinculações ainda não foi concluído. Em breve, mais mudanças na API vão acontecer.
  • Lançamento do modificador receiveContent, que oferece aos desenvolvedores uma maneira de receber conteúdo avançado no Jetpack Compose.
  • O receiveContent se integra ao BasicTextField2 para aceitar conteúdo avançado fornecido pelo teclado de software ou colado da área de transferência.
  • KeyboardOptions.shouldShowKeyboardOnFocus permite desativar o comportamento padrão de BasicTextField de solicitar um teclado de software em foco.
  • O uso de TextInputService e LocalTextInputService foi descontinuado. Use PlatformTextInputModifierNode para fazer a integração direta com as APIs do IME da plataforma. (aosp/2862698).
  • O uso de Indication#rememberUpdatedInstance foi descontinuado Ela tem uma alta penalidade de desempenho inevitável e impede outras otimizações. Em vez disso, use a nova API IndicationNodeFactory.

Correções de bugs

  • BasicTextField agora vai pré-validar uma pequena seleção de mapeamentos de deslocamento quando VisualTransformation for transmitido Isso ajuda a detectar erros comuns de programação que levam a exceções irrecuperáveis em passes de medição ou desenho posteriores. Ao serem gerados durante a composição, é mais provável que os desenvolvedores vejam esses erros durante o desenvolvimento, o que ajuda a evitar falhas de produção. (I0fd42).
  • VisualTransformation não será gerado se você retornar um índice inválido para um índice inválido (b/316401857 ).

Versão 1.6

Versão 1.6.8

12 de junho de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.8. A versão 1.6.8 contém estas confirmações.

Versão 1.6.7

1o de maio de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.7. A versão 1.6.7 contém estas confirmações.

Versão 1.6.6

17 de abril de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.6. A versão 1.6.6 contém estas confirmações.

Correções de bugs

  • Correção de um bug em que, em determinadas condições, alternar os atributos enabled ou readOnly de TextField causava uma falha (Iae17b).

Versão 1.6.5

3 de abril de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.5. A versão 1.6.5 contém estas confirmações.

Correções de bugs

  • Adição de registros de depuração a bugs difíceis de reproduzir na Linha/Coluna: (b/300280216 e b/297974033).

Versão 1.6.4

20 de março de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.4. A versão 1.6.4 contém estas confirmações.

Correções de bugs

  • Um gesto de seleção de tocar e manter pressionado e arrastar para sair dos limites do layout do texto no primeiro frame da ação de arrastar não falha mais. (Icdf90, b/325307463).

Versão 1.6.3

6 de março de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.3. A versão 1.6.3 contém estas confirmações.

Versão 1.6.2

21 de fevereiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.2. A versão 1.6.2 contém estas confirmações.

Correções de bugs

  • Correção de AnimateContentSize que não era redefinido corretamente. (I07051).
  • Correção do problema em que intrinsicHeight do texto era armazenado em excesso em cache em algumas circunstâncias. (3cd398, b/217910352).

Versão 1.6.1

7 de fevereiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.1. A versão 1.6.1 contém estas confirmações.

Correções de bugs

  • Correção da medida de grade escalonada quando a rolagem é acima do limite. (bffc39).
  • Adiciona verificação para layout com dimensões grandes. (e74af5).
  • Correção do posicionamento de itens de tamanho 0 no início da grade escalonada. (785f94).
  • Chame o callback onRelease na mesma ordem que onforgotten. (31ce3b).

Versão 1.6.0

24 de janeiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.0. A versão 1.6.0 contém estas confirmações.

Mudanças importantes desde a versão 1.5.0

  • Novo modificador Modifier.anchoredDraggable, que desbloqueia a capacidade de arrastar e animar entre conjuntos predefinidos de âncoras. Esse modificador foi projetado para substituir Modifier.swipeable. Aprenda a usá-la e migrar do Modifier.swipeable no guia de migração.
  • A funcionalidade de arrastar e soltar entre apps e componentes foi adicionada. Consulte DragAndDropTarget, Modifier.dragAndDropSource e outras APIs para começar
  • Modifier.draggable2D é o novo modificador que facilita o recurso de arrastar em 2D. Consulte Exemplo.
  • AndroidExternalSurface e AndroidEmbeddedExternalSurface foram adicionadas para facilitar a adição de componentes orientados por superfície no Compose.
  • Várias mudanças e melhorias de API em Pager e snapFlingBehaviour.
  • Várias APIs de foco, texto e encartes foram promovidas para APIs estáveis

Versão 1.6.0-rc01

10 de janeiro de 2024

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-rc01. A versão 1.6.0-rc01 contém estas confirmações.

Mudanças na API

  • O construtor de extensão DragAndDropTarget() foi removido. Crie uma nova instância usando object: DragAndDropTarget {}. (I32318).

Versão 1.6.0-beta03

13 de dezembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta03. A versão 1.6.0-beta03 contém estas confirmações.

Correções de bugs

  • Foi corrigida a falha que afetava textos muito grandes, medidos com restrições infinitas. (I1a7df, b/312294386).
  • PlatformImeOptions agora é uma classe concreta em vez de uma interface. (If40a4).

Versão 1.6.0-beta02

29 de novembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta02. A versão 1.6.0-beta02 contém estas confirmações.

Correções de bugs

  • Correção de canScroll que não era atualizado após a rolagem somente de layout. (I60a86).
  • Correção para Modifier.animateItemPlacement() e LookaheadScope após rolagens pequenas (I3a2b7).

Versão 1.6.0-beta01

15 de novembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta01. A versão 1.6.0-beta01 contém estas confirmações.

Mudanças na API

  • O modificador DragAndDropTarget agora recebe o DragAndDropTarget de recebimento explicitamente e tem uma lambda para ativar uma sessão de arrastar e soltar. Agora há duas funções de fábrica para um DragAndDropModifierNode. Um para receber transferências e outro para transferir dados (I69481).
  • maximumFlingVelocity foi atualizado para ser representado como ponto flutuante. Atualizamos a documentação para ser mais claro sobre a unidade maximumFlingVelocity. (I8adc7).
  • onDragAndDropStart neste local: DragAndDropModifierNode fábrica foi renomeada como acceptDragAndDropTransfer.

    O acceptsDragAndDropTransfer foi adicionado ao Modifier do dragAndDropTarget para ser aceito em uma sessão de arrastar e soltar. Essa lambda retorna uma DragAndDropTarget se tiver interesse em uma sessão de arrastar e soltar. Outros lambdas para processamento de eventos de arrastar foram substituídos por esse

    Uma função de fábrica DragAndDropTarget foi adicionada para receber de sessões de arrastar e soltar (Iebf3a).

  • A exposição de startDragImmediately no AnchoredDraggable oferece controle para detectar gestos de arrastar ao usá-lo. É útil defini-la quando o widget está sendo animado para uma âncora de destino. Consulte Exemplo. (Ie6d13, b/285139987).

  • As APIs de dica de base agora estão @ExperimentalFoundationApi (I30b0b).

  • A DragAndDropInfo removida como um tipo DragAndDropModifierNode.drag agora usa parâmetros para o transferData, o tamanho da decoração e a lambda DrawScope de decoração de arrastar.

    DragAndDropTarget tem métodos para eventos de arrastar e soltar específicos em vez de ser um único método abstrato.

    onDragAndDropEvent na função de fábrica para um DragAndDropModifierNode foi renomeado como onDragAndDropStart para comunicar melhor que o DragAndDropTarget fornecido é válido apenas para uma determinada sessão de arrastar e soltar

    O DragAndDropEventType foi removido (I645b1).

  • PlatformTextInputModifierNode.runTextInputSession foi renomeado como establishTextInputSession (I03cd0).

  • Substituir OriginalText por TextSubstitution. (Ifa5a8).

  • PlatformTextInputModifierNode.textInputSession foi renomeado como runTextInputSession (Ie9c6b).

  • Os filhos de SubcomposeLayout (e layouts como LazyColumn baseados nele) que são retidos para serem reutilizados no futuro são considerados desativados. A nova API de teste assertIsDeactivated() foi introduzida para testar esses nós. As outras APIs de teste filtram os nós desativados por padrão. (I2ef84, b/187188981).

  • O parâmetro clippingEnabled de Modifier.magnifier foi renomeado como clip.

  • O parâmetro magnifierCenter de Modifier.magnifier se torna anulável, preservando o mesmo comportamento padrão. (I6aa66).

  • As APIs SwipeToReveal do Material Design (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. Esta é uma alteração interruptiva. Consulte a demonstração e o exemplo de código para ver exemplos de como usar a nova API. (Ia8943).

Correções de bugs

  • Implemente igual e hashcode para PageSize.Fixed. (Ie3ede, b/300134276).
  • Correção de um bug que fazia o layout do BasicText não diminuir quando minWidth mudasse e minWidth menos que as restrições de medida inicial maxWidth (Idb19c).
  • Foi adicionado suporte ao renderizador para "Varredura Gradiente" em ArcLine. (I4d5bb).
  • Correção do problema de compatibilidade binária com a mudança do Window Inset (Iee695).
  • A camada principal do Material Design foi removida para o chip/botão do Material3, já que as microcomparações têm um desempenho melhor sem ela. (I55555).

Versão 1.6.0-alpha08

18 de outubro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha08. A versão 1.6.0-alpha08 contém estas confirmações.

Novos recursos

  • Modifier.draggable2D é o novo modificador que facilita o recurso de arrastar em 2D. Consulte a Amostra (Id95f5, b/214412658).

Mudanças na API

  • Modifier.dragAndDrawSource teve o lambda onDrawDragShadow renomeado como drawDragDecoration, e DragAndDropInfo teve o parâmetro de tamanho renomeado como dragDecorationSize. (Id0e30, b/303904810).
  • O parâmetro decorationBox de BasicTextField2 foi renomeado como decorator. O tipo dela também é mudado para uma interface divertida equivalente TextFieldDecorator. (I23c1c).

Correções de bugs

  • Melhoramos a documentação sobre BasicTextField sobre os requisitos do onValueChange. (I90fc9, b/160257648).

Versão 1.6.0-alpha07

4 de outubro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha07. A versão 1.6.0-alpha07 contém estas confirmações.

Mudanças na API

  • Introdução de PlatformTextInputMethodTestOverride para programar testes para editores de texto personalizados. (Id159b).
  • GraphicsSurface foi renomeado como AndroidExternalSurface (I11680).
  • A sinalização temporária DisableNonLinearFontScalingInCompose foi adicionada para desativar o dimensionamento de fontes não linear. Defina DisableNonLinearFontScalingInCompose = true nos testes se precisar de tempo para limpá-los. Essa flag será removida no Compose 1.6.0-beta01. (Ic9486).
  • Adição de coleções ColorList e ColorSet que evitam alocações. (I744bd).
  • Essa mudança remove o shortSnapVelocityThreshold, que foi transformado em um detalhe das implementações de SnapLayoutInfoProvider. (I65f6d).
  • O modificador dragAndDropSource foi adicionado para iniciar sessões de arrastar e soltar e o modificador dragAndDropTarget para receber de sessões de arrastar e soltar (Ib7828, b/286038936).
  • Atualizamos a documentação de SnapPositionInLayout e o método de posição. Os paddings de conteúdo foram introduzidos no método de posição no SnapPositionInLayout. (Id7938, b/300116110).
  • Adição de UndoState a TextFieldState, que permite desfazer/refazer mudanças feitas pelo usuário (Icc024).

Correções de bugs

  • Correção de basicMarquee que não era animado após a mudança de velocidade. (Id2e77, b/297974036).

Versão 1.6.0-alpha06

20 de setembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha06. A versão 1.6.0-alpha06 contém estas confirmações.

Novos recursos

  • Novos wrappers combináveis para SurfaceView, TextureView: GraphicsSurface() e EmbeddedGraphicsSurface(). Trata-se de uma API experimental e está sujeita a mudanças e modificações. (I9ddb2).
  • Modifier.magnifier() agora é uma API estável. Isso inclui a remoção de MagnifierStyle em favor dos parâmetros in-line no próprio modificador (I83bec, b/298381260, b/262367109, b/261438887).

Mudanças na API

  • updateCurrentPage e updateTargetPage foram introduzidos na ScrollScope. Essas são as últimas partes necessárias para permitir a personalização da rolagem animada pelo PagerState.scroll. (I9cad5, b/267744105, b/243786897).
  • Remover a densidade de SnapFlingBehavior. Todas as implementações de SnapLayoutInfoProvider já têm uma maneira de acessar a densidade. O escopo do receptor pode ser removido, o que levará a uma implementação menos complexa de SnapFlingBehavior e SnapLayoutInfoProviders. (I153c3).
  • Mais modificadores marcados como estáveis. (I56af1, b/298046462).
  • SnapStepSize foi removido de SnapLayoutInfoProvider O cálculo deve ser feito usando as informações do layout e fornecido por meio da abordagem ou dos deslocamentos de ajuste. (If320c).

Mudanças de comportamento

  • O Compose agora usa o dimensionamento de fontes não linear para melhorar a legibilidade e a acessibilidade. Quando escala de fonte > Nas configurações do sistema, o texto pequeno aumentará de tamanho normalmente, mas o texto já grande aumentará um pouco. Além disso, as alturas de linha definidas em SP serão ajustadas automaticamente para permanecerem proporcionais à altura pretendida da escala de 100%. Consulte as Práticas recomendadas para dimensionamento de fontes para mais informações. (I11518).

Correções de bugs

Versão 1.6.0-alpha05

6 de setembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha05. A versão 1.6.0-alpha05 contém estas confirmações.

Mudanças na API

  • Foram adicionadas sobrecargas para BasicSecureTextField que aceitam um valor imutável e um callback para mudar esse valor, assim como a API BasicTextField atual. (Ia4882).
  • Modifier.preferKeepClear() foi adicionado para marcar como elemento combinável como preferencial para se manter longe de janelas flutuantes na API 33 e versões mais recentes. (Ib51d5, b/297260115).
  • As velocidades de rolagem nos componentes de visualização, como ScrollView e RecyclerView, são limitadas a ViewConfiguration.ScaledMaximumFlingVelocity. O Compose agora contém a própria versão da maximumFlingVelocity, que agora se aplica ao Draggable. (Ibf974).
  • As sobrecargas Pager e PagerState descontinuadas foram removidas (Iea07e).
  • Adição de BasicTooltipBox a compose.foundation e atualização de PlainTooltipBox e RichTooltipBox para usar TooltipBox com novos elementos combináveis PlainTooltip e RichTooltip. (I79e1d).

Versão 1.6.0-alpha04

23 de agosto de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha04. A versão 1.6.0-alpha04 contém estas confirmações.

Mudanças na API

  • A interface ReusableComposition foi adicionada para gerenciar o ciclo de vida e a reutilização de subcomposições (I812d1, b/252846775).
  • Modifier.focusGroup foi promovido para APIs estáveis. (I7ffa3).
  • Foram adicionadas sobrecargas para BasicTextField2 que aceitam um valor imutável e um callback para mudar esse valor, assim como a API BasicTextField atual. (I3f2b8).
  • GridItemSpan::currentLineSpan agora é uma API estável. (Icc29c).
  • A tela que aceita contentDescription agora é uma API estável. (Ib3d29).
  • viewportSize foi introduzido a ScrollState, uma maneira de saber o tamanho do viewPort do componente que usa ScrollState depois que a medição acontece. (I8b85a, b/283102682).
  • Correção de um problema em que a pré-busca no Pager não correspondia ao comportamento nas visualizações. (I93352, b/289088847).
  • Modifier.consumeWindowInsets(PaddingValues) agora está estável.
    • A API Deprecated Modifier.consumedWindowInsets foi removida. Use Modifier.consumeWindowInsets. (Id72bb).

Versão 1.6.0-alpha03

9 de agosto de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha03. A versão 1.6.0-alpha03 contém estas confirmações.

Mudanças na API

  • A sobrecarga de LazyLayout foi adicionada, e ela aceita uma lambda de LazyLayoutItemProvider, não um objeto simples como antes. A sobrecarga anterior foi descontinuada. (I42a5a).
  • Foi adicionado suporte à configuração de privateImeOptions (Idb772).

Correções de bugs

  • Correção dos campos de texto que mostravam o teclado e eram editáveis quando readOnly é "true" Também foi corrigido o teclado que não era mostrado quando readOnly era mudado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).

Versão 1.6.0-alpha02

26 de julho de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha02. A versão 1.6.0-alpha02 contém estas confirmações.

Mudanças na API

  • Introdução de PagerLayoutInfo com informações coletadas após uma passagem de medição em Pager. Também apresentamos o PageInfo, as informações sobre uma única página medida em Pager. (Iad003, b/283098900).
  • Outras anotações para especificar entradas permitidas para elementos combináveis (I51109).
  • Adição de SemanticsNodeInteraction.requestFocus como uma maneira mais conveniente e detectável de solicitar foco em testes. (Ie8722).
  • A API PlatformTextInput* foi totalmente reformulada. (I6c93a, b/274661182, b/267235947, b/277380808).
  • A SoftwareKeyboardController e a LocalSoftwareKeyboardController não são mais experimentais. LocalSoftwareKeyboardController agora também é um CompositionLocal adequado. (I4c364).
  • O Modifier.transformable agora fornece um delta de movimento no parâmetro canPan para ajudar a determinar a direção do movimento para permitir ou impedir essa ação. (I692aa, b/266829800).
  • Atualiza o modificador consumeWindowInsets para estender a superclasse AbstractComposeView (Iacd74, b/269479941).

Versão 1.6.0-alpha01

21 de junho de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha01. A versão 1.6.0-alpha01 contém estas confirmações.

Novos recursos

  • Introdução de uma nova API AnchoredDraggable no Foundation. Ela pode ser usada para criar componentes que podem ser arrastados entre estados discretos, como páginas inferiores modais. Essa API substitui a API Swipeable do Material Design. (I4a2ed).

Mudanças na API

  • Suporte a InputConnection#requestCursorUpdates (I0c69b).
  • scrollAnimationSpec foi introduzido para permitir especificações de animação personalizadas. A configuração BringIntoViewCalculator foi atualizada para BringIntoViewScroller. (Idb741).
  • O tipo ResourceResolutionException foi adicionado para unir throwables gerados ao tentar carregar recursos de bitmap com uma descrição do caminho do recurso que falhou ao carregar. (I19f44, b/230166331, b/278424788).
  • Adicionamos propriedades e ações semânticas para oferecer suporte à tradução de texto. (I4a6bc).
  • Introdução de uma API BringIntoViewCalculator que pode ser usada para personalizar como componentes como Scrollable respondem a solicitações bringIntoView. Mudamos a sobrecarga de rolável para aceitar opcionalmente uma instância de BringIntoViewCalculator. (Iaf5af).

Correções de bugs

  • Foi adicionada uma verificação de lint para avisar se você está criando um MutableInteractionSource na composição sem se lembrar dele, semelhante às verificações de lint para criar o estado mutável / Animatable (I5daae).
  • Adicionado suporte para seleção por mouse. A seleção baseada em toque será expandida por palavra e reduzida por caractere. (Ic0c6c, b/180639271).
  • Foi adicionada a interface FocusTargetModifierNode, que pode ser usada para criar um FocusTarget personalizado. (I9790e).

Versão 1.5

Versão 1.5.4

18 de outubro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.4. A versão 1.5.4 contém estas confirmações.

Versão 1.5.3

4 de outubro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.3. Esta versão não tem mudanças.

Versão 1.5.2

27 de setembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.2. A versão 1.5.2 contém estas confirmações.

Correções de bugs

  • Correção de um bug no texto que causava falhas em determinadas circunstâncias quando a semântica era invalidada.

Versão 1.5.1

6 de setembro de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.1. A versão 1.5.1 contém estas confirmações.

Correções de bugs

  • Correção dos campos de texto que mostravam o teclado e eram editáveis quando readOnly é "true" Também foi corrigido o teclado que não era mostrado quando readOnly era mudado 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.foundation:foundation-*:1.5.0. A versão 1.5.0 contém estas confirmações.

Mudanças importantes desde a versão 1.4.0

  • Muitos modificadores de base, incluindo Modifier.clickable,Modifier.draggable, Modifier.scrollable, modificador de layout e outros foram migrados para a API Modifier.Node, reduzindo a sobrecarga na composição inicial.
  • Melhorias na estabilidade dos pagers. Muitos bugs foram corrigidos.
  • Os parâmetros pageCount agora ficam em PagerState em vez de no próprio Pager

Versão 1.5.0-rc01

26 de julho de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.0-rc01. A versão 1.5.0-rc01 contém estas confirmações.

Correções de bugs

  • Uma inspeção opcional para recomendar a migração de chamadas mutableStateOf() para os tipos especializados correspondentes para primitivos está disponível. O ID do lint é AutoboxingStateCreation. Antes, essa inspeção era ativada por padrão para todos os projetos. Para que esse aviso apareça no editor do Android Studio e nos resultados do lint do seu projeto, mude a gravidade de informativo para aviso (ou maior) declarando warning "AutoboxingStateCreation" dentro da configuração build.gradle ou build.gradle.kts do módulo, conforme mostrado (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Versão 1.5.0-beta03

28 de junho de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta03. A versão 1.5.0-beta03 contém estas confirmações.

Versão 1.5.0-beta02

7 de junho de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta02. A versão 1.5.0-beta02 contém estas confirmações.

Versão 1.5.0-beta01

24 de maio de 2023

Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta01. A versão 1.5.0-beta01 contém estas confirmações.

Mudanças na API

  • Implemente PlatformDataProvider para fornecer frequência cardíaca e passos diários. A interface SensorGateway foi removida da API pública. (I55b84).

Correções de bugs

  • Reduz as alocações durante listas/grades lentas/etc. (Iaf9e2).
  • Alocações reduzidas ao aplicar snapshots (I65c09).
  • As alocações de animações de mola foram removidas (Ie9431).
  • A alocação foi removida de TextLayout (I0fd11).
  • Remoção de várias alocações no rastreamento de velocidade do ponteiro (I26bae).

Versão 1.5.0-alpha04

10 de maio de 2023

Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha04 e androidx.compose.foundation:foundation-layout:1.5.0-alpha04. A versão 1.5.0-alpha04 contém estas confirmações.

Mudanças na API

  • Adição de TextStyle.merge(...) otimizado com lista completa de parâmetros. (Iad234, b/246961787).
  • Introdução de uma SnapLayoutInfoProvider que pode ser usada com LazyGridState. (I92134, b/269237141, b/260914964).
  • O Modifier.animateItemPlacement() experimental foi adicionado para o escopo do item de grades escalonadas lentas. É possível aplicá-la aos itens para alcançar as animações de mudança/reordenação de posição da automação. (I4b62d, b/257034719).
  • O GridCells.FixedSize foi promovido a estável. FixedSize define uma LazyGrid em que cada célula tem o tamanho exato em um eixo cruzado, com o espaço restante distribuído pela organização dos eixos cruzados. (I8542f).
  • Introdução do escopo do receptor PagerScope para pager e uma função utilitária para cálculo de um determinado deslocamento de página. (If2577).
  • Introduza o snapPositionalThreshold ao criar um comportamento de deslize rápido de ajuste. Use esse parâmetro a fim de especificar um limite de posição para o ajuste curto no Pager. (If8f7f).
  • A SnapLayoutInfoProvider.calculateSnappingOffsetBounds foi substituída pela calculateSnappingOffset Nesse novo método, simplesmente solicitamos o próximo deslocamento para ajustar. O cálculo dos limites precisa ser realizado no nível da implementação, já que isso pode variar dependendo de como o ajuste precisa acontecer. (I923a4).
  • As APIs LazyStaggeredGrid foram promovidas para a versão estável. (I633a5).
  • O pageCount foi removido de Horizontal/VerticalPager Isso precisa ser fornecido na criação do estado. PagerState e rememberPagerState foram atualizados para aceitar a pageCount. (Ieb52d, b/266965072).
  • O pageCount foi removido de Horizontal/VerticalPager Isso precisa ser fornecido na criação do estado. PagerState e rememberPagerState foram atualizados para aceitar a pageCount. (Ifa3cb, b/266965072).
  • Apresente shortSnapVelocityThreshold no SnapFlingBehavior do Pager. (I7379e, b/275579012).
  • Adiciona um FlowRowScope e um FlowColumnScope. (I54fe2).

Correções de bugs

  • Chamadas para receber semântica de texto quando as restrições tiverem minWidth e minHeight não falharem mais (Ibd072).
  • Correção da regressão em que o teclado não era mostrado para campos de texto dentro de 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.foundation:foundation:1.5.0-alpha03 e androidx.compose.foundation:foundation-layout:1.5.0-alpha03. A versão 1.5.0-alpha03 contém estas confirmações.

Esta versão ativa a nova pilha de renderização de texto para o Compose. O desempenho da nova pilha é otimizado, e você não vai notar mudanças visíveis.

Se você notar mudanças no texto renderizado, depure, definindo NewTextRendering1_5 = false para confirmar a diferença de comportamento. Definir isso forçará a recomposição. Registre todas as diferenças de comportamento como bugs.

A flag de depuração será removida antes da versão 1.5 beta01 (Iada23, b/246960758).

Mudanças na API

  • Deixe o FlowColumn/FlowRow inline. (Idab37).

Versão 1.5.0-alpha02

5 de abril de 2023

Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha02 e androidx.compose.foundation:foundation-layout:1.5.0-alpha02. A versão 1.5.0-alpha02 contém estas confirmações.

Mudanças na API

  • Foi adicionado suporte a células de tamanho fixo em LazyGrid e organizá-las em eixos cruzados. (I83ed9, b/235121277, b/267942510).
  • Foi adicionado suporte a faixas de tamanho fixo em LazyStaggeredGrid e organizando-as com a organização de eixos cruzados. (I7d519).
  • UrlAnnotations em AnnotatedStrings agora podem ser abertos usando serviços de acessibilidade como TalkBack. (If4d82, b/253292081).
  • A ação semântica InsertTextAtCursor foi adicionada para campos de texto. (I11ed5).
  • As ações de teste relacionadas a texto (por exemplo, performTextInput) agora solicitam o foco diretamente, usando a ação semântica, em vez de clicar no campo. (I6ed05).
  • Adiciona suporte ao espaçamento/organização nos eixos cruzados usando verticalArrangement em FlowRow e horizontalArrangement em FlowColumn. Também removemos os verticalAlignment e horizontalAlignment de nível superior em FlowRow/FlowColumn. Em vez disso, os desenvolvedores podem usar Modifier.align. Isso reduz a confusão entre as convenções de nomenclatura de verticalAlignment e verticalArrangement. (I87b60, b/268365538).

Versão 1.5.0-alpha01

22 de março de 2023

Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha01 e androidx.compose.foundation:foundation-layout:1.5.0-alpha01. A versão 1.5.0-alpha01 contém estas confirmações.

Mudanças na API

  • O texto e o BasicText foram refatorados para usar o novo sistema de modificadores. Isso leva a melhorias substanciais de desempenho em muitos casos. Nenhuma mudança deve ficar visível. (If1d17, b/246961435).
  • Adição da ação semântica PerformImeAction para invocar a ação do IME em nós do editor de texto. (Ic606f, b/269633506).

Correções de bugs

  • Atualização dos componentes internos de Modifier.hoverable. O modificador hoverable só será mostrado no inspetor se estiver ativado. (I82103).

Versão 1.4

Versão 1.4.3

3 de maio de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.3 e androidx.compose.foundation:foundation-layout:1.4.3 sem mudanças (apenas uma promoção de versão).

Versão 1.4.2

19 de abril de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.2 e androidx.compose.foundation:foundation-layout:1.4.2. A versão 1.4.2 contém estas confirmações.

Versão 1.4.1

5 de abril de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.1 e androidx.compose.foundation:foundation-layout:1.4.1. A versão 1.4.1 contém estas confirmações.

Versão 1.4.0

22 de março de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0 e androidx.compose.foundation:foundation-layout:1.4.0. A versão 1.4.0 contém estas confirmações.

Mudanças importantes desde a versão 1.3.0

  • Foi adicionada uma integração de compatibilidade com emojis a Text e TextField, além do parágrafo de nível mais baixo Ela é ativada por padrão quando a emojicompat está configurada.
  • O EmojiCompat pode ser configurado em um texto específico usando PlatformParagraphStyle.
  • Foi adicionado suporte ao período completo de linha para LazyStaggeredGrid(I28252).
  • Adição do onHover experimental a ClickableText (I6938f).
  • Introdução de novas sobrecargas experimentais para a função runComposeUiTest e as funções create*ComposeRule que aceitam parâmetros CoroutineContext. O contexto vai ser usado para a composição de teste e todas as chamadas LaunchedEffect e rememberCoroutineScope() na composição (I10614, b/265177763).
  • FlowRow e FlowColumn agora estão disponíveis como @ExperimentalFoundationApi. Isso permite um layout de linhas e colunas mais flexível com componentes que vão ser divididos em uma nova linha se não houver espaço suficiente no eixo principal (I3a7b2).
  • O Modifier.basicMarquee() está disponível como experimental para mostrar conteúdo com um efeito de letreiro de rolagem. (I2df44, b/139321650).

Versão 1.4.0-rc01

8 de março de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0-rc01 e androidx.compose.foundation:foundation-layout:1.4.0-rc01. A versão 1.4.0-rc01 contém estas confirmações.

Mudanças na API

  • Introdução da nova API PlatformTextInputAdapter de baixo nível para criar implementações de entrada de texto personalizadas que se comunicam diretamente com as APIs da plataforma. (I58df4).
  • Foi adicionado suporte ao layout reverso à LazyStaggeredGrid (I3ef4a).

Correções de bugs

  • A ação semântica SetText do BasicTextField agora 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, performTextReplacement e performTextSelection agora usam SemanticsActions. (I0807d, b/269633168, b/269624358).

Versão 1.4.0-beta02

22 de fevereiro de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0-beta02 e androidx.compose.foundation:foundation-layout:1.4.0-beta02. A versão 1.4.0-beta02 contém estas confirmações.

Mudanças na API

  • Foi adicionado um novo callback Modifier.Node.onReset(), que permite redefinir algum estado local para lidar corretamente com o caso quando a Layout for reutilizada, por exemplo, como um item de LazyColumn. FocusTargetModifierNode foi corrigido para redefinir corretamente o estado em foco (I65495, b/265201972).
  • O parâmetro BlendMode foi adicionado aos métodos DrawScope.drawText, Paragraph.paint e MultiParagraph.paint para oferecer suporte a diferentes algoritmos de combinação ao desenhar texto no Canvas (I57508).
  • A API modifierElementOf() foi removida. Estenda a mensagem diretamente do ModifierNodeElement. (Ie6d21).

Correções de bugs

  • Ajustar as alças de seleção não pode mais selecionar um caractere parcial. (Idedd1).
  • Foi corrigida uma falha ao pressionar Ctrl + backspace em TextField vazio (I0427f, b/244185537).

Versão 1.4.0-beta01

8 de fevereiro de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0-beta01 e androidx.compose.foundation:foundation-layout:1.4.0-beta01. A versão 1.4.0-beta01 contém estas confirmações.

Novos recursos

  • Desde a versão 1.3, a integração de compatibilidade de emojis foi adicionada a Text e TextField, além do parágrafo de nível mais baixo. Ela é ativada por padrão quando a emojicompat está configurada.
  • O EmojiCompat pode ser configurado em um texto específico usando PlatformParagraphStyle.

Mudanças na API

  • Adição da implementação comum da API PinnableContainer usada em todos os LazyLayouts para reter itens que saem da composição, mas ainda precisam estar ativos (If45a4).
  • PinnableContainer.PinnedHandle.unpin() foi renomeado como release() (I4667a).

Contribuição externa

  • A propriedade mainAxisItemSpacing foi adicionada a LazyListLayoutInfo, LazyGridLayoutInfo e LazyStaggeredGridItemInfo (I52fad).

Versão 1.4.0-alpha05

25 de janeiro de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha05 e androidx.compose.foundation:foundation-layout:1.4.0-alpha05. A versão 1.4.0-alpha05 contém estas confirmações.

Novos recursos

  • Adição de suporte ao período completo de linha para LazyStaggeredGrid (I28252).
  • Adição do onHover experimental ao ClickableText (I6938f).
  • Introdução de novas sobrecargas experimentais para a função runComposeUiTest e as funções create*ComposeRule que aceitam parâmetros CoroutineContext. O contexto vai ser usado para a composição de teste e todas as chamadas LaunchedEffect e rememberCoroutineScope() na composição (I10614, b/265177763).

Mudanças na API

  • Mescla as APIs pré/pós de OverscrollEffect em funções combinadas applyToScroll e applyToFling do "decorator". Consulte os exemplos atualizados na documentação para saber como implementar um efeito de rolagem com o novo formato de API (I8a9c4, b/255554340).
  • Mais tipos/nulidade de funções inline/descontinuadas e ocultas (I24f91).
  • As APIs LineBreak e Hyphens no TextStyle foram atualizadas para a versão estável (Ic1e1d).

Correções de bugs

  • O cursor nos campos vai continuar a piscar mesmo quando as animações forem desativadas (I95e70, b/265177763).
  • O Modifier.basicMarquee agora é animado mesmo quando as animações são desativadas nas configurações do sistema (I23389, b/262298306, b/265177763).

Contribuição externa

  • Os métodos notifyFocusedRect em TextInputSession e TextInputService não foram descontinuados novamente (I23a04, b/262648050).

Versão 1.4.0-alpha04

11 de janeiro de 2023

Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha04 e androidx.compose.foundation:foundation-layout:1.4.0-alpha04. A versão 1.4.0-alpha04 contém estas confirmações.

Novos recursos

  • FlowRow e FlowColumn agora estão disponíveis como @ExperimentalFoundationApi. Isso permite um layout de linhas e colunas mais flexível com componentes que vão ser divididos em uma nova linha se não houver espaço suficiente no eixo principal (I3a7b2).
  • O Modifier.basicMarquee() está disponível de forma experimental para mostrar conteúdo com um efeito de letreiro com rolagem (I2df44, b/139321650).

Mudanças na API

  • O uso de FocusRequesterModifier foi descontinuado e substituído por FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589).
  • O construtor AndroidFont com variationSettings agora é uma API estável e pode ser usado para criar novos tipos de descritores de fonte (I5adcc, b/261565807).
  • Introdução da API PinnableContainer propagada por listas lentas usando um local de composição que permite fixar o item atual. Isso significa que esse item não será descartado quando for rolado para fora da visualização. Por exemplo, Modifier.focusable() vai fixar o item que está em foco usando esse mecanismo (Ib8881, b/259274257, b/195049010).
  • A forma como os roláveis respondem aos bringIntoViewRequesters e aos focalizáveis foi reescrita para modelar melhor a complexidade dessas operações e lidar com mais casos extremos (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114).
  • Mais nulidade do tipo de retorno das funções descontinuadas e ocultas (Ibf7b0).
  • Adição de TextMotion experimental ao TextStyle para definir o texto como Static(default) ou animado. Use TextMotion.Animated se o texto for dimensionado, transladado ou girado usando uma animação (I24dd7).
  • Adição de TextFieldFocusModifier para corrigir o comportamento da navegação de foco na Plataforma Android (I00303).
  • O argumento maxSize: IntSize foi substituído em drawText por size: Size para ficar inline com outras funções DrawScope. O size é definido como Size.Unspecified por padrão, o que não afeta o comportamento padrão anterior (Icd27d).

Correções de bugs

  • Correções na física de ajuste de SnapFlingBehaviour para parecer mais natural.

Problema conhecido

  • Ao atualizar do androidx.compose.foundation:1.4.0-alpha03 para o androidx.compose.foundation:1.4.0-alpha04, talvez você receba um erro java.lang.NoSuchFieldError. O problema foi relatado originalmente aqui. Uma correção foi enviada e vai estar disponível na próxima atualização do Compose. Como solução alternativa, atualize suas bibliotecas androidx.compose.material e androidx.compose.material3 para a versão mais recente (1.1.0-alpha04) ou faça o downgrade do androidx.compose.foundation para a versão 1.4.0-alpha03.

Versão 1.4.0-alpha03

7 de dezembro de 2022

Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha03 e androidx.compose.foundation:foundation-layout:1.4.0-alpha03. A versão 1.4.0-alpha03 contém estas confirmações.

Mudanças na API

  • Em testes de interface que usam uma regra do Compose, as continuações retomadas durante callbacks withFrameNanos não serã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 chama withFrameNanos ou withFrameMillis diretamente 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 neste CL (link em inglês).
  • Foi adicionado o parâmetro opcional onPerformTraversals: (Long) -> Unit ao construtor TestMonotonicFrameClock e à função de fábrica para executar o código depois de callbacks withFrameNanos, mas antes de retomar as corrotinas dos autores das chamadas (Idb413, b/254115946, b/222093277, b/255802670).
  • Introdução às ações de acessibilidade da página: PageUp, PageDown, PageLeft, PageRight. Essas opções estão disponíveis apenas na API 29 (Ida4ab).
  • Introdução de HorizontalPager e VerticalPager, uma maneira de mostrar elementos combináveis de uma forma de pager. Introdução de PagerState para controlar os pagers, bem como consultar informações sobre o estado atual deles. Introdução de PageSize, uma maneira de controlar o tamanho de uma página de pager. Ela pode ser usada para criar um carrossel como os pagers. Introdução de PagerSnapDistance, uma maneira de controlar como o ajuste vai funcionar no comportamento de rolagem rápida do Pager (I01120).
  • Introdução de uma sobrecarga em SnapFlingBehavior.performFling para ajudar a entender onde a rolagem rápida vai se resolver (I569f6).
  • Remoção de OverscrollEffect#isEnabled. Em vez de precisar lembrar e definir essa sinalização, não envie eventos para o efeito de rolagem esticada quando você não quiser que ela seja mostrada. Por exemplo, se ScrollableState#canScrollForward/backward retornar "false" (I1a4b0, b/255554340, b/255557085).
  • ScrollableState#canScrollForward e ScrollableState#canScrollBackward foram adicionados para consultar se um ScrollableState tem espaço para rolar em qualquer direção (se está no mínimo / máximo do intervalo). O padrão é "true" para compatibilidade com versões anteriores das implementações existentes do ScrollableState. Os consumidores podem usá-lo para mostrar ao usuário que ainda há espaço para rolar a tela. Ele também pode ser usado para evitar o envio de delta para ScrollableStates que não tenham espaço para rolar em uma determinada direção, reduzindo o trabalho desnecessário (Idf1a0, b/255557085).
  • Foi adicionada uma API Modifier para consultar informações de rolagem de ancestrais (I2ba9d, b/203141462).
  • Clickable foi usado para atrasar corretamente as interações de pressionamento quando gestos podem se tornar eventos de rolagem.
  • Os elementos Clickables foram corrigidos para passar a atrasar ondulações corretamente quando usados dentro de um Scrollable ViewGroup.
  • As gavetas e planilhas foram atualizadas para atrasar corretamente os pressionamentos, em casos em que gestos podem se tornar eventos de rolagem.
  • A nomenclatura snapStepSize foi atualizada para ser consistente com outros métodos em SnapLayoutInfoProvider (Ife67c).
  • Adicionamos EmojiCompat ao Compose (Ibf6f9, b/139326806).
  • consumedWindowInsets() foi renomeado como consumeWindowInsets() e withConsumedWindowInsets() como onConsumedWindowInsetsChanged(). Além disso, os modificadores se tornaram públicos (Ie44e1).

Correções de bugs

  • Correção da falha com as grades Modifier.animateItemPlacement() e Lazy. Isso ocorria em algumas condições quando a contagem de novos itens era menor que a anterior (I0bcac, b/253195989).

Versão 1.4.0-alpha02

9 de novembro de 2022

Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha02 e androidx.compose.foundation:foundation-layout:1.4.0-alpha02. A versão 1.4.0-alpha02 contém estas confirmações.

Mudanças na API

  • awaitFirstDown e waitForUpOrCancellation agora aceitam um PointerEventPass para ter mais flexibilidade (I7579a, b/212091796).
  • A API beyondBoundCount foi revertida das APIs lentas* (I12197).
  • Um parâmetro foi introduzido às APIs lentas para compor e posicionar fora de itens da janela de visualização (I69e89, b/172029355).
  • Foi adicionado o parâmetro minLines a BasicText e BasicTextField. Ele permite definir a altura mínima desses elementos combináveis em termos de número de linhas (I24294, b/122476634).

Versão 1.4.0-alpha01

24 de outubro de 2022

Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha01 e androidx.compose.foundation:foundation-layout: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 a forEachGesture(), mas o loop sobre gestos opera inteiramente dentro do AwaitPointerEventScope. Assim, os eventos não podem ser perdidos entre iterações.
  • O uso de forEachGesture() foi descontinuado e substituído por awaitEachGesture(), porque permite que os eventos sejam perdidos entre gestos (Iffc3f, b/251260206).
  • Adição de WindowInsets.imeAnimationSourc e WindowInsets.imeAnimationTarget para determinar o progresso da animação e saber onde o IME será exibido depois que a animação for concluída (I356f1, b/217770337).

Versão 1.3

Versão 1.3.1

9 de novembro de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.1 e androidx.compose.foundation:foundation-layout:1.3.1. A versão 1.3.1 contém estas confirmações.

Correções de bugs

  • Foi corrigido um problema de performance em BeyondBoundsLayout (aosp/2255266).
  • O ContentInViewModifier não vai ler as coordenadas de layout, a menos que esteja anexado (aosp/2241316).

Versão 1.3.0

24 de outubro de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0 e androidx.compose.foundation:foundation-layout:1.3.0. A versão 1.3.0 contém estas confirmações.

Mudanças importantes desde a versão 1.2.0

  • Foram lançadas versões experimentais de LazyVerticalStaggeredGrid e LazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior e outras APIs correspondentes foram adicionadas como experimentais.
  • Modifier.clickable, Modifier.toggleable e Modifier.selectable agora mostram ondulações se clicados com o teclado ou botão direcional em um controle remoto.

Versão 1.3.0-rc01

5 de outubro de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-rc01 e androidx.compose.foundation:foundation-layout:1.3.0-rc01. A versão 1.3.0-rc01 contém estas confirmações.

Mudanças na API

  • Introdução do lowVelocityAnimationSpec usado pela etapa de abordagem quando não há velocidade suficiente para redução (Iaeb27).
  • Adição da nova API Hyphens experimental para oferecer suporte à hifenização automática em texto (Iaa869).

Versão 1.3.0-beta03

21 de setembro de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-beta03 e androidx.compose.foundation:foundation-layout: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).
  • BringIntoViewResponders agora podem conseguir os limites mais atualizados de uma solicitação durante o processamento (If86a5, b/241591211).
  • Foi adicionado suporte ao espaçamento entre itens para Staggered Grid experimental (I10b82).
  • O padding de conteúdo foi introduzido no Staggered Grid experimental (I342ea).
  • O argumento size:IntSize com constraints: Constraints no método TextMeasurer.measure foi mudado para oferecer suporte a restrições de largura mínima (I37530, b/242707525).
  • Foi adicionado Modifier.withConsumedWindowInsets() a fim de consumir WindowInsets para o uso fora de windowInsetsPadding.
  • Foi adicionado MutableWindowInsets para permitir a mudança fácil de WindowInsets sem recomposição. (I7fd28, b/237019262, b/243119659).

Versão 1.3.0-beta02

7 de setembro de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-beta02 e androidx.compose.foundation:foundation-layout:1.3.0-beta02. A versão 1.3.0-beta02 contém estas confirmações.

Mudanças na API

  • Versão inicial do StaggeredGrid experimental (Ia48be).
  • FocusDirection.In e FocusDirection.Out foram renomeados como FocusDirection.Enter e FocusDirection.Exit (Ia4262, b/183746982).
  • Foi introduzida uma sobrecarga rememberSnapFlingBehavior que fornece uma maneira rápida de ativar o ajuste em LazyLists (Ifb48a).
  • A fábrica snapFlingBehavior foi substituída por uma classe SnapFlingBehavior concreta. Métodos SnapLayoutInfoProvider têm escopo para densidade para facilitar as conversões Dp<->Px para os usuários da API (I54a11).
  • O LazyLayoutMeasureScope.measure foi atualizado para retornar uma lista de placeables, destacando a imutabilidade desejada do valor retornado (I48b7c).
  • O SnapLayoutInfoProvider foi introduzido. Ele usa um LazyListState para criar uma instância do SnapLayoutInfoProvider que pode ser usada para ativar um FlingBehavior instantâneo para LazyLists (I2dd10).

Correções de bugs

  • Refatoração de AwaitPointerEventScope#awaitLongPressOrCancellation para corresponder a outras funções de espera (I646e6).

Versão 1.3.0-beta01

24 de agosto de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-beta01 e androidx.compose.foundation:foundation-layout:1.3.0-beta01. A versão 1.3.0-beta01 contém estas confirmações.

Mudanças na API

  • Remoção da pointerPosition de OverscrollEffect. Os efeitos que dependem da posição do ponteiro podem usar Modifier.pointerInput { } no effectModifier para saber a posição atual dele (I9f606, b/241239306).
  • AwaitPointerEventScope#awaitLongPressOrCancellation foi exposto como um elemento básico a mais para detecção de gestos mais complexos (I04374, b/181577176).
  • lazyListSnapLayoutInfoProvider foi introduzido para permitir o ajuste em listas lentas (I3ecdf).
  • Introdução de SnapFlingBehavior, um comportamento de rolagem rápida que permite o ajuste da lista. Fornecida uma instância do SnapLayoutInfoProvider com informações sobre o layout de ajuste (Ie754c).

Versão 1.3.0-alpha03

10 de agosto de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha03 e androidx.compose.foundation:foundation-layout:1.3.0-alpha03. A versão 1.3.0-alpha03 contém estas confirmações.

Mudanças na API

  • As fontes de recursos agora oferecem suporte para a configuração de variações de fonte (API 26 ou mais recentes) (I900dd, b/143703328).
  • Suporte a fontes variáveis em DeviceFontFamilyNameFont (Ic1279, b/143703328).
  • A anotação experimental foi removida de PlatformTextStyle e LineHeightStyle (I64bef).
  • Os campos de texto agora geram exceções mais detalhadas quando o OffsetMapping fornecido por uma VisualTransformation retorna índices inválidos (Ie73f9, b/229378536).
  • Lançamento de APIs experimentais para compartilhar a lógica do provedor de itens entre layouts lentos (Ic891c).
  • ScrollableDefaults.reverseDirection() deixou de ser experimental (Iba646).
  • O uso de SemanticsModifier.id foi descontinuado, e o ID semântico foi movido para LayoutInfo.semanticsId (Iac808, b/203559524).
  • checkScrollableContainerConstraints() deixou de ser experimental (I2c290).
  • Modifier.clipScrollableContainer() não é mais experimental (Ia2b44).
  • O uso de TextInputService.show|hideSoftwareKeyboard foi descontinuado. Use SoftwareKeyboardController no código do app e TextInputSession no código de gerenciamento de IME (I14e4c, b/183448615).

Versão 1.3.0-alpha02

27 de julho de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha02 e androidx.compose.foundation:foundation-layout:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estas confirmações.

Mudanças na API

  • A função de extensão drawText no DrawScope foi adicionada para oferecer uma forma de escrever texto com vários estilos em elementos combináveis e modificadores que operam em um DrawScope, como Canvas e drawBehind (I16a62, b/190787898).

Correções de bugs

  • O teclado de software agora vai ficar oculto quando um campo de texto estiver desativado enquanto estiver em foco (I6e3e4, b/237308379).
  • Ao adicionar eventos InputEventChange no rastreador de velocidade, vamos considerar agora os deltas em vez de posições. Isso vai garantir que a velocidade seja calculada corretamente para todos os casos, mesmo se o elemento de destino for movido (Icea9d, b/216582726, b/223440806, b/227709803).
  • Quando um elemento rolável tem um filho em foco, agora ele rola corretamente para manter o filho em foco quando o tamanho é reduzido, mesmo quando o tamanho é animado (I80867, b/230756508, b/220119990).
  • Foi corrigida uma falha em que o TextField era apagado e preenchido novamente enquanto a seleção estava ativa (I1235b, b/208655565, b/214253689).

Versão 1.3.0-alpha01

29 de junho de 2022

Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha01 e androidx.compose.foundation:foundation-layout:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estas confirmações.

Mudanças na API

  • O tipo de anotação UrlAnnotation e os métodos associados foram lançados para oferecer suporte a links TalkBack em AnnotatedStrings (I1c754, b/231495122).

Correções de bugs

  • BasicTextField cursorBrush agora pode ser animado sem reiniciar a ampulheta do cursor (I812e6, b/236383522).

Versão 1.2

Versão 1.2.1

10 de agosto de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.1 e androidx.compose.foundation:foundation-layout:1.2.1. A versão 1.2.1 contém estas confirmações.

Versão 1.2.0

27 de julho de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0 e androidx.compose.foundation:foundation-layout:1.2.0. A versão 1.2.0 contém estas confirmações.

Mudanças importantes desde a versão 1.1.0

  • LazyVerticalGrid e LazyHorizontalGrid agora estão na versão estável.
  • Agora você pode especificar um tipo de conteúdo para itens em listas e grades lentas. Isso vai permitir que os componentes reutilizem elementos com mais eficiência.
  • As listas e grades lentas agora têm o parâmetro userScrollEnabled, que permite desativar a rolagem usando os gestos do usuário.
  • Foi adicionada uma nova API experimental chamada LazyLayout. É a API que usamos internamente para potencializar listas e grades lentas.
  • A API OverscrollEffect foi introduzida como experimental. Você pode definir efeitos de rolagem personalizados e adicionar uma plataforma padrão a contêineres de rolagem personalizados.
  • APIs de interoperabilidade de rolagem aninhadas foram introduzidas para permitir a interoperabilidade entre visualizações e agentes de rolagem do Compose.
  • A rolagem do mouse e do trackpad foi adicionada a todos os contêineres de rolagem.

Versão 1.2.0-rc03

29 de junho de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-rc03 e androidx.compose.foundation:foundation-layout: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

Lançamento de androidx.compose.foundation:foundation:1.2.0-rc02 e androidx.compose.foundation:foundation-layout:1.2.0-rc02. 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.foundation:foundation:1.2.0-rc01 e androidx.compose.foundation:foundation-layout:1.2.0-rc01. A versão 1.2.0-rc01 contém estas confirmações.

Mudanças na API

  • Uma interface OverscrollEffect experimental foi apresentada para permitir o uso de efeitos de rolagem personalizados, assim como sobrecargas de Modifier.scrollable que a aceitam.
  • A LocalOverScrollConfiguration experimental foi movida de foundation.gesture para o pacote básico e renomeada como LocalOverscrollConfiguration (If19fb, b/204650733).
  • As interfaces em bibliotecas do Compose agora são criadas usando métodos de interface padrão do jdk8 (I5bcf1).
  • Foi introduzida uma nova API experimental checkScrollableContainerConstraints(), que permite confirmar se contêineres roláveis não foram aninhados. Você pode usar essa API ao criar seus próprios layouts lentos roláveis com LazyLayout (Id6fab, b/233352497).
  • A LazyVerticalGrid descontinuada foi removida do pacote androidx.compose.foundation.lazy. A nova API estável está localizada no androidx.compose.foundation.lazy.grid (I73c76, b/225192009).

Versão 1.2.0-beta03

1º de junho de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-beta03 e androidx.compose.foundation:foundation-layout:1.2.0-beta03. A versão 1.2.0-beta03 contém estas confirmações.

Mudanças na API

  • Novas IntervalList e MutableIntervalList experimentais foram adicionadas. Elas permitem representar uma lista de valores como vários intervalos. Esses elementos são úteis quando você quer definir sua própria DSL semelhante àquela usada pelo LazyColumn, em que os itens da lista podem ser definidos por várias chamadas de item/itens (I2d05e, b/228580728).

Correções de bugs

  • Esclarecimento da documentação de WindowInsets.ime para declarar que os encartes de ime são informados até o nível 23 da API, mas apenas animados no nível 30 ou mais recente (Ia7fc0, b/230756508).
  • Pressionar a tecla de excluir o próximo caractere quando o cursor está no final de um campo de texto não causa mais falhas.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand agora 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.foundation:foundation:1.2.0-beta02 e androidx.compose.foundation:foundation-layout:1.2.0-beta02. A versão 1.2.0-beta02 contém estas confirmações.

  • A resolução de fonte disponível para download que não muda o tamanho do layout do texto ou de TextField não era recriada, resultando em uma visualização de fonte desatualizada. Essa correção de bug garante que o layout do texto sempre acione uma recriação (I1d49e, b/229727404).

Versão 1.2.0-beta01

11 de maio de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-beta01 e androidx.compose.foundation:foundation-layout: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

  • Adicionado o BeyondBoundsInterval experimental, que pode ser usado por implementações personalizadas da LazyList ao definir o layout de itens que estão além dos limites visíveis (Ifabfb, b/184670295).
  • LineHeightBehavior foi renomeado como LineHeightStyle.
  • LineVerticalAlignment foi renomeado como LineHeightStyle.Alignment.
  • A classe LineHeightTrim foi renomeada como LineHeightStyle.Trim.
  • Os valores padrão do construtor foram removidos do LineHeightStyle (I582bf, b/181155707).
  • Foram adicionados valores padrão para os membros opcionais da interface LazyLayoutItemProvider (Iba8a0).
  • Na API LazyLayoutItemProvider, em vez de uma fábrica retornar o lambda de composição por índice, agora temos um item da função de composição mais simples que aceita o índice (Id2196).
  • LazyLayoutItemsProvider foi renomeado como LazyLayoutItemProvider (I0638c).
  • LazyLayoutItemsProvider.itemsCount foi renomeado como itemCount (Id409c).
  • O Brush foi adicionado ao TextStyle e ao SpanStyle para oferecer uma forma de escrever texto com uma coloração gradiente (I53869, b/187839528).
  • Os atributos trimFirstLineTop e trimLastLineBottom do LineHeightBehavior foram mudados para uma única enumeração: LineHeightTrim. A LineHeightTrim tem valores de quatro estados definidos por dois booleanos: FirstLineTop e LastLineBottom, Both e None (Ifc6a5, b/181155707).
  • Adição do LineHeightBehavior ao TextStyle e ao ParagraphStyle. LineHeightBehavior para controlar se a altura da linha é adicionada à parte de cima da primeira linha e à de baixo da última. Ele também define o alinhamento da linha no espaço fornecido pelo TextStyle(lineHeight).

    Por exemplo, é possível conseguir um comportamento parecido com aquele que o CSS define com LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • As configurações de trimFirstLineTop e trimLastLineBottom só vão funcionar corretamente quando includeFontPadding for falso (I97332, b/181155707).

  • Adicionado o modificador experimental imeNestedScroll() para que os desenvolvedores possam controlar o IME (editor de método de entrada, na sigla em inglês) usando a rolagem (I60759).

Correções de bugs

  • Foi corrigida a regressão em que os campos de texto não ocultavam o teclado quando eram removidos da composição enquanto estavam em foco (I7a410, b/230536793, b/225541817).
  • Foi adicionado suporte ao uso de reticências quando a altura é limitada e não há espaço para todas as linhas de texto (Ie528c, b/168720622).
  • Agora, o BringIntoViewRequester.bringIntoView sempre fica suspenso até que a solicitação seja concluída ou interrompida por uma solicitação mais recente e sem sobreposição. As solicitações sobrepostas serão colocadas em fila (I43e7f, b/216790855).
  • Chamadas para BringIntoViewRequester.bringIntoView simultâneas para retângulos que se sobrepõem completamente agora respeitam apenas a solicitação do retângulo maior (I34be7, b/216790855, b/184760918).
  • O includeFontPadding fica ativado por padrão. É possível desativar o includeFontPadding usando o atributo TextStyle.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 do TextField (I01423, b/171394808).
  • O Modifier.bringIntoViewRequester não usa mais o onGloballyPositioned (I630f5).

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.foundation:foundation:1.2.0-alpha08 e androidx.compose.foundation:foundation-layout:1.2.0-alpha08. A versão 1.2.0-alpha08 contém estas confirmações.

Mudanças na API

  • 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).
  • 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).
  • O consumo parcial (para baixo OU na posição) foi descontinuado em PointerInputChange. Use consume() para consumir a mudança completamente. Você pode usar isConsumed para 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 de PointerInputChange for consumida, todas as outras também serão. Se você quiser criar uma PointerInputChange desvinculada, use o construtor (Ie6be4, b/225669674).
  • Introdução da nova API experimental LazyLayout. Ela permite criar seus próprios componentes, como LazyColumn de LazyVerticalGrid. A API está nas primeiras etapas e pode mudar nas versões futuras (Iba2bc, b/166591700).
  • AndroidFont agora usa typefaceLoader como um parâmetro construtor (I2c971).
  • O elemento complementar WindowInsets agora mostra a visibilidade (se está na tela, independente de cruzar com a janela) e o tamanho que poderia ter se estivesse disponível no dispositivo, mas não estivesse ativo (I65182, b/217770337).

Versão 1.2.0-alpha07

6 de abril de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha07 e androidx.compose.foundation:foundation-layout:1.2.0-alpha07. A versão 1.2.0-alpha07 contém estas confirmações.

Mudanças na API

  • Adição de uma API PinnableParent que permite que os filhos de layouts lentos impeçam o descarte dos itens atualmente compostos (Ibbdd0, b/184670295).
  • A LazyListLayoutInfo e a LazyGridLayoutInfo agora têm os campos beforeContentPadding e afterContentPadding (I3b628, b/200920410).
  • Adição de KeyboardType.Decimal como uma alternativa a Keyboard.Number para a inclusão específica de separador decimal no editor de método de entrada (Iec4c8, b/209835363).
  • Adição de um novo descritor de fonte (DeviceFontFamilyName) para que, se quiser, você possa pesquisar fontes instaladas no sistema durante cadeias de substitutos de fonte (I30468, b/219754572).
  • A PointerEventType.Scroll e a PointerEvent.scrollDelta agora são APIs estáveis (I574c5, b/225669674).
  • Foi adicionada uma configuração de compatibilidade temporária com includeFontPadding em TextStyle/ParagraphStyle. includeFontPadding pode ser mudado usando TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Essa é uma opção de configuração temporária para ativar a migração e será removida (If47be, b/171394808).
  • A interface FontFamily.Resolver foi atualizada para integrar a configuração de acessibilidade de texto em negrito em todo o sistema (I6c1e7).
  • A propriedade de extensão consumeWindowInsets da ComposeView permite que os desenvolvedores desativem o consumo de WindowInsets do Android. Isso permite separar ComposeViews na hierarquia para que elas apliquem WindowInsets sem interferir umas nas outras (I0ef08, b/220943142).

Versão 1.2.0-alpha06

23 de março de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha06 e androidx.compose.foundation:foundation-layout: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 RequestFocus para solicitar foco no destino focalizável (I17b71).
  • A FocusOrder foi mesclada com as FocusProperties, e o focusProperties() agora tem todos os recursos do focusOrder(). FocusOrder e focusOrder() foram descontinuados. A função focusOrder() que aceita um focusRequester precisa ser substituída por um modificador focusRequester() em combinação com focusProperties(). Isso permite que os modificadores tenham uma separação mais forte de problemas (I601b7).
  • WindowInsets.asPaddingValues(Density) foi adicionado para permitir que os desenvolvedores façam a conversão sem precisar estar em composição (I94c35).
  • A análise de drawables vetoriais foi atualizada para oferecer suporte ao espelhamento automático e virar o conteúdo de um objeto VectorPainter se a direção atual do layout for da direita para a esquerda (I79cd9, b/185760237).

Correções de bugs

  • Os modificadores de rolagem (Modifier.verticalScroll(), Modifier.horizontalScroll() e Modifier.scrollable()) agora rolam para manter o elemento em foco visível se a área de rolagem é redimensionada e o elemento já está visível.
  • Os TextFields agora são mantidos acima do teclado quando estão em foco, e o teclado é mostrado quando estão dentro de um recurso de rolagem não lenta e o modo de entrada simples é ADJUST_RESIZE (I4a485, b/190539358, b/192043120, b/216842427).

Versão 1.2.0-alpha05

9 de março de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha05 e androidx.compose.foundation:foundation-layout:1.2.0-alpha05. A versão 1.2.0-alpha05 contém estas confirmações.

Mudanças na API

  • As APIs LazyVerticalGrid e LazyHorizontalGrid agora estão na versão estável (I307c0).
  • A API LazyGridItemInfo.Unknown foi substituída pelas LazyGridItemInfo.UnknownRow e LazyGridItemInfo.UnknownColumn separadas (I56d51).
  • LazyVerticalGrid/LazyHorizontalGrid e todas as APIs relacionadas foram movidas para o subpacote .grid. Atualize as importações de androidx.compose.foundation.lazy para androidx.compose.foundation.lazy.grid (I2d446, b/219942574).
  • Texto: includeFontPadding agora fica desativado por padrão. Os problemas de recorte resultantes de includeFontPadding=false foram corrigidos e nenhum corte deve ocorrer para scripts altos (I31c84, b/171394808).
  • A interface medida agora expõe a propriedade parentData (I3313f).
  • Lançamento da API Modifier.onFocusedBoundsChanged experimental para observar os limites dos focalizáveis filhos (I14283, b/220030968, b/190539358, b/192043120, b/216842427).
  • A API LazyHorizontalGrid foi adicionada (I61ae7, b/191238807).
  • Uma nova API LazyVerticalGrid foi adicionada para definir o tamanho de eixos cruzados (I17723).
  • O modificador FocusGroup foi adicionado (I64bc0, b/213508274, b/184670295).

Correções de bugs

  • WindowInsets.toString() agora vai mostrar os valores corretos (I1585d).

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.foundation:foundation:1.2.0-alpha04 e androidx.compose.foundation:foundation-layout:1.2.0-alpha04. A versão 1.2.0-alpha04 contém estas confirmações.

Mudanças na API

  • BringIntoViewResponders não precisam mais transmitir manualmente solicitações ao recurso de resposta pai. Em vez disso, precisam retornar imediatamente o retângulo que o pai precisa mostrar (I8e66a).
  • Suporte ao carregamento de fonte assíncrono no texto (I77057, b/214587005).
  • LazyVerticalGrid agora oferece suporte a line breaking antes de itens com um período que não cabe na linha atual (I05c40, b/207462103).
  • excludeFromSystemGestures foi renomeado como systemGesturesExclusion (I19526).
  • LazyVerticalGrid agora oferece suporte ao reverseLayout (I6d7d7, b/215572963, b/211753558).
  • O método WindowInsets.only() foi adicionado para permitir que os desenvolvedores incluam somente dimensões de WindowInsets (I14c94, b/217768486).
  • Foram adicionados os elementos ComposableTarget, ComposableTargetMarker e ComposableOpenTarget, que permitem gerar relatórios sobre o tempo de compilação quando uma função combinável é chamada em um aplicador que ela não foi projetada para usar.

    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 ComposeNode ou funções combináveis relacionadas.

    Para appliers personalizados, as funções combináveis que chamam ComposeNode ou ReusableComposeNode precisam adicionar uma anotação CompoableTarget à função e a qualquer tipo de parâmetro lambda combinável. No entanto, é recomendável criar uma anotação com ComposableTargetMarker e, em seguida, usar essa anotação marcada em vez de usar a ComposableTarget diretamente. Uma anotação combinável marcada com ComposableTargetMarker é equivalente a uma ComposbleTarget com o nome totalmente qualificado da classe de atributo como o parâmetro do applier. Para conferir um exemplo de como usar a ComposableTargetMarker, consulte anroidx.compose.ui.UiComposable (I38f11).

Correções de bugs

  • Agora, é possível transmitir deslocamentos negativos de rolagem para LazyGridState.scrollToItem() e LazyGridState.animateScrollToItem() (I025c6, b/211753558).
  • Suporte ao carregamento de fonte assíncrono para TextField (Icc4bf, b/214587005).

Versão 1.2.0-alpha03

9 de fevereiro de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha03 e androidx.compose.foundation:foundation-layout:1.2.0-alpha03. A versão 1.2.0-alpha03 contém estas confirmações.

Mudanças na API

  • Os métodos notifyFocusedRect nas classes TextInputSession e TextInputService foram descontinuados e não serão chamados. Use BringIntoViewRequester (Ia4302, b/192043120, b/216842427, b/178211874).
  • As animações eram ativadas para itens de grades lentas com Modifier.animateItemPlacement() (Ib6621, b/211753218).
  • O BringIntoViewRequester agora propaga solicitações para a visualização host do Android (Ia7a51).
  • FontFamilyResolver agora está disponível via LocalFontFamilyResolver.current
    • Foram adicionados os métodos createFontFamilyResolver(context) e createFontFamilyResolver(context, coroutineScope) para criar novos resolvedores da FontFamily fora do uso do Compose.
    • Os elementos Paragraph e MultiParagraph agora usam o FontFamily.Resolver.
    • O TextLayoutResult.layoutInput.fontFamilyResolver agora contém o resolvedor usado para esse layout. O TextLayoutResult.layoutInput.resourceLoader foi descontinuado porque ele não é mais usado (Id5a45, b/174162090).
  • Foi adicionada 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.ResourceLoaded foi 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, consulte AndroidFont.
    • A função de extensão Font.AndroidResourceLoader permite criar um Font.ResourceLoader quando fora da composição.
    • O parâmetro loadingStrategy foi 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 para download, essa chamada pode ser bloqueada por 10 segundos. Em vez disso, use FontFamilyResolver.preload.
    • O uso de fontResource(FontFamily): Typeface foi 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, use FontFamilyResolver.preload (If8e7c, b/174162090).
  • Agora, é possível especificar o tipo de conteúdo para os itens da LazyVerticalGrid. As funções de item/itens no LazyGridScope agora aceitam esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I7b355, b/215372836).
  • LazyListLayoutInfo e LazyGridLayoutInfo agora têm novas propriedades: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410).
  • Agora, você pode especificar o tipo de conteúdo para os itens de LazyColumn/LazyRow. As funções de item/itens no LazyListScope passaram a aceitar esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I26506).
  • O construtor SubcomposeLayoutState que aceita maxSlotsToRetainForReuse foi descontinuado. Em vez disso, há um novo construtor que aceita a SubcomposeSlotReusePolicy, uma nova interface que permite um controle mais granular sobre quais slots são retidos para reutilização futura (I52c4d).
  • Modificadores foram adicionados ao WindowInsets, tanto para preenchimento quanto para dimensionamento. Isso permite que parte do conteúdo se estenda até a área inserida, além de manter a área principal fora da área inserida. Por exemplo, o atributo windowInsetsPadding pode ser usado para preencher a área de conteúdo de modo a evitar áreas que sejam totalmente ou parcialmente cobertas (Id0395, b/213942085).

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 FontFamily.Resolver.
    • O uso do FontLoader para computadores foi descontinuado.
    • Nova fábrica createFontFamilyResolver no 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).
  • Os campos de texto não exigem mais um pressionamento da tela de retorno quando a alça do cursor estiver sendo exibida (Ideb4b, b/205726883).
  • O comportamento da lupa de seleção foi refinado para corresponder à lupa da plataforma (Idd918, b/206833278).

Versão 1.2.0-alpha02

26 de janeiro de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha02 e androidx.compose.foundation:foundation-layout:1.2.0-alpha02. A versão 1.2.0-alpha02 contém estas confirmações.

Mudanças na API

  • A anotação NonRestartableComposable foi adicionada a métodos que são sobrecargas de métodos já existentes sem lógica complexa. Isso reduz as verificações de memorização geradas pelo compilador (igual a) para todos os parâmetros repetidos na função interna chamada (I90490).
  • Modificadores excludeFromSystemGesture foram adicionados para facilitar o acesso a setSystemGestureExclusionRects do Android (I46f07).

Correções de bugs

  • O comportamento da lupa de seleção foi refinado para corresponder à lupa da plataforma (Idd918, b/206833278).
  • LazyColumn, LazyRow, Modifier.verticalScroll e outros contêineres que usam Modifier.scrollable agora oferecem suporte à rolagem da roda do mouse (I2b5e1, b/198214718).

Versão 1.2.0-alpha01

12 de janeiro de 2022

Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha01 e androidx.compose.foundation:foundation-layout:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estas confirmações.

Mudanças na API

  • O novo parâmetro userScrollEnabled foi adicionado a LazyColumn, LazyRow e LazyVerticalGrid para permitir que os usuários desativem, de forma temporária ou permanente, a rolagem iniciada por gestos de toque ou ações de acessibilidade. A rolagem programática usando os métodos no estado ainda será permitida (I7eae9, b/201150093).
  • Adição do callback onSizeChanged ao modificador de lupa (I6879f).
  • O widget de lupa agora é mostrado ao arrastar as alças de seleção em um SelectionContainer (I30b38, b/139320979).

Correções de bugs

  • Correção da alça do cursor de TextField que não era oculta quando o usuário rolava para fora da visualização (I14552, b/208883748).

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.foundation:foundation:1.1.1 e androidx.compose.foundation:foundation-layout:1.1.1. A versão 1.1.1 contém estas confirmações.

Correções de bugs

  • A NullPointerException em androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList foi 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.foundation:foundation:1.1.0 e androidx.compose.foundation:foundation-layout:1.1.0. A versão 1.1.0 contém estas confirmações.

Mudanças importantes desde a versão 1.0.0

  • Versão estável do efeito de rolagem do Android 12.
  • Melhorias no dimensionamento da área de toque.
  • Em relação ao Compose 1.0, os componentes do Material Design vão aumentar o espaço de layout para atender 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.
  • Versão estável da 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.foundation:foundation:1.1.0-rc03 e androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc01 e androidx.compose.foundation:foundation-layout:1.1.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.

Correções de bugs

  • Agora, é possível transmitir deslocamentos negativos de rolagem para LazyListState.scrollToItem() e LazyListState.animateScrollToItem() (Iceb90, b/184252837).
  • Correção de um bug que causava erro nas ações de rolagem de acessibilidade (I7cbfb).

Versão 1.1.0-beta04

1.º de dezembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-beta04 e androidx.compose.foundation:foundation-layout: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 consumir PointerInputchange como um todo ou verificar se foi consumida ou não foram adicionadas (I2e59d).
  • Um widget de lupa é exibido ao arrastar o cursor ou as alças de seleção nos campos de texto (I5391e, b/203781358).

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.foundation:foundation:1.1.0-beta03 e androidx.compose.foundation:foundation-layout:1.1.0-beta03. A versão 1.1.0-beta03 contém estas confirmações.

Mudanças na API

  • Suporte a períodos horizontais foi adicionado à LazyVerticalGrid (I7e2fa, b/176758183).
  • Adição do recurso experimental para animar posições de itens de listas lentas. Há um novo modificador disponível no LazyItemScope chamado Modifier.animateItemPlacement(). Exemplo de uso:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Quando você fornece uma chave usando LazyListScope.item ou LazyListScope.items, esse modificador ativa animações de reordenação de itens. Além da reordenação do item, todas as outras mudanças de posição causadas por eventos como mudanças de organização ou de alinhamento também serão animadas (I59e7b, b/150812265).

Versão 1.1.0-beta02

3 de novembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-beta02 e androidx.compose.foundation:foundation-layout:1.1.0-beta02. A versão 1.1.0-beta02 contém estas confirmações.

Correções de bugs

  • As ondulações e outras indicações agora só serão atrasadas se estiverem dentro de um contêiner Modifier.scrollable(), em vez de sempre serem atrasadas em um evento para baixo (Ibefe0, b/203141462).
  • Foi adicionada a API experimental BringIntoView, que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item (Ib918d, b/195353459).

Contribuição externa

  • O Modifier.pointerHoverIcon foi adicionado (I95f01).

Versão 1.1.0-beta01

27 de outubro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-beta01 e androidx.compose.foundation:foundation-layout:1.1.0-beta01. A versão 1.1.0-beta01 contém estas confirmações.

Correções de bugs

  • Foi adicionada a API experimental BringIntoView, que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item (Ib918d, b/195353459).

Versão 1.1.0-alpha06

13 de outubro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha06 e androidx.compose.foundation:foundation-layout:1.1.0-alpha06. A versão 1.1.0-alpha06 contém estas confirmações.

Mudanças na API

  • Foi adicionada uma sobrecarga sem filhos para o Layout, com eficiência melhorada (Ib0d9a).
  • SemanticsNodeInteraction.performSemanticsAction agora retorna a SemanticsNodeInteraction em que a função foi chamada (I9e5db).
  • Foi adicionado performScrollToNode(matcher: SemanticsMatcher), que rola um contêiner rolável até o conteúdo correspondente (Ic1cb8).

Versão 1.1.0-alpha05

29 de setembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha05 e androidx.compose.foundation:foundation-layout:1.1.0-alpha05. A versão 1.1.0-alpha05 contém estas confirmações.

Mudanças na API

Correções de bugs

  • O suporte à acessibilidade para roláveis lentos e não lentos foi corrigido em relação à rolagem (I6cdb0).

Versão 1.1.0-alpha04

15 de setembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha04 e androidx.compose.foundation:foundation-layout:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estas confirmações.

Mudanças na API

  • performGesture e GestureScope foram descontinuados e substituídos por performTouchInput e TouchInjectionScope (Ia5f3f, b/190493367).
  • A propriedade touchBoundsInRoot foi 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).

Correções de bugs

  • O suporte à rolagem esticada foi adicionado a dispositivos Android 12 (Iccf3c, b/171682480).

Versão 1.1.0-alpha03

1.º de setembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha03 e androidx.compose.foundation:foundation-layout:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estas confirmações.

Novos recursos

  • O Compose 1.1.0-alpha03 foi atualizado para depender do Kotlin 1.5.30 (I74545).

Mudanças na API

  • Um efeito de brilho para a rolagem foi adicionado. A nova API experimental OverScrollConfiguration foi adicionada para permitir a configuração do efeito visual de rolagem. Forneça um valor nulo para desativar o efeito de rolagem (I0c304, b/171682480).
  • A interface AwaitPointerEventScope agora tem withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
  • Um método de teste para receber os limites cortados foi adicionado (I6b28e).
  • Um tamanho mínimo da área de toque da ViewConfiguration foi adicionado para uso na entrada de semântica e ponteiros para garantir a acessibilidade (Ie861c).

Versão 1.1.0-alpha02

18 de agosto de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha02 e androidx.compose.foundation:foundation-layout:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.

Mudanças na API

  • Adição das versões de DpSize para Modifier.size e requiredSize (I3fc7e, b/194219828).

Versão 1.1.0-alpha01

4 de agosto de 2021

Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha01 e androidx.compose.foundation:foundation-layout:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.

Mudanças na API

  • O método DrawScope#drawImage, que consome retângulos de origem e destino para consumir um parâmetro FilterQuality opcional, foi atualizado. Isso é útil para fazer arte de pixels que precisa ser pixelada quando redimensionada para artes baseadas em pixels. O BitmapPainter e Image que podem ser compostos foram atualizados para consumir também um parâmetro FilterQuality opcional (Ie4fb0, b/180311607).
  • O TextField agora limpa a seleção quando o botão "Voltar" é pressionado, o que corresponde ao comportamento do EditText do Android (I3ca16, b/174173645).
  • A alça do cursor foi adicionada (I07a82, b/173016579).

Correções de bugs

  • A rolagem usando ações semânticas para listas lentas e componentes de rolagem regulares agora é animada (Id9066, b/190742024).

Contribuição externa

  • LazyVerticalGrid agora aceita parâmetros de disposição horizontal e vertical (If9c92).

Versão 1.0

Versão 1.0.5

3 de novembro de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.5 e androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.4 e androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.3 e androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.2 e androidx.compose.foundation:foundation-layout:1.0.2. A versão 1.0.2 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.foundation:foundation:1.0.1 e androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0 e androidx.compose.foundation:foundation-layout: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 AGP 7.1 (b/194289155).

Versão 1.0.0-rc02

14 de julho de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-rc02 e androidx.compose.foundation:foundation-layout:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.

  • Atualização da renderização de bordas para formas genéricas a fim de solucionar problemas nos caminhos definidos com dimensões fixas (aosp/1748871, b/191817116).

Versão 1.0.0-rc01

1º de julho de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-rc01 e androidx.compose.foundation:foundation-layout:1.0.0-rc01. A versão 1.0.0-rc01 contém estas confirmações.

Mudanças na API

  • Agora, o Canvas tem suporte ao parâmetro contentDescription para acessibilidade (Ib547c).

Correções de bugs

  • O botão, o card, as caixas de seleção e os valores Modifier.clickable(enabled=false) gerais vão bloquear os cliques para o nível pai (Ic2c3b, b/183908811).

Versão 1.0.0-beta09

16 de junho de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta09 e androidx.compose.foundation:foundation-layout:1.0.0-beta09. A versão 1.0.0-beta09 contém estas confirmações.

Mudanças na API

  • ManualFrameClock foi removido. Se você precisar controlar as animações, use composeTestRule.mainClock (I3c3e8, b/189951065).
  • Mudança das enumerações Role e LiveRegionMode para classes in-line com construtor privado (Id1890).
  • A KeyboardCapitalization é convertida em classe in-line (Id5a1c).
  • O TextOverflow foi mudado para uma classe in-line (I433af).

Correções de bugs

  • Agora, quando você especificar as chaves exclusivas para itens "LazyColumn/Row", a posição de rolagem será mantida com base na chave, ou seja, se você adicionar/remover itens antes do item visível atual, aquele com a chave indicada será mantido como o primeiro visível (Id263f, b/184257857).
  • Por enquanto, as constantes de chave são @ExperimentalComposeUiApi. O código de consumo pode declarar constantes particulares antes da estabilização (Ia5d48).
  • Adição de IdlingStrategy ao AndroidComposeTestRule, que pode ser usado por testes de frameworks para instalar um mecanismo alternativo para aguardar ou alcançar a quiescência. Use AndroidComposeTestRule.setIdlingStrategyFactory() antes de começar o teste para instalar sua própria estratégia (I608fa).

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.txt localizado no diretório src/main ou 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 com adb 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 caracteres H, S e P, 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 classe androidx.compose.runtime.SlotTable teria o descritor Landroidx/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étodo fun isPlaced(): Boolean em LayoutNode tem a assinatura isPlaced()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 H indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.

  • Um método com a flag S indica 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 P indica 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.foundation:foundation:1.0.0-beta08 e androidx.compose.foundation:foundation-layout:1.0.0-beta08. A versão 1.0.0-beta08 contém estas confirmações.

Mudanças na API

  • A enumeração NestedScrollSource foi substituída por uma classe in-line (Ie321b, b/187055290).
  • O uso de enumerações para classes in-line foi refatorado para evitar problemas com a adição de instruções "when" quando novos valores de enumeração forem adicionados (I2b5eb).
  • Um tempo limite clicável / alternável foi adicionado para evitar a exibição de uma ondulação durante uma rolagem / ao arrastar (Ia2704, b/168524931).
  • 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).
  • Modifier.focusModifier() foi descontinuado e substituído por Modifier.focusTarget() (I6c860).
  • A enumeração KeyboardType foi substituída por uma classe in-line (I73045, b/187055290).
  • A enumeração FocusState foi substituída por uma interface FocusState (Iccc1a, b/187055290).
  • A enumeração ImeAction foi substituída por uma classe in-line (I18be5, b/187055290).
  • As funções AnnotatedString.withAnnotation agora são ExperimentalTextApi em vez de ExperimentalComposeApi (I0cd0a).
    • O construtor TextUnit com TextUnitType agora é ExperimentalTextApi, em vez de ExperimentalComposeApi.
  • PaddingValues agora é @Stable em vez de @Immutable (I88c50).

Correções de bugs

  • As falhas ao tocar área em branco em textos não vazios e mantê-la pressionada foram corrigidas (I33ab5, b/187437299).
  • A barra de ferramentas é exibida após SelectAll (I495d9, b/185919613).
  • Correção para contêineres roláveis que cortavam os filhos no eixo cruzado. Eles eram facilmente reproduzíveis se você tivesse uma LazyRow com itens de Card. Agora a sombra não será cortada (Icb635, b/186318448).
  • Corrigido um problema em que ondulações / outras indicações algumas vezes ficavam presas após um clique longo ao usar Modifier.combinedClickable (I2298c, b/186223077).
  • Agora, detectDragGesures, detectVerticalGestures e detectHorizontalGestures consomem a mudança de posição automaticamente, sem necessidade de chamar change.consumePositionChange nos callbacks onDrag (I42fc4, b/185096350, b/187320697).
  • Modifier.onGloballyPositioned() mudou para informar as coordenadas desse modificador na cadeia de modificadores, não as coordenadas de layout após 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.foundation:foundation:1.0.0-beta07 e androidx.compose.foundation:foundation-layout:1.0.0-beta07. A Versão 1.0.0-beta07 contém estas confirmações.

Mudanças na API

  • A próxima lógica de pré-busca de itens visíveis foi introduzida para LazyColumn/Row (I8a4bc, b/184940225).
  • Uma alça de seleção de clipe foi adicionada (Iff80d, b/183408447).

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).
  • paintBackground foi removido (I38660).
  • Exiba o segundo plano da seleção usando o DrawScope (I73c61, b/186674472).
  • Correção de uma regressão beta06 que afetava linhas/coluna que usavam disposições spacedBy para layouts filhos ponderados (Ifaf8c, b/187326588).

Versão 1.0.0-beta06

5 de maio de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta06 e androidx.compose.foundation:foundation-layout: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).
  • 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.ScrollToIndex para rolar uma lista com itens indexados até um item com determinado índice, e SemanticsProperties.IndexForKey para 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, e SemanticsNodeInteraction.performScrollToKey, que rola uma lista até o item com a chave especificada (I4fe63, b/178483889, b/161584524).
  • AnnotatedString é compatível com salvamento para TextFieldValue.Saver. As funções utilitárias addTtsAnnotation e withAnnotation foram adicionadas ao método AnnotatedString.Builder (I8cbdc, b/178446304).
  • Valores padrão de parâmetro 0.dp foram adicionados aos PaddingValues(horizontal, vertical) (I05571, b/181336792)

Correções de bugs

  • Elementos filhos da linha e da coluna com weight(fill = false) não fazem mais a mãe preencher todo o espaço do eixo principal disponível (Ied94d, b/186012444, b/184355105).

Versão 1.0.0-beta05

21 de abril de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta05 e androidx.compose.foundation:foundation-layout:1.0.0-beta05. A versão 1.0.0-beta05 contém estas confirmações.

Mudanças na API

  • A interface FlingBehavior agora está marcada como @Stable. Todas as implementações precisam estar em conformidade com os termos @Stable (I93354, b/184830577).

Correções de bugs

  • Foram corrigidas ações de rolagem de acessibilidade em ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. 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.foundation:foundation:1.0.0-beta04 e androidx.compose.foundation:foundation-layout:1.0.0-beta04. A versão 1.0.0-beta04 contém estas confirmações.

Mudanças na API

  • hideSoftwareKeyboard e showSoftwareKeyboard no SoftwareKeyboardController foram renomeados para hide() e show(), respectivamente.
    • A interface completa do CompositionLocal agora é fornecida para o LocalSoftwareKeyboardController, possibilitando que ela seja definida já que é especialmente útil em testes (I579a6).
  • TextOverflow.Visible foi introduzido (Ic8f89).
  • As instâncias públicas de RowScope, ColumnScope, BoxScope e BoxWithConstraintsScope foram removidas (I4e83e, b/181869067).

Correções de bugs

  • Foi corrigido o problema que ocorria quando os itens de LazyColumn/LazyRow localizados nas bordas eram posicionados incorretamente após o gesto de deslizar rapidamente (Ie4d13, b/183877420).
  • Antes dessa mudança, as funções combináveis locais podiam ser ignoradas com base nos parâmetros delas. Após essa mudança, nenhuma função de composição local vai ser ignorada. Essa mudança é feita porque é comum e esperado que as funções locais capturem parâmetros de pai e mãe. Nesse caso, ignorá-los é uma fonte comum de bugs.

    Para resumir, considere o exemplo:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Antes dessa mudança, a função que pode ser composta ShowCount sempre era ignorada, mesmo depois de atualizar o parâmetro count. Entretanto, esse não é mais o caso (I5648a).

Versão 1.0.0-beta03

24 de março de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta03 e androidx.compose.foundation:foundation-layout:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações.

Mudanças na API

  • O uso de DefaultMonotonicFrameClock foi descontinuado. Chamar withFrameNanos ou Recomposer.runRecomposeAndApplyChanges sem MonotonicFrameClock agora vai gerar uma IllegalStateException (I4eb0d).

Correções de bugs

  • FlingBehavior.performFling() agora é chamado mesmo quando a velocidade é 0 (I0b6e5, b/181237123).

Versão 1.0.0-beta02

10 de Março de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta02 e androidx.compose.foundation:foundation-layout:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações.

Mudanças na API

  • Foram adicionadas várias pequenas otimizações à lógica de medida do LazyColumn (Ic6889).
  • Adicionada nova API 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).

Correções de bugs

  • Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).

Versão 1.0.0-beta01

24 de fevereiro de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-beta01 e androidx.compose.foundation:foundation-layout: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).
  • Declarações dp foram removidas (I798d2).
  • O callback SoftwareKeyboardController foi removido de todos os campos de texto para ser substituído por uma nova API em breve (Iae869, b/168778053).
  • 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).
  • InteractionState foi 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 como Button e Modifier.clickable(), use interactionSource = 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).
  • Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
  • Foi criada uma nova TextInputSession para sessões de entrada de 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).
  • O modificador selectGroup, que permite marcar a coleção de guias ou botões de opção, foi adicionado para fins de acessibilidade (Ie5c29).
  • Adição de LazyListState.animateScrollToItem

    Esse método rola suavemente até um item específico na lista (I4bfd7).

  • ScrollableState.smoothScrollBy() foi renomeado como animationScrollBy() LazyListState.snapToItemIndex() foi renomeado como scrollToItem() ScrollState.smoothScrollTo() foi renomeado como animationScrollTo() (I35ded).

  • Modifier.zoomable foi substituído por Modifier.transformable. Os elementos smoothPanBy e smoothRotationBy foram adicionados como uma funcionalidade (Ifc32b, b/175294473).

  • A defaultFactory para compositionLocalOf e staticCompositionLocalOf agora é 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 defaultFactory gerará 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).

  • Indication#createIndication() mudou para Indication#rememberUpdatedIndication(InteractionState) e remoção do parâmetro InteractionState de IndicationInstance#drawIndication(). A IndicationInstance só deve ser responsável por desenhar efeitos visuais, e não iniciar animações / estado de gravação em resposta a mudanças no InteractionState. Estas animações e gravações de estado ocorrerão dentro de rememberUpdatedIndication(). O parâmetro indication em Modifier.indication também foi modificado para ser um parâmetro obrigatório (Ic1764, b/152525426).

  • 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() é representada com o Ints agora (I81298).

  • Os pacotes de métodos smoothScrollBy e scrollBy foram mudados para androidx.compose.foundation.gestures.* (I3f7c1, b/175294473).

  • FlingConfig foi renomeado como FlingBehavior e agora permite a personalização da animação de suspensão em vez de valores de Decays predefinidos (I02b86, b/175294473)

  • 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).

  • defaultMinSizeConstraints foi renomeado como defaultMinSize (I4eaae).

  • Modifier.tapGestureFilter foi removido. Use Modifier.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).

  • AnimationClockObservable e subclasses foram removidos. AnimatedFloat foi removido (Icde52, b/177457083).

  • drawerState.open() e drawerState.close() estão suspendendo funções. Use rememberCoroutineScope() para acessar o escopo da composição para chamá-la (I16f60, b/175294473).

  • 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 @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).
  • O Modifier.scrollable foi reformulado. Agora, ele usa a interface Scrollable em vez da classe ScrollableController (I4f5a5, b/174485541, b/175294473).

  • Modifier.draggable agora aceita DraggableState em vez de um lambda simples. É possível criar o estado usando o rememberDraggableState { delta -> } para ter o mesmo comportamento de antes (Ica70f, b/175294473).

  • Modificadores requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) foram adicionados para o dimensionamento necessário para tamanhos intrínsecos (I0a6b4).

  • O emptyContent() descontinuado foi removido. Use {} (Idb33f, b/179432510).

  • Algumas APIs descontinuadas foram excluídas (Ice5da, b/178633932).

Correções de bugs

  • A nova API local de composição LocalSoftwareKeyboardController foi adicionada 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.foundation:foundation:1.0.0-alpha12 e androidx.compose.foundation:foundation-layout:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estas confirmações.

Mudanças na API

  • 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).
  • Atualização de testes: hasText() vai conferir se há texto de entrada e de etiqueta/dica/marcador no campo de texto (Iab803).
  • PaddingValues.Absolute foi adicionado e pode ser usado em APIs que aceitam PaddingValues (Ia5f30).
  • O uso de onImeActionPerformed foi descontinuado. Use KeyboardActions (If0bbd, b/179071523).
  • 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).
  • Introduzido um elemento de contexto de corrotina InfiniteAnimationPolicy que vai ser aplicado a animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes com ComposeTestRule (I50ec4, b/151940543).
  • Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
  • 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).
  • Foi adicionada a compatibilidade com chaves personalizadas para LazyColumn/LazyRow. Isso nos permite gerenciar melhor a reordenação dos itens. Assim, o estado armazenado em blocos remember {} vai se mover com o item quando os elementos forem reorganizados ou o item for removido do meio

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Mudança de Indication#createInstance para @Composable e alteração de LocalIndication para conter uma Indication, não () -> Indication (I5eeea, b/157150564).

  • 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).

  • Modifier.clickable agora não é compatível com cliques duplos e longos. Use Modifier.combinedClickable para essa funcionalidade (Iafad1).

  • toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).

  • IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).

  • 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).

  • 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 de remember { mutableStateOf(0) }, também vamos remover o elemento combinável savedInstanceState { 0 }. Use rememberSaveable { 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 gravação personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso vai ser assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).

  • Adição de semântica de senha para acessibilidade (I231ce).

  • Adição de ProgressBarRangeInfo.Indeterminate para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).

  • Agora, o tempo de reprodução na animação é unificado em nanossegundos (If776a).

  • O uso de @ComposableContract foi descontinuado e substituído por três outras anotações mais específicas.

    @ComposableContract(restartable = false) passou a ser @NonRestartableComposable @ComposableContract(readonly = true) passou a ser @ReadOnlyComposable @ComposableContract(preventCapture = true) passou a ser @DisallowComposableCalls @ComposableContract(tracked = true) foi removido (I60a9d).

  • O uso dos utilitários emptyContent() e (@Composable () -> Unit).orEmpty() foi descontinuado por não terem mais valor ou impacto positivo na performance (I0484d).

  • 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).

  • As APIs relacionadas a LazyVerticalGrid são marcadas como experimentais (Ia53e3, b/178519862).

  • rememberSavedInstanceState() foi renomeado como rememberSaveable() e movido para o pacote androidx.compose.runtime.saveable (I1366e, b/177338004).

  • RestorableStateHolder foi renomeado como SaveableStateHolder e movido para o pacote androidx.compose.runtime.saveable. O método interno RestorableStateProvider foi renomeado como SaveableStateProvider. O tipo genérico foi removido para que você possa transmitir qualquer valor como uma chave. A anotação experimental não é mais necessária (I0902e, b/174598702).

  • Saver, listSaver(), mapSaver() e autoSaver foram movidos de androidx.compose.runtime.savedinstancestate para androidx.compose.runtime.saveable (I77fe6).

  • 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).

  • 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).

  • canDrag foi removido de Modifier.scrollable (Id66e7, b/175294473).

  • 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).

  • Modifier.scaleGestureFilter foi removido. Use Modifier.zoomable. Você também pode usar Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473).

  • O uso de AnimatedValue/Float foi descontinuado. Use o Animatable (I71345, b/177457083).

    • CoreText e CoreTextField foram removidos da API pública.
    • A sobrecarga descontinuada SelectionContainer foi removida (I99c19).
  • Para continuar com as mudanças da última versão, as funções de rolagem que não são de suspensão foram totalmente removidas. Converta para as funções de suspensão com os mesmos nomes. Um escopo de corrotina pode ser conseguido com rememberCoroutineScope() (I3d39c, b/178169563).

  • O uso de androidx.compose.foundation.layout.ConstraintLayout foi descontinuado e substituído por androidx.constraintlayout.compose.ConstraintLayout. Você vai precisar adicionar uma dependência a androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 (I87adc).

  • O uso de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter foi descontinuado. Use Modifier.clickable ou Modifier.pointerInput com a função detectTapGestures (I6baf9, b/175294473).

  • 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ções 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).

Versão 1.0.0-alpha11

28 de janeiro de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha11 e androidx.compose.foundation:foundation-layout:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estas confirmações.

Mudanças na API

  • O uso do scrollBy que não é de suspensão foi descontinuado, e o scrollTo que não é de suspensão foi removido.

    Agora recomendamos o uso de funções de suspensão para controlar a rolagem e aguardar a conclusão da rolagem. Estamos descontinuando e/ou removendo as versões não suspensas dessas funções como parte da transição (Ie9ced).

  • O uso do smoothScrollBy que não é de suspensão foi descontinuado. Agora, recomendamos o uso de funções de suspensão para controlar a rolagem e aguardar a conclusão dela. Como parte da transição, estamos descontinuando as versões dessas funções que não são de suspensão (I12880).

  • O parâmetro de descrição de conteúdo foi adicionado a Image e Icon. Ele é usado para fornecer descrição para os serviços de acessibilidade (I2ac4c).

  • BasicTextField recebeu um novo parâmetro chamado "decorationBox". Ele permite adicionar decorações como ícones, marcadores, etiquetas e similares ao campo de texto e aumentar a área de toque dele (I16996).

  • O parâmetro canDrag foi removido do Modifier.draggable (Ic4bec, b/175294473).

  • AnimatedFloat.fling que aceita FlingConfig foi removido. Use o Animatable.animateDecay de suspensão (I4659b, b/177457083).

  • A data class foi removida das seguintes classes:

    • InlineTextContent
    • Locatelist
    • (I605c7)
  • clickable, toggleable e selectable agora podem ser criados fora da composição (I0a130, b/172938345, b/175294473).

  • 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 renderizar elementos visíveis. Para evitar que os usuários escolhessem uma forma não eficiente, decidimos suspender o uso de ScrollableColumn e de ScrollableRow e 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) e itemsIndexed(items: List) são funções de extensão, então precisam ser importadas manualmente quando são usadas. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

  • O elemento descontinuado AbsoledAggregation foi removido (Iffa96, b/177641870).

  • O parâmetro propagadMinConstraints foi adicionado ao Box para especificar se as restrições mínimas de entrada precisam ser transmitidas ao conteúdo do Box ou não. O padrão é false (I0125b, b/152613457).

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi descontinuado e substituído pelas APIs SideEffect e DisposableEffect (If760e).
  • WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
  • 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 criados por funções de fábrica.
    • Font.asFontFamily foi renomeada como Font.toFontFamily.
    • (I42aa7)
  • Foi introduzido ComposeContentTestRule, que estende ComposeTestRule e define setContent, que foi removido de ComposeTestRule. Foi adicionado um método de fábrica createEmptyComposeRule() que retorna uma ComposeTestRule e não inicia uma atividade para você. Use isso quando quiser iniciar a atividade durante o teste, por exemplo, usando ActivityScenario.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).

  • Agora, a densidade é o escopo do receptor para interfaces de Arrangement (I18aad).

  • 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.

    • initial foi 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).

  • 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).

  • O RememberObserver substituiu o CompositionLifecycleObserver, e o CompositionLifecycleObserver teve o uso descontinuado.

    RememberObserver é uma substituição de CompositionLifecycleObserver com 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 que onEnter é chamado apenas uma vez. onEnter era chamado várias vezes quando o objeto era usado em subcomposições, como WithConstraints e Scaffold, tornando a única garantia de chamada de onEnter não confiável, e foi removido para RememberObserver.

    A interface RememberObserver adiciona a função onAbandoned, que é chamada se a instância de RememberObserver é retornada do callback transmitido para remember, mas não é lembrada no estado de composição e, portanto, a chamada de onRemembered nunca 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 de RememberObserver após a recomendação de referência única acima estiver rastreando um recurso externo, onForgotten e onAbandoned vão indicar que o recurso não é mais necessário. Se o objeto estiver rastreando o trabalho iniciado ou os recursos alocados em onRemembered, a função onAbandoned pode ser ignorada, porque não vai ser chamada se a onRemembered for chamada (I02c36).

  • Renomeação de TransformedText.transformedText para TransformedText.text

    • TransformedText não é mais uma classe de dados (Ie672a).
  • As seguintes classes não são mais classes de dados:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Remoção dos métodos monotonicFrameAnimationClockOf experimentais (Ib753f, b/170708374).

  • O uso dos métodos de coordenadas globais foi descontinuado, e foram criados novos métodos de coordenadas baseados em janela (Iee284).

  • Use ImeAction.None em vez de ImeAction.NoAction

    • Use ImeAction.Default em vez de ImeAction.Unspecified (Ie1bcc).
  • 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).

  • Alteração de VisualTransformation para ser uma interface funcional (I3bba4).

  • Use TestCoroutineDispatcher nos testes (I532b6).

  • 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).

  • TextInputService.onStateUpdated foi renomeado como updateState (Id4853).

  • Remova displaySize, porque ele precisa ser evitado. Normalmente, é melhor usar o tamanho de onRoot() ou pelo menos o tamanho da janela (I62db4).

Versão 1.0.0-alpha10

13 de janeiro de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha10 e androidx.compose.foundation:foundation-layout:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações.

Mudanças na API

  • ImeOptions e KeyboardOptions não são mais uma classe de dados (I3c898, b/168684531).
  • 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).
  • 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).
  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • Renomeação de @ExperimentalTesting como @ExperimentalTestApi para ser consistente com anotações de API experimental semelhantes (Ia4502, b/171464963).
  • Adição do método experimental stickyHeader a LazyColumn/LazyRow (I0a81d).
  • Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
  • O uso de TestUiDispatcher foi descontinuado. Em vez disso, use Dispatchers.Main (Ic171f, b/175385255).
  • 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).
  • FlowRow e FlowColumn foram descontinuados. Use um layout personalizado (I09027).
  • 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).
  • Mudança de fun Dp.isFinite() para val Dp.isFinite (I50e00).
  • Constraints#satisfiedBy foi renomeado como isSatiendedBy (I9cf5c).
  • Adição de isSpecified, isUnspecified e useOrElse para classes in-line com uma constante Unspecified (I93f7b, b/174310811).

Correções de bugs

  • Nova API baseada em corrotina Animatable que garante exclusividade mútua entre as animações. Nova DecayAnimationSpec para oferecer suporte a animação de redução multidimensional (I820f2, b/168014930).
  • Foi adicionado suporte a campos de texto desativados e somente leitura (I35279, b/171040474, b/166478534).
  • animate() agora é substituído por animateAsState(), que retorna um State<T> em vez de T. 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).
  • O keyEvent nativo agora pode ser acessado pelo keyEvent.nativeKeyEvent (I87c57, b/173086397).

Versão 1.0.0-alpha09

16 de dezembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha09 e androidx.compose.foundation:foundation-layout:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações.

Mudanças na API

  • Adicione a interface Scrollable.

    Isso permite que o ScrollState e o LazyListState sejam tratados como um tipo comum, permitindo que a rolagem personalizada seja implementada em ambos os tipos.

    Isso também move smoothScrollBy para uma função de extensão no Scrollable, aproveitando essa funcionalidade (I2153b).

  • LazyVerticalGrid foi adicionado (I17267, b/162213211).

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed foram descontinuados. Use LazyColumn e LazyRow (I5b48c).

  • Para suspender as APIs de entrada de ponteiro, o HandlePointerInputScope foi renomeado como AwaitPointerEventScope e o handlePointerInput() como awaitPointerEventScope() (Idf0a1, b/175142755).

  • Adição de LazyListState.layoutInfo que expõe a lista de tamanhos e deslocamentos dos itens visíveis no momento (If8678, b/170472532).

  • A anotação ExperimentalPointerInput foi removida (Ia7a24).

  • Foi adicionado suporte a TextFields para o InteractionState (I61d91).

  • Adicione o parâmetro ReverseLayout a LazyColumn/Row quando itens true forem compostos da parte inferior para a parte superior, e LazyListState.firstVisibleItemIndex == 0 vai significar que o primeiro item está localizado na parte inferior (I552ae, b/166589935).

  • O parâmetro verticalArrangement foi adicionado a LazyColumn. O parâmetro horizontalArrangement foi adicionado a LazyRow. A organização nos permite adicionar um espaçamento entre os itens e especificar a organização deles quando não houver espaço suficiente para preencher todo o tamanho mínimo (Icf79a, b/170394300).

  • Agora, detectMultitouchGestures usa um callback com parâmetros combinados de centroide, de panorâmica, de zoom e de rotação (Ie6e1c).

  • O ContentDrawScope foi movido para o módulo ui-graphics para ser usado com o DrawScope (Iee043, b/173832789).

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

  • O uso de Modifier.focusObserver foi descontinuado. Use Modifier.onFocusChanged ou Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).

  • 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).

  • Várias novas funções foram introduzidas no SelectionRegistrar, e onPositionChange foi renomeado notifyPositionChange (Ifbaf7).

  • AndroidOwner agora é interno (Ibcad0, b/170296980).

  • Nova função InfiniteRepeatable para criar um InfiniteRepeatableSpec (I668e5).

  • A interface Applier foi modificada para simplificar a criação de árvores de baixo para cima, em vez de cima para baixo.

    O método insert() foi renomeado como insertTopDown().

    Um novo método, insertBottomUp(), foi adicionado.

    Uma Applier insere nós na árvore que está editando com insertTopDown() ou insertBottomUp(), dependendo de qual apresenta melhor desempenho.

    Algumas árvores, como LayoutNode e View, 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, um Applier substitui um insertBottomUp() para criar uma árvore de baixo para cima, e insertTopDown() para criar a árvore de cima para baixo (Icbdc2).

  • A API painterResource foi adicionada 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 da função de fábrica buildAnnotatedString para criar uma AnnotatedString. Descontinuação do uso da função builder da annotatedString (Idfe0b).

Versão 1.0.0-alpha08

2 de dezembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha08 e androidx.compose.foundation:foundation-layout:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.

Mudanças na API

  • Remoção do parâmetro maxLines do CoreTextField. Se você quiser limitar a altura do campo de texto pelo número de linhas, use BasicTextField (Iec002).
  • Os métodos await*TouchSlop() foram mudados para não detectar o ponteiro e renomeados como *OrCancellation. Também foi eliminada a necessidade do parâmetro orientationLock (Ie96e1).
  • Uma verificação de lint foi adicionada para posicionamento e nomeação do parâmetro lambda combinável, para conferir a consistência com as diretrizes do Compose. Também ocorreu a migração de algumas APIs usando children como o nome da lambda final para content, de acordo com a verificação e as orientações do lint (Iec48e).
  • As APIs foundation:foundation-text foram movidas para foundation:foundation. A estrutura do pacote permaneceu a mesma (Id3eb2).
  • Novo detector de gestos multitoque, incluindo auxiliares para detectar rotação, zoom e movimento (Ic459d).
  • 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 do conselho da API. Foram adicionados typealias de VectorAssetBuilder para vincular ImageVector.Builder para compatibilidade (Icfdc8).
  • ImageAsset e métodos relacionados foram renomeados como ImageBitmap (Ia2d99).
  • Propriedades semânticas de base movidas para interface (I6f05c).
  • APIs de rolagem baseadas em corrotinas foram adicionadas:

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

  • Adição de um parâmetro singeLine a BasicTextField, TextField e OutlinedTextField. Defina esse parâmetro como verdadeiro para tornar o campo de texto uma única linha rolável horizontalmente (I57004, b/168187755).

  • O detector de gestos para 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).

  • 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).

  • As APIs descontinuadas foram removidas: Border foi removida, use BorderStroke. Modifier.drawBorder foi removida, use Modifier.border. Modifier.gravity foi removida, use Modifier.align. Stack foi removida, use Box (I32c2b, b/172470874).

  • AbsoluteArrangement foi renomeado como Arrangement.Absolute (If26f2).

Correções de bugs

  • 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).
  • O Modifier.drawLayer foi renomeado como Modifier.graphicsLayer. Além disso, as classes relacionadas foram atualizadas para GraphicsLayer, de acordo com o feedback do conselho da API (I0bd29, b/173834241).
  • <T> foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).
  • 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).
  • 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).
  • 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).
  • Adição do parâmetro resetInput para TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
  • API TextFieldValue atualizada.
    • TextFieldValue.composition agora é somente leitura.
    • Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
  • Ambients nomeados com Ambient como sufixo foram descontinuados e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • 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 como typeface() (I52ab7).
  • Uma verificação de lint foi adicionada para conferir se as fábricas do Modifier usam androidx.compose.ui.composed {} internamente em vez de serem marcadas como @Composable (I3c4bc).
  • 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).
  • Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
  • O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
  • Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
  • TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
  • A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
  • O módulo foundation:foundation-text foi mesclado em foundation:foundation (Idac0f).
  • O uso de place(Offset) e placeRelative(Offset) foi descontinuado. Use sobrecargas com deslocamentos int (I4c5e7).
  • id foi renomeado como layoutId para LayoutIdParentData. O Measurable.id foi renomeado como Measurable.layoutId (Iadbcb, b/172449643).

Versão 1.0.0-alpha07

11 de novembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 e androidx.compose.foundation:foundation-text:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.

Mudanças na API

  • Assim como ocorre com Modifier.fillMaxSize[Width|Height], agora aceitamos frações em Modifier.fillParentMaxSize[Width|Height] dentro do escopo de LazyColumn/Row (I797e2, b/166586426).
  • Remoção de KeyboardOptions.toImeOptions da API pública (Ic2e45).
  • O uso de AmbientTextStyle, ProvideTextStyle e AmbientContentColor de base foi descontinuado. Em vez disso, use as novas versões disponíveis na biblioteca Material. Em aplicativos que não usam o Material Design, crie seus próprios ambientes de temas específicos do sistema de design que possam ser consumidos nos seus componentes (I74acc, b/172067770).
  • O uso de 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).
  • Adição de maxLines a TextFields (Ib2a5b).
  • Atualize TextFields para aceitar KeyboardOptions (Ida7f3).
  • Adição de KeyboardOptions para uso em TextFields (I9ca32).
  • Adição de BasicText como uma API de design discreta para texto, paralela à BasicTextField (I28268).
  • A anotação ExperimentalLazyDsl foi removida. LazyColumn/LazyRow agora pode ser usado sem a adição de @OptIn (Idab7a, b/166584730).
  • O uso de BaseTextField foi descontinuado. Use BasicTextField (I896eb).
  • BasicTextField foi adicionado como substituto para CoreTextField e BaseTextField (Id4cea).
  • Os LazyColumnItems/LazyRowItems descontinuados foram removidos (I1d8a8).
  • Os elementos combináveis de dimensionamento para medidas intrínsecas descontinuados foram removidos (I18537, b/171811496).
  • relativePaddingFrom foi renomeado como paddingFrom. O modificador paddingFromBaseline foi adicionado, como conveniência para a especificação de distâncias de limites de layout para linhas de base do texto (I0440a, b/170633813).
  • O parâmetro matchHeightConstraintsFirst foi adicionado ao modificador aspectRatio, que pode ser usado para especificar o modificador de acordo com as restrições de altura antes de testar os correspondentes de largura (Ie7c43, b/155290593).
  • O elemento descontinuado DpConstraints foi removido (I87884, b/171702471).

Correções de bugs

  • A classe in-line ScaleFactor foi introduzida para representar fatores de escala para os eixos horizontal e vertical independentes uns dos outros para 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).
  • captureToBitmap foi movido para captureToImage (I86385).
  • Marcação de CoreText como @InternalTextApi. Use BasicText (I6aaeb).
  • Renomeação de KeyboardOptions como ImeOptions (I82f36).
  • KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
  • CoreTextField foi marcado como @InternalTextApi. Use BasicTextField (Ie2469).
  • A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
  • O módulo ui-test-junit4 foi introduzido (Ib91f8).
  • A API Icon foi atualizada para assumir Color.Unspecified como uma tonalidade possível, que desenha o recurso ou o Painter fornecido sem um ColorFilter. Anteriormente, tentativas de ignorar a tonalidade com Color.Unspecified resultavam em uma cor transparente que acabava sem renderização alguma (I049e2, b/171624632).
  • 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).
  • androidx.ui.test movido para androidx.compose.ui.test (I9ffdb).
  • FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
  • Foi adicionado o SelectContainer sem o callback (Ibfadb).
  • Adição de testes para posições de SelectionHandles no SelectionContainer (Ie93db).
  • 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).

Versão 1.0.0-alpha06

28 de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 e androidx.compose.foundation:foundation-text:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.

Mudanças na API

  • androidx.compose.foundation.Icon foi movido para androidx.compose.material.Icon. Você também pode usar o componente de imagem/Modifier.paint() com um Painter se não quiser usar a biblioteca do Material Design (I9f622).
  • Adição de interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805).
  • alignByBaseline foi adicionado a RowScope, e alignWithSiblings foi renomeado como alignBy (I06503, b/170628732).
  • Box foi criada como uma função in-line (Ibce0c, b/155056091).
  • Adição de maxLines ao CoreTextField (Ibee58, b/143687793).
  • Adição de softwrap ao CoreTextField (I21a4b).

Correções de bugs

  • VectorPainter foi descontinuado e substituído por rememberVectorPainter para indicar melhor que a API de composição usa o "remember" internamente para manter dados entre composições (Ifda43).
  • 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 de teclado de linha única para CoreTextField (I72e6d).
  • 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).
  • Foi adicionada a possibilidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
  • Foi adicionada a opção IME KeyboardCapitalization (I8ac38).
  • Correção de Handle Position RTL (I6e1e0).
  • Alteração interruptiva: o valor de retorno de PointerInputFilter.onPointerEvent(...) foi removido, já que o único valor que precisaria poder ser mudado nos eventos de ponteiro é o dos dados de consumo. Em vez de retornar dados de PointerInputFilter.onPointerEvent(...), agora é possível mudar os dados de consumo dos PointerEvents transmitidos (I6acd0).
  • Adição da opção SelectAll no menu de seleção (Ief02b).

Versão 1.0.0-alpha05

14 de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 e androidx.compose.foundation:foundation-text:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.

Mudanças na API

  • CoreTextField agora oferece suporte à funcionalidade de cursor (Id23aa).
  • Descontinuação do uso das APIs contentColor() e currentTextStyle() e substituição delas pelos ambientes AmbientContentColor e AmbientTextStyle, respectivamente. É possível acessar o valor atual usando .current na propriedade do ambiente, assim como em qualquer outro ambiente. Essa mudança foi feita para manter a consistência e para evitar a existência de várias maneiras de alcançar o mesmo resultado. Também renomeia algumas propriedades de ambiente para descrever melhor a finalidade delas da seguinte maneira:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Correções de bugs

  • Como parte da padronização de valores de sentinela para classes in-line, renomeie a Color.Unset como Color.Unspecified para consistência com outras classes in-line (I97611, b/169797763).
  • Foram adicionadas ações de acessibilidade de copiar/colar/cortar (I6db4f).
  • 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).
  • Os parâmetros Size.Unspecified foram atualizados 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).
  • O módulo Paging Compose e a integração de paginação foram adicionados (Ib85da).
  • Modificação do LazyListScope para receber valores anuláveis (I1765b).
  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned() (I587e8, b/169083903).
  • Foram adicionados exemplos para LazyColumn/Row (Idc16d).
  • Correção dos itens e métodos itemsIndexed para permitir emptyList (I06647).
  • Adição de uma DSL para especificar informações do inspetor (Ic9a22).
  • LongPress movido para Text (Iff2bc).
  • Desativação de Selection em Text, e uma Demo (Ie7e97).
  • Foi adicionado suporte a AnnotatedString para conversão do SpannableString para acessibilidade (Ief907).
  • PointerInputFilter.onPointerInput(...) foi removido. PointerInputFilter.onPointerEvent(...) precisa ser usado no lugar dele (I6f04a).

Versão 1.0.0-alpha04

1º de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 e androidx.compose.foundation:foundation-text:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.

Mudanças na API

  • Stack foi renomeado como Box. O uso do foundation.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 é empilhá-los um em cima do outro. Isso é diferente do Box anterior, que se comportava de maneira semelhante a 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).
  • Adição de uma nova classe LazyListState. Isso permite observar e controlar a posição de rolagem dos componentes LazyRow e LazyColumn. As instâncias podem ser criadas usando RememberLazyListState() e transmitidas para o parâmetro de estado do componente. Atualmente, o primeiro item visível e os deslocamentos podem ser observados nessa versão inicial (Ic7cb7, b/159307669).
  • A posição de lista atrasada e o deslocamento de rolagem agora são salvos e restaurados na recriação da Activity (Ie045f, b/166589058).
  • A ação semântica de clique longo foi adicionada (I6281b, b/156468846).
  • O utilitário MututorMutex foi adicionado para manter um único mutador de estado compartilhado ao longo do tempo e cancelar mutações conflitantes por prioridade (I3f975).
  • rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory foram anotadas com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).
  • O parâmetro inlineContent foi removido do Text com entrada de String. Ele não vai ser usado porque inlineContent precisa funcionar com AnnotatedString (Ief403).
  • As APIs Arrangement personalizadas descontinuadas foram removidas (Ic576d, b/168297922, b/168297923).
  • O parâmetro unbounded foi adicionado aos modificadores do wrapContentSize, o que permite medir o elemento do layout com restrições máximas infinitas (I77951, b/158559319).
  • Evitamos importações estáticas de conteúdo de escopos de layout, por exemplo, alignWithSiblings no RowScope. A alternativa do escopo explícito precisa ser usada: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797).

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).
  • Otimizações de desempenho para a rolagem LazyColumnFor/LazyRowFor, sem realizar recomposições desnecessárias durante cada rolagem (I64f65, b/168293643, b/167972292, b/165028371).
  • Foi corrigida uma falha em LazyColumnFor/LazyRowFor depois de rolar a página e mudar os itens. Além disso, foi implementada a rolagem automática para cima quando o item visível anteriormente é removido, então não há mais a exibição de lacunas vazias no final (I220ab, b/161480164, b/167855468).
  • O aninhamento de item rolável nos mesmos contêineres de direção, como ScrollableContainer e LazyColumnFor, não é mais permitido. Nunca houve suporte para esse aninhamento, e isso corrompia a rolagem e todo o atraso de composição dos itens de LazyColumnFor (I6e101).
  • 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).
  • Adição de AccessibilityScrollState às propriedades semânticas (Ifeda9).
  • O TextRange se torna in-line para evitar a criação de objetos (Id034b).
  • O ParagraphConstraints foi removido. Agora, a largura é transmitida diretamente para o Paragraph (Ica712).

Versão 1.0.0-alpha03

16 de setembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 e androidx.compose.foundation:foundation-text:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.

Mudanças na API

  • O InnerPadding foi renomeado como PaddingValues (I195f1, b/167389171).
  • Os usos da gravidade foram renomeados de forma consistente para align ou alignment nas APIs de layout (I2421a, b/164077038).
  • Um parâmetro de alinhamento foi adicionado à pilha, o que permite especificar o alinhamento padrão para todos os filhos dela (Ie80ca, b/164085265).

Correções de bugs

  • O elemento DpConstraints e as APIs que o usavam foram descontinuados (I90cdb, b/167389835).
  • Os parâmetros minWidth e maxWidth de widthIn foram renomeados como min e max. O mesmo ocorreu para preferredWidthIn, heightIn, preferredHeightIn (I0e5e1, b/167389544).
  • onNode e outros métodos globais foram adicionados na ComposeTestRule, porque os atuais serão descontinuados (Ieae36).
  • Correção de cálculos de tamanho e posição em GestureScope, o que causava, entre outros, a geração de gestos de deslizar inválidos (Iaf358, b/166589947).
  • createAndroidComposeRule e AndroidInputDispatcher foram movidos de androidx.ui.test.android para androidx.ui.test (Idef08, b/164060572).

Versão 1.0.0-alpha02

2 de setembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 e androidx.compose.foundation:foundation-text:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.

Correções de bugs

  • O TestUiDispatcher é marcado como experimental (Iae99d, b/161247083).
  • ManualFrameClock.hasAwaiters foi adicionado para conferir se algo está aguardando um frame desse relógio, runWithManualClock como uma substituição de runBlocking ao executar testes que precisam de um ManualFrameClock e TestUiDispatcher.Main que fornece acesso fácil ao principal agente de interface nos seus testes.

    Por exemplo:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    I0a85b, b/161247083

Versão 1.0.0-alpha01

26 de agosto de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 e androidx.compose.foundation:foundation-text:1.0.0-alpha01. 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.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 e androidx.compose.foundation:foundation-text:0.1.0-dev17. A versão 0.1.0-dev17 contém estas confirmações.

Mudanças na API

  • O spacedBy Arrangement foi adicionado a Row e Column para ativar o posicionamento dos filhos de layout com um espaçamento fixo. O Arrangement alinhado também foi adicionado, para permitir que o posicionamento dos filhos de layout seja um ao lado do outro e alinhados a Row/Column de acordo com um Alinhamento. Os métodos anteriores Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange foram descontinuados, e a criação de Arrangements personalizados não vai ser mais possível no futuro (I6733d, b/161985975).
  • Offset se tornou uma classe in-line (Iaec70).
  • 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).
  • Remoção de VerticalScroller e HorizontalScroller. Use ScrollableColumn/Row. Modifier.drawBackground foi removido. Use Modifier.background (I73b0d, b/163019183).
  • Os modificadores fillMax* marcados como descontinuados foram removidos de LazyItemScope porque dificultavam a adição correta de modificadores em itens que não são filhos diretos de LazyColumnFor (Ifa78d).
  • Foi adicionada a implementação LazyColumn/LazyRow como DSL (I93cc6).
  • As restrições agora são uma classe inline (I88736).
  • Foi adicionada a possibilidade de dimensionar um layout para uma fração do espaço disponível usando os modificadores fillMaxWidth, fillMaxHeight e fillMaxSize (I945bb, b/161562591).

Correções de bugs

  • Adição de um parâmetro modificador a SelectionContainer (I4aada, b/161487952).
  • Adição do lambda mergePolicy a SemanticsPropertyKey. É 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).
  • PlacementScope.placeAbsolute() foi renomeado como PlacementScope.place(), e o PlacementScope.place() anterior foi renomeado como PlacementScope.placeRelative(). Por essa razão, o método PlacementScope.place() não espelhará de forma automática a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, use PlacementScope.placeRelative() (I873ac, b/162916675).
  • O componente FilledTextField descontinuado foi removido. Use TextField para conseguir a implementação do Material Design no campo de texto preenchido (I5e889).
  • O parâmetro backgroundColor foi adicionado ao LinearProgressIndicator e o preenchimento interno de CircularProgressIndicator foi removido. Um novo ProgressIndicatorConstants.DefaultProgressAnimationSpec, que pode ser usado como AnimationSpec padrão ao animar o progresso entre valores, foi adicionado (If38b5, b/161809914, b/161804677).
  • Para aumentar a clareza, o elemento combinável state { ... } foi descontinuado e substituído pelas chamadas explícitas de remember { mutableStateOf(...) }. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrão by 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 RoundRect, e os construtores de função do RRect foram descontinuados (I5d325).
  • Remoção de onChildPositioned e OnChildPositionedModifier. Os desenvolvedores precisam usar onPositioned e OnPositionedModifier no layout filho (I4522e, b/162109766).
  • IntSize agora é uma classe inline (I2bf42).
  • Pressionar a área vazia para editar (Ib1e5b).
  • Ocultar FloatingToolbar depois de tocar no texto (If4525).
  • Ocultar de FloatingToolbar ao atualizar a seleção (I8444c).
  • Desmarcar ao desfocar (I781a2).

Versão 0.1.0-dev16

5 de agosto de 2020

Lançamento de androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 e androidx.compose.foundation:foundation-text:0.1.0-dev16. A versão 0.1.0-dev16 contém estas confirmações.

Mudanças na API

  • 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).
  • A caixa de diálogo foi movida para a interface (I47fa6).
  • Adição de LazyColumnForIndexed/LazyRowForIndexed: versões de LazyColumnFor/LazyRowFor que fornecem índice e item no itemCallback. Ele é útil quando é preciso saber um índice atual além de um item atual (I65ff3).
  • Modifier.deternimateProgress foi renomeado como Modifier.progressSemantics (I9c0b4).
  • LazyColumnItems foi renomeado como LazyColumnFor. LazyRowItems foi renomeado como LazyRowFor (I84f84).
  • Marks/Annotations foi adicionado para seguir as práticas recomendadas (I66b20).
  • O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
  • Um parâmetro de gravidade сrossaxis foi adicionado para LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems agora são compatíveis com agrupamento de conteúdo (Ib39fc).
  • ZoomableState foi renomeado como ZoomableController. Foi adicionado suporte a curvas personalizadas em smoothScale. As funcionalidades enabled e onZoomStarted foram adicionadas (If8b8f).
  • O FilledTextField do Material foi renomeado como TextField, e o TextField de base foi renomeado como BaseTextField para facilitar a descoberta e o uso da API mais simples desejada (Ia6242, b/155482676).
  • O elemento AdapterList descontinuado foi removido. Use LazyColumnItems (I12b9b).
  • Modifier.drawBackground foi renomeado como Modifier.background (I13677).
  • A antiga DSL ConstraintLayout foi removida. Renomeação de ConstraintSet2 para ConstraintSet (If58d1, b/162450908).
  • Modifier.absoluteOffset() e Modifier.absoluteOffsetPx() foram adicionados. Ao contrário dos modificadores de deslocamento, os modificadores de deslocamento absoluto não serão espelhados automaticamente no contexto da direita para a esquerda (I3aa21).
  • Row e Column agora executam funções in-line reduzindo significativamente a sobrecarga de uso (I75c10).

Correções de bugs

  • Resolução de variados problemas de API (I077bc).
    1. Remoção da interface OffsetBase não utilizada.
    2. Alinhamento das classes Offset e IntOffset para que tenham uma superfície de API consistente.
    3. IntOffset.Origin foi renomeado como IntOffset.Zero para ser consistente com a API Offset.
    4. O método nativeCanvas foi movido da interface Canvas para que os consumidores possam criar as próprias instâncias.
    5. 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.
    6. Os tipos enumerados ClipOp foram renomeados para seguir o padrão Pascal Case.
    7. Os tipos enumerados FilterQuality foram renomeados para seguir o padrão Pascal Case.
    8. Os tipos enumerados StrokeJoin foram renomeados para seguir o padrão Pascal Case.
    9. Os tipos enumerados PointMode foram renomeados para seguir o padrão Pascal Case.
    10. Os tipos enumerados PaintingStyle foram renomeados para seguir o padrão Pascal Case.
    11. Os tipos enumerados PathFillType foram renomeados para seguir o padrão Pascal Case.
    12. Os tipos enumerados StrokeCap foram renomeados para seguir o padrão Pascal Case.
    13. Atualização da implementação de DrawCache para não usar mais parâmetros lateinit.
    14. Atualização de DrawScope para não usar mais delegação lenta para os parâmetros internos fillPaint e strokePaint.
    15. Atualização do composto Image para evitar o uso do Box e ter menos sobrecarga.
    16. Atualização da classe Outline para ter anotações @Immutable.
    17. PathNode foi atualizado para ter anotações @Immutable em cada instrução de caminho.
    18. A subcomposição Vector foi atualizada para remover verificações condicionais redundantes para fins de igualdade, já que o Compose já as processa.
    19. O uso de métodos construtores complementares de Rect foi descontinuado e substituído por construtores de função.
    20. As classes Brush e construtores de função foram atualizados com APIs @Immutable e @Stable.
    21. Atualização da enumeração VertexMode para seguir o padrão Pascal Case.
    22. Atualização do método DrawScope selectPaint para substituir condicionalmente os parâmetros de traço na pintura quando eles tiverem mudado.
    23. Atualização de Size para adicionar a desestruturação da API, renomear UnspecifiedSize para Unspecified e remover métodos não utilizados.
  • MonotonicFrameAnimationClock, que permite usar um MonomonicFrameClock como um AnimationClockObservable, foi adicionado para fazer a ponte entre os novos relógios e APIs baseados em corrotinas que ainda usam os relógios antigos baseados em callback.

    O equivalente de ManualAnimationClock do ManualAnimationClock agora é ManualFrameClock (I111c7, b/161247083).

  • SemanticsNodeInteraction.performPartialGesture foi removido. Use SemanticsNodeInteraction.performGesture (Id9b62).

  • SemanticsNodeInteraction.getBoundsInRoot() foi renomeado como SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532).

  • As APIs foram atualizadas para oferecer suporte à direção da direita para a esquerda. LayoutDirectionAmbient foi adicionado e pode ser usado para ler e mudar a direção do layout. Modifier.rtl e Modifier.ltr foram removidos (I080b3).

  • 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).

  • SemanticsMatcher isFocused() e isNotFocused() foram adicionados (I0b760).

  • Adição de RemeasurementModifier. Ele permite que usuários meçam 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).

  • Agora, isSystemInDarkTheme sempre considera a configuração do tema escuro em todo o sistema e ignora o status de economia de energia antes de Q, seguindo as orientações mais recentes (I0c10c).

  • O uso de OnChildPositioned foi descontinuado. Use OnPositioned no filho (I87f95, b/162109766).

  • Renomeação de AndroidComposeTestRule como createAndroidComposeRule (I70aaf).

  • Adição da ação de acessibilidade para receber o TextLayoutResult (I9d6e6).

Versão 0.1.0-dev15

22 de julho de 2020

Lançamento de androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 e androidx.compose.foundation:foundation-text:0.1.0-dev15. A versão 0.1.0-dev15 contém estas confirmações.

Para usar a versão 0.1.0-dev15 do Compose, você precisará:

Atualização de dependências

  • Para usar a versão 0.1.0-dev15 do 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

  • Da mesma forma que o novo parâmetro em ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems agora também tem o parâmetro contentPadding, que permite adicionar um padding ao conteúdo depois que ele é cortado, o que não é possível apenas com um parâmetro modificador. Ele também permite adicionar um espaço somente antes do primeiro item/depois do último item (Ibc24e).
  • 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. De modo semelhante, o elemento ScrollerPosition foi descontinuado e substituído pelo ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • As APIs Modifier.draggable e Modifier.scrollable foram reformuladas. DragDirection foi removido e substituído por Orientation. O estado necessário para rolagem foi simplificado. ScrollableState foi renomeado como ScrollableController (Iab63c, b/149460415).
  • 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).
  • Agora, os tamanhos de canto usados por RoundedCornerShape e CutCornerShape podem ser maiores que 50% (Id2340, b/160400213).
  • O parâmetro padrão ContentScale foi substituído pelo composto de imagem Inside para Fit. Isso foi feito para gerar o comportamento de escalonamento do Painter se o tamanho do layout for maior que o tamanho intrínseco do Painter, mantendo a proporção. Esse comportamento corresponde melhor às expectativas de oferecer tamanhos fixos à imagem, sem afetar o comportamento padrão, apenas se o tamanho intrínseco é usado para calcular o tamanho do elemento combinável (I40ae3, b/159838006).
  • Use AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática. Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente. O uso do AnimationSpec foi facilitado para abrir construtores em vez de builders. A duração e o atraso de KeyFrames e Tween foram mudados para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer suporte a Long e Int) (Ica0b4).
  • Clickable foi removido. Use Modifier.clickable (I84bdf).
  • LazyRowItems foi adicionado, análogo a rolagem horizontal de LazyColumnItems (Ibbcf7).
  • Foram lançadas APIs de animação sem estado de baixo nível. Essas APIs (I63bf7).
  • 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).
  • Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
  • androidx.ui.foundation.shape.RectangleShape foi removido. Use androidx.ui.graphics.RectangleShape (I94939, b/154507984).
  • 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).
  • Modifier.zoomable foi adicionado para a funcionalidade de fazer gesto de pinça para aplicar zoom (Id5d63).
  • O componente Toggleable foi descontinuado. Use o Modifier.toggleable (I35220, b/157642842).
  • O uso de MutuallyExclusiveSetItem foi descontinuado. Use Modifier.selectable (I02b47, b/157642842).
  • O uso de TestTag foi descontinuado. Use Modifier.testTag (If5110, b/157173105).
  • O parâmetro fontWeight foi adicionado ao texto. Antes ele não havia sido adicionado por engano (I56937).
  • 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 VerticalScroller agora fornece Column pronta para uso. O HorizontalScroller agora fornece Row pronto para uso (Ieca5d, b/157020670).
  • 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 de Dp para os parâmetros de pixel (Iede0b).
  • Modifier.indication foi adicionado ao pacote básico. Use-o para mostrar os gestos de pressionar/arrastar/outras indicações nos elementos personalizados interativos (I8425f, b/155287131).
  • O VerticalScroller e o HorizontalScroller agora oferecem suporte para a rolagem reversa. O isReversed é definido em ScrollerPosition (I953bd).
  • Foi adicionado suporte à adição de elementos combináveis no layout de texto (I1373c).
  • Implementações consolidadas de CanvasScope para que agora exista apenas o DrawScope e o ContentDrawScope. CanvasScope foi renomeado como DrawScope. O DrawScope foi atualizado para implementar a interface de Density e fornecer a LayoutDirection. A subclasse DrawScope foi excluída do ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque o DrawScope já fornece uma automaticamente (I1798e).
  • A API DrawBackground descontinuada foi removida e substituída pelas APIs de extensão drawBackground no Modifier. As implementações de drawBackground de cores, pincéis e pintura foram refatoradas para reduzir os caminhos de código, além de remover o requisito para que o Modifier seja criado como parte da composição (I0343a).
  • As APIs de composição de alto nível que expõem uma tela foram atualizadas para expor o 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).
  • HorizontalScroller e VerticalScroller não restauram a posição de rolagem usando o estado da instância salva (Ia0fae, b/155075048).
  • O FocusManagerAmbient foi removido. Use FocusModifier.requestFocus para foco (Ic4826).
  • O layout da tabela foi removido temporariamente até ser possível disponibilizá-lo novamente com uma API atualizada (Id88a7).
  • A API CanvasScope, que envolve um objeto Canvas, foi criada para expor uma API de exibição 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).

  • ColouredRect foi removido. Use Box com o modificador drawBackground (I983c7, b/152753731).

  • A personalização de cor do cursor foi adicionada ao TextField (I6e33f).

  • Agora é possível ocultar/mostrar o teclado do software usando o SoftwareKeyboardController que é entregue pelo callback onTextInputStarted (I8dc44, b/151860051).

  • O TextFieldValue com TextField agora pode sobreviver à recriação de atividades quando usado desta forma: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724).

  • Os parâmetros comumente usados foram adicionados a Text(). Se você está criando um estilo de texto local para passar 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 parâmetro CoreTextField/TextField focusIdentifier foi substituído pelo FocusNode para ser integrado ao subsistema de foco (I7ea48).

  • Atualização de TextField: na dimensão horizontal, ocupará todo o espaço disponível concedido a ele (Ib08df, b/154638552).

  • Os elementos InteractionState e Interaction foram adicionados, facilitando a criação de componentes que reagem a mudanças de estado da interface, como pressionar e arrastar (Icfe25, b/152525426).

  • 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).

  • Atualização da API TextField: callbacks onFocus e onBlur foram mesclados em um único callback onFocalChange com parâmetro booleano (I66cd3).

  • ScaleFit foi renomeado como ContentScale. ContentScale foi movido do módulo ui-graphics para ui-core para ficar no mesmo módulo que a API Alignment. FillMaxDimension foi renomeado como Crop. FillMinDimension foi renomeado como Fit. Fit foi renomeado como Inside para melhorar a correspondência com os equivalentes a ImageView.ScaleType. Foi adicionada uma documentação que indica que a combinação de Crop e Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_CROP e que Fit usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.FIT_CENTER. Inside usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).

  • Remoção de ProvideContentColor. Basta usar ContentColorAmbient diretamente com Providers (Iee942).

  • Foi adicionado um parâmetro de cor ao texto, permitindo mudar a cor do estilo sem precisar fazer a unificação manual de acordo com o estilo fornecido em um tema (I41a66).

  • Melhorias 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.
    • O ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • O uso de ColoredRect foi descontinuado. Use Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fa, b/152753731).

  • O sistema de temas de forma é atualizado de acordo com a especificação do Material Design. Agora você pode oferecer formas pequenas, médias e grandes para serem usadas pela maior parte dos componentes (Ifb4d1).

  • O Modifier e o operador foram substituídos por funções de extensão de fábrica (I225e4).

  • O arrastável foi movido para o modificador (Id9b16, b/151959544).

  • Text foi movido de androidx.ui.core para o pacote androidx.ui.foundation (I87ce5).

  • Adição do parâmetro enabled a Checkbox, Switch e Toggleable (I41c16).

  • O Ripple agora é um modificador. Embora Clickable ainda não tenha sido convertido, o uso recomendado é Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/1.50060763).

  • A API VectorPainter foi adicionada para substituir a API de subcomposição já existente para 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 elemento combinável Image, mas com um VectorAsset em vez de um ImageAsset (I9af9a, b/149030271).

  • Criação do composto Image para processar dimensionamento/layout, além de desenhar um determinado ImageAsset na tela. Esse elemento combinável também pode ser usado para mostrar qualquer instância arbitrária do Painter que respeite o tamanho intrínseco dele e ofereça suporte a um determinado tamanho fixo ou mínimo (Ibcc8f).

  • Agora, Button, FloatingActionButton e Clickable têm um parâmetro enabled separado. Alguns dos parâmetros no Button foram renomeados ou reordenados (I54b5a).

  • Image foi renomeado como ImageAsset para diferenciar melhor os dados do Image e o futuro elemento combinável Image, usado para participar do layout e desenhar conteúdo.

    O método de extensão foi criado 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).

  • O elemento combinável DrawImage foi removido. Use o ImagePainter para mostrar uma imagem no layout atual ou SimpleImage para introduzir uma imagem que ocupe espaço (I595e1, b/149827027).

  • O componente Stack é compatível com a direcionalidade da direita para a esquerda (Ic9e00).

  • Icon, IconButton e IconToggleButton foram adicionados, removendo AppBarIcon. Você pode substituir diretamente os usos atuais do AppBarIcon pelo iconButton. Agora, eles vão ter a área de toque correta. Consulte os exemplos para informações de uso. Confira também os ícones do Material Design fornecidos que podem ser usados diretamente com esses componentes (I96849).

  • O elemento combinável DrawShape foi removido. Use o modificador DrawBackground (I7ceb2).

  • 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).

  • O componente de rolagem foi adicionado, o que permite a criação de rolagens/listas personalizadas (I5fd37).

  • Background foi renomeado como DrawBackground. Agora, ele é memorizado por padrão (Ia0bd3).

  • Adição de parâmetros de padding, borda, forma e plano de fundo a Box (I05027, b/148147281).

  • Adição do componente Canvas. Esse elemento combinável pode ocupar algum tamanho fornecido pelo usuário e permite que você desenhe com o CanvasScope (I0d622).

  • O modificador Border foi renomeado como DrawBorder (I8ffcc).

  • Um componente Box foi adicionado para combinar layouts e desenhar funcionalidades comuns (I6e2a7).

  • Agora, os controles de rolagem têm o comportamento do movimento de arremesso nativo do Android (I922af, b/147493715).

  • DrawBorder foi substituído por Border Modifier (Id335a).

  • Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).

  • O parâmetro de porcentagem ao criar diretrizes de ConstraintLayout foi renomeado para fração (Ida2db).

  • Foi adicionado suporte a margens de barreiras de ConstraintLayout (I47ffe).

  • Corrigido o suporte a RTL em ConstraintLayout. APIs sem reconhecimento de RTL foram adicionadas (I3b1c7).

  • Uma nova DSL para ConstraintLayout foi adicionada. Consulte as amostras para ver mais detalhes (Icaa9a).

  • Adicionada a anotação @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn agora são marcados com ela para sinalizar que as APIs vão ser modificadas (I412a8).

  • Foi adicionado o Modifier.padding(InnerPadding) (I94985, b/157133803).

  • Os elementos RowAlign e ColumnAlign descontinuados foram removidos de Row e Column (If60d4, b/155858731).

  • O LayoutTag() descontinuado foi removido. Use Modifier.tag(). O Modifier.matchParent() descontinuado foi removido. Use Modifier.matchParentSize() (If8044).

  • Adicionado o modificador de layout offsetPx, que pode ser usado para definir deslocamentos (dinâmicos) em px (I5af57).

  • O uso do elemento combinável AlignmentLineOffset foi descontinuado. Use o modificador relativePaddingFrom(). O elemento combinável CenterAlignmentLine foi removido (I60107).

  • Adicionado o modificador de layout defaultMinSizeConstraints, que define restrições de tamanho para o layout encapsulado apenas quando as restrições correspondentes recebidas não são especificadas (0 para restrições mínimas e infinito para restrições máximas) (I311ea, b/150460257).

  • Container foi removido. Use Box (Ibbc2b, b/151407926).

  • Os modificadores LayoutWidth/Height/Size descontinuados foram removidos (Ib0bc1).

  • Foram adicionados valores de parâmetro padrão para o modificador de deslocamento (I37f06).

  • Modificador de preenchimento simétrico adicionado (I39840).

  • O modificador LayoutAspectRatio descontinuado foi removido (I65a74).

  • Os modificadores LayoutAlign descontinuados foram removidos (I10877).

  • Foi corrigido um bug nos modificadores de largura e altura que fazia o layout encapsulado ser medido sem restrições de eixo oposto (I210b8, b/154797971).

  • Adição dos parâmetros verticalGravity e horizontalGravity a Row e Column, respectivamente (I7dc5a).

  • wrapContentWidth e wrapContentHeight foram atualizados para esperar um alinhamento vertical ou horizontal em vez de qualquer outro. O modificador de gravidade foi atualizado para aceitar o alinhamento vertical ou horizontal. Row, Column e Stack foram atualizados para oferecer suporte a alinhamentos contínuos personalizados (Ib0728).

  • Alignment se tornou instanciável com valores arbitrários. Alignments 1D foi adicionado (Ia0c05).

  • EdgeInsets foi renomeado como InnerPadding. O parâmetro innerPadding de botões do Material Design foi renomeado como padding (I66165).

  • alignToSiblings agora aceita um Measured em vez de Placeable (I5788d).

  • Foram adicionados modificadores para o dimensionamento de medidas intrínsecas. O uso dos componentes que realizavam essa tarefa foi descontinuado (I8295d).

  • Foi adicionado suporte à personalização de dimensões de filhos do ConstraintLayout (Idb1a5).

  • Os elementos combináveis Wrap e Center descontinuados foram removidos (I29e23).

  • LayoutModifier2, uma nova API para definir modificadores de layout, foi adicionada. O uso de LayoutModifier foi descontinuado (If32ac).

  • Os membros de RowScope e ColumnScope podem ser acessados fora de Row e Column (I3a641).

  • O uso de Container foi descontinuado. Use Box (I675ce, b/151407926).

  • O modificador LayoutOffset foi adicionado para ajustar a posição do layout (I0b8a3).

  • Foi adicionado suporte inicial ao layout RTL no Compose (Ia5519).

  • Atualização do LayoutAlign para não preencher mais o espaço disponível (I2b14f).

  • Remoção do composto AspectRatio em favor do modificador. Os elementos combináveis FlexColumn, FlexRow e o modificador Spacing descontinuados foram excluídos (Iec8a7).

  • Remoção do modificador LayoutInflexible de linha e coluna (I0d820).

  • Implemente as alças de seleção para arrastar para mudar a seleção de TextField (I27032).

  • Implementação de LongpressAndDrag para seleção de TextField (I17919).

Correções de bugs

  • O uso de FocusModifier foi descontinuado e substituído por Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. O uso de FocusState e FocusDetailedState foi descontinuado e substituído por FocusState2 (I46919, b/160822875, b/160922136).
  • runOnIdleCompose foi renomeado como runOnIdle (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).
  • O Modifier.ripple descontinuado foi removido. Agora, o recurso de clique usa ondulações como indicação padrão quando você tem um MaterialTheme {} definido no aplicativo. Na maioria dos casos, você pode usar o recurso de clique e receber a indicação de ondulação sem custos. Se você precisar personalizar o parâmetro de cor, tamanho ou delimitação para a ondulação, crie manualmente um RippleIndication e transmita-o para o recurso de clique como o parâmetro de indicação (I663b2, b/155375067).
  • As APIs de teste de tamanho descontinuadas foram removidas (Iba0a0).
  • A API experimental LayoutNode foi criada (I4f2e9).
  • A versão 1 do bloqueio da orientação de rolagem é implementada no Compose (I1ce7a, b/150289741).
  • Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
  • 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 no callback pelo objeto do escopo da medida (Ic7d9d).
  • Adição de AbsoluteArrangement: permite a organização dos filhos dentro da linha sem espelhamento automático em RTL (I3a1df).
  • A anotação @Untracked foi descontinuada. Substitua por @ComposableContract(tracked=false) (Id211e).
  • 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).
  • Adição do composto viewModel(), que permite criar ou usar o ViewModel já criado de forma semelhante a como ele funciona em Activity ou Fragment (I5fdd1).
  • A classe Radius foi 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.

    Atualização de DrawScope.drawRoundRect 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 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 cursor do TextField tem uma animação intermitente (Id10a7).

  • Os gestos parciais não exigem mais a transmissão de um GestureToken (Id7ae5).

  • 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 (I57bff).

  • O Modifier.semantics voltou a ser usado para permitir o uso de componentes de alto nível (I4cfdc).

  • AnnotatedString.Builder.addAnnotationString foi renomeado como addStringAnnotation (I5059e).

  • A API Alignment foi atualizada e foi adicionado suporte ao alinhamento absoluto, que não é espelhado automaticamente no contexto RTL (I38cd3).

  • Os filhos de Layout e LayoutModifier podem ser medidos com uma direção de layout diferente (Ibd731).

  • Introdução do parâmetro opcional rect extra a ImagePainter para permitir o desenho de uma subseção de ImageAsset subjacente (I0ea9e).

  • Correção de uma falha no Adapterlist ao remover itens (Ic64b0, b/153195921).

  • Mudamos a forma como medimos o primeiro layout colocado no bloco activity.setContent { }. Antes, ele era forçado a preencher toda a tela da atividade. Agora, se comporta como se você colocasse o layout dentro de uma pilha: ele pode ser menor que uma tela e vai ser posicionado no canto superior esquerdo. Caso prefira o comportamento antigo, é possível aplicar Modifier.fillMaxSize() para seu layout (Ie88a7, b/153453714).

  • O módulo ui-text-compose foi renomeado como ui-text. O ui-text agora contém os elementos combináveis CoreText e CoreTextField (IB7d47).

  • O módulo ui-text foi renomeado como ui-text-core (I57dec).

  • Os compostos ui-framework/CoreText e CoreTextField foram movidos para o ui-text-compose. É recomendável incluir o ui-text-compose no seu projeto (I32042).

  • runOnIdleCompose e runOnUiThread agora são funções globais e não métodos em ComposeTestRule (Icbe8f).

  • Os operadores para delegação de propriedade [Mutable]State foram movidos para extensões que permitem otimizações de delegação de propriedade do Kotlin 1.4. Autores de chamadas precisam adicionar importações para continuar usando by state { ... } ou by mutableStateOf(...) (I5312c).

  • DrawLayerModifier e drawLayer() agora definem clickToBounds e clipToOutline como falsos por padrão (I0eb8b, b/152810850).

  • LayoutResult foi renomeado como MeasureResult (Id8c68).

  • O uso do elemento combinável Center foi descontinuado. Ele precisa ser substituído pelo modificador LayoutSize.Fill + LayoutAlign.Center ou por elementos combináveis Box ou Stack com modificadores adequados aplicados (Idf5e0).

  • O LayoutFlexible foi renomeado como LayoutWeight. O parâmetro "tight" foi renomeado como "fill" (If4738).

  • O DrawVector passou de uma função combinável comum para retornar um modificador drawVector() que vai desenhar o vetor como o plano de fundo de um layout (I7b8e0).

  • O Clip de função combinável foi substituído pelo modificador drawClip(). DrawClipToBounds é um modificador conveniente a ser usado quando você só precisa cortar os limites da camada com uma forma retangular (If28eb).

  • Substituição da função composta DrawShadow pelo modificador drawShadow(). As sombras agora são renderizadas como parte do LayerModifier (I0317a).

  • O androidx.composte.ViewComposer foi movido para androidx.ui.node.UiComposer. androidx.compose.Emittable foi removido. Ele era redundante com o ComponentNode. O androidx.compose.ViewAdapters foi removido. Eles não estão mais disponíveis. O uso de Compose.composeInto foi descontinuado. Use setContent ou setViewContent. O uso de Compose.disposeComposition foi descontinuado. Use o método dispose no Composition retornado pelo setContent. androidx.compose.Compose.subcomposeInto foi movido para androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt foi renomeado como ComponentNode#insertAt. ComponentNode#emitRemoveAt foi renomeado como ComponentNode#removeAt. ComponentNode#emitMode foi renomeado como ComponentNode#move (Idef00).

  • O uso do elemento combinável Wrap foi descontinuado. Ele pode ser substituído pelo modificador LayoutAlign ou pelo composto Stack (IB237f).

  • 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).

  • Painter.toModifier foi renomeado como Painter.asModifier, já que o modificador recém-criado tem uma referência ao Painter original que pode ser compartilhado entre várias instâncias do modificador (I7195b).

  • .
  • Foi adicionado suporte à direção da direita para a esquerda no modificador LayoutPadding (I9e8da).

  • 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).

  • Classe ValueHolder removida. As classes AnimatedValue e AnimatedFloat foram reestruturadas para tornar o campo de valor da animação abstrato para que as subclasses possam observar a atualização do valor.

    • Adição de classes de modelo para AnimatedValue, AnimatedFloat etc.
    • Um novo conjunto de APIs @Composable leves foi adicionado para animação entre valores
    • (I79530).
  • Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do Ambient<T> para ver detalhes (I4c7ee, b/143769776).

  • 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).

  • Correção de um bug de ConstraintLayout que causava uma falha nas recomposições (Ibee5a, b/158164341).

  • A API WithConstraints lambda final foi mudada. 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).

  • As funções de medições intrínsecas no Layout e no LayoutModifier2 agora têm um receptor IntrinsicMeasureScope que fornece uma API de consulta intrínseca com a direção de layout propagada implicitamente (Id9945).

  • O uso de LayoutDirectionAmbient foi descontinuado. Para ler a direção do layout definida pela localidade, use localeLayoutDirection em ConfigurationAmbient (I851b1).

  • positionInParent e boundsInParent foram adicionados para LayoutCoordinates (Icacdd, b/152735784).

  • O uso do elemento combinável ParentData foi descontinuado. Caso você precise apenas marcar os filhos do layout para reconhecê-los dentro do bloco de medida, crie um modificador que implemente a interface ParentDataModifier ou use o modificador LayoutTag (I51368, b/150953183).

  • Adicionamos OnPositionedModifier e OnChildPositionedModifier para substituir as funções compostas OnPositioned e OnChildPositioned (I2ec8f).

  • Não permite o preenchimento negativo no LayoutPadding. Use o LayoutOffset para deslocamentos de posições negativas (Ifb5b1).

  • WithConstraints recebeu o parâmetro LayoutDirection (I6d6f7).

  • A flag ComposeFlags.COMPOSER_PARAM foi atualizada para true, o que vai mudar a estratégia de geração de código para o plug-in do Compose. Em um nível alto, isso faz com que funções @Composable sejam geradas com um parâmetro sintético extra, que é transmitido para chamadas @Composable subsequentes para que o ambiente de execução gerencie corretamente a execução. No entanto, essa é uma alteração interruptiva no binário que precisa preservar a compatibilidade no nível da fonte em todo o uso do Compose (I7971c).

  • Foram feitas mudanças no LayoutCoordinates 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 recuperar 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)

  • TextDirection.Content foi adicionado (I48f36).

  • Ajuste no menu da Barra de Ferramentas Google para mostrar os comandos de copiar, recortar e colar corretamente (Id3955)

  • FloatingToolbar foi adicionado à seleção do TextField (Ie8b07).

  • TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).

  • TextDirection foi renomeado como ResolveTextDirection (I3ff38).

  • HapticFeedback foi adicionado à seleção de TextField (I58050).

  • Adição dos métodos Copiar, Cortar e Colar à seleção TextField (Idb70b).

  • TestTag e Semantics foram excluídos. Use Modifier.testTag e Modifier.semantics (I15ff0, b/158841414).

  • O nome do pacote foi mudado para Locale e LocaleList de androidx.ui.text para androidx.ui.intl (I8132c).

  • Mudança da API: AnnotatedString(builder: Builder) foi renomeada como annotatedString(builder: Builder) (Ia6377).

  • Mudança da API: AnnotatedString.Item foi renomeada como AnnotatedString.Range (I2d44d).

  • Adição da barra de ferramentas para operações relacionadas a texto (I49d53).

  • O novo LifecycleOwnerAmbient já está disponível. Agora, uma atividade usada com a interface do Compose precisa ampliar androidx.activity.ComponentActivity (ou AppCompatActivity). O setContent na android.app.Activity foi descontinuado (Idb25a, b/153141084).

  • O nome do pacote ui-android-text (androidx.text) foi substituído por androidx.ui.text.platform para se alinhar à política do androidX (I42711).