Compose Foundation

Crie aplicativos do Jetpack Compose com elementos básicos prontos que podem ser usados para criar suas próprias peças de sistema de design.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
11 de dezembro de 2024 1.7.6 - - 1.8.0-alpha07

Estrutura

O Compose é uma combinação de sete IDs de grupos do Maven no androidx. Os grupos contêm um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas da versão.

Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.

GrupoDescrição
compose.animationCrie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário.
compose.compilerTransforme funções @Composable e ative otimizações com um plug-in do compilador Kotlin.
compose.foundationCrie aplicativos do Jetpack Compose com elementos básicos prontos que podem ser usados para criar suas próprias peças de sistema de design.
compose.materialCrie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io.
compose.material3Crie IUs do Jetpack Compose usando componentes do Material Design 3, a nova versão do Material Design. O Material 3 inclui temas e componentes atualizados, além de recursos de personalização do Material You, como cores dinâmicas, e foi desenvolvido para ser coeso com o novo estilo visual do Android 12 e com a interface do sistema.
compose.runtimeElementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler.
compose.uiComponentes fundamentais do Compose UI necessários para interagir com o dispositivo, incluindo layout, desenho e entrada.

Declarar dependências

Para adicionar uma dependência ao Compose, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para mais informações.

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

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Para mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

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

Versão 1.8

Versão 1.8.0-alpha07

11 de dezembro de 2024

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

Mudanças na API

  • A sinalização ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled foi excluída e ajudou a reverter a remoção de graphicsLayer interno de BasicText. Se você estava usando essa flag, informe os motivos ao registrar um bug. Além disso, você pode transmitir Modifier.graphicsLayer() para suas chamadas BasicText para ter o mesmo comportamento de antes. (Id9f90).
  • Adição da implementação padrão para a nova DSL stickyHeader. (I68986).
  • A composição local LocalAutofillHighlightColor usa um tipo de cor. (I0e05b).
  • OverscrollEffect#withoutDrawing foi renomeado como OverscrollEffect#withoutVisualEffect (I1a154).

Correções de bugs

  • Correção de um problema no cálculo de destino de AnchoredDraggable, em que ele poderia se fixar na âncora errada para deslizamentos específicos (I23b87, b/367660226).

Contribuição externa

  • Adição de BringIntoViewResponderModifierNode à interface, que oferece uma nova maneira de implementar a funcionalidade "Bring Into View" e permite a implementação em um nível de plataforma (Ia6dd8).
  • Estamos mudando um pouco a forma como o cursor é desenhado. Você pode usar LocalCursorBlinkEnabled para desativar a exibição do cursor nos testes. (I4c697).

Versão 1.8.0-alpha06

13 de novembro de 2024

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

Mudanças na API

  • Adiciona o modificador stylusHoverIcon. (Iff20a, b/331289114).
  • O confirmValueChange do AnchoredDraggableState foi descontinuado. Em vez de vetar mudanças de estado, as âncoras não permitidas não podem estar no conjunto de âncoras ativas, e um OverscrollEffect precisa ser usado para indicar a indisponibilidade da ação solicitada. (Ia717f).
  • O gerenciador de preenchimento automático foi alterado para ser uma interface. (I84914, b/376080755).
  • Foram adicionadas as APIs OverscrollEffect#withoutDrawing e OverscrollEffect#withoutEventHandling. Elas criam uma instância encapsulada do efeito de rolagem esticada fornecido que não renderiza / gerencia eventos. Isso permite renderizar a rolagem esticada em um componente separado do componente que está enviando eventos. Por exemplo, desativando a exibição do overscroll dentro de uma lista lazy e depois exibindo o overscroll separadamente na parte de cima ou em outro lugar. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244).
  • Adição de suporte a preenchimento automático na barra de ferramentas de texto. (Ie6a4c).
  • OverscrollConfiguration e LocalOverscrollConfiguration foram descontinuados, e rememberPlatformOverscrollFactory foi adicionado para criar uma instância de / personalizar parâmetros da implementação padrão de rolagem excessiva. Para desativar o overscroll, use LocalOverscrollFactory provides null em vez de LocalOverscrollConfiguration provides null. Para mudar a cor do brilho / padding, use LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) em vez de LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9, b/255554340, b/234451516).
  • A propriedade effectModifier em OverscrollEffect foi alterada para node: DelegatableNode, de acordo com outras APIs (Ic0b46, b/255554340).
  • A API GlobalAssertions experimental foi removida. O uso pretendido era executar verificações de acessibilidade. Para isso, consulte enableAccessibilityChecks(). (I59322).

Versão 1.8.0-alpha05

30 de outubro de 2024

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

Novos recursos

  • Suporte para dimensionamento automático de texto. Transmita uma instância de AutoSize (por exemplo, AutoSize.StepBased) para o elemento combinável de texto favorito (como BasicText) e observe o tamanho do texto se adaptar ao espaço disponível. (Ice7e0, b/139320827).
  • As APIs OverscrollFactory e LocalOverscrollFactory foram adicionadas para permitir a configuração de rolagem em uma hierarquia. O valor fornecido por LocalOverscrollFactory será usado por padrão para criar um OverscrollEffect. Para criar e lembrar um efeito da fábrica atual, use rememberOverscrollEffect(). (I51ca4, b/255554340).

Mudanças na API

  • Introdução do CompositionLocal, que pode ser usado para modificar a tonalidade do destaque de preenchimento bem-sucedido do preenchimento automático. (I32092).
  • ScrollableDefaults.overscrollEffect foi removido. Use rememberOverscrollEffect. Isso vai criar uma instância da implementação atual de rolagem excessiva fornecida com LocalOverscrollFactory. (I1651a, b/255554340),(b/234451516).
  • Apresentamos a nova interface AutofillManager, que pode ser usada para ajustar a jornada de preenchimento automático dos usuários, e uma flag isSemanticAutofillEnabled para ativar essa nova versão. (I9d484).
  • Remove CombinedClickableNode. Essa API experimental foi temporariamente exposta para desbloquear o trabalho de desempenho, mas não é mais necessária. Em vez disso, use Modifier.combinedClickable diretamente, como em outras APIs de modificador. (I4b658).
  • Adiciona sobrecargas a horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager e VerticalPager com suporte para especificar um OverscrollEffect personalizado. O OverscrollEffect fornecido vai receber eventos e ser renderizado dentro dos limites desses componentes. Não é possível desenhar o mesmo OverscrollEffect duas vezes. Portanto, não é possível desenhar o mesmo OverscrollEffect fornecido para um desses componentes separadamente com Modifier.overscroll. O caso de uso de exibição do rolagem fora dos limites desses componentes será abordado separadamente no futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117).

Versão 1.8.0-alpha04

16 de outubro de 2024

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

Mudanças na API

  • Adiciona callbacks DelegatableNode#onDensityChange e DelegatableNode#onLayoutDirectionChange para permitir a atualização do estado do nó quando ele mudar. (I04f3e, b/340662451).
  • O parágrafo e o ParagraphIntrinsics agora recebem uma lista de todas as anotações aplicadas ao AnnotatedString. Antes, eles só tinham uma lista de SpanStyles. (I12f80).
  • O PointerInputModifierNode#touchBoundsExpansion foi introduzido. Ele pode ser usado para ampliar os limites de toque de um modificador de entrada de ponteiro único. (Iccf02, b/335339283).

Correções de bugs

  • Correção de um bug em que os limites posicionais transmitidos para AnchoredDraggableDefaults.flingBehavior não eram considerados corretamente em alguns cenários (Ifdf0d, b/367660226).
  • Introdução de uma correção para rolagens aninhadas que são removidas da árvore de nós durante uma movimentação contínua. Agora esses nós vão cancelar o movimento rápido e enviar corretamente o evento onPostFling com a velocidade restante. Também estamos lançando a flag NewNestedScrollFlingDispatchingEnabled para controlar o comportamento em caso de regressões. A flag será removida antes da versão Beta. (I05c37, b/371168883).
  • Correção de um bug em que o OverscrollEffects transmitido para Modifier.anchoredDraggable recebia deltas 2D em vez de 1D. (Ie52c0).

Versão 1.8.0-alpha03

2 de outubro de 2024

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

Mudanças na API

  • Atualização da versão do Kotlin para 1.9 (I1a14c).
  • Introdução da flag DraggableAddDownEventFixEnabled (I848d5).
  • Foi introduzido um novo papel de semântica chamado "Carousel" para emular o comportamento da lista em paginadores para serviços a11y. (Id354b, b/354109776, b/239672673).
  • O modificador graphicsLayer implícito foi removido do elemento combinável BasicText. A flag ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled experimental foi adicionada para reverter ao comportamento antigo. (Ie478d).
  • Modifier.recalculateWindowInsets() foi adicionado para permitir que os filhos na hierarquia usem insetsPadding, mesmo quando os pais os alinham sem consumeWindowInsets(). (I7f9e4).

Correções de bugs

  • Implemente a detecção de gestos em detectDragGestures, arrastáveis e roláveis. Agora, se um elemento filho arrastável desistir de um gesto, o elemento pai terá a oportunidade de recuperá-lo. Isso permite um processamento de gestos mais contínuo e integrado. (Ic88fe).
  • Atualização do comportamento de cancelamento de rolagem rápida em roláveis. Agora, se um rolamento deslizante atingir os limites, ele vai transmitir corretamente a velocidade do movimento brusco para o próximo rolamento na cadeia, em vez de continuar a impulsionar o movimento brusco. (I9326a).

Versão 1.8.0-alpha02

18 de setembro de 2024

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

Mudanças na API

  • TextOverflow.StartEllipsis e TextOverflow.MiddleEllipsis agora estão disponíveis, o que permite colocar reticências no início ou no meio da linha do texto de uma única linha (I38913, b/185418980).

Versão 1.8.0-alpha01

4 de setembro de 2024

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

Versão 1.7

Versão 1.7.6

11 de dezembro de 2024

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

Correções de bugs

  • Corrigimos o conteúdo inline de texto que não estava visível para os serviços de acessibilidade.
  • Correção de um problema em que o AndroidEmbeddedExternalSurface não era redefinido corretamente e ficava travado ao ser reutilizado em uma lista preguiçosa

Versão 1.7.5

30 de outubro de 2024

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

Correções de bugs

  • Verifique se os itens fixados não são subdivididos duas vezes na área de padding do conteúdo. (Ic6224).

Versão 1.7.4

16 de outubro de 2024

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

Correções de bugs

  • Correção de um bug que causava uma falha rara em campos de texto (I475c6, b/313010266).
  • ReusableContentHost removido na raiz dos itens de layout lento. Essa era uma possível causa raiz de falhas "measure called on a deactivated node". (Id6e60).

Versão 1.7.3

2 de outubro de 2024

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

Correções de bugs

  • Correção de um vazamento de memória com BasicText quando minLines é definido como um valor diferente do padrão

Versão 1.7.2

18 de setembro de 2024

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

Correções de bugs

  • Correção de um problema com o elemento arrastável que não estava registrando eventos de baixo, o que fazia com que os movimentos rápidos parecessem mais lentos do que o normal

Versão 1.7.1

10 de setembro de 2024

  • Não há mudanças nos artefatos do Android. Os artefatos -desktop foram removidos, e os artefatos -jvmStubs e -linuxx64Stubs foram adicionados. Nenhuma dessas metas é destinada a ser usada. Elas são marcadores de posição para ajudar os esforços do Jetbrains Compose.

Versão 1.7.0

4 de setembro de 2024

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

Mudanças importantes desde a versão 1.6.0

  • O desempenho de Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollable e Modifier.draggable foi significativamente melhorado. Como parte desse esforço, as seguintes mudanças de API foram feitas além das mudanças internas
    • Foi adicionada uma nova API de indicação, IndicationNodeFactory. Isso leva a implementações de indicação com melhor desempenho em comparação com a API rememberUpdatedInstance anterior (agora descontinuada). Para informações sobre a migração, consulte developer.android.com.
    • clickable / combinedClickable / selectable / toggleable agora aceita um parâmetro MutableInteractionSource anulável. Se for nulo e a indicação fornecida for IndicationNodeFactory, ela poderá ser criada de forma lenta apenas quando necessário, o que melhora a performance. Se você não estiver elevando e usando o MutableInteractionSource, é recomendável transmitir null em vez de remember { MutableInteractionSource() }.
    • O uso de Indication#rememberUpdatedInstance foi descontinuado Ele tem uma penalidade de desempenho inevitável alta e impede outras otimizações. Em vez disso, use a nova API IndicationNodeFactory.
  • A BasicTextField que usa um TextFieldState agora está estável, e recomendamos que todos os call sites comecem a migrar de BasicTextField(value, onValueChange) para BasicTextField(TextFieldState).
  • O uso de ClickableText foi descontinuado. Para adicionar links clicáveis ao texto, use BasicText com a nova anotação LinkAnnotation no AnnotatedString. LinkAnnotation permite estilos personalizados com base no estado do link (por exemplo, focado, com o cursor).
  • Apresentação do ContextualFlowRow e do Enhanced FlowRow/Column com MaxLines e Overflow. Temos o prazer de anunciar melhorias nas APIs experimentais FlowRow e FlowColumn, que agora oferecem suporte a maxLines e overflow, além da estreia de ContextualFlowRow e ContextualFlowColumn. Essa atualização foi projetada para fornecer componentes de desempenho ideais, em que ContextualFlow* é perfeito para um grande número de itens que usam uma pequena configuração de maxLines e botões dinâmicos "+N". FlowRow e FlowColumn são perfeitos para um pequeno número de itens, menos de 100. Importante: para manter o comportamento atual em FlowRow ou FlowColumn, em que todos os itens são compostos, independentemente de caberem no eixo cruzado máximo, defina o overflow como FlowRowOverflow.Visible ou FlowColumnOverflow.Visible durante a inicialização. Confira ContextualFlowRowSample e FlowRowSample para ver exemplos desses novos recursos em ação. (Ib9135, b/293577082).
  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyColumn e LazyRow. Antes era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (I2d7f7, b/150812265).
  • Implementamos o suporte experimental a capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (ScrollCaptureCallback).
  • As origens NestedScroll Drag e Fling estão sendo substituídas por UserInput e SideEffect para acomodar a definição estendida dessas origens, que agora incluem animações (Side Effect) e a roda do mouse e o teclado (UserInput).
  • As solicitações de pré-carregamento LazyLayout agora podem ser marcadas como urgentes, o que significa que esperamos que esse item seja necessário no próximo frame e que o orçamento do frame seja ignorado para garantir mais trabalho antecipado (Id513f).
  • Suporte ao recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
  • Várias APIs foram promovidas para a versão estável
    • Páginas, fixação e encartes de janela

Versão 1.7.0-rc01

21 de agosto de 2024

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

Correções de bugs

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

Versão 1.7.0-beta07

7 de agosto de 2024

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

Correções de bugs

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

Versão 1.7.0-beta06

24 de julho de 2024

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

Versão 1.7.0-beta05

10 de julho de 2024

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

Correções de bugs

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

Versão 1.7.0-beta04

26 de junho de 2024

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

Correções de bugs

  • Evitar falhas ao medir linhas de texto muito grandes (por exemplo, 10.000 caracteres) (8157ab).
  • Correção da medição de texto muito grande que causava falha no novo BasicTextField (6b7575).
  • Reversão de uma mudança de comportamento na medição de linha/coluna que interrompe o uso de texto em determinados cenários (69e8ba).

Versão 1.7.0-beta03

12 de junho de 2024

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

Versão 1.7.0-beta02

29 de maio de 2024

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

Mudanças na API

  • Foi adicionada uma API experimental para configurar o comportamento de pré-carregamento de LazyGrids semelhante à API experimental atual de LazyLists. Isso inclui suporte para pré-carregar itens em LazyGridss aninhadas. Semelhante a LazyListPrefetchStrategy, a implementação padrão é pré-carregar os dois primeiros itens aninhados de cada grade, mas isso pode ser configurado pelas novas APIs LazyGridPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I591c4).
  • SemanticsProperties.Editable foi renomeado como IsEditable e SemanticsPropertyReceiver.editable foi alterado para isEditable A propriedade agora é booleana e sempre especificada por campos de texto. (I8acd8).
  • Os valores padrão de basicMarquee foram movidos para o objeto MarqueeDefaults. (I12ff6).
  • O parâmetro delayMillis basicMarquee foi renomeado como repeatDelayMillis. (I12ff6).
  • A API foi atualizada para estilizar os links: o TextLinkStyles foi movido para o TextStyle e o TextDefaults foi removido do material (I5477b).

Correções de bugs

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

Contribuição externa

  • Reenvie o "Criar conteúdo do tipo de cálculo de tempo de composição/medição com base no pré-carregamento para melhorar a precisão" (Iea622).
  • O cálculo do tempo de composição/medição é feito com base no tipo de conteúdo de pré-carregamento para melhorar a precisão (Ibccb1).
  • Os modificadores WindowInsetsPadding foram disponibilizados no conjunto de origem comum (I070b2).

Versão 1.7.0-beta01

14 de maio de 2024

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

Mudanças na API

  • A propriedade KeyboardOptions.shouldShowKeyboardOnFocus foi adicionada de volta como descontinuada e oculta para compatibilidade binária. (I15cfe).
  • O Modifier.anchoredDraggable agora inverte as deltas de arrasto por padrão para componentes com orientação horizontal quando usados em um layout RTL. (I3c6d9).
  • AnnotatedString.hasEqualsAnnotations agora é hasEqualAnnotations (I685c0).
  • Atualizamos a API para receber links com temas do Material Design no texto. Especificamente, foram removidos os métodos do TextDefaults para a construção de LinkAnnotations temáticos e a análise de HTML com links temáticos. Em vez disso, foi adicionada uma classe TextLinkStyles que permite estilizar os links como um parâmetro para o elemento combinável de texto. (I31b93).
  • onDragStarted e onDragStopped foram substituídos por callbacks não suspensos. (I59de8).

Correções de bugs

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

Versão 1.7.0-alpha08

1º de maio de 2024

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

Novos recursos

  • Adicionamos o menu de contexto de clique direito a BasicTextField e SelectionContainer com itens para cortar, copiar, colar e selecionar tudo. (If8c93, Ia2b49, I6f268).

Mudanças na API

  • As solicitações de pré-carregamento LazyLayout agora podem ser marcadas como urgentes, o que significa que esperamos que esse item seja necessário no próximo frame e que o orçamento do frame seja ignorado para garantir mais trabalho antecipado (Id513f).
  • isPositionedByParentWithDirectManipulation foi renomeado como introducesFrameOfReference Agora, ele tem o efeito reverso, o que significa que, por padrão, a maioria dos LayoutCoordinates introduz um frame de referência. Somente quando colocado sob manipulação direta, a propriedade será falsa. Para consultar a posição apenas com aqueles que introduzem um frame de referência, use positionInLocalFrameOfReference(...). Ou positionInLocalLookaheadFrameOfReference de um LookaheadScope. (Ifc5f7).
  • onClicked foi renomeado como onClick em LinkInteractionListener (Iaa35c).
  • Mudança da lambda de ação para getScrollViewportLength conforme o feedback do conselho da API. (Ibc74a).
  • As APIs de delegação de escrita à mão com stylus foram renomeadas. (Ica45f, b/327271923).
  • TextInclusionStrategy.isInside foi renomeado como isIncluded. Faça com que o tipo de retorno Paragraph/MultiParagraph#getRangeForRect() não seja anulável. (I51f26).

Correções de bugs

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

Contribuição externa

  • Renomeação de PrefetchExecutor para PrefetchScheduler para refletir melhor as responsabilidades. (Ib9154).
  • Foi adicionado suporte para pré-buscar itens em LazyLists aninhados (por exemplo, um LazyColumn que renderiza LazyRows aninhados). Essa mudança deve reduzir as quedas de frames durante a rolagem para esses LazyLists. A implementação padrão é pré-carregar os dois primeiros itens aninhados, mas esse comportamento pode ser controlado pelas novas APIs LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I51952).

Versão 1.7.0-alpha07

17 de abril de 2024

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

Novos recursos

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

Mudanças na API

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

Correções de bugs

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

Contribuição externa

  • Duas APIs de rolagem foram renomeadas (I56a75).

Versão 1.7.0-alpha06

3 de abril de 2024

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

Novos recursos

  • O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a LazyColumn e LazyRow. Antes era possível adicionar o modificador Modifier.animateItemPlacement() para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamado Modifier.animateItem(), que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (I2d7f7, b/150812265).
  • Os clientes de LazyColumn/LazyRow agora podem desativar a manutenção de um índice com base na chave do próximo cartão de medição chamando um LazyListState.requestToScroll sem suspensão. (I98036, b/209652366).
  • Foi adicionado o método parseAsHtml para strings com estilo: ele permite converter uma string marcada com tags HTML em AnnotatedString. Nem todas as tags são compatíveis. Por exemplo, ainda não é possível mostrar listas com marcadores. (I84d3d).
  • Implementamos o suporte experimental para capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (ScrollCaptureCallback). Esse recurso é experimental e pode não processar todos os casos corretamente. Por isso, ela está desativada por padrão. Para ativar, defina a flag ComposeFeatureFlag_LongScreenshotsEnabled como verdadeira. Essa flag será removida antes da versão Beta 1.7. (I2b055, b/329296471).
  • Introdução de uma nova API GraphicsLayer para oferecer mais flexibilidade no posicionamento e na renderização de instâncias GraphicsLayer e oferecer suporte a recursos de renderização intrínsecos sem precisar coordenar com implementações combináveis para especificar instâncias de modificador GraphicsLayer.

Mudanças na API

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

Correções de bugs

  • Correção de um bug em que a variante BasicTextField(state) não funcionava com teclados CJK(com base na composição) (I54425).
  • Correção de um bug em que a Modifier.dragAndDropTarget() podia fazer referência a dados desatualizados em determinados cenários com reutilização de Modifier.Node (I05bb1).
  • Revertemos uma mudança recente no contrato em que as chamadas AnchoredDraggableState#anchoredDrag eram fixadas no final de uma operação anchoredDrag. (I95715).

Versão 1.7.0-alpha05

20 de março de 2024

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

Mudanças na API

  • A composição experimental LocalTextLinkStyle foi removida para estilizar hiperlinks. (Iebfa7).
  • A substituição experimental de BasicText com o argumento onLinkClicked foi removida Uma API substituta para suporte a hiperlinks será lançada no futuro. (I107d5).
  • Os métodos e as propriedades relacionadas a Codepoints foram removidos em TextFieldState e TextFieldBuffer. Também removemos os sufixos inChars das APIs restantes relacionadas à seleção e composição. (Ief7ce).
  • O currentValue do AnchoredDraggable agora vai ser atualizado ao passar por um ponto de ancoragem. Use settledValue para receber a semântica currentValue anterior, atualizando apenas quando se estabelecer em uma âncora. O progresso agora é exposto como uma função (que exige um ponto inicial e final) em vez de uma propriedade. (Ibe6e8, b/318707189, b/298271489, b/294991954).
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits e TextFieldDecorator foram graduados para a versão estável. (I9582b).
  • InterceptPlatformTextInput foi introduzido para ajudar a escrever testes de baixo nível relacionados ao IME e outros casos de uso de baixo nível do IME. O uso de PlatformTextInputTestOverride foi descontinuado. (I862ed, b/322680547).
  • restrictedConstraints() foi dividida em dois métodos: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd).

Contribuição externa

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

Versão 1.7.0-alpha04

6 de março de 2024

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

Mudanças na API

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

Correções de bugs

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

Versão 1.7.0-alpha03

21 de fevereiro de 2024

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

Mudanças na API

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

Correções de bugs

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

Versão 1.7.0-alpha02

7 de fevereiro de 2024

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

Mudanças na API

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

Correções de bugs

  • Agora, BasicTextField2 mantém o cursor visível durante a digitação quando ele é rolado para fora da visualização ou se move para fora da visualização devido à entrada. (Ieb856, b/237190748).

Contribuição externa

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

Versão 1.7.0-alpha01

24 de janeiro de 2024

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

Novos recursos

  • Foi adicionado um novo Indication API, IndicationNodeFactory. Isso leva a implementações de Indication com mais desempenho em comparação com a API rememberUpdatedInstance anterior (agora descontinuada). Para informações sobre a migração, consulte developer.android.com.
  • clickable / combinedClickable / selectable / toggleable agora aceita um parâmetro MutableInteractionSource anulável. Se for nulo e o Indication fornecido for um IndicationNodeFactory, o Indication poderá ser criado de forma lenta apenas quando necessário, o que melhora a performance. Se você não estiver elevando e usando o MutableInteractionSource, é recomendável transmitir null.

Mudanças na API

  • Introdução de DecayAnimation em AnchoredDraggable. Essa mudança adiciona um parâmetro decayAnimationSpec a AnchoredDraggable, permitindo o uso da animação de decréscimo ao se estabelecer em uma das âncoras. A mudança também inclui renomear o animationSpec para snapAnimationSpec para ajudar a entender o caso de uso de cada especificação.
  • O BasicTextField2 está disponível para uso experimental. Ele precisa ter aproximadamente a mesma paridade de recursos que BasicTextField, e o comportamento precisa estar pronto para produção. No entanto, a API ainda é experimental. Antes da estabilização, ele será renomeado para BasicTextField e movido para o mesmo pacote.
  • Introdução do primeiro rascunho da API OutputTransformation para BasicTextField2. Essa API substitui a maioria dos casos de uso de VisualTransformation na BasicTextField antiga. No entanto, ela ainda não está completa e algumas coisas não funcionam corretamente, mas agradecemos qualquer feedback sobre a usabilidade da API para seus casos de uso. (aosp/2708848).
  • Foi introduzido o LinkAnnotation, que permite adicionar links e elementos clicáveis ao texto. O recurso de links ainda não está completo, e mais mudanças na API estão chegando.
  • Introdução do modificador receiveContent, que oferece aos desenvolvedores uma maneira de receber conteúdo avançado no Jetpack Compose.
  • O receiveContent se integra ao BasicTextField2 para aceitar conteúdo avançado fornecido pelo teclado do software ou colado da área de transferência.
  • KeyboardOptions.shouldShowKeyboardOnFocus permite desativar o comportamento padrão de BasicTextField de solicitar um teclado de software no foco.
  • TextInputService e LocalTextInputService foram descontinuados. Use PlatformTextInputModifierNode para se integrar diretamente às APIs IME da plataforma. (aosp/2862698).
  • O uso de Indication#rememberUpdatedInstance foi descontinuado Ele tem uma penalidade de desempenho inevitável alta e impede outras otimizações. Em vez disso, use a nova API IndicationNodeFactory.

Correções de bugs

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

Versão 1.6

Versão 1.6.8

12 de junho de 2024

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

Versão 1.6.7

1º de maio de 2024

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

Versão 1.6.6

17 de abril de 2024

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

Correções de bugs

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

Versão 1.6.5

3 de abril de 2024

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

Correções de bugs

  • Adição de registros de depuração para bugs difíceis de reproduzir em linha/coluna: (b/300280216 e b/297974033).

Versão 1.6.4

20 de março de 2024

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

Correções de bugs

  • Um gesto de seleção de pressionar e arrastar que sai dos limites de layout do texto no primeiro frame do arrasto não causa mais falhas. (Icdf90, b/325307463).

Versão 1.6.3

6 de março de 2024

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

Versão 1.6.2

21 de fevereiro de 2024

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

Correções de bugs

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

Versão 1.6.1

7 de fevereiro de 2024

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

Correções de bugs

  • Correção da medida da grade escalonada quando rolada acima do limite. (bffc39).
  • Adicionar verificação de layout com dimensões grandes. (e74af5).
  • Correção do posicionamento de itens de tamanho 0 no início da grade escalonada. (785f94).
  • Chamar o callback onRelease na mesma ordem de onForgotten. (31ce3b).

Versão 1.6.0

24 de janeiro de 2024

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

Mudanças importantes desde a versão 1.5.0

  • Novo modificador Modifier.anchoredDraggable que permite arrastar e animar entre conjuntos predefinidos de âncoras. Esse modificador substitui Modifier.swipeable. Saiba como usar e migrar de Modifier.swipeable no guia de migração.
  • A funcionalidade de arrastar e soltar entre apps e componentes foi adicionada. Consulte DragAndDropTarget, Modifier.dragAndDropSource e outras APIs para começar
  • Modifier.draggable2D é o novo modificador que permite o suporte fácil ao arrastar em 2D. Consulte Exemplo.
  • AndroidExternalSurface e AndroidEmbeddedExternalSurface foram adicionados para facilitar a adição de componentes orientados a plataformas no Compose
  • Várias mudanças e melhorias na API em Pager e snapFlingBehaviour
  • Várias APIs de foco, texto e insetos foram promovidas para APIs estáveis

Versão 1.6.0-rc01

10 de janeiro de 2024

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

Mudanças na API

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

Versão 1.6.0-beta03

13 de dezembro de 2023

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

Correções de bugs

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

Versão 1.6.0-beta02

29 de novembro de 2023

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

Correções de bugs

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

Versão 1.6.0-beta01

15 de novembro de 2023

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

Mudanças na API

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

    acceptsDragAndDropTransfer foi adicionado ao Modifier dragAndDropTarget para aceitar uma sessão de arrastar e soltar. Essa lambda retorna um DragAndDropTarget viável se houver interesse em uma sessão de arrastar e soltar. Outras lambdas para processamento de eventos de arrasto foram substituídas por essa.

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

  • A exposição de startDragImmediately em AnchoredDraggable permite o controle para detectar gestos de arrasto ao usá-lo. É útil defini-lo quando o widget está animando para uma âncora de destino. Consulte Exemplo. (Ie6d13, b/285139987).

  • As APIs de dica da plataforma agora são @ExperimentalFoundationApi (I30b0b).

  • DragAndDropInfo foi removido, porque DragAndDropModifierNode.drag agora usa parâmetros para transferData, tamanho de decoração e decoração de arrasto DrawScope lambda

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

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

    O DragAndDropEventType foi removido (I645b1).

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

  • Substitua OriginalText por TextSubstitution. (Ifa5a8).

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

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

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

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

  • As APIs SwipeToReveal do Material Design (para cards e ícones) agora dependem de uma API baseada em slot (como recomendado pelo Compose) em vez de instâncias baseadas em classe de dados para criar esses slots. Essa é uma mudança importante. Consulte a demonstração e o código de exemplo para conferir exemplos de como usar a nova API. (Ia8943).

Correções de bugs

  • Implemente equals e hashcode para PageSize.Fixed. (Ie3ede, b/300134276).
  • Correção de um bug que fazia com que o layout BasicText não encolhia quando minWidth mudava e minWidth era menor que as restrições de medida iniciais maxWidth (Idb19c).
  • Adição de suporte ao renderizador para o gradiente em varredura em ArcLine. (I4d5bb).
  • Correção do problema de compatibilidade binária com a mudança de margem da janela (Iee695).
  • A camada principal do Material Design foi removida do ícone/botão do Material3, porque os microbenchmarks mostram um desempenho melhor sem ela. (I55555).

Versão 1.6.0-alpha08

18 de outubro de 2023

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

Novos recursos

  • Modifier.draggable2D é o novo modificador que permite o suporte fácil ao arrastar em 2D. Consulte Exemplo (Id95f5, b/214412658).

Mudanças na API

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

Correções de bugs

  • Melhoria na documentação sobre BasicTextField em relação aos requisitos de onValueChange. (I90fc9, b/160257648).

Versão 1.6.0-alpha07

4 de outubro de 2023

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

Mudanças na API

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

Correções de bugs

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

Versão 1.6.0-alpha06

20 de setembro de 2023

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

Novos recursos

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

Mudanças na API

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

Mudanças de comportamento

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

Correções de bugs

  • O uso de rememberSaveable foi removido das dicas de ferramentas. (Icc131, b/299500338).

Versão 1.6.0-alpha05

6 de setembro de 2023

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

Mudanças na API

  • Adicione sobrecargas para BasicSecureTextField que aceitem um valor imutável e um callback para mudar esse valor, assim como a API BasicTextField atual. (Ia4882).
  • A Modifier.preferKeepClear() foi adicionada para marcar o elemento combinável como com preferência por janelas flutuantes na API 33 e mais recentes. (Ib51d5, b/297260115).
  • As velocidades de lançamento em componentes de visualização, como ScrollView e RecyclerView, são limitadas a ViewConfiguration.ScaledMaximumFlingVelocity. O Compose agora contém a própria versão de maximumFlingVelocity, que agora se aplica a Draggable. (Ibf974).
  • Remoção das sobrecargas Pager e PagerState descontinuadas. (Iea07e).
  • BasicTooltipBox foi adicionado a compose.foundation, e PlainTooltipBox e RichTooltipBox foram atualizados para usar TooltipBox com novos elementos combináveis PlainTooltip e RichTooltip. (I79e1d).

Versão 1.6.0-alpha04

23 de agosto de 2023

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

Mudanças na API

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

Versão 1.6.0-alpha03

9 de agosto de 2023

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

Mudanças na API

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

Correções de bugs

  • Correção de campos de texto que mostram o teclado e podem ser editados quando readOnly é verdadeiro. Também corrigimos o teclado que não aparecia quando readOnly era alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).

Versão 1.6.0-alpha02

26 de julho de 2023

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

Mudanças na API

  • PagerLayoutInfo foi introduzido com informações coletadas após uma medida ser aprovada em Pager. Também foi introduzido PageInfo, as informações sobre uma única página medida em Pager. (Iad003, b/283098900).
  • Anotações adicionais para especificar entradas permitidas para elementos combináveis (I51109).
  • A SemanticsNodeInteraction.requestFocus foi adicionada como uma maneira mais conveniente e detectável de solicitar o foco nos testes. (Ie8722).
  • A API PlatformTextInput* foi redesenhada por completo. (I6c93a, b/274661182, b/267235947, b/277380808).
  • A SoftwareKeyboardController e a LocalSoftwareKeyboardController não são mais experimentais. LocalSoftwareKeyboardController também é uma CompositionLocal adequada. (I4c364).
  • O Modifier.transformable agora fornece delta de deslocamento no parâmetro canPan para ajudar a determinar a direção do deslocamento para permitir ou não. (I692aa, b/266829800).
  • O modificador consumeWindowInsets foi atualizado para estender a superclasse AbstractComposeView (Iacd74, b/269479941).

Versão 1.6.0-alpha01

21 de junho de 2023

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

Novos recursos

  • Introdução de uma nova API AnchoredDraggable na base. Ele pode ser usado para criar componentes que podem ser arrastados entre estados discretos, como páginas iniciais modais. Essa API substitui a API Swipeable do Material Design. (I4a2ed).

Mudanças na API

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

Correções de bugs

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

Versão 1.5

Versão 1.5.4

18 de outubro de 2023

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

Versão 1.5.3

4 de outubro de 2023

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

Versão 1.5.2

27 de setembro de 2023

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

Correções de bugs

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

Versão 1.5.1

6 de setembro de 2023

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

Correções de bugs

  • Correção de campos de texto que mostram o teclado e podem ser editados quando readOnly é verdadeiro. Também corrigimos o teclado que não aparecia quando readOnly era alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).

Versão 1.5.0

9 de agosto de 2023

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

Mudanças importantes desde a versão 1.4.0

  • Muitos modificadores básicos, incluindo Modifier.clickable, Modifier.draggable, Modifier.scrollable, modificador de layout e muito mais, foram migrados para a API Modifier.Node, reduzindo a sobrecarga na composição inicial.
  • Melhorias na estabilidade dos pagers. Vários bugs foram corrigidos.
  • Os parâmetros pageCount agora estão em PagerState em vez do próprio Pager

Versão 1.5.0-rc01

26 de julho de 2023

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

Correções de bugs

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

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

Versão 1.5.0-beta03

28 de junho de 2023

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

Versão 1.5.0-beta02

7 de junho de 2023

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

Versão 1.5.0-beta01

24 de maio de 2023

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

Mudanças na API

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

Correções de bugs

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

Versão 1.5.0-alpha04

10 de maio de 2023

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

Mudanças na API

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

Correções de bugs

  • As chamadas para receber semântica no texto quando as restrições têm minWidth e minHeight não falham mais. (Ibd072).
  • Correção de regressão em que o teclado não aparecia para campos de texto em caixas de diálogo não criadas pelo elemento combinável Dialog. (I82551, b/262140644).

Versão 1.5.0-alpha03

19 de abril de 2023

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

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

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

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

Mudanças na API

  • Coloque FlowColumn/FlowRow inline. (Idab37).

Versão 1.5.0-alpha02

5 de abril de 2023

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

Mudanças na API

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

Versão 1.5.0-alpha01

22 de março de 2023

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

Mudanças na API

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

Correções de bugs

  • Atualização dos elementos internos de Modifier.hoverable. O modificador hoverable só vai aparecer no inspetor se estiver ativado. (I82103).

Versão 1.4

Versão 1.4.3

3 de maio de 2023

androidx.compose.foundation:foundation:1.4.3 e androidx.compose.foundation:foundation-layout:1.4.3 são lançados sem mudanças (apenas um aumento de versão).

Versão 1.4.2

19 de abril de 2023

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

Versão 1.4.1

5 de abril de 2023

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

Versão 1.4.0

22 de março de 2023

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

Mudanças importantes desde a versão 1.3.0

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

Versão 1.4.0-rc01

8 de março de 2023

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

Mudanças na API

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

Correções de bugs

  • A ação semântica SetText do BasicTextField agora vai atualizar o buffer de texto usando o mesmo caminho de código das atualizações de IME e das funções de teste (por exemplo, performTextReplacement).
  • As funções de teste de texto performTextClearance, performTextReplacement e performTextSelection agora usam SemanticsActions. (I0807d, b/269633168, b/269624358).

Versão 1.4.0-beta02

22 de fevereiro de 2023

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

Mudanças na API

  • Adicionamos um novo callback Modifier.Node.onReset(), que permite redefinir alguns estados locais para processar corretamente o caso em que o Layout será reutilizado (por exemplo, como um item de LazyColumn). Corrigimos o FocusTargetModifierNode para redefinir corretamente o estado focado. (I65495, b/265201972).
  • O parâmetro BlendMode foi adicionado aos métodos DrawScope.drawText, Paragraph.paint e MultiParagraph.paint para oferecer suporte a diferentes algoritmos de mesclagem ao desenhar texto no Canvas. (I57508).
  • A API modifierElementOf() foi removida. Estenda diretamente de ModifierNodeElement. (Ie6d21).

Correções de bugs

  • Não é mais possível selecionar um caractere parcial com as alças de seleção. (Idedd1).
  • Correção de falha ao pressionar Ctrl+Backspace em TextField vazio (I0427f, b/244185537).

Versão 1.4.0-beta01

8 de fevereiro de 2023

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

Novos recursos

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

Mudanças na API

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

Contribuição externa

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

Versão 1.4.0-alpha05

25 de janeiro de 2023

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

Novos recursos

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

Mudanças na API

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

Correções de bugs

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

Contribuição externa

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

Versão 1.4.0-alpha04

11 de janeiro de 2023

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

Novos recursos

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

Mudanças na API

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

Correções de bugs

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

Problema conhecido

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

Versão 1.4.0-alpha03

7 de dezembro de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.4.0-alpha02

9 de novembro de 2022

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

Mudanças na API

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

Versão 1.4.0-alpha01

24 de outubro de 2022

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

Mudanças na API

  • Um novo método, awaitEachGesture(), para detectores de gestos foi adicionado. Ele funciona de forma semelhante a forEachGesture(), mas o loop sobre gestos opera inteiramente dentro do AwaitPointerEventScope. Assim, os eventos não podem ser perdidos entre iterações.
  • O uso de forEachGesture() foi descontinuado e substituído por awaitEachGesture(), porque permite que os eventos sejam perdidos entre gestos (Iffc3f, b/251260206).
  • Adição de WindowInsets.imeAnimationSourc e WindowInsets.imeAnimationTarget para determinar o progresso da animação e saber onde o IME será exibido depois que a animação for concluída (I356f1, b/217770337).

Versão 1.3

Versão 1.3.1

9 de novembro de 2022

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

Correções de bugs

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

Versão 1.3.0

24 de outubro de 2022

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

Mudanças importantes desde a versão 1.2.0

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

Versão 1.3.0-rc01

5 de outubro de 2022

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

Mudanças na API

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

Versão 1.3.0-beta03

21 de setembro de 2022

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

Mudanças na API

  • Adiciona opções para personalizar a quebra de linha em "Texto" (I86907).
  • BringIntoViewResponders agora podem conseguir os limites mais atualizados de uma solicitação durante o processamento (If86a5, b/241591211).
  • Foi adicionado suporte ao espaçamento entre itens para Staggered Grid experimental (I10b82).
  • O padding de conteúdo foi introduzido no Staggered Grid experimental (I342ea).
  • O argumento size:IntSize com constraints: Constraints no método TextMeasurer.measure foi mudado para oferecer suporte a restrições de largura mínima (I37530, b/242707525).
  • Foi adicionado Modifier.withConsumedWindowInsets() a fim de consumir WindowInsets para o uso fora de windowInsetsPadding.
  • Foi adicionado MutableWindowInsets para permitir a mudança fácil de WindowInsets sem recomposição. (I7fd28, b/237019262, b/243119659).

Versão 1.3.0-beta02

7 de setembro de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.3.0-beta01

24 de agosto de 2022

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

Mudanças na API

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

Versão 1.3.0-alpha03

10 de agosto de 2022

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

Mudanças na API

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

Versão 1.3.0-alpha02

27 de julho de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.3.0-alpha01

29 de junho de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.2

Versão 1.2.1

10 de agosto de 2022

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

Versão 1.2.0

27 de julho de 2022

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

Mudanças importantes desde a versão 1.1.0

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

Versão 1.2.0-rc03

29 de junho de 2022

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

  • Nenhuma mudança desde a versão 1.2.0-rc02.

Versão 1.2.0-rc02

22 de junho de 2022

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

Versão 1.2.0-rc01

15 de junho de 2022

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

Mudanças na API

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

Versão 1.2.0-beta03

1º de junho de 2022

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

Mudanças na API

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

Correções de bugs

  • Esclarecimento da documentação de WindowInsets.ime para declarar que os encartes de ime são informados até o nível 23 da API, mas apenas animados no nível 30 ou mais recente (Ia7fc0, b/230756508).
  • Pressionar a tecla de excluir o próximo caractere quando o cursor está no final de um campo de texto não causa mais falhas.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand agora exigem que os argumentos do construtor não sejam negativos (Ica8e6, b/199919707).

Versão 1.2.0-beta02

18 de maio de 2022

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

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

Versão 1.2.0-beta01

11 de maio de 2022

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

Novos recursos

  • Esta é a primeira versão Beta da 1.2.

Mudanças na API

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

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

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

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

Correções de bugs

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

Contribuição externa

  • O MouseInjectionScope.scroll(delta = someDelta) agora é invertido no Android quando rolamos verticalmente. Se someDelta for positivo, a rolagem será para baixo (Ifb697, b/224992993).

Versão 1.2.0-alpha08

20 de abril de 2022

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

Mudanças na API

  • Mostra todos os pesos disponíveis para fontes de sistemas no Android ao usar FontFamily.SansSerif. Isso usa internamente os nomes de fontes substitutas, como sans-serif-medium, nas APIs de 21 a 28. Essa é uma mudança de comportamento, já que apenas os pesos 400 e 700 tinham suporte das APIs de 21 a 28 (I380fe, b/156048036, b/226441992).
  • Paragraph e MultiParagraph agora aceitam o parâmetro Constraints. A transmissão de Constraints.maxHeight é um ambiente autônomo no momento, mas vai permitir alguns cálculos no futuro, como o uso de reticências com base na altura (I6afee, b/168720622).
  • SubcomposeSlotReusePolicy.getSlotsToRetain() agora aceita uma classe personalizada semelhante a MutableSet, que não permite adicionar novos itens a ela (Icd314).
  • O consumo parcial (para baixo OU na posição) foi descontinuado em PointerInputChange. Use consume() para consumir a mudança completamente. Você pode usar isConsumed para determinar se outra pessoa já consumiu a mudança.
  • Agora, o PointerInputChange::copy() sempre faz uma cópia superficial. Isso significa que se uma cópia de PointerInputChange for consumida, todas as outras também serão. Se você quiser criar uma PointerInputChange desvinculada, use o construtor (Ie6be4, b/225669674).
  • Introdução da nova API experimental LazyLayout. Ela permite criar seus próprios componentes, como LazyColumn de LazyVerticalGrid. A API está nas primeiras etapas e pode mudar nas versões futuras (Iba2bc, b/166591700).
  • AndroidFont agora usa typefaceLoader como um parâmetro construtor (I2c971).
  • O elemento complementar WindowInsets agora mostra a visibilidade (se está na tela, independente de cruzar com a janela) e o tamanho que poderia ter se estivesse disponível no dispositivo, mas não estivesse ativo (I65182, b/217770337).

Versão 1.2.0-alpha07

6 de abril de 2022

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

Mudanças na API

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

Versão 1.2.0-alpha06

23 de março de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.2.0-alpha05

9 de março de 2022

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

Mudanças na API

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

Correções de bugs

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

Contribuição externa

  • Atualização para usar as corrotinas Kotlinx 1.6.0 (I3366d).

Versão 1.2.0-alpha04

23 de fevereiro de 2022

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

Mudanças na API

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

    Na maioria dos casos, as anotações podem ser inferidas pelo plug-in do compilador do Compose. Portanto, o uso direto delas é raro. Os casos que não podem ser inferidos incluem a criação e o uso de um applier personalizado, funções combináveis abstratas (como métodos de interface), campos ou variáveis globais que são lambdas combináveis (as variáveis locais e os parâmetros são inferidos) ou o uso de ComposeNode ou funções combináveis relacionadas.

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

Correções de bugs

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

Versão 1.2.0-alpha03

9 de fevereiro de 2022

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

Mudanças na API

  • Os métodos notifyFocusedRect nas classes TextInputSession e TextInputService foram descontinuados e não serão chamados. Use BringIntoViewRequester (Ia4302, b/192043120, b/216842427, b/178211874).
  • As animações eram ativadas para itens de grades lentas com Modifier.animateItemPlacement() (Ib6621, b/211753218).
  • O BringIntoViewRequester agora propaga solicitações para a visualização host do Android (Ia7a51).
  • FontFamilyResolver agora está disponível via LocalFontFamilyResolver.current
    • Foram adicionados os métodos createFontFamilyResolver(context) e createFontFamilyResolver(context, coroutineScope) para criar novos resolvedores da FontFamily fora do uso do Compose.
    • Os elementos Paragraph e MultiParagraph agora usam o FontFamily.Resolver.
    • O TextLayoutResult.layoutInput.fontFamilyResolver agora contém o resolvedor usado para esse layout. O TextLayoutResult.layoutInput.resourceLoader foi descontinuado porque ele não é mais usado (Id5a45, b/174162090).
  • Foi adicionada AndroidFont, uma nova API de baixo nível para fornecer novos tipos de descritores de recursos de fonte no Android. Por exemplo, carregar fontes de um back-end específico do app, localizar opcionalmente fontes pré-instaladas no dispositivo ou carregar uma fonte de um recurso que não é fornecido pelas fábricas de fontes atuais.
    • A API Font.ResourceLoaded foi expandida para oferecer suporte ao carregamento de fonte opcional e assíncrono. Não é recomendável que os desenvolvedores de aplicativos usem essa API diretamente. Para adicionar novos tipos de fonte, consulte AndroidFont.
    • A função de extensão Font.AndroidResourceLoader permite criar um Font.ResourceLoader quando fora da composição.
    • O parâmetro loadingStrategy foi adicionado às fontes baseadas em recursos para autorizar o carregamento assíncrono quando a fonte do recurso se refere a fontes XML para download (Ie5aea, b/174162090).
  • O construtor Typeface(FontFamily) foi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Com fontes para download, essa chamada pode ser bloqueada por 10 segundos. Em vez disso, use FontFamilyResolver.preload.
    • O uso de fontResource(FontFamily): Typeface foi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Em vez disso, use FontFamilyResolver.preload (If8e7c, b/174162090).
  • Agora, é possível especificar o tipo de conteúdo para os itens da LazyVerticalGrid. As funções de item/itens no LazyGridScope agora aceitam esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I7b355, b/215372836).
  • LazyListLayoutInfo e LazyGridLayoutInfo agora têm novas propriedades: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410).
  • Agora, você pode especificar o tipo de conteúdo para os itens de LazyColumn/LazyRow. As funções de item/itens no LazyListScope passaram a aceitar esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I26506).
  • O construtor SubcomposeLayoutState que aceita maxSlotsToRetainForReuse foi descontinuado. Em vez disso, há um novo construtor que aceita a SubcomposeSlotReusePolicy, uma nova interface que permite um controle mais granular sobre quais slots são retidos para reutilização futura (I52c4d).
  • Modificadores foram adicionados ao WindowInsets, tanto para preenchimento quanto para dimensionamento. Isso permite que parte do conteúdo se estenda até a área inserida, além de manter a área principal fora da área inserida. Por exemplo, o atributo windowInsetsPadding pode ser usado para preencher a área de conteúdo de modo a evitar áreas que sejam totalmente ou parcialmente cobertas (Id0395, b/213942085).

Correções de bugs

  • Os TextFields agora são mantidos acima do teclado quando estão em foco, e o teclado é mostrado quando o modo de entrada simples é ADJUST_PAN (I8eaeb, b/190539358, b/192043120).
  • O computador usa a composição local para FontFamily.Resolver.
    • O uso do FontLoader para computadores foi descontinuado.
    • Nova fábrica createFontFamilyResolver no computador (I6bbbb, b/174162090).
  • O tipo de entrada do teclado de software não pisca mais ao mudar o foco entre os campos de texto (I1bf50, b/187746439).
  • Os campos de texto não exigem mais um pressionamento da tela de retorno quando a alça do cursor estiver sendo exibida (Ideb4b, b/205726883).
  • O comportamento da lupa de seleção foi refinado para corresponder à lupa da plataforma (Idd918, b/206833278).

Versão 1.2.0-alpha02

26 de janeiro de 2022

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

Mudanças na API

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

Correções de bugs

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

Versão 1.2.0-alpha01

12 de janeiro de 2022

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

Mudanças na API

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

Correções de bugs

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

Atualizações de dependência

  • Agora depende do Kotlin 1.6.10.

Versão 1.1

Versão 1.1.1

23 de fevereiro de 2022

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

Correções de bugs

  • A NullPointerException em androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList foi corrigida (aosp/1947059, b/206677462).
  • A falha causada pelo conteúdo da área de transferência durante a leitura no Android foi corrigida (I06020, b/197769306).
  • RTL corrigido no elemento LazyVerticalGrid (aosp/1931080, b/207510535).

Versão 1.1.0

9 de fevereiro de 2022

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

Mudanças importantes desde a versão 1.0.0

  • Versão estável do efeito de rolagem do Android 12.
  • Melhorias no dimensionamento da área de toque.
  • Em relação ao Compose 1.0, os componentes do Material Design vão aumentar o espaço de layout para atender ao tamanho da área de toque das diretrizes de acessibilidade (links em inglês) do Material Design. Por exemplo, a área de toque do botão será expandida para um tamanho mínimo de 48 x 48 dp, mesmo que você defina um tamanho menor para o botão. Isso alinha o Compose Material ao mesmo comportamento dos Componentes do Material Design para ser consistente se você combinar visualizações e o Compose. Essa mudança também garante que, ao criar a interface usando os componentes do Compose Material, os requisitos mínimos para a acessibilidade da área de toque sejam atendidos.
  • Versão estável da coluna de navegação.
  • Upgrade de várias APIs anteriormente experimentais para a versão estável.
  • Compatibilidade com as versões mais recentes do Kotlin.

Versão 1.1.0-rc03

26 de janeiro de 2022

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

Correções de bugs

  • Atualização de compatibilidade com o Compose Material 1.1.0-rc03.

Versão 1.1.0-rc01

15 de dezembro de 2021

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

Correções de bugs

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

Versão 1.1.0-beta04

1.º de dezembro de 2021

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

Novos recursos

  • Foi adicionada compatibilidade com o Kotlin 1.6.0.

Mudanças na API

  • Limpeza de nulidade em androidx.core.view (I7078a, b/204917439).
  • APIs experimentais que permitem consumir PointerInputchange como um todo ou verificar se foi consumida ou não foram adicionadas (I2e59d).
  • Um widget de lupa é exibido ao arrastar o cursor ou as alças de seleção nos campos de texto (I5391e, b/203781358).

Correções de bugs

  • As alças de texto não são movidas quando a visibilidade do IME (editor de método de entrada, na sigla em inglês) muda (I25f2e).

Versão 1.1.0-beta03

17 de novembro de 2021

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

Mudanças na API

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

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

Versão 1.1.0-beta02

3 de novembro de 2021

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

Correções de bugs

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

Contribuição externa

  • O Modifier.pointerHoverIcon foi adicionado (I95f01).

Versão 1.1.0-beta01

27 de outubro de 2021

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

Correções de bugs

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

Versão 1.1.0-alpha06

13 de outubro de 2021

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

Mudanças na API

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

Versão 1.1.0-alpha05

29 de setembro de 2021

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

Mudanças na API

Correções de bugs

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

Versão 1.1.0-alpha04

15 de setembro de 2021

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

Mudanças na API

  • performGesture e GestureScope foram descontinuados e substituídos por performTouchInput e TouchInjectionScope (Ia5f3f, b/190493367).
  • A propriedade touchBoundsInRoot foi adicionada à SemanticsNode, que inclui o tamanho mínimo da área de toque para que os desenvolvedores possam garantir que ela atenda aos valores mínimos de acessibilidade (I2e14b, b/197751214).

Correções de bugs

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

Versão 1.1.0-alpha03

1.º de setembro de 2021

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

Novos recursos

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

Mudanças na API

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

Versão 1.1.0-alpha02

18 de agosto de 2021

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

Mudanças na API

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

Versão 1.1.0-alpha01

4 de agosto de 2021

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

Mudanças na API

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

Correções de bugs

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

Contribuição externa

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

Versão 1.0

Versão 1.0.5

3 de novembro de 2021

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

Correções de bugs

  • Uma falha de rastreamento de instâncias derivedStateOf foi corrigida (aosp/1792247).

Versão 1.0.4

13 de outubro de 2021

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

Atualizações de dependência

  • Atualização para depender do Kotlin 1.5.31.

Versão 1.0.3

29 de setembro de 2021

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

Atualizações de dependência

  • Atualização para depender do Kotlin 1.5.30.

Versão 1.0.2

1.º de setembro de 2021

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

Atualização para aceitar a versão 1.0.2 do Compose. O Compose 1.0.2 ainda é compatível com o Kotlin 1.5.21.

Versão 1.0.1

4 de agosto de 2021

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

Atualizações de dependência

  • Atualização para depender do Kotlin 1.5.21.

Versão 1.0.0

28 de julho de 2021

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

Principais recursos da versão 1.0.0

Esta é a primeira versão estável do Compose. Confira mais detalhes na postagem do blog oficial sobre o lançamento do Compose (link em inglês).

Problemas conhecidos

  • Se você está usando o Android Studio Bumblebee Canary 4 ou o AGP 7.1.0-alpha04/7.1.0-alpha05, pode encontrar esta falha:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Para corrigi-la, aumente temporariamente a minSdkVersion para 24+ no arquivo build.gradle. Esse problema será corrigido na próxima versão do Android Studio Bumblebee e no AGP 7.1 (b/194289155).

Versão 1.0.0-rc02

14 de julho de 2021

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

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

Versão 1.0.0-rc01

1º de julho de 2021

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-beta09

16 de junho de 2021

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

Mudanças na API

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

Correções de bugs

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

Regras de perfil adicionadas

Nesta versão, adicionamos as regras de perfil aos seguintes módulos do Compose (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

O que são as regras de perfil?

  • As regras de perfil para uma biblioteca são especificadas em um arquivo de texto baseline-prof.txt localizado no diretório src/main ou equivalente. O arquivo especifica uma regra por linha. Nesse caso, uma regra é um padrão para a correspondência de métodos ou classes na biblioteca. A sintaxe dessas regras é um superconjunto do formato de perfil do ART legível que é usado junto com adb shell profman --dump-classes-and-methods .... Essas regras podem ter uma das duas formas destinadas a métodos ou classes.

  • Uma regra de método tem o seguinte padrão:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • E uma regra de classe tem o seguinte padrão:

    <CLASS_DESCRIPTOR>
    
  • Aqui, <FLAGS> é um ou mais dos caracteres H, S e P, para indicar se esse método precisa ser sinalizado como "Hot" (frequente), "Startup" (de inicialização) ou "Post Startup" (pós-inicialização).

  • O <CLASS_DESCRIPTOR> é o descritor da classe à qual o método desejado pertence. Por exemplo, a classe androidx.compose.runtime.SlotTable teria o descritor Landroidx/compose/runtime/SlotTable;.

  • A <METHOD_SIGNATURE> é a assinatura do método e inclui o nome, os tipos de parâmetro e os tipos de retorno do método. Por exemplo, o método fun isPlaced(): Boolean em LayoutNode tem a assinatura isPlaced()Z.

  • Esses padrões podem ter caracteres curinga (**, * e ?) para que uma única regra inclua vários métodos ou classes.

O que as regras fazem?

  • Um método com a flag H indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.

  • Um método com a flag S indica que ele é chamado na inicialização e precisa ser compilado com antecedência para evitar o custo da compilação e interpretação dele no momento da inicialização.

  • Um método com a flag P indica que ele é chamado após a inicialização.

  • A presença de uma classe nesse arquivo indica que ela é usada durante a inicialização e precisa ser pré-alocada no heap para evitar o custo do carregamento dela.

Como isso funciona?

  • As bibliotecas podem definir essas regras que serão empacotadas nos artefatos do AAR. Quando um app é criado com esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário, compacto e específico para o app. O ART poderá usar esse perfil quando o app for instalado em dispositivos para compilar antecipadamente um subconjunto específico do app e melhorar o desempenho dele, especialmente a primeira execução. Isso não terá efeito nos aplicativos depuráveis.

Versão 1.0.0-beta08

2 de junho de 2021

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

Mudanças na API

  • A enumeração NestedScrollSource foi substituída por uma classe in-line (Ie321b, b/187055290).
  • O uso de enumerações para classes in-line foi refatorado para evitar problemas com a adição de instruções "when" quando novos valores de enumeração forem adicionados (I2b5eb).
  • Um tempo limite clicável / alternável foi adicionado para evitar a exibição de uma ondulação durante uma rolagem / ao arrastar (Ia2704, b/168524931).
  • As propriedades de semântica de ContentDescription e Text não são mais valores únicos, mas sim listas. Isso permite mesclá-las sem alterações em vez de como concatenações. Também disponibilizamos APIs de teste melhores para usar essas mudanças (Ica6bf, b/184825850).
  • Modifier.focusModifier() foi descontinuado e substituído por Modifier.focusTarget() (I6c860).
  • A enumeração KeyboardType foi substituída por uma classe in-line (I73045, b/187055290).
  • A enumeração FocusState foi substituída por uma interface FocusState (Iccc1a, b/187055290).
  • A enumeração ImeAction foi substituída por uma classe in-line (I18be5, b/187055290).
  • As funções AnnotatedString.withAnnotation agora são ExperimentalTextApi em vez de ExperimentalComposeApi (I0cd0a).
    • O construtor TextUnit com TextUnitType agora é ExperimentalTextApi, em vez de ExperimentalComposeApi.
  • PaddingValues agora é @Stable em vez de @Immutable (I88c50).

Correções de bugs

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

Versão 1.0.0-beta07

18 de maio de 2021

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

Mudanças na API

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

Correções de bugs

  • LazyColumn/Row manterá até dois itens visíveis anteriormente ativos (não descartados), mesmo quando eles já tiverem rolado para fora da tela. Isso permite que o componente reutilize as subcomposições ativas quando precisarmos compor um novo item, o que melhora o desempenho de rolagem (Ie5555).
  • paintBackground foi removido (I38660).
  • Exiba o segundo plano da seleção usando o DrawScope (I73c61, b/186674472).
  • Correção de uma regressão beta06 que afetava linhas/coluna que usavam disposições spacedBy para layouts filhos ponderados (Ifaf8c, b/187326588).

Versão 1.0.0-beta06

5 de maio de 2021

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

Mudanças na API

  • Resolução de conflitos com o gesto de navegação (I1145e).
  • Novas APIs de acessibilidade CollectionInfo e CollectionItemInfo, que permitem marcar a coleção e os itens relacionados para serviços de acessibilidade (Id54ef, b/180479017).
  • Novo SemanticsActions.ScrollToIndex para rolar uma lista com itens indexados até um item com determinado índice, e SemanticsProperties.IndexForKey para conferir o índice de um item de uma lista com itens com chave. As duas ações são implementadas por LazyList.
    • Novo SemanticsNodeInteraction.performScrollToIndex, que rola uma lista até o índice especificado, e SemanticsNodeInteraction.performScrollToKey, que rola uma lista até o item com a chave especificada (I4fe63, b/178483889, b/161584524).
  • AnnotatedString é compatível com salvamento para TextFieldValue.Saver. As funções utilitárias addTtsAnnotation e withAnnotation foram adicionadas ao método AnnotatedString.Builder (I8cbdc, b/178446304).
  • Valores padrão de parâmetro 0.dp foram adicionados aos PaddingValues(horizontal, vertical) (I05571, b/181336792)

Correções de bugs

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

Versão 1.0.0-beta05

21 de abril de 2021

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

Mudanças na API

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

Correções de bugs

  • Foram corrigidas ações de rolagem de acessibilidade em ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. Em vez de rolar até o final, agora a rolagem é feita por uma tela na direção indicada (Ieccb0).
  • Os arquivos AndroidManifest de ui-test-manifest e ui-tooling-data agora são compatíveis com o Android 12 (I6f9de, b/184718994).

Versão 1.0.0-beta04

7 de abril de 2021

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

Mudanças na API

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

Correções de bugs

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

    Para resumir, considere o exemplo:

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

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

Versão 1.0.0-beta03

24 de março de 2021

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-beta02

10 de Março de 2021

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

Mudanças na API

  • Foram adicionadas várias pequenas otimizações à lógica de medida do LazyColumn (Ic6889).
  • Adicionada nova API local de composição, LocalSoftwareKeyboardController, para substituir a interface SoftwareKeyboardController anterior no TextField (I5951e, b/168778053).
  • Adicionada nova API local de composição, LocalSoftwareKeyboardController, para substituir a interface SoftwareKeyboardController anterior no TextField (I84472, b/168778053).

Correções de bugs

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

Versão 1.0.0-beta01

24 de fevereiro de 2021

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

Esta é a primeira versão do Compose 1.0.0 Beta.

Mudanças na API

  • O callback onStart foi adicionado a detectDragGestures (I67269, b/179995594).
  • Modificadores de tamanho para intrínsecos não são mais experimentais (I15744).
  • Declarações dp foram removidas (I798d2).
  • O callback SoftwareKeyboardController foi removido de todos os campos de texto para ser substituído por uma nova API em breve (Iae869, b/168778053).
  • O MeasureBlocks foi renomeado como MeasurePolicy, que se tornou uma interface divertida. As APIs de layout foram atualizadas / simplificadas para usar MeasurePolicy (Icab48, b/167662468, b/156751158).
  • InteractionState foi substituído por [Mutable]InteractionSource.
    • As interfaces são responsáveis por emitir / coletar eventos de interação.
    • Em vez de transmitir interactionState = remember { InteractionState() } para componentes como Button e Modifier.clickable(), use interactionSource = remember { MutableInteractionSource() }.
    • Em vez de Interaction.Pressed in interactionState, use as funções de extensão em InteractionSource, como InteractionSource.collectIsPressedAsState().
    • Para casos de uso complexos, use InteractionSource.interactions para observar o fluxo de interações. Consulte as amostras e a documentação do InteractionSource para mais informações
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378).
  • Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
  • Foi criada uma nova TextInputSession para sessões de entrada de componentes de texto de baixo nível, como o CoreTextField (I8817f, b/177662148).
  • Placeable agora expõe measuredSize, representando o tamanho em que o layout filho é realmente medido. Esse tamanho pode não respeitar as restrições de medidas (Ib2729, b/172560206, b/172338608).
  • O modificador selectGroup, que permite marcar a coleção de guias ou botões de opção, foi adicionado para fins de acessibilidade (Ie5c29).
  • Adição de LazyListState.animateScrollToItem

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

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

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

  • A defaultFactory para compositionLocalOf e staticCompositionLocalOf agora é obrigatória, não opcional.

    Essa mudança remove um possível erro para tipos não anuláveis, em que nenhuma fábrica padrão era fornecida. Anteriormente, isso forneceria uma referência nula para um tipo não anulável.

    Para tipos anuláveis, considere fornecer { null } como a fábrica padrão.

    Não recomendamos o uso de locais com tipos não anuláveis, a menos que um padrão simples possa ser fornecido. Se não houver esse padrão, o lambda defaultFactory gerará uma exceção. No entanto, isso significa que os consumidores do local terão uma dependência implícita sendo fornecida, mas não aplicada pelo sistema de tipos (Ifbd2a).

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

  • As ações de texto agora verificam o foco automaticamente (I13777, b/179648629).

  • Remoção de runBlockingWithManualClock (I15cdc, b/179664814).

  • A posição de rolagem em Modifier.verticalScroll()/horizontalScroll() é representada com o Ints agora (I81298).

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

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

  • Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize foi renomeado como width/height/size (I5b414).

  • defaultMinSizeConstraints foi renomeado como defaultMinSize (I4eaae).

  • Modifier.tapGestureFilter foi removido. Use Modifier.pointerInput { detectTapGestures(...) } (I266ed, b/175294473).

  • O consumo parcial foi removido do sistema de entrada do ponteiro. A forma recomendada de coordenar o consumo parcial é Modifier.nestedScroll (Ie9c9b).

  • A orientação foi movida para o pacote básico. VelocirtTracker foi movido de ui.gesture para ui.input.pointer (Iff4a8, b/175294473).

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

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

  • Providers foi renomeado como CompositionLocalProvider.

    • O construtor Composition não aceita mais um parâmetro chave e foi descontinuado.
    • A currentCompositeKeyHash foi transformada em uma propriedade combinável de nível superior, em vez de uma função combinável de nível superior.
    • CompositionData e CompositionGroup foram movidos para o namespace androidx.compose.runtime.tooling.
    • ComposableLambda foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
    • ComposableLambdaN foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
    • A função snapshotFlow foi movida para o namespace androidx.compose.runtime.
    • O método de mesclagem de SnapshotMutationPolicy não é mais experimental.
    • A função clearRoots de nível superior @TestOnly foi removida. Ela não é mais necessária.
    • As funções keySourceInfoOf e resetSourceInfo foram removidas. Elas não são mais necessárias.
    • Composer.collectKeySourceInformation foi removido. Ele não é mais necessário.
    • Os métodos isJoinedKey, joinedKeyLeft e joinedKeyRight foram removidos. Eles não são mais necessários.
    • Várias APIs de nível superior foram movidas e reorganizadas em arquivos diferentes. Devido à semântica de classe de arquivos do Kotlin, essa mudança corrompe a compatibilidade binária, mas não a compatibilidade com a fonte. Portanto, isso não vai ser um problema para a maioria dos usuários
    • (I99b7d, b/177245490).
  • O Modifier.scrollable foi reformulado. Agora, ele usa a interface Scrollable em vez da classe ScrollableController (I4f5a5, b/174485541, b/175294473).

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

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

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

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

Correções de bugs

  • A nova API local de composição LocalSoftwareKeyboardController foi adicionada para substituir a interface SoftwareKeyboardController anterior no TextField (I658b6, b/168778053).

Versão 1.0.0-alpha12

10 de fevereiro de 2021

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

Mudanças na API

  • Agora, Modifier.pointerInput requer que as chaves remember indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
  • Atualização de testes: hasText() vai conferir se há texto de entrada e de etiqueta/dica/marcador no campo de texto (Iab803).
  • PaddingValues.Absolute foi adicionado e pode ser usado em APIs que aceitam PaddingValues (Ia5f30).
  • O uso de onImeActionPerformed foi descontinuado. Use KeyboardActions (If0bbd, b/179071523).
  • Para se adequar melhor às convenções de nomenclatura com ImageBitmap e ImageVector, o ImagePainter foi renomeado como BitmapPainter para o VectorPainter paralelo (Iba381, b/174565889).
  • Melhoria das APIs de teste de substring que agora usam substrings como argumentos (Icbe78).
  • Introduzido um elemento de contexto de corrotina InfiniteAnimationPolicy que vai ser aplicado a animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes com ComposeTestRule (I50ec4, b/151940543).
  • Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
  • ComponentActivity.setContent foi movido para androidx.activity.compose.setContent no módulo androidx.activity:activity-compose (Icf416).
  • Os métodos de desestruturação e copy() foram removidos de várias classes em que raramente eram usados (I26702, b/178659281).
  • Foi adicionada a compatibilidade com chaves personalizadas para LazyColumn/LazyRow. Isso nos permite gerenciar melhor a reordenação dos itens. Assim, o estado armazenado em blocos remember {} vai se mover com o item quando os elementos forem reorganizados ou o item for removido do meio

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

  • Constraints.enforce foi substituído por Constraints.constrain (I8b8ea).

  • O uso de loadFontResource foi descontinuado. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi descontinuado. Use painterResource (I6b809).

  • Por motivos de performance, a semântica ScrollAxisRange agora usa lambdas que retornam Floats em vez de valores Float diretos (If4a35, b/178657186).

  • A semântica EditableText foi adicionada para marcar o texto de entrada editável do campo para acessibilidade e os métodos de teste correspondentes para conferir a semântica (I8e07a).

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

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

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

  • O uso de Modifier.dragGestureFilter foi descontinuado. Use Modifier.pointerInput { detectDragGestures (...)}. Outra opção é usar Modifier.draggable para arrastar apenas um eixo (I0ba93, b/175294473).

  • Ambients foi renomeado para corresponder à renomeação de Ambient como CompositionLocal. Ambients costumava ser chamado de AmbientFoo. Agora, CompositionLocals será chamado de LocalFoo (I2d55d).

  • A seleção foi movida para a base (I7892b).

  • Da mesma forma que removemos o elemento combinável state { 0 } e agora promovemos o uso de remember { mutableStateOf(0) }, também vamos remover o elemento combinável savedInstanceState { 0 }. Use rememberSaveable { mutableStateOf(0) } para salvar e restaurar automaticamente se o tipo usado dentro de MutableState puder ser armazenado no pacote. Se você transmitia um objeto de gravação personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso vai ser assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).

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

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

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

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

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

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

  • Os recompositores agora podem ser fechados. Os recompositores fechados continuarão a recomposição até que as corrotinas filhas sejam compostas. Recomposer.shutDown foi renomeado para eliminar o contraste com o fechamento (Ib6d76).

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

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

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

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

  • O artefato androidx:compose:runtime:runtime-saved-instance-state foi renomeado como androidx:compose:runtime:runtime-saveable (I6dcac).

  • Várias APIs antigas que tiveram o uso descontinuado no pacote da interface foram excluídas (I2f2dc).

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

  • Os parâmetros em RounderCornerShape, CutCornerShape e CornerBasedShape foram renomeados de esquerda/direita para início/fim para oferecer suporte ao espelhamento automático do formato na direção RTL. AbsoluteRounderCornerShape e AbsoluteCutCornerShape foram introduzidos para os casos em que o espelhamento automático não é desejado (I61040, b/152756983).

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

  • A API à qual o plug-in do compilador do Compose é destinado foi refatorada para usar uma interface em vez de uma classe concreta. A interface também não usa mais um parâmetro de tipo.

    Essa é uma mudança interna que não afeta a compatibilidade do código-fonte, mas é uma alteração interruptiva binária (I3b922, b/169406779).

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

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

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

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

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

  • Recomposer.current() foi removido. Por padrão, [Abstract]ComposeView agora usa recompositores criados de forma lenta e com escopo de janela gerados pelo ViewTreeLifecycleOwner para a janela. As marcações de animação com base em withFrameNanos e em recomposições vão ser pausadas enquanto o ciclo de vida do host estiver parado (I38e11).

  • O Recomposer.runningRecomposers agora oferece um StateFlow global de RecomposerInfo somente leitura para observar o estado de composição em andamento no processo. Use essa API em vez de Recomposer.current(), que agora teve o uso descontinuado (If8ebe).

Versão 1.0.0-alpha11

28 de janeiro de 2021

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

Mudanças na API

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

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

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

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

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

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

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

  • A data class foi removida das seguintes classes:

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

  • O uso de ScrollableColumn/Row foi descontinuado. O uso do ScrollableColumn é menos eficiente se comparado ao LazyColumn quando você tem um conteúdo de rolagem grande, porque com o LazyColumn só é possível escrever, medir ou renderizar elementos visíveis. Para evitar que os usuários escolhessem uma forma não eficiente, decidimos suspender o uso de ScrollableColumn e de ScrollableRow e promover o uso de LazyColumn e LazyRow. Os usuários ainda podem decidir que não precisam do comportamento lento e usar os modificadores diretamente, como Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).

  • Novo método de fábrica items(count: Int) para o escopo de LazyColumn/LazyRow/LazyVerticalGrid. Agora, items(items: List) e itemsIndexed(items: List) são funções de extensão, então precisam ser importadas manualmente quando são usadas. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

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

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

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi descontinuado e substituído pelas APIs SideEffect e DisposableEffect (If760e).
  • WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
  • Mudanças nas funções de fábrica de Font/FontFamily/Typeface

    • Foram adicionadas funções de fábrica que começam com letra maiúscula.
    • Funções antigas de fábrica com letras minúsculas foram descontinuadas.
    • As novas funções de fábrica retornam a FontFamily em vez das subclasses.
    • Os construtores das subclasses foram ocultados para que só possam ser criados por funções de fábrica.
    • Font.asFontFamily foi renomeada como Font.toFontFamily.
    • (I42aa7)
  • Foi introduzido ComposeContentTestRule, que estende ComposeTestRule e define setContent, que foi removido de ComposeTestRule. Foi adicionado um método de fábrica createEmptyComposeRule() que retorna uma ComposeTestRule e não inicia uma atividade para você. Use isso quando quiser iniciar a atividade durante o teste, por exemplo, usando ActivityScenario.launch (I9d782, b/174472899).

  • animateAsState agora é animateFooAsState, em que Foo é o tipo da variável que está sendo animada. Por exemplo, Float, Dp, Offset etc. (Ie7e25).

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

  • TextFieldValue aceita AnnotatedString. No entanto, essa é uma mudança apenas na API, e a edição de texto em vários estilos ainda não foi implementada.

    • initial foi removido dos parâmetros do construtor EditingBuffer (I326d5).
  • Os elementos invalidate e compositionReference() foram descontinuados e substituídos por currentRecomposeScope e rememberCompositionReference, respectivamente (I583a8).

  • AnnotatedString foi alterada para ser estendida de kotlin.CharSequence. Portanto, length e subSequence agora são funções de instância, e as funções de extensão foram removidas (Iaf429).

  • Duration e Uptime vão ser substituídos por milissegundos Long, e essa etapa vai remover a dependência de entrada do ponteiro nessas classes (Ia33b2, b/175142755, b/177420019).

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

    RememberObserver é uma substituição de CompositionLifecycleObserver com semânticas modificadas e métodos renomeados. A mudança para a nova API pode ser feita de maneira mecânica para objetos que são lembrados apenas uma vez e continua a ser a prática recomendada. No entanto, se uma referência foi lembrada mais de uma vez em uma composição, onRemembered é chamado para cada referência em que onEnter é chamado apenas uma vez. onEnter era chamado várias vezes quando o objeto era usado em subcomposições, como WithConstraints e Scaffold, tornando a única garantia de chamada de onEnter não confiável, e foi removido para RememberObserver.

    A interface RememberObserver adiciona a função onAbandoned, que é chamada se a instância de RememberObserver é retornada do callback transmitido para remember, mas não é lembrada no estado de composição e, portanto, a chamada de onRemembered nunca ocorre. Isso poderá ocorrer se uma exceção encerrar a composição antes de ela ser concluída ou se a composição for descartada porque o estado para o qual ela estava produzindo uma composição não é mais atual ou necessário. Se a instância de RememberObserver após a recomendação de referência única acima estiver rastreando um recurso externo, onForgotten e onAbandoned vão indicar que o recurso não é mais necessário. Se o objeto estiver rastreando o trabalho iniciado ou os recursos alocados em onRemembered, a função onAbandoned pode ser ignorada, porque não vai ser chamada se a onRemembered for chamada (I02c36).

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

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

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

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

  • Use ImeAction.None em vez de ImeAction.NoAction

    • Use ImeAction.Default em vez de ImeAction.Unspecified (Ie1bcc).
  • FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer mudanças (I2d898, b/177000821).

  • SemanticsPropertyReceiver.hidden foi renomeada como invisibleToUser e marcada como @ExperimentalComposeUiApi. AccessibilityRangeInfo foi renomeado como ProgressBarRangeInfo. stateDescriptionRange foi renomeado como progressBarRangeInfo. AccessibilityScrollState foi renomeado como ScrollAxisRange. horizontalAccessibilityScrollState foi renomeado como horizontalScrollAxisRange. verticalAccessibilityScrollState foi renomeado como verticalScrollAxisRange (Id3148).

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

  • Use TestCoroutineDispatcher nos testes (I532b6).

  • PointerInputData foi removido, e PointerInputChange foi modificado para fornecer todos os campos de PointerInputData. PointerInputEvent e PointerInputEventData agora são internos porque não são usados em nenhuma API pública (Ifff97, b/175142755).

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

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

Versão 1.0.0-alpha10

13 de janeiro de 2021

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

Mudanças na API

  • ImeOptions e KeyboardOptions não são mais uma classe de dados (I3c898, b/168684531).
  • Mudanças na API VisualTransformation.
    • Renomeação de OffsetMap como OffsetMapping.
    • Renomeação de OffsetMapping.identityOffsetMap como OffsetMapping.Identity.
    • PasswordTransformation não é mais uma classe de dados.
    • OffsetMapping foi movido para o próprio arquivo
    • (I0bdf3).
  • Mudanças na API EditOperations.
    • Renomeação de EditOperation como EditCommand.
    • Adição do sufixo Command para implementações concretas do EditOperation.
    • EditCommands não são mais classes de dados.
    • Renomeação da função EditOperation.process como applyTo.
    • Renomeação de InputEventListener como InputEventCallback
    • (I0a366).
  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • Renomeação de @ExperimentalTesting como @ExperimentalTestApi para ser consistente com anotações de API experimental semelhantes (Ia4502, b/171464963).
  • Adição do método experimental stickyHeader a LazyColumn/LazyRow (I0a81d).
  • Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
  • O uso de TestUiDispatcher foi descontinuado. Em vez disso, use Dispatchers.Main (Ic171f, b/175385255).
  • Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
  • O nativeClass foi movido para o módulo ui e definido como interno. Atualização dos usos de nativeClass em implementações equivalentes para usar "is MyClass" (I4f734).
  • FlowRow e FlowColumn foram descontinuados. Use um layout personalizado (I09027).
  • O uso de Modifier.focus() e Modifier.focusRequester() foi descontinuado. Use Modifier.focusModifier() e Modifier.focusReference() (I75a48, b/175160751, b/175160532, b/175077829).
  • Introdução do SelectionRegistrar.notifySelectableChange para notificar atualizações do Selectable ao SelectionManager (I6ff30, b/173215242).
  • Mudança de fun Dp.isFinite() para val Dp.isFinite (I50e00).
  • Constraints#satisfiedBy foi renomeado como isSatiendedBy (I9cf5c).
  • Adição de isSpecified, isUnspecified e useOrElse para classes in-line com uma constante Unspecified (I93f7b, b/174310811).

Correções de bugs

  • Nova API baseada em corrotina Animatable que garante exclusividade mútua entre as animações. Nova DecayAnimationSpec para oferecer suporte a animação de redução multidimensional (I820f2, b/168014930).
  • Foi adicionado suporte a campos de texto desativados e somente leitura (I35279, b/171040474, b/166478534).
  • animate() agora é substituído por animateAsState(), que retorna um State<T> em vez de T. Isso permite uma performance melhor, já que o escopo de invalidação pode ser restrito ao local em que o valor do State é lido (Ib179e).
  • Adição da API Semantics Role e adição de Role como um parâmetro de SemanticsModifier clicável, selecionável e alternável. Modifier.progressSemantics foi mudado para que o controle deslizante também possa usá-lo (I216cd).
  • O keyEvent nativo agora pode ser acessado pelo keyEvent.nativeKeyEvent (I87c57, b/173086397).

Versão 1.0.0-alpha09

16 de dezembro de 2020

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

Mudanças na API

  • Adicione a interface Scrollable.

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

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

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

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

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

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

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

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

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

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

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

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

Correções de bugs

  • Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
  • Remoção de SlotTable, SlotReader e SlotWriter da API pública. Antes, eles eram marcados como InternalComposeAPI. Agora, eles são internos do módulo do Compose.

    CompositionData e CompositionGroup foram adicionados como substitutos da API de IU para extrair as informações da composição. Elas são públicas, mas não são destinadas para uso fora da API de interface, já que fornecem as informações brutas que a API de interface interpreta (I31a9c).

  • ShaderBrush foi refatorado para criar lentamente uma instância de sombreador quando as informações de dimensionamento do ambiente de desenho estão disponíveis. Isso é útil para definir gradientes que ocupam os limites de desenho completos de um elemento combinável no momento da composição, sem precisar fazer implementações DrawModifier personalizadas.

    As APIs do construtor de função de gradiente foram descontinuadas e substituídas pelos métodos de fábrica em um objeto Gradient (I511fc, b/173066799).

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

  • A API Autofill agora é experimental e requer ativação (I0a1ec).

  • Adição de declarações de desestruturação para criar instâncias de FocusRequester (I35d84, b/174817008).

  • accessibilityLabel foi renomeado como contentDescription. accessibilityValue foi renomeado como stateDescription (I250f2).

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

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

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

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

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

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

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

    Algumas árvores, como LayoutNode e View, são muito mais eficientes para criação de baixo para cima do que de cima para baixo. Antes dessa mudança, uma pilha de inserções era necessária para implementar de baixo para cima. Ela precisava ser copiada para cada Applier, que precisava da construção de baixo para cima para ter bom desempenho. Com essa mudança, um Applier substitui um insertBottomUp() para criar uma árvore de baixo para cima, e insertTopDown() para criar a árvore de cima para baixo (Icbdc2).

  • A API painterResource foi adicionada para lidar com o carregamento opaco de objetos Painter de formatos de recursos rasterizados (como PNGs) ou VectorDrawables. Os consumidores não precisam mais determinar o tipo de recurso com antecedência e podem chamar esse método para receber um objeto Painter para uso em elementos combináveis Image ou modificadores de Painter (I2c703, b/173818471).

  • Adição da função de fábrica buildAnnotatedString para criar uma AnnotatedString. Descontinuação do uso da função builder da annotatedString (Idfe0b).

Versão 1.0.0-alpha08

2 de dezembro de 2020

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

Mudanças na API

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

    LazyListState.snapToItem e LazyListState.smoothScrollBy e APIs de nível inferior foram adicionadas para controle de rolagem. Essas APIs fornecem uma interface de suspensão para controlar a rolagem, que aguarda até que a rolagem seja concluída antes de retornar (Ie5642).

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

  • O detector de gestos para toque, dois toques, tocar e manter pressionado e indicação de pressionamento foi adicionado usando a nova entrada de ponteiro de suspensão. Alguns utilitários também foram adicionados, o que facilita a gravação de detectores de gesto próprios pelos desenvolvedores (I00807).

  • Modifier.focusable precisa ser adicionado na base. Use-o para adicionar comportamentos focalizáveis a um componente, com semântica e acessibilidade corretas (I41eb9, b/152525426, b/162865824).

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

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

Correções de bugs

  • As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. Foi criado o arquivo DrawModifierDeprecated.kt para incluir os métodos typealiases/helper para ajudar na migração das APIs descontinuadas para as atuais (Id6044, b/173834241).
  • O Modifier.drawLayer foi renomeado como Modifier.graphicsLayer. Além disso, as classes relacionadas foram atualizadas para GraphicsLayer, de acordo com o feedback do conselho da API (I0bd29, b/173834241).
  • <T> foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).
  • Tornou os campos de posição e de tempo de atividade do PointerInputData não anuláveis (Id468a).
  • Agora, o MaterialTheme define as cores corretas para as alças e para o segundo plano da seleção. Apps que não são do Material podem usar manualmente AmbientTextSelectionColors para personalizar as cores usadas para seleção (I1e6f4, b/139320372, b/139320907).
  • O parâmetro de alinhamento do Box foi renomeado como contentAlignment (I2c957).
  • Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
  • WindowManager.isWindowFocused foi adicionado para conferir se a janela do host está em foco, assim como um WindowFocusObserver que fornece um callback de onWindowFocusChanged (I53b2a, b/170932874).
  • Adição do parâmetro resetInput para TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
  • API TextFieldValue atualizada.
    • TextFieldValue.composition agora é somente leitura.
    • Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
  • Ambients nomeados com Ambient como sufixo foram descontinuados e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • Adição do wrapper Android Typeface. Você pode carregar um Android Typeface usando a função typeface, ou seja, typeface(Typeface.DEFAULT). Além disso, typefaceFromFontFamily() foi renomeado como typeface() (I52ab7).
  • Uma verificação de lint foi adicionada para conferir se as fábricas do Modifier usam androidx.compose.ui.composed {} internamente em vez de serem marcadas como @Composable (I3c4bc).
  • Foi adicionada uma verificação de lint para conferir se as funções de fábrica do Modifier estão definidas como extensões nele. Assim, elas podem ser encadeadas juntas (I07981).
  • Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
  • O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
  • Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
  • TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
  • A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
  • O módulo foundation:foundation-text foi mesclado em foundation:foundation (Idac0f).
  • O uso de place(Offset) e placeRelative(Offset) foi descontinuado. Use sobrecargas com deslocamentos int (I4c5e7).
  • id foi renomeado como layoutId para LayoutIdParentData. O Measurable.id foi renomeado como Measurable.layoutId (Iadbcb, b/172449643).

Versão 1.0.0-alpha07

11 de novembro de 2020

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

Mudanças na API

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

Correções de bugs

  • A classe in-line ScaleFactor foi introduzida para representar fatores de escala para os eixos horizontal e vertical independentes uns dos outros para oferecer suporte a casos de uso de escalonamento não uniforme.
    • Adição do método computeScaleFactor ao ContentScale.
    • ContentScale.FillBounds foi adicionado para realizar o escalonamento não uniforme e esticar os limites de src para ocupar completamente o destino.
    • Adição de métodos de operador para calcular parâmetros ScaleFactor com parâmetros Size
    • (Ic96a6, b/172291582).
  • captureToBitmap foi movido para captureToImage (I86385).
  • Marcação de CoreText como @InternalTextApi. Use BasicText (I6aaeb).
  • Renomeação de KeyboardOptions como ImeOptions (I82f36).
  • KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
  • CoreTextField foi marcado como @InternalTextApi. Use BasicTextField (Ie2469).
  • A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
  • O módulo ui-test-junit4 foi introduzido (Ib91f8).
  • A API Icon foi atualizada para assumir Color.Unspecified como uma tonalidade possível, que desenha o recurso ou o Painter fornecido sem um ColorFilter. Anteriormente, tentativas de ignorar a tonalidade com Color.Unspecified resultavam em uma cor transparente que acabava sem renderização alguma (I049e2, b/171624632).
  • MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
  • Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).
  • androidx.ui.test movido para androidx.compose.ui.test (I9ffdb).
  • FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
  • Foi adicionado o SelectContainer sem o callback (Ibfadb).
  • Adição de testes para posições de SelectionHandles no SelectionContainer (Ie93db).
  • Adição da opção IME (editor de método de entrada, na sigla em inglês) de correção automática do teclado (I57b8d).

Versão 1.0.0-alpha06

28 de outubro de 2020

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

Mudanças na API

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

Correções de bugs

  • VectorPainter foi descontinuado e substituído por rememberVectorPainter para indicar melhor que a API de composição usa o "remember" internamente para manter dados entre composições (Ifda43).
  • Ativação de transições em ComposeTestRule. Remoção da opção para ativar o cursor piscante na ComposeTestRule (If0de3).
  • Adição da opção de teclado de linha única para CoreTextField (I72e6d).
  • A API Radius foi renomeada como CornerRadius para expressar melhor a forma de uso dela no Compose. Atualização da documentação para indicar que raios negativos dos cantos são fixados a zero (I130c7, b/168762961).
  • Foi adicionada a possibilidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
  • Foi adicionada a opção IME KeyboardCapitalization (I8ac38).
  • Correção de Handle Position RTL (I6e1e0).
  • Alteração interruptiva: o valor de retorno de PointerInputFilter.onPointerEvent(...) foi removido, já que o único valor que precisaria poder ser mudado nos eventos de ponteiro é o dos dados de consumo. Em vez de retornar dados de PointerInputFilter.onPointerEvent(...), agora é possível mudar os dados de consumo dos PointerEvents transmitidos (I6acd0).
  • Adição da opção SelectAll no menu de seleção (Ief02b).

Versão 1.0.0-alpha05

14 de outubro de 2020

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

Mudanças na API

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

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

Correções de bugs

  • Como parte da padronização de valores de sentinela para classes in-line, renomeie a Color.Unset como Color.Unspecified para consistência com outras classes in-line (I97611, b/169797763).
  • Foram adicionadas ações de acessibilidade de copiar/colar/cortar (I6db4f).
  • Introdução de TextOverflow.None. Quando overflow for "None", o Text não vai mais ser processado e vai informar o tamanho real para o LayoutNode (I175c9, b/158830170).
  • Os parâmetros Size.Unspecified foram atualizados para Float.NaN, em vez de Float.POSITIVE_INFINITY. As implementações do Painter foram atualizadas para conferir o Size.Unspecified, assim como Sizes não finitos (I95a7e).
  • O módulo Paging Compose e a integração de paginação foram adicionados (Ib85da).
  • Modificação do LazyListScope para receber valores anuláveis (I1765b).
  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned() (I587e8, b/169083903).
  • Foram adicionados exemplos para LazyColumn/Row (Idc16d).
  • Correção dos itens e métodos itemsIndexed para permitir emptyList (I06647).
  • Adição de uma DSL para especificar informações do inspetor (Ic9a22).
  • LongPress movido para Text (Iff2bc).
  • Desativação de Selection em Text, e uma Demo (Ie7e97).
  • Foi adicionado suporte a AnnotatedString para conversão do SpannableString para acessibilidade (Ief907).
  • PointerInputFilter.onPointerInput(...) foi removido. PointerInputFilter.onPointerEvent(...) precisa ser usado no lugar dele (I6f04a).

Versão 1.0.0-alpha04

1º de outubro de 2020

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

Mudanças na API

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

Correções de bugs

  • Atualização de várias APIs Graphics
    • As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
    • Os métodos Rect.expandToInclude e Rect.join foram removidos.
    • Documentação do Radius atualizada para informar oval, além de elíptico.
    • Foi adicionada documentação para indicar que o construtor público da classe Radius in-line não pode ser chamado diretamente, mas os objetos Radius precisam ser instanciados pelos construtores de função deles.
    • Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
    • O uso de Rect.shift foi descontinuado e substituído por Rect.translate.
    • Remoção das APIs RoundRect.grow e Rect.shrink.
    • Renomeação de RoundRect.outerRect para Rect.boundingRect.
    • Remoção dos métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium.
    • Renomeação de RoundRect.longestSide para RoundRect.maxDimension.
    • Renomeação de RoundRect.shortestSide para RoundRect.minDimension.
    • Mudança de RoundRect.center para que seja uma propriedade em vez de uma função.
    • O construtor RoundRect foi atualizado para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
    • As APIs Size, que pressupunham ser um retângulo com origem em 0,0, foram removidas.
    • Adição de uma API de destruição ao Radius.
    • Migração de várias funções de extensão RoundRect para serem propriedades
    • (I8f5c7, b/168762961).
  • Otimizações de desempenho para a rolagem LazyColumnFor/LazyRowFor, sem realizar recomposições desnecessárias durante cada rolagem (I64f65, b/168293643, b/167972292, b/165028371).
  • Foi corrigida uma falha em LazyColumnFor/LazyRowFor depois de rolar a página e mudar os itens. Além disso, foi implementada a rolagem automática para cima quando o item visível anteriormente é removido, então não há mais a exibição de lacunas vazias no final (I220ab, b/161480164, b/167855468).
  • O aninhamento de item rolável nos mesmos contêineres de direção, como ScrollableContainer e LazyColumnFor, não é mais permitido. Nunca houve suporte para esse aninhamento, e isso corrompia a rolagem e todo o atraso de composição dos itens de LazyColumnFor (I6e101).
  • Atualização de várias APIs Graphics
    • As APIs DrawScope foram atualizadas com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois dele ser invocado.
    • Atualização da documentação do clipPath para se referir ao Path em vez do retângulo arredondado.
    • Correção do espaçamento na documentação para o parâmetro correto em clipPath.
    • DrawScope.drawCanvas foi renomeado como drawIntoCanvas, e o parâmetro de tamanho foi removido.
    • Renomeação de parâmetros dx/dy no método de inset como horizontal e vertical.
    • Recuo extra adicionado, fornecendo o mesmo valor de recuo a todos os quatro limites.
    • A documentação sobre o método do recuo que indicava que o recuo seria aplicado a todos os quatro lados foi removida.
    • Atualização da documentação da classe Rect.
    • Os comentários sobre os parâmetros Rect foram atualizados para corresponder ao estilo kdoc.
    • Rect.join e Rect.expandToInclude foram removidos.
    • Foi criada uma sobrecarga para Rect.translate(offset) e o Rect.shift foi descontinuado
    • (If086a, b/167737376).
  • Adição de AccessibilityScrollState às propriedades semânticas (Ifeda9).
  • O TextRange se torna in-line para evitar a criação de objetos (Id034b).
  • O ParagraphConstraints foi removido. Agora, a largura é transmitida diretamente para o Paragraph (Ica712).

Versão 1.0.0-alpha03

16 de setembro de 2020

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-alpha02

2 de setembro de 2020

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

Correções de bugs

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

    Por exemplo:

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

    I0a85b, b/161247083

Versão 1.0.0-alpha01

26 de agosto de 2020

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

Versão 0.1.0-dev

Versão 0.1.0-dev17

19 de agosto de 2020

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

Mudanças na API

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

Correções de bugs

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

Versão 0.1.0-dev16

5 de agosto de 2020

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

Mudanças na API

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

Correções de bugs

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

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

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

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

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

  • O uso de Modifier.plus foi descontinuado. Use Modifier.then. "Then" tem um sinal mais forte de ordem, mas também proíbe o tipo Modifier.padding().background() + anotherModifier, que interrompe a cadeia e é mais difícil de ler (Iedd58, b/161529964).

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

  • Adição de RemeasurementModifier. Ele permite que usuários meçam novamente o layout de maneira síncrona. Em geral, você não precisa dele, já que a nova medida de layout é feita automaticamente, mas o usamos em LazyColumnItems durante a rolagem (I5f331, b/160791058).

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

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

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

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

Versão 0.1.0-dev15

22 de julho de 2020

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

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

Atualização de dependências

  • Para usar a versão 0.1.0-dev15 do Compose, será necessário atualizar suas dependências de acordo com os novos snippets de código mostrados acima em Como declarar dependências.

Mudanças na API

  • Da mesma forma que o novo parâmetro em ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems agora também tem o parâmetro contentPadding, que permite adicionar um padding ao conteúdo depois que ele é cortado, o que não é possível apenas com um parâmetro modificador. Ele também permite adicionar um espaço somente antes do primeiro item/depois do último item (Ibc24e).
  • O callback onFocusChange em campos de texto foi renomeado como onFocusChanged (Ida4a1).
  • O uso de VerticalScroller e HorizontalScroller foi descontinuado. Use ScrollableColumn e ScrollableRow para ter uma experiência integrada com o comportamento e os parâmetros de Column/Row, ou Modifier.verticalScroll e Modifier.horizontalScroll no seu elemento. De modo semelhante, o elemento ScrollerPosition foi descontinuado e substituído pelo ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • As APIs Modifier.draggable e Modifier.scrollable foram reformuladas. DragDirection foi removido e substituído por Orientation. O estado necessário para rolagem foi simplificado. ScrollableState foi renomeado como ScrollableController (Iab63c, b/149460415).
  • As propriedades de semântica de valor único agora usam um estilo de chamada. Por exemplo, "semantics {hidden = true}" agora é escrito como: semantics { hidden() } (Ic1afd, b/145951226, b/145955412).
  • Agora, os tamanhos de canto usados por RoundedCornerShape e CutCornerShape podem ser maiores que 50% (Id2340, b/160400213).
  • O parâmetro padrão ContentScale foi substituído pelo composto de imagem Inside para Fit. Isso foi feito para gerar o comportamento de escalonamento do Painter se o tamanho do layout for maior que o tamanho intrínseco do Painter, mantendo a proporção. Esse comportamento corresponde melhor às expectativas de oferecer tamanhos fixos à imagem, sem afetar o comportamento padrão, apenas se o tamanho intrínseco é usado para calcular o tamanho do elemento combinável (I40ae3, b/159838006).
  • Use AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática. Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente. O uso do AnimationSpec foi facilitado para abrir construtores em vez de builders. A duração e o atraso de KeyFrames e Tween foram mudados para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer suporte a Long e Int) (Ica0b4).
  • Clickable foi removido. Use Modifier.clickable (I84bdf).
  • LazyRowItems foi adicionado, análogo a rolagem horizontal de LazyColumnItems (Ibbcf7).
  • Foram lançadas APIs de animação sem estado de baixo nível. Essas APIs (I63bf7).
  • O uso de androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue foi descontinuado. Os elementos TextField, FilledTextField e CoreTextField que usam esse tipo também foram descontinuados. Use androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
  • androidx.ui.foundation.shape.RectangleShape foi removido. Use androidx.ui.graphics.RectangleShape (I94939, b/154507984).
  • Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).
  • Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe inline para usar um valor long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).
  • Modifier.zoomable foi adicionado para a funcionalidade de fazer gesto de pinça para aplicar zoom (Id5d63).
  • O componente Toggleable foi descontinuado. Use o Modifier.toggleable (I35220, b/157642842).
  • O uso de MutuallyExclusiveSetItem foi descontinuado. Use Modifier.selectable (I02b47, b/157642842).
  • O uso de TestTag foi descontinuado. Use Modifier.testTag (If5110, b/157173105).
  • O parâmetro fontWeight foi adicionado ao texto. Antes ele não havia sido adicionado por engano (I56937).
  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I19d02).
  • O VerticalScroller agora fornece Column pronta para uso. O HorizontalScroller agora fornece Row pronto para uso (Ieca5d, b/157020670).
  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (Iede0b).
  • Modifier.indication foi adicionado ao pacote básico. Use-o para mostrar os gestos de pressionar/arrastar/outras indicações nos elementos personalizados interativos (I8425f, b/155287131).
  • O VerticalScroller e o HorizontalScroller agora oferecem suporte para a rolagem reversa. O isReversed é definido em ScrollerPosition (I953bd).
  • Foi adicionado suporte à adição de elementos combináveis no layout de texto (I1373c).
  • Implementações consolidadas de CanvasScope para que agora exista apenas o DrawScope e o ContentDrawScope. CanvasScope foi renomeado como DrawScope. O DrawScope foi atualizado para implementar a interface de Density e fornecer a LayoutDirection. A subclasse DrawScope foi excluída do ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque o DrawScope já fornece uma automaticamente (I1798e).
  • A API DrawBackground descontinuada foi removida e substituída pelas APIs de extensão drawBackground no Modifier. As implementações de drawBackground de cores, pincéis e pintura foram refatoradas para reduzir os caminhos de código, além de remover o requisito para que o Modifier seja criado como parte da composição (I0343a).
  • As APIs de composição de alto nível que expõem uma tela foram atualizadas para expor o CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a um Canvas podem usar o método de extensão drawCanvas, que fornece um callback para emitir comandos de desenho (I80afd).
  • HorizontalScroller e VerticalScroller não restauram a posição de rolagem usando o estado da instância salva (Ia0fae, b/155075048).
  • O FocusManagerAmbient foi removido. Use FocusModifier.requestFocus para foco (Ic4826).
  • O layout da tabela foi removido temporariamente até ser possível disponibilizá-lo novamente com uma API atualizada (Id88a7).
  • A API CanvasScope, que envolve um objeto Canvas, foi criada para expor uma API de exibição declarativa e sem estado. As transformações estão contidas no próprio escopo do receptor, e as informações de dimensionamento também têm escopo para os limites inseridos correspondentes. Não é necessário que um consumidor mantenha o próprio objeto de estado Paint para configurar operações de desenho.

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

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

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

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

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

  • Os parâmetros comumente usados foram adicionados a Text(). Se você está criando um estilo de texto local para passar um pequeno número desses parâmetros, como Text(style = TextStyle(textAlign = TextAlign.Center)), pode fornecer os parâmetros diretamente: Text(textAlign = TextAlign.Center) (I82768).

  • O parâmetro CoreTextField/TextField focusIdentifier foi substituído pelo FocusNode para ser integrado ao subsistema de foco (I7ea48).

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

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

  • RectangleShape movido de androidx.ui.foundation.shape.* para androidx.ui.graphics.* (Ia74d5, b/154507984).

  • Todos os usos anuláveis de Color foram substituídos na API por não anuláveis e usam Color.Unset em vez de null (Iabaa7).

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

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

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

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

  • Melhorias na API DrawModifier:

    • O escopo do receptor foi definido para draw() ContentDrawScope.
    • Todos os parâmetros em draw() foram removidos.
    • DrawScope tem a mesma interface que o antigo CanvasScope.
    • O ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • O uso de ColoredRect foi descontinuado. Use Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fa, b/152753731).

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

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

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

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

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

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

  • A API VectorPainter foi adicionada para substituir a API de subcomposição já existente para gráficos vetoriais. O resultado da subcomposição é um objeto VectorPainter em vez de um DrawModifier. Os elementos combináveis DrawVector foram descontinuados e substituídos por elementos VectorPainter.

    A API Image(Painter) foi renomeada como PaintBox(Painter). Foi criado o elemento combinável Vector, que se comporta como o elemento combinável Image, mas com um VectorAsset em vez de um ImageAsset (I9af9a, b/149030271).

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

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

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

    O método de extensão foi criado em android.graphics.Bitmap, Bitmap.asImageAsset(), para criar uma instância de um ImageAsset útil para combinar o desenvolvimento de aplicativos para Android tradicionais com o framework do Compose (Id5bbd).

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

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

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

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

  • Adição do Adapterlist, um componente de lista de rolagem que apenas compõe e apresenta os itens visíveis. Os problemas conhecidos atualmente incluem o fato de que ele só é vertical e não processa integralmente todos os casos de mudança nos filhos (Ib351b).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • O modificador LayoutAspectRatio descontinuado foi removido (I65a74).

  • Os modificadores LayoutAlign descontinuados foram removidos (I10877).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Correções de bugs

  • O uso de FocusModifier foi descontinuado e substituído por Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. O uso de FocusState e FocusDetailedState foi descontinuado e substituído por FocusState2 (I46919, b/160822875, b/160922136).
  • runOnIdleCompose foi renomeado como runOnIdle (I83607).
  • Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
  • O Modifier.ripple descontinuado foi removido. Agora, o recurso de clique usa ondulações como indicação padrão quando você tem um MaterialTheme {} definido no aplicativo. Na maioria dos casos, você pode usar o recurso de clique e receber a indicação de ondulação sem custos. Se você precisar personalizar o parâmetro de cor, tamanho ou delimitação para a ondulação, crie manualmente um RippleIndication e transmita-o para o recurso de clique como o parâmetro de indicação (I663b2, b/155375067).
  • As APIs de teste de tamanho descontinuadas foram removidas (Iba0a0).
  • A API experimental LayoutNode foi criada (I4f2e9).
  • A versão 1 do bloqueio da orientação de rolagem é implementada no Compose (I1ce7a, b/150289741).
  • Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
  • O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível no callback pelo objeto do escopo da medida (Ic7d9d).
  • Adição de AbsoluteArrangement: permite a organização dos filhos dentro da linha sem espelhamento automático em RTL (I3a1df).
  • A anotação @Untracked foi descontinuada. Substitua por @ComposableContract(tracked=false) (Id211e).
  • Antes da mudança, o plug-in do compilador do Compose interceptava chamadas a construtores dentro de uma função @Composable se houvesse um (I5205a, b/158123804).
  • Adição do composto viewModel(), que permite criar ou usar o ViewModel já criado de forma semelhante a como ele funciona em Activity ou Fragment (I5fdd1).
  • A classe Radius foi refatorada para ser uma classe in-line. Os métodos de criação complementares foram removidos e substituídos pelo construtor de função com parâmetro padrão para que o raio ao longo do eixo y corresponda ao parâmetro obrigatório de raio do eixo x.

    Atualização de DrawScope.drawRoundRect para consumir um único parâmetro de raio em vez de dois valores flutuantes separados para o raio ao longo dos eixos x e y (I46d1b).

  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel. Classe Px excluída na íntegra (I3ff33).

  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I086f4).

  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (Id3434).

  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I97a5a).

  • O cursor do TextField tem uma animação intermitente (Id10a7).

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

  • O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I57bff).

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

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

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

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

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

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

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

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

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

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

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

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

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

  • LayoutResult foi renomeado como MeasureResult (Id8c68).

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

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

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

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

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

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

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

  • A direção do layout passou a ser propagada do nó de layout pai para os filhos. Adição de modificador de direção de layout (I3d955).

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

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

  • Density e DensityScope foram unidos em uma única interface. Agora você pode usar DensityAmbient.current em vez de ambientDensity(). Em vez de withDensity(density), apenas with(density) (I11cb1).

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

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

  • Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).

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

  • A API WithConstraints lambda final foi mudada. Agora, em vez de dois parâmetros, ela tem um escopo de receptor que, além de restrições e layoutDirection, fornece as propriedades minWidth, maxWidth, minHeight e maxHeight no Dp (I91b9a, b/149979702).

  • LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).

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

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

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

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

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

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

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

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

  • Foram feitas mudanças no LayoutCoordinates para fazer com que providedAlignmentLines seja um Set em vez de um Map e fazer com que LayoutCoordinates implemente o operador get() em vez de recuperar um valor. Isso facilita a modificação de um ou mais valores do conjunto sem criar uma nova coleção para cada modificador (I0245a).

  • LayoutGoordinates não tem mais uma propriedade de posição. A propriedade de posição não faz sentido ao considerar LayoutModifiers, rotação ou dimensionamento. Em vez disso, os desenvolvedores precisam usar parentCoordinates e childToLocal() para calcular a transformação de um LayoutCoordinate em outro.

    LayoutCoordinates usa IntPxSize para a propriedade Size em vez de PxSize. Os layouts usam tamanhos de pixel inteiros, então todos os tamanhos de layout precisam usar números inteiros, e não valores de pontos flutuantes (I9367b).

  • Melhorias na superfície da API de Constraints (I0fd15)

  • TextDirection.Content foi adicionado (I48f36).

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

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

  • TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).

  • TextDirection foi renomeado como ResolveTextDirection (I3ff38).

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

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

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

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

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

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

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

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

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