Compose Foundation

Guia do usuário  Exemplo de código (link em inglês)
Crie aplicativos do Jetpack Compose com blocos de construção prontos e amplie a base para criar suas próprias peças de sistema de design.
Atualização mais recente Versão estável Candidata a lançamento Versão Beta Versão Alfa
15 de junho de 2022 1.1.1 1.2.0-rc01 - -

Estrutura

O Compose é uma combinação de sete IDs de grupos do Maven no androidx. Cada grupo 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 blocos de construção prontos e amplie a base 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 IU 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 ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.2.0-rc02"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.2.0-rc02"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.2.0-rc02")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.2.0-rc02"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Para ver 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.2

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 essas confirmações (link em inglês).

Mudanças na API

  • Uma interface OverscrollEffect experimental foi introduzida 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 de composição 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 estiver no final de um campo de texto não vai mais causar 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

  • Adição do 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.
  • Remoção dos valores padrão do construtor do LineHeightStyle (I582bf, b/181155707).
  • Adição de 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).
  • Adição do Brush 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).

  • Adição do 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

  • Correção da 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).
  • 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 será 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 para virar o conteúdo de um objeto VectorPainter se a direção atual do layout for da direita para a esquerda (RTL, na sigla em inglês) (I79cd9, b/185760237).

Correções de bugs

  • Os modificadores de rolagem (Modifier.verticalScroll(), Modifier.horizontalScroll() e Modifier.scrollable()) agora vão rolar para manter o elemento em foco visível se a área de rolagem for redimensionada e o elemento já estiver 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 deve 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 de composição for 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 aplicador personalizado, funções de composição abstratas (como métodos de interface), campos ou variáveis globais que são lambdas que podem ser compostos (as variáveis locais e os parâmetros são inferidos) ou o uso de ComposeNode ou funções de composição relacionadas.

    Para aplicadores personalizados, as funções de composição que chamam ComposeNode ou ReusableComposeNode precisam adicionar uma anotação CompoableTarget à função e a qualquer tipo de parâmetro lambda que possa ser composto. 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 que pode ser composta marcada com ComposableTargetMarker é equivalente a uma ComposbleTarget com o nome totalmente qualificado da classe de atributo como o parâmetro do aplicador. Para ver 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).
  • AndroidFont, uma nova API de baixo nível para fornecer novos tipos de descritores de recursos de fonte no Android, foi adicionada. 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 do 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 (link em inglês).

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

  • Suporte estável para o efeito de rolagem do Android 12.
  • Melhorias no dimensionamento da área de toque.
  • Observe que, em relação ao Compose 1.0, os componentes do Material vão expandir o espaço de layout para satisfazer o 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 IU usando os componentes do Compose Material, os requisitos mínimos para a acessibilidade da área de toque sejam atendidos.
  • Suporte estável à coluna de navegação.
  • Upgrade de várias APIs anteriormente experimentais para a versão estável.
  • Suporte para 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 para oferecer suporte ao 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

  • Atualização para ser compatível com 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).
  • A API experimental BringIntoView que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item foi adicionada (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

  • A API experimental BringIntoView que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item foi adicionada (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

  • Uma sobrecarga sem filhos para o Layout foi adicionada, 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 a 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 oferecer suporte à 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 é compatível com o parâmetro contentDescription para acessibilidade (Ib547c).

Correções de bugs

  • O botão, o card, as caixas de seleção e os valores gerais Modifier.clickable(enabled=false) 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 é utilizada ao usar 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 terá o seguinte padrão:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • E uma regra de classe terá 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 um descritor de 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 sinalização H indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.

  • Um método com a sinalização 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 sinalização P indica que ele é chamado após a inicialização.

  • Uma classe presente 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 ver 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

  • Correção das 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 ele irá rolar 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

  • Correção do 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 locais que podem ser compostas podiam ser ignoradas com base nos parâmetros delas. Após essa mudança, nenhuma função local que pode ser composta 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 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).
  • A nova API local de composição LocalSoftwareKeyboardController foi acionada para substituir a interface SoftwareKeyboardController anterior no TextField (I5951e, b/168778053).
  • A nova API local de composição LocalSoftwareKeyboardController foi acionada 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 removidas (I798d2).
  • Remoção do callback SoftwareKeyboardController 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).
  • Remoção dos métodos LayoutCoordinates descontinuados. 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 para o qual o layout filho é realmente medido. Esse tamanho pode não respeitar as restrições de medidas (Ib2729, b/172560206, b/172338608).
  • Adição do modificador selectGroup que permite marcar a coleção de guias ou botões de opção 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).

  • Mudança dos pacotes de métodos smoothScrollBy e scrollBy para androidx.compose.foundation.gestures.* (I3f7c1, b/175294473).

  • Agora, o FlingConfig foi renomeado para FlingBehavior e permite a personalização da animação suspensa em vez da redução de valores predefinidos. (I02b86, b/175294473)

  • Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferenceWidth/preferenceHeight/preferencialSize 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á-las (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 de composição de nível superior em vez de uma função de composição 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 origem. Portanto, isso não 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 por meio do 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 anteriormente descontinuadas foram excluídas (Ice5da, b/178633932).

Correções de bugs

  • Adição da nova API local de composição LocalSoftwareKeyboardController para substituir a interface SoftwareKeyKeyboard 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() verificará 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).
  • 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).
  • Introdução de um elemento de contexto de corrotina InfiniteAnimationPolicy que será aplicado em 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 {} 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 desempenho, a semântica ScrollAxisRange agora usa lambdas que retornam Floats em vez de valores Float diretos (If4a35, b/178657186).

  • Adição da semântica EditableText para marcar o texto de entrada editável do campo para acessibilidade e os métodos de teste correspondentes para verificar 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 de composição state { 0 } e agora promovemos o uso de remember { mutableStateOf(0) }, também vamos remover o elemento de composição 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 economia personalizado, agora precisará usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso será assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).

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

  • 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 no desempenho (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 IU foram excluídas (I2f2dc).

  • O uso do artefato compose:runtime-dispatch foi descontinuado. MonotonicFrameClock agora pode ser encontrado em compose:runtime, e AndroidUiDispatcher pode ser encontrado em compose:ui (Ib5c36).

  • Os parâmetros em RounderCornerShape, CutCornerShape e CornerBasedShape foram renomeados de esquerda/direita para início/fim para oferecer compatibilidade com o 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 SelectionContainer descontinuada foi removida (I99c19).
  • As funções de rolagem que não são de suspensão e tiveram o uso descontinuado foram removidas. Para continuar com as mudanças da última versão, as funções de rolagem que não são de suspensão agora foram completamente removidas. Converta para as funções de suspensão com os mesmos nomes. Um escopo de corrotina pode ser adquirido com rememberCoroutineScope() (I3d39c, b/178169563).

  • O uso de androidx.compose.foundation.layout.ConstraintLayout foi descontinuado e substituído por androidx.constraintlayout.compose.ConstraintLayout. Você 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ção serão 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

  • Descontinuar o uso do scrollBy não suspenso, remover scrollTo não suspenso

    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 de 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. Estamos descontinuando o uso de versões não suspensas dessas funções como parte da transiçã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 de 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 desenhar 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 forem usadas. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

  • O elemento AbsoledAggregation descontinuado 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)
  • Introdução de ComposeContentTestRule, que estende ComposeTestRule e define setContent, que foi removido de ComposeTestRule. Adição de 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 e 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 serão substituídos por milissegundos Long, e essa etapa 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 se o objeto fosse 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).

  • Remoção de PointerInputData e mudança de PointerInputChange 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).

  • Renomeação de TextInputService.onStateUpdated 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 ser compatível com animação de redução multidimensional (I820f2, b/168014930).
  • Adição de compatibilidade com 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 um desempenho 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. Mudança de Modifier.progressSemantics para que o Slider 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).

  • Remoção da anotação de ExperimentalPointerInput (Ia7a24).

  • Adição de 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 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 IU, já que fornecem as informações brutas que a API de IU interpreta (I31a9c).

  • O 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 que pode ser composto no momento da composição, sem precisar fazer implementações DrawModifier personalizadas.

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

  • Introdução de várias novas funções no SelectionRegistrar e também renomeação de onPositionChange para 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).

  • Adição da API painterResource para lidar com o carregamento opaco de objetos Painter de formatos de recursos rasterizados (como PNGs) ou VectorDrawables. Os consumidores não precisam mais determinar o tipo de recurso com antecedência e podem chamar esse método para receber um objeto Painter para uso em elementos Image que podem ser compostos 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).
  • Adição de verificação de lint para posicionamento e nomeação do parâmetro lambda composto, para verificar a consistência com as diretrizes do Compose. Também ocorreu a migração de algumas APIs usando children como o nome do 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).
  • Renomeação de VectorAsset como ImageVector. VectorAsset movido e renomeado como Builder para ser uma classe interna de ImageVector, de acordo com as diretrizes do conselho da API. Adição de 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 iu (I6f05c).
  • Adição de APIs de rolagem baseadas em corrotinas:

    Adição de LazyListState.snapToItem e LazyListState.smoothScrollBy, assim como APIs de nível inferior 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 anteriormente 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. Criação do 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).
  • Adição de WindowManager.isWindowFocused para verificar se a janela do host está em foco, e 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).
  • Adição de verificação de lint 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).
  • Descontinuação do uso de place(Offset) e placeRelative(Offset). 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 Material, crie seus próprios ambientes de temas específicos do sistema de design que possam ser consumidos nos seus componentes (I74acc, b/172067770).
  • 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 a 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).
  • LazyColumnItems/LazyRowItems descontinuados foram removidos (I1d8a8).
  • Os elementos que podem ser compostos descontinuados de dimensionamento para medidas intrínsecas 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 DpConstraints descontinuado foi removido (I87884, b/171702471).

Correções de bugs

  • Introdução da classe in-line ScaleFactor para representar fatores de escala para os eixos horizontal e vertical independentes uns dos outros para compatibilidade com casos de uso de escalonamento não uniforme.
    • Adição do método computeScaleFactor ao ContentScale.
    • Adição de ContentScale.FillBounds 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).
  • Introdução do módulo ui-test-junit4 (Ib91f8).
  • Atualização da API Icon 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).
  • Adição de 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 Material (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

  • Substituição do uso de VectorPainter pelo rememberVectorPainter para indicar melhor que a API que pode ser composta usa internamente o "remember" de modo a 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).
  • Renomeação da API Radius 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).
  • Adição da capacidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
  • Adição da opção IME (editor de método de entrada, na sigla em inglês) KeyboardCapitalization (I8ac38).
  • Correção de Handle Position Rtl (I6e1e0).
  • Alteração interruptiva: remoção do valor de retorno de PointerInputFilter.onPointerEvent(...), já que o único valor que deveria 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).
  • Adição de ações de acessibilidade de copiar/colar/cortar (I6db4f).
  • Introdução de TextOverflow.None. Quando overflow for "None", o Text não será mais processado e informará o tamanho real para o LayoutNode (I175c9, b/158830170).
  • Atualização dos parâmetros Size.Unspecified para Float.NaN, em vez de Float.POSITIVE_INFINITY. Atualização das implementações do Painter para verificar o Size.Unspecified, assim como Sizes não finitos (I95a7e).
  • Adição do módulo Paging Compose e da integração de paginação (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).
  • Compatibilidade com 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).
  • Os parâmetros de decoração do Box foram descontinuados. 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).
  • Adição do utilitário MututorMutex para manter um único mutador de estado compartilhado ao longo do tempo e cancelar mutações conflitantes por prioridade (I3f975).
  • Anotação de rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).
  • Remoção do parâmetro inlineContent do Text com entrada de String. Ele não 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.
    • Remoção dos métodos Rect.expandToInclude e Rect.join.
    • Documentação do Radius atualizada para informar oval, além de elíptico.
    • Adição da documentação para indicar que o construtor público da classe Radius in-line não deve 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.
    • Atualização do construtor RoundRect para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
    • Remoção das APIs Size que pressupunham ser um retângulo com origem em 0,0.
    • 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).
  • Correção da falha em LazyColumnFor/LazyRowFor depois de rolar a página e, em seguida, mudar os itens. Além disso, implementamos a rolagem automática para cima quando o item visível anteriormente foi 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. Isso nunca foi compatível e corrompia a rolagem e todo o atraso de composição dos itens de LazyColumnFor (I6e101).
  • Atualização de várias APIs Graphics
    • Atualização das APIs DrawScope com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois de ele 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 encarte como horizontal e vertical.
    • Adição de sobrecarga do encarte, que fornece o mesmo valor de encarte a todos os quatro limites.
    • Remoção da documentação sobre o método do encarte indicando que o encarte seria aplicado a todos os quatro lados.
    • Atualização da documentação da classe Rect.
    • Atualização de comentários sobre os parâmetros Rect para corresponder ao estilo kdoc.
    • Remoção de Rect.join e Rect.expandToInclude.
    • Criação de sobrecarga para Rect.translate(offset) e para o Rect.shift 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 da pilha (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).
  • Adição de onNode e de outros métodos globais 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).
  • Adição de ManualFrameClock.hasAwaiters para ver 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 IU 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 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. Remoção de Modifier.drawBackground. Use Modifier.background (I73b0d, b/163019183).
  • Os modificadores fillMax* de LazyItemScope marcados como descontinuados foram removidos porque dificultavam a adição correta de modificadores em itens que não são filhos diretos de LazyColumnFor (Ifa78d).
  • Adição da implementação LazyColumn/LazyRow como DSL (I93cc6).
  • As restrições agora são uma classe inline (I88736).
  • Adição da capacidade 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).
  • Adição do parâmetro backgroundColor ao LinearProgressIndicator e remoção do preenchimento interno de CircularProgressIndicator. Adição de novo ProgressIndicatorConstants.DefaultProgressAnimationSpec, que pode ser usado como AnimationSpec padrão ao animar o progresso entre os valores (If38b5, b/161809914, b/161804677).
  • O elemento que pode ser composto state { ... } foi descontinuado e substituído pelas chamadas explícitas de remember { mutableStateOf(...) } para maior clareza. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrã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 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 IU (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).
  • Renomeação de LazyColumnItems para LazyColumnFor. Renomeação de LazyRowItems para LazyRowFor (I84f84).
  • Adição de Marks/Annotations para seguir práticas recomendadas (I66b20).
  • O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
  • Adição de parâmetro de gravidade сrossaxis em LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems agora são compatíveis com agrupamento de conteúdo (Ib39fc).
  • Renomeação de ZoomableState para ZoomableController. Foi adicionado suporte a curvas personalizadas em smoothScale. Adição das funcionalidades enabled e onZoomStarted (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 anteriormente foi removido. Use LazyColumnItems (I12b9b).
  • Modifier.drawBackground foi renomeado como Modifier.background (I13677).
  • Remoção da antiga DSL ConstraintLayout. Renomeação de ConstraintSet2 para ConstraintSet (If58d1, b/162450908).
  • Adição de Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). 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. Renomeação de IntOffset.Origin 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. Criação da classe stub EmptyCanvas para refatorar DrawScope para ser um parâmetro não nulo em vez de lainit e garantir a não nulidade do campo.
    6. Renomeação das enumerações ClipOp para seguir o padrão Pascal Case.
    7. Renomeação das enumerações FilterQuality para seguir o padrão Pascal Case.
    8. Renomeação das enumerações StrokeJoin para seguir o padrão Pascal Case.
    9. Renomeação das enumerações PointMode para seguir o padrão Pascal Case.
    10. Renomeação das enumerações PaintingStyle para seguir o padrão Pascal Case.
    11. Renomeação das enumerações PathFillType para seguir o padrão Pascal Case.
    12. Renomeação das enumerações StrokeCap 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. Atualização de PathNode para ter anotações @Immutable em cada instrução de caminho.
    18. Atualização da subcomposição Vector para remover verificações condicionais redundantes para fins de igualdade, já que o composto já as processa.
    19. O uso de métodos construtores complementares de Rect foi descontinuado e substituído por construtores de função.
    20. Atualização de classes Brush e construtores de função 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.
  • Adição de MonotonicFrameAnimationClock que permite usar um MonomonicFrameClock como um AnimationClockObservable 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).

  • Atualização das APIs para compatibilidade 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).

  • Adição de SemanticsMatcher isFocused() e isNotFocused() (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, LDyColumnItems/LDyRowItems 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 próprio elemento. De modo semelhante, o 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 se apenas o tamanho intrínseco for usado para calcular o tamanho do composto (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. Melhora na facilidade geral de uso do AnimationSpec para abrir construtores em vez de builders. Mudança na duração e no atraso de KeyFrames e Tween para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer compatibilidade com Long e Int) (Ica0b4).
  • Clickable foi removido. Use Modifier.clickable (I84bdf).
  • LazyRowItems foi adicionado, análogo a rolagem horizontal de LazyColumnItems (Ibbcf7).
  • Foram introduzidas estas 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 compostos 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 in-line para usar um 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 a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (Iede0b).
  • Adição de Modifier.indication ao pacote básico. Use isso para mostrar os gestos de pressionar/arrastar/outras indicações nos elementos personalizados interativos (I8425f, b/155287131).
  • O VerticalScroller e o HorizontalScroller agora são compatíveis com a rolagem reversa. O isReversed é definido em ScrollerPosition (I953bd).
  • Compatibilidade com a adição de compostos 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. Implementações de drawBackground de cores, pincéis e pintura 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).
  • Atualização das APIs de composição de nível superior que expõem uma tela 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 uma tela 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).
  • Criação da API CanvasScope que envolve um objeto Canvas para expor uma API de desenho declarativa e sem estado. As transformações estão contidas no próprio escopo do receptor, e as informações de dimensionamento também têm escopo para os limites inseridos correspondentes. Não é necessário que um consumidor mantenha o próprio objeto de estado Paint para configurar operações de desenho.

    Inclusão do CanvasScopeSample, bem como atualização do app de demonstração para incluir uma demonstração gráfica declarativa (Ifd86d).

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

  • Adição da personalização de cor do cursor 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 a recriação de atividades quando usado desta forma: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724).

  • Adição de parâmetros comumente usados a Text(). Se você estiver criando um estilo de texto local para passar um pequeno número desses parâmetros, como Text(style = TextStyle(textAlign = TextAlign.Center)), poderá fornecer os parâmetros diretamente: Text(textAlign = TextAlign.Center) (I82768).

  • Substituição do parâmetro CoreTextField/TextField focusIdentifier 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).

  • Adição dos elementos InteractionState e Interaction, facilitando a criação de componentes que reagem a mudanças de estado da IU, 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 melhor correspondência com os equivalentes a ImageView.ScaleType. Adicionada 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).

  • Adição de um parâmetro de cor ao texto, permitindo modificar a cor do estilo do texto sem precisar unificá-lo manualmente ao estilo fornecido em um tema (I41a66).

  • Melhorias na API DrawModifier:

    • Definição do escopo do receptor 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).

  • Substituição de Modifier mais operador 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).

  • Adição da API VectorPainter 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. O uso de elementos DrawVector anteriores foi descontinuado e substituído por VectorPainter.

    A API Image(Painter) foi renomeada como PaintBox(Painter). Criação do composto Vector que se comporta como o composto 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 que pode ser composto também pode ser usado para desenhar 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 composto Image, usado para participar do layout e desenhar conteúdo.

    Criação do método de extensão 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 composto DrawImage foi removido. Use o ImagePainter para desenhar uma imagem no layout existente 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).

  • Adição de Icon, IconButton and IconToggleButton e remoção de AppBarIcon. Você pode substituir diretamente os usos existentes do AppBarIcon pelo iconButton. Agora, eles terão a área de toque correta. Consulte as amostras para ver informações de uso. Veja também os ícones do material fornecidos que podem ser usados diretamente com esses componentes. (I96849).

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

  • Renomeação de Background para 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 composto 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).

  • Adição de componente Box 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).

  • Substituição de DrawBorder pelo 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 adicionada a compatibilidade com margens de barreiras de ConstraintLayout (I47ffe).

  • A compatibilidade com RTL em ConstraintLayout foi corrigida. 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 serão modificadas (I412a8).

  • Adição de Modifier.padding(InnerPadding) (I94985, b/157133803).

  • Remoção dos elementos RowAlign e ColumnAlign descontinuados em Row e Column (If60d4, b/155858731).

  • Remoção do LayoutTag() descontinuado. 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 AlignmentLineOffset foi descontinuado. Use o modificador relativePaddingFrom(). O composto CenterAlignmentLine removido (I60107).

  • Adição do 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).

  • Adição de 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 do LayoutAlign descontinuados foram removidos (I10877).

  • Correção de um bug nos modificadores de largura e altura que fazem 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).

  • Atualização de wrapContentWidth e wrapContentHeight 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).

  • Adição de modificadores para o dimensionamento de medidas intrínsecas. Descontinuação do uso dos componentes que realizavam essa tarefa (I8295d).

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

  • Os elementos de composição Wrap e Center descontinuados foram removidos (I29e23).

  • Adição de LayoutModifier2, uma nova API para definir modificadores de layout. 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).

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

  • Compatibilidade inicial com o 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 que podem ser compostos FlexColumn, FlexRow e o modificador Spacing obsoletos 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 já descontinuado foi removido. Agora, o recurso de clique usa ondulações como indicação padrão (se você tiver 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 / delimitação para a ondulação, crie manualmente um RippleIndication e o transmita para o recurso de clique como o parâmetro de indicação (I663b2, b/155375067).
  • Remoção de APIs de teste de tamanho obsoletas (Iba0a0).
  • Criação da API experimental LayoutNode (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. Remoção dos métodos de criação complementares em favor do 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 de 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 de 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 de 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 de 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 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 compostos 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).

  • [Mutable] Os operadores para delegação de propriedade de estado foram movidos para extensões compatíveis com as 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 de composição Center foi descontinuado. Ele precisa ser substituído pelo modificador LayoutSize.Fill + LayoutAlign.Center ou por Box ou Stack que possam ser compostos com modificadores adequados aplicados (Idf5e0).

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

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

  • Substituição do Clip de função composta 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 desenhadas 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 são mais um caso de uso compatível. 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 de composição 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).

  • .
  • Compatibilidade com a direção 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. Reestruturação das classes AnimatedValue e AnimatedFloat 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.
    • Adição de um novo conjunto de APIs @Composable leves 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).

  • Adição de positionInParent e boundsInParent a LayoutCoordinates (Icacdd, b/152735784).

  • O uso do elemento de composição 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).

  • Adição de 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 ajustes de posições negativas (Ifb5b1).

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

  • A sinalização ComposeFlags.COMPOSER_PARAM foi atualizada para true, o que 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. Portanto, 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)

  • Adição de TextDirection.Content (I48f36).

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

  • Adição da FloatingToolbar para a seleção do TextField (Ie8b07).

  • TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).

  • TextDirection foi renomeado como ResolveTextDirection (I3ff38).

  • Adição de HapticFeedback à 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).

  • Mudança do nome do pacote 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 IU 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).