Compose Material

Crie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
20 de março de 2024 1.6.4 - - 1.7.0-alpha05

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.material:material:1.6.4"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.6.4")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

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

Versão 1.7.0-alpha05

20 de março de 2024

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

Mudanças na API

  • A sinalização ScaffoldSubcomposeInMeasureFix foi removida. (I67363).

Versão 1.7.0-alpha04

6 de março de 2024

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

Novos recursos

Versão 1.7.0-alpha03

21 de fevereiro de 2024

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

Mudanças na API

  • O BottomDrawer foi promovido de experimental para estável. Agora, BottomDrawerState expõe o progresso como uma função, permitindo consultar o progresso entre destinos específicos. BottomDrawerState agora permite a personalização da especificação de animação, e confirmStateChange não é mais uma lambda final (I9c029, b/261423850).
  • O BackdropScaffold foi promovido de experimental para estável. A especificação da animação agora é uma especificação tween de acordo com as diretrizes O parâmetro snackbarHost de BackdropScaffold não é mais o último para evitar confusão com lambdas finais. BackdropScaffoldState expõe uma API progress(from, to) para consultar o progresso entre as âncoras. (I73f48, b/261423218).
  • As páginas inferiores padrão foram promovidas de experimental para estável. Construtores descontinuados foram removidos. A especificação da animação agora é uma especificação de interpolação de acordo com as diretrizes. (I3c1a8, b/278692145, b/261409034).
  • As páginas inferiores modais foram promovidas de experimental para estável Construtores descontinuados foram removidos. A especificação da animação agora é uma especificação tween de acordo com as diretrizes (Ic53f4, b/278692145, b/266780235, b/261409034).

Correções de bugs

  • Correção de um problema em que o BackdropScaffold poderia falhar em cenários específicos em combinação com LookaheadScope (I51396).
  • A subcomposição de BottomSheetScaffold foi removida para melhorar o desempenho Correção de um problema em que o BottomSheetScaffold falhava em cenários específicos em combinação com LookaheadScope (I2f90c).
  • A subcomposição foi removida de ModalBottomSheetLayout, para melhorar o desempenho (I7a025).

Versão 1.7.0-alpha02

7 de fevereiro de 2024

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

Versão 1.7.0-alpha01

24 de janeiro de 2024

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

Mudanças de comportamento

  • Os componentes do Material Design foram migrados para usar as novas APIs de ondulação e não consultam mais RippleTheme

Mudanças na API

  • rememberRipple e RippleTheme foram descontinuados do material-ripple, com novas ondulações e APIs RippleConfiguration adicionadas ao Material Design e a outras bibliotecas do sistema de design

  • Os componentes do Material Design que antes aceitavam um MutableInteractionSource e tinham como padrão lembrar { MutableInteractionSource() } agora aceitam um MutableInteractionSource anulável e assumem o valor nulo por padrão Se você não estiver elevando e usando o MutableInteractionSource, transmita um valor nulo. Isso permite que alguns componentes criem lentamente uma instância somente quando necessário, melhorando o desempenho. Também é recomendável fazer alterações semelhantes nos seus próprios componentes.

Versão 1.6

Versão 1.6.4

20 de março de 2024

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

Versão 1.6.3

6 de março de 2024

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

Correções de bugs

  • A regressão em ExposedDropdownMenu foi corrigida para torná-la focalizável novamente (c0e0ed, b/323694447).

Versão 1.6.2

21 de fevereiro de 2024

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

Versão 1.6.1

7 de fevereiro de 2024

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

Versão 1.6.0

24 de janeiro de 2024

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

Versão 1.6.0-rc01

10 de janeiro de 2024

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

Versão 1.6.0-beta03

13 de dezembro de 2023

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

Versão 1.6.0-beta02

29 de novembro de 2023

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

Versão 1.6.0-beta01

15 de novembro de 2023

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

Versão 1.6.0-alpha08

18 de outubro de 2023

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

Mudanças na API

  • O uso de uma função materialIcon foi descontinuado e substituído pela sobrecarga que usa um parâmetro autoMirror. (Ia338d).

Correções de bugs: aumenta automaticamente a altura do item de navegação para conteúdo grande. (0c4ecc, b/272336962).

Versão 1.6.0-alpha07

4 de outubro de 2023

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

  • Atualizações de dependência

Versão 1.6.0-alpha06

20 de setembro de 2023

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

Mudança interruptiva de comportamento

  • A funcionalidade relacionada à gaveta foi removida de BottomSheetScaffold. Una a BottomSheetScaffold a um elemento combinável de gaveta para acessar a funcionalidade anterior. Consulte BottomSheetScaffoldWithDrawerSample para conferir um exemplo. (I1dcc8).

Mudanças na API

  • Foi introduzida uma flag temporária para controlar se o Scaffold vai medir os filhos durante a medição ou a colocação Por padrão, será medido em medidas. Se você está tendo problemas com o novo comportamento, registre um problema. (If6e3b).

Versão 1.6.0-alpha05

6 de setembro de 2023

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

Novos recursos

  • Foi adicionado suporte a ícones espelhados automaticamente quando renderizados em layouts da direita para a esquerda. Os ícones nos módulos material-icons-core e material-icons-extended agora estão fornecendo conjuntos adicionais de ícones para oferecer suporte ao espelhamento automático quando o ícone permite isso. Os novos conjuntos têm o prefixo Icons.AutoMirrored.Filled... etc. e contêm ícones que serão espelhados automaticamente nos layouts RTL. Consulte a lista de ícones do Material Design (em inglês) para saber quais podem (e precisam) ser espelhados automaticamente.

Mudanças na API

  • Foi adicionado suporte a ícones espelhados automaticamente quando renderizados em layouts da direita para a esquerda. Os ícones nos módulos material-icons-core e material-icons-extended agora estão fornecendo conjuntos adicionais de ícones para oferecer suporte ao espelhamento automático quando o ícone permite isso. Os novos conjuntos têm o prefixo Icons.AutoMirrored.Filled... etc. e contêm ícones que serão espelhados automaticamente nos layouts RTL. Consulte a lista de ícones do Material Design (em inglês) para saber quais podem (e precisam) ser espelhados automaticamente. As propriedades de ícone fornecidas anteriormente para esses ícones agora foram marcadas como descontinuadas e oferecem uma sugestão de bloco de substituição para ajudar na migração. Caso você não tenha nenhum tratamento especial para espelhar ícones na direção RTL, recomendamos migrar para o novo conjunto de ícones. Por exemplo, Icons.Filled.ArrowBack precisa ser refatorado para Icons.AutoMirrored.Filled.ArrowBack. (I4b511).

Versão 1.6.0-alpha04

23 de agosto de 2023

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

Correções de bugs

  • Foi corrigido um problema em que alguns componentes que usavam Subcomposition (por exemplo, BottomSheetScaffold) dentro de um Scaffold dentro de um LookaheadScope tentavam ler o tamanho muito cedo (If2c5d).
  • O cálculo de offset de DropdownMenu foi corrigido para que os deslocamentos x dependam apenas da direção do layout local e os deslocamentos y não sejam mais invertidos quando o menu estiver perto da parte de baixo da tela (IFiles74, b/294103942).
  • Os componentes internos do layout de BottomSheetScaffold foram otimizados e um possível problema com BottomSheetScaffold dentro de uma LookaheadLayout foi corrigido (Ic0afa).

Versão 1.6.0-alpha03

9 de agosto de 2023

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

Mudanças na API

  • Os componentes do Material2 agora têm uma API separada para transmitir windowInsets e oferecer suporte a funcionalidades de ponta a ponta no Android Ao contrário dos componentes do Material3, os componentes do Material2 não são compatíveis com encartes por padrão, e o valor deve ser transmitido manualmente. Consulte as amostras correspondentes para orientação. (I655e8).

Versão 1.6.0-alpha02

26 de julho de 2023

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

Mudanças na API

  • Estamos movendo a dependência de densidade para o nível do componente. Isso se aplica aos seguintes componentes: SwipeToDismiss e componentes baseados em Planilhas. Use a nova sobrecarga fornecida quando a densidade for um parâmetro. (I1846e).
  • Outras anotações para especificar entradas permitidas para elementos combináveis (I51109).
  • Atualização dos arquivos de API para anotar a supressão de compatibilidade (I8e87a, b/287516207).
  • Adição de um novo alinhamento Start para FabPosition (Ib7aea, b/170592777).
  • O uso de TextFieldColorsWithIcons no Material 2 foi descontinuado e substituído por TextFieldColors. Ao substituir leadingIconColor ou trailingIconColor, substitua também a sobrecarga com interactionSource. (Id57ed, b/199377790).

Versão 1.6.0-alpha01

21 de junho de 2023

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

Mudanças de comportamento

  • includeFontPadding agora é false por padrão na tipografia do Material 2 O estilo padrão de altura da linha também mudou para Trim.None e Alignment.Center, e lineHeight explícito (em sp) foi adicionado aos TextStyles de Typography Consulte os documentos da API para personalizar esses valores. Confira também a postagem do blog para conferir uma explicação detalhada dessas mudanças. (Icabc3, I3f801, I04c03).

Mudanças na API

  • As APIs Swipeable do Material Design foram descontinuadas. Consulte as APIs AnchoredDraggable do Foundation, que são otimizadas para casos de uso simples e complexos. (I732e0).

Correções de bugs

  • BottomSheetState, ModalBottomSheetState e BottomDrawerState agora expõem uma propriedade "progress" indicando o progresso entre a âncora atual (fixada) e a âncora mais próxima na direção do deslize (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).

Versão 1.5

Versão 1.5.4

18 de outubro de 2023

Lançamento de androidx.compose.material:material-*: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.material:material-*: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.material:material-*:1.5.2. A versão 1.5.2 contém estas confirmações.

Versão 1.5.1

6 de setembro de 2023

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

Versão 1.5.0

9 de agosto de 2023

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

Mudanças importantes desde a versão 1.4.0

Mudanças na API

  • Mudanças foram incorporadas nas APIs Swipeable1 no BottomSheetScaffold. O parâmetro confirmStateChange de BottomSheetState foi renomeado como confirmValueChange progress agora está exposto como um valor flutuante animateTo e snapTo são internos. Use expand() e collapse(). direction e overflow foram removidos. offset foi substituído por requireOffset(). I323b4 (link em inglês)
  • A função snapTo na gaveta foi marcada como uma API não experimental (Ib9c18, b/261425368).
  • Adição de um parâmetro de cor de faixa para indicadores de progresso circulares e um parâmetro de limite de traço para indicadores de progresso circulares e lineares (Ie668c, b/216325962, b/222964817).
  • Renomeação de ModalBottomSheetState e ModalBottomSheetState.Saver gerais e de confirmStateChange do rememberModalBottomSheetState como confirmValueChange (Ib48d1).
  • Adição do Modifier.minimumInteractiveComponentSize. Ele pode ser usado para reservar pelo menos 48 dp de tamanho e evitar a ambiguidade das interações de toque caso o elemento seja menor (I33f58, b/258495559).
  • Mudanças foram incorporadas nas APIs Swipeable no ModalBottomSheetLayout. O animateTo do ModalBottomSheetState não usa mais um parâmetro animationSpec, e o deslocamento exposto agora é anulável Para exigir o deslocamento, use requireOffset (Ia2e79).
  • A anotação @JvmDefaultWithCompatibility foi adicionada (I8f206).
  • As mudanças incorporadas nas APIs Swipeable no animateTo do ModalDrawer. DrawerState foram substituídas pelos métodos de abertura e fechamento. O deslocamento agora é anulável. Para exigir o deslocamento, use requireOffset (I3de9e).
  • As gavetas e páginas foram atualizadas para atrasar corretamente os pressionamentos em casos em que gestos podem se tornar eventos de rolagem.
  • O parâmetro minLines foi adicionado ao Text, TextField e OutlinedTextField do Material e Material 3, o que permite definir a altura mínima do componente em termos de número de linhas (I4af1d).

Correções de bugs

  • Correção de um problema em que pullRefresh não consumia velocidade, fazendo com que a rolagem esticada fosse mostrada A assinatura da API da lambda onRelease em Modifier.pullRefresh também foi modificada, passando a retornar um Float para a velocidade consumida (I7db65, b/266874741).
  • BottomSheetState, ModalBottomSheetState e BottomDrawerState agora expõem uma propriedade "progress" indicando o progresso entre a âncora atual (fixada) e a âncora mais próxima na direção do deslize (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).
  • Correção da ação de dispensar AlertDialog para aparecer abaixo da ação de confirmação, quando as ações empilhadas umas sobre as outras se encaixam na largura da caixa de diálogo Essa correção alinha a implementação às especificações do Material Design (I029de, b/235454277).
  • BottomSheetScaffold não vai mais participar da rolagem aninhada quando gesturesEnabled for definido como falso (I634f3, b/215403277).
  • Correção de um bug em que o BottomSheetScaffold falhava quando fornecido com conteúdo vazio para slots (Ib24a5, b/235588730).
  • Correção de PullRefreshIndicator que interceptou eventos de cliques/ponteiros (2494256, b/271777421).
  • Correção de um problema em que ModalBottomSheetLayout falhava em um caso extremo na mudança de orientação Agora, as animações de layout (por exemplo, Modifier.animateContentSize) no conteúdo da página funcionam sem problemas. (I2f981, b/266780234).

Versão 1.5.0-rc01

26 de julho de 2023

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

Versão 1.5.0-beta03

28 de junho de 2023

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

Correções de bugs

  • BottomSheetState, ModalBottomSheetState e BottomDrawerState agora expõem uma propriedade "progress" indicando o progresso entre a âncora atual (fixada) e a âncora mais próxima na direção do deslize (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).

Versão 1.5.0-beta02

7 de junho de 2023

Lançamento de androidx.compose.material:material-*: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.material:material-*:1.5.0-beta01. A versão 1.5.0-beta01 contém estas confirmações.

Mudanças na API

  • O deslocamento de DrawerState e BottomDrawerState não é mais anulável Em vez disso, elas retornam Float.NaN para indicar a ausência do deslocamento. (Ie9855).
  • Foi adicionada uma opção para transmitir um ScrollState ao criar um DropdownMenu ou uma ExposedDropdownMenu para controlar o estado de rolagem vertical dos itens de menu mostrados (Idb009, b/185304441).
  • Foi adicionado suporte à ativação/desativação do gesto de ModalBottomSheetLayout para que o usuário possa configurar isso para ter mais resultados em destaque (I40af0).
  • Adição de um parâmetro de cor a BasicText para permitir a animação ou a definição eficiente de cores do texto (Iffd88, b/246961787).
  • Renomeação da propriedade semântica isContainer para isTraversalGroup (I121f6).

Correções de bugs

  • Correção da ação de dispensar AlertDialog para aparecer abaixo da ação de confirmação, quando as ações empilhadas umas sobre as outras se encaixam na largura da caixa de diálogo Essa correção alinha a implementação com as especificações do Material Design (I029de, b/235454277).

Versão 1.5.0-alpha04

10 de maio de 2023

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

Mudanças na API

  • Estamos movendo a dependência de densidade para o nível do componente. Isso se aplica aos seguintes componentes: BottomDrawer, ModalBottomSheetLayout, BottomSheetScaffold, Switch e ModalDrawer. Use a nova sobrecarga fornecida quando a densidade for um parâmetro. (I8fbd8).

Versão 1.5.0-alpha03

19 de abril de 2023

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

Mudanças na API

  • Atualizamos os componentes internos de BottomDrawer para usar as novas APIs SwipeableV2 Devido a isso, BottomDrawerState agora só terá APIs definidas no nível da classe, e não vai herdar métodos/propriedades de SwipeableState. Estamos usando a composição com um SwipeableV2State interno. Offset agora é uma propriedade de ponto flutuante anulável. O valor atual e um valor de destino de deslizar ainda podem ser acessados pelas propriedades currentValue e targetValue Os métodos anteriores no nível da classe, como abrir/expandir/fechar e propriedades, como isOpen/isClosed, continuam sendo compatíveis. (Iad40c, b/178529942, b/220676296).

Correções de bugs

  • Atualização dos componentes internos do componente da chave. A chave agora mostra a prévia do estado de destino mais próximo ao ser arrastada. (Id90d4).
  • O conteúdo de página animada (por exemplo, Modifier.animateContentSize no conteúdo da página) em BottomSheetScaffold foi otimizado e agora funciona sem problemas. (Ia913c, b/270518202, b/254446195).
  • BottomSheetScaffold não vai mais participar da rolagem aninhada quando gesturesEnabled estiver definido como false (I634f3, b/215403277).

Versão 1.5.0-alpha02

5 de abril de 2023

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

Correções de bugs

  • Correção de um bug em que o BottomSheetScaffold falhava quando fornecido com conteúdo vazio para slots (Ib24a5, b/235588730).
  • Correção de PullRefreshIndicator que interceptou eventos de cliques / ponteiro (2494256, b/271777421).

Versão 1.5.0-alpha01

22 de março de 2023

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

Correções de bugs

  • Adição de uma amostra de reflow de chipgroup. O padding horizontal entre os ícones filhos foi atualizado no exemplo de grupo de ícones de linha única para corresponder à especificação (I3b155).
  • Correção de um problema em que ModalBottomSheetLayout falhava em um caso extremo na mudança de orientação Agora, as animações de layout (por exemplo, Modifier.animateContentSize) no conteúdo da página funcionam sem problemas. (I2f981, b/266780234).

Versão 1.4

Versão 1.4.3

3 de maio de 2023

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

Versão 1.4.2

19 de abril de 2023

Lançamento de androidx.compose.material:material-*: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.material:material-*: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.material:material-*:1.4.0. A versão 1.4.0 contém estas confirmações.

Mudanças importantes desde a versão 1.3.0

Mudanças na API

  • Adição do Modifier.minimumInteractiveComponentSize. Ele pode ser usado para reservar pelo menos 48 dp de tamanho e evitar a ambiguidade das interações de toque caso o elemento seja menor (I33f58, b/258495559).
  • Mudanças foram incorporadas nas APIs Swipeable no ModalDrawer. O elemento animateTo do DrawerState foi substituído pelos métodos de abertura e fechamento, e o deslocamento agora é anulável. Para exigir o deslocamento, use requireOffset (I3de9e).
  • O parâmetro minLines foi adicionado ao Text, TextField e OutlinedTextField do Material e Material 3, o que permite definir a altura mínima do componente em termos de número de linhas (I4af1d).
  • 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-rc01

8 de março de 2023

Lançamento de androidx.compose.material:material-*:1.4.0-rc01 sem mudanças. A versão 1.4.0-rc01 contém estas confirmações.

Versão 1.4.0-beta02

22 de fevereiro de 2023

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

Mudanças na API

  • Mudanças foram incorporadas nas APIs Swipeable no BottomSheetScaffold. O parâmetro confirmStateChange de BottomSheetState foi renomeado como confirmValueChange progress agora está exposto como um valor flutuante animateTo e snapTo são internos. Use expand() e collapse(). direction e overflow foram removidos. offset foi substituído por requireOffset(). (I323b4).

Correções de bugs

  • Remoção de papéis semânticos das superfícies clicáveis e selecionáveis, atualização de componentes que os usavam para definir papéis com modificador.semantics (Ibb4ba).
  • Pequena atualização nos ícones estendidos do Material Design que ajustam os ícones preenchidos desktop_mac, directions e kitchen (I65f5e).

Versão 1.4.0-beta01

8 de fevereiro de 2023

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

Mudanças na API

  • Correção de um problema em que pullRefresh não consumia velocidade, fazendo com que a rolagem esticada fosse mostrada A assinatura da API da lambda onRelease em Modifier.pullRefresh também foi modificada, passando a retornar um Float para a velocidade consumida (I7db65, b/266874741).
  • O getter da propriedade LocalMinimuTouchTargetEnforcement foi restaurado, marcado como descontinuado e redirecionado para LocalMinimumInteractiveComponentEnforcement (I60dd5).

Versão 1.4.0-alpha05

25 de janeiro de 2023

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

Correções de bugs

  • Correção de um problema em que o estado ModalBottomSheetLayout's HalfExpanded era calculado incorretamente e a página parecia estar flutuando (I8c615, b/265610459).
  • Correção de um bug em ModalBottomSheetLayout em que a página falhava ao passar do estado oculto para o visível em algumas circunstâncias (Ia9265, b/265444789).

Versão 1.4.0-alpha04

11 de janeiro de 2023

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

Mudanças na API

  • Adição da propriedade semântica IsContainer em plataformas. Essa propriedade vai ser usada em uma mudança posterior, que determina a ordem de travessia com base no significado semântico de elementos como plataformas (I63379).
  • A função snapTo na gaveta foi marcada como uma API não experimental (Ib9c18, b/261425368).
  • Adição de um parâmetro de cor de faixa para indicadores de progresso circulares e um parâmetro de limite de traço para indicadores de progresso circulares e lineares (Ie668c, b/216325962, b/222964817).
  • Renomeação de ModalBottomSheetState e ModalBottomSheetState.Saver gerais e de confirmStateChange do rememberModalBottomSheetState como confirmValueChange (Ib48d1).
  • Mais nulidade do tipo de retorno das funções com uso oculto (Ibf7b0).
  • Adição do Modifier.minimumInteractiveComponentSize. Ele pode ser usado para reservar pelo menos 48 dp de tamanho e evitar a ambiguidade das interações de toque caso o elemento seja menor (I33f58, b/258495559).
  • Mudanças foram incorporadas nas APIs Swipeable no ModalBottomSheetLayout. O animateTo do ModalBottomSheetState não usa mais um parâmetro animationSpec, e o offset exposto agora é anulável. Use requireOffset para exigir o offset (Ia2e79).

Correções de bugs

  • A página de ModalBottomSheetLayout agora tem uma largura máxima de 640 dp (I71a4f, b/234927577).
  • Correção de um problema em que rememberPullRefreshState não atualizava o refreshThreshold e refreshingOffset ao longo do tempo (Ifed10, b/263159832).
  • O andamento dos indicadores de progresso agora está vinculado corretamente ao intervalo esperado (I8a7eb, b/262262727).
  • Se o ModalBottomSheetState ainda não tiver recebido nenhuma âncora, ele vai atualizar o currentValue sem uma animação quando snapTo ou animateTo forem chamados, em vez de gerar uma exceção (I2c91b).
  • Correção do estado ativado na implementação de FilterChip do Material 2 (Id326a, b/261329817).
  • Correção de um bug em que o ModalBottomSheetLayout falhava quando era HalfExpanded (aberto na metade do tamanho) ao alternar da orientação de retrato para paisagem. Confira se você está transmitindo o initialValue correto, por exemplo, verificando a configuração (Ie8df7, b/182882364).
  • Correção de um problema em que o ModalBottomSheetLayout falhava quando o conteúdo da página estava vazio. O ModalBottomSheetLayout agora permite conteúdo de página vazio. Se o conteúdo estiver vazio, só haverá um estado oculto (Ic2288, b/200980998, b/216693030).

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.material:material-*:1.4.0-alpha03. A versão 1.4.0-alpha03 contém estas confirmações.

Mudanças na API

  • A anotação @JvmDefaultWithCompatibility foi adicionada (I8f206).
  • Mudanças foram incorporadas nas APIs Swipeable em ModalDrawer. O elemento animateTo de DrawerState foi substituído pelos métodos open e close. O deslocamento agora é anulável. Para exigir o deslocamento, use requireOffset (I3de9e).
  • Adição de 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 páginas foram atualizadas para atrasar corretamente os pressionamentos em casos em que gestos podem se tornar eventos de rolagem.

Correções de bugs

  • Correção de um problema em que PullRefreshIndicator podia ficar travado após onRefresh ser chamado quando o estado de atualização não mudava para "true" (Ie2416, b/248274004).

Atualizações de dependência

  • O Compose UI e o Compose Material agora dependem do Lifecycle 2.5.1 (I05ab0, b/258038814).

Versão 1.4.0-alpha02

9 de novembro de 2022

Lançamento de androidx.compose.material:material-*: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).
  • O parâmetro minLines foi adicionado ao Text, TextField e OutlinedTextField do Material e Material 3, o que permite definir a altura mínima do componente em termos de número de linhas (I4af1d).
  • Adição do 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.material:material-*: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).

Versão 1.3

Versão 1.3.1

9 de novembro de 2022

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

Versão 1.3.0

24 de outubro de 2022

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

Mudanças importantes desde a versão 1.2.0

Mudança de comportamento interruptiva

  • A elevação máxima suportada em caixas de diálogo e pop-ups foi reduzida para 8 dp.

Mudanças na API

  • Foi adicionado ao Compose um componente de puxar a tela de cima para baixo para atualizar (I29168).
  • No RangeSlider, o nome do parâmetro "values" mudou para "value" (I3b79a).

Versão 1.3.0-rc01

5 de outubro de 2022

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

Versão 1.3.0-beta03

21 de setembro de 2022

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

Mudanças na API

  • Foi adicionado ao Compose um componente de puxar a tela de cima para baixo para atualizar (I29168).

Versão 1.3.0-beta02

7 de setembro de 2022

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

Nenhuma mudança desde a versão 1.3.0-beta01.

Versão 1.3.0-beta01

24 de agosto de 2022

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

Mudança de comportamento interruptiva

A elevação máxima suportada em caixas de diálogo e pop-ups foi reduzida para 8 dp.

A elevação máxima suportada para caixas de diálogo e pop-ups do Compose foi reduzida de 30 dp para 8 dp. Essa mudança afeta pop-ups e caixas de diálogo personalizados do Material Design e da interface. Ela foi feita para reduzir um bug de acessibilidade nas versões do Android anteriores à S e para garantir que os serviços de acessibilidade dentro dessas janelas possam interagir com o conteúdo da caixa de diálogo ou do pop-up.

Essa mudança só vai afetar pessoas que criarem uma implementação de caixa de diálogo ou pop-up personalizada com uma elevação definida para níveis maiores que 8 dp. Nesses casos, o ideal é reduzir a elevação da caixa de diálogo ou do pop-up. Se precisar desativar esse novo comportamento, bifurque a caixa de diálogo ou pop-up com o conjunto de elevação preferido. Isso não é recomendado, já que a acessibilidade pode ser afetada de forma negativa, e cabe ao desenvolvedor garantir que a parte de baixo da caixa de diálogo ou pop-up seja interativa e legível pelos serviços de acessibilidade.

Versão 1.3.0-alpha03

10 de agosto de 2022

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

Versão 1.3.0-alpha02

27 de julho de 2022

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

Contribuição externa

  • O problema AnimatedVisibility com FloatingActionButton no Scaffold foi corrigido (I3a0ae, b/224005027).

Versão 1.3.0-alpha01

29 de junho de 2022

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

Mudanças na API

  • Em RangeSlider, o nome do parâmetro "values" mudou para "value" (I3b79a).

Correções de bugs

  • Atualizada a amostra do ícone para fornecer uma descrição de conteúdo mais significativa (I10b9d).

Versão 1.2

Versão 1.2.1

10 de agosto de 2022

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

Versão 1.2.0-rc03

29 de junho de 2022

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

Mudanças na API

  • As interfaces em bibliotecas do Compose agora são criadas usando métodos de interface padrão do jdk8 (I5bcf1).

Correções de bugs

  • Atualização do selo com a guia do ícone principal para fixar o selo no rótulo e não no ícone (I90993).

Versão 1.2.0-beta03

1º de junho de 2022

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

Correções de bugs

  • Um bug em que a BottomSheetScaffold estava sendo mostrada por cima da sombra da barra de apps foi corrigido. BottomSheetScaffold agora também considera o estado da página ao posicionar snackbars. Quando fechadas, elas são colocadas em cima da página e do FAB. Já no estado aberto, as snackbars são ancoradas na parte de baixo (Ia80b5, b/187771422).

Versão 1.2.0-beta02

18 de maio de 2022

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

Versão 1.2.0-beta01

11 de maio de 2022

Lançamento de androidx.compose.material:material-*: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

  • O elemento combinável TextFieldDefaults.BorderStroke que desenha um traço de borda em OutlinedTextField foi renomeado como TextFieldDefaults.BorderBox (I5f295).

Versão 1.2.0-alpha08

20 de abril de 2022

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

Mudanças na API

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

Versão 1.2.0-alpha07

6 de abril de 2022

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

Versão 1.2.0-alpha06

23 de março de 2022

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

Mudanças na API

  • Atualizações na API Card clicável para acompanhar mudanças na API Surface (I56bcb).
  • Atualizações na API Surface da biblioteca Material 2 que adiciona outras funções sobrecarregadas para plataformas selecionáveis e alternáveis (Ifcca5).

Versão 1.2.0-alpha05

9 de março de 2022

Lançamento de androidx.compose.material:material-*: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).
  • 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).
  • A mudança anterior em que WindowInsetsControllerCompat dependia de apenas uma visualização foi revertida, e agora é novamente necessário ter uma janela para gerenciar algumas flags de janela. O uso de ViewCompat.getWindowInsetsController foi descontinuado e substituído por WindowCompat.getInsetsController para garantir que a janela correta seja usada, por exemplo, se a visualização estiver em uma caixa de diálogo (I660ae, b/219572936).
  • Texto: includeFontPadding agora fica desativado por padrão. Os problemas de corte resultantes de includeFontPadding=false foram corrigidos, e nenhum corte vai ser feito para textos altos (I31c84, b/171394808).
  • Uma nova API LazyVerticalGrid foi adicionada para definir o tamanho de eixos cruzados (I17723).

Versão 1.2.0-alpha04

23 de fevereiro de 2022

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

Mudanças na API

  • Add support for filter chips (I39a6e, b/192585545).
  • Os elementos TextFieldDecorationBox e a OutlinedTextFieldDecorationBox foram adicionados. O uso deles com BasicTextField ajuda a criar um campo de texto personalizado com base nos campos de texto do Material Design, mas com mais opções para personalização.
  • Fornecimento de uma maneira de ajustar paddings horizontal e vertical em campos de texto (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617).
  • Foram adicionados ComposableTarget, ComposableTargetMarker e ComposableOpenTarget, que permitem gerar relatórios sobre o tempo de compilação quando uma função combinável é chamada para um applier que não foi projetado para uso.

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

Versão 1.2.0-alpha03

9 de fevereiro de 2022

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

Correções de bugs

Versão 1.2.0-alpha02

26 de janeiro de 2022

Lançamento de androidx.compose.material:material-*: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).
  • Foi adicionado suporte ao chip de ação (I07100, b/192585545).

Versão 1.2.0-alpha01

12 de janeiro de 2022

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

Atualizações de dependência

  • Agora depende do Kotlin 1.6.10.

Contribuição externa

  • A classe ModalBottomSheetState agora tem uma flag isSkipHalfExpanded. Ela pode ser definida pelo construtor ou atualizada posteriormente configurando a propriedade isSkipHalfExpanded da ModalBottomSheetState como true. A atualização do valor da isSkipHalfExpanded causa uma recomposição da página (I18b86, b/186669820).

Versão 1.1

Versão 1.1.1

23 de fevereiro de 2022

Lançamento de androidx.compose.material:material-*: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.material:material-*: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.
  • Suporte estável para a Coluna de navegação.
  • Upgrade de várias APIs anteriormente experimentais para a versão estável.
  • Compatibilidade com as versões mais recentes do Kotlin.

Versão 1.1.0-rc03

26 de janeiro de 2022

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

Mudanças de comportamento

Observe que, em relação ao Compose 1.0, os componentes do Material vão expandir 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 vai ser expandida para um tamanho mínimo de 48 x 48 dp, mesmo que você defina um tamanho menor. 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.

Correções de bugs

  • Algumas informações melhores de depuração foram adicionadas ao Layout Inspector ao inspecionar modificadores de área de toque mínima (aosp/1955036).

Versão 1.1.0-rc01

15 de dezembro de 2021

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

Correções de bugs

Versão 1.1.0-beta04

1º de dezembro de 2021

Lançamento de androidx.compose.material:material-*: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.

Versão 1.1.0-beta03

17 de novembro de 2021

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

Versão 1.1.0-beta02

3 de novembro de 2021

Lançamento de androidx.compose.material:material-*: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ó vão ser atrasadas se estiverem dentro de um contêiner Modifier.scrollable(), em vez de sempre serem atrasadas em um evento para baixo (Ibefe0, b/203141462).

Versão 1.1.0-beta01

27 de outubro de 2021

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

Novos recursos

  • Agora, ondulações oferecem suporte a estados de foco e de passar o cursor. Ao focar ou passar o cursor sobre um componente, como um botão, a sobreposição de estado correta é exibida.

Versão 1.1.0-alpha06

13 de outubro de 2021

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

Mudanças na API

  • Uma sobrecarga sem filhos para o Layout foi adicionada, com eficiência aprimorada (Ib0d9a).
  • Implementação de ExposedDropdownMenu com base em ExposedDropdownMenuBox usando TextField e DropdownMenu (If60b2).
  • A propriedade dismissOnOutsideClick foi adicionada ao parâmetro PopupProperties, substituindo a dismissOnClickOutside, que foi descontinuada. A nova propriedade recebe a posição do clique e os limites de âncoras, fornecendo um controle mais preciso sobre a necessidade de invocar onDismissRequest. Isso pode ser útil, por exemplo, para evitar que a âncora seja dispensada ao ser tocada.
    • O updateAndroidWindowManagerFlags foi adicionado a PopupProperties, oferecendo controle de baixo nível sobre as flags transmitidas pelo pop-up ao WindowManager do Android. O parâmetro da lambda vão ser as flags calculadas com base nos valores de PopupProperties que resultam em flags do WindowManager, por exemplo, focalizável. O resultado da lambda serão as flags finais transmitidas para o WindowManager do Android. Por padrão, o updateAndroidWindowManagerFlags não muda as flags calculadas com base nos parâmetros. Essa API precisa ser usada com cuidado, somente nos casos em que o pop-up tem requisitos de comportamento muito específicos (I6e9f9).

Versão 1.1.0-alpha05

29 de setembro de 2021

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

Mudanças na API

  • Um tamanho mínimo da área de toque foi adicionado para componentes do Material Design que não têm uma área de toque acessível. Como isso adiciona mais espaçamento ao redor dos componentes para garantir que eles tenham uma área de toque grande o suficiente, as IUs existentes que presumem que o tamanho desses componentes seja o tamanho visual deles e não considera o tamanho da área de toque podem mudar. É possível usar a composição experimental LocalMinimumTouchTargetEnforcement local para desativar esse comportamento em uma hierarquia, mas isso é apenas uma solução temporária enquanto as IUs existentes são atualizadas para compensar o novo tamanho mínimo (I9b966, b/149691127, b/171509422).
  • A interface experimental TextFieldColorsWithIcons foi adicionada, estendendo TextFieldColors para fornecer InteractionSource às variáveis leadingColor e trailingColor. Isso permite modificar a aparência do TextField de acordo com o estado de foco (I66923, b/198402662).

Versão 1.1.0-alpha04

15 de setembro de 2021

Lançamento de androidx.compose.material:material-*: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

  • Permissão para que o clipe amplie os limites da área de toque além da região do clipe para que ela respeite o tamanho mínimo (I43e10, b/171509422).
  • O elemento combinável Divider foi atualizado para respeitar a Dp.Hairline do parâmetro de espessura para que seja possível mostrar divisores de pixels únicos, independente da densidade de exibição (I16ffb, b/196840810).

Versão 1.1.0-alpha03

1º de setembro de 2021

Lançamento de androidx.compose.material:material-*: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 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.material:material-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.

Contribuição externa

  • O comportamento de SwipeableState foi corrigido no caso em que o deslocamento de deslize está dentro de um erro de arredondamento de uma âncora (I03d39, b/191993377).

Versão 1.1.0-alpha01

4 de agosto de 2021

Lançamento de androidx.compose.material:material-*: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. Atualização do elemento combinável BitmapPainter + Image para também consumir um parâmetro FilterFilter opcional (Ie4fb0, b/180311607).
  • Renomeação do BadgeBox para BadgedBox. Os parâmetros mudaram para aceitar o componente Badge combinável. O componente Badge que é o conteúdo de ícone típico para um BadgedBox foi adicionado (I639c6).
  • O componente NavigationRail foi adicionado. Consulte os documentos e os exemplos para entender como usar (I8de77).

Correções de bugs

  • Um exemplo do NavigationRail alinhado na parte inferior e de demonstração do app de catálogo foi adicionado (I3cffc).
  • Agora, as caixas de diálogo seguem o comportamento de tamanho da plataforma. Defina usePlatformDefaultWidth como falso para substituir esse comportamento (Iffaed, b/192682388).
  • Uma demonstração do navigation-rail foi adicionada ao app de catálogo (I04960).
  • A demonstração do ícone foi adicionada ao app de catálogo (If285d).

Versão 1.0

Versão 1.0.5

3 de novembro de 2021

Lançamento de androidx.compose.material:material-*: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.material:material-*: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.material:material-*: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.material:material-*:1.0.2. A versão 1.2.0 contém estas confirmações.

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

Versão 1.0.1

4 de agosto de 2021

Lançamento de androidx.compose.material:material-*: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.material:material-*: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.material:material-*:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.

Correções de bugs

  • Agora, as caixas de diálogo seguem o comportamento de tamanho da plataforma. Defina usePlatformDefaultWidth como falso para substituir esse comportamento. (Iffaed, b/192682388).

Versão 1.0.0-rc01

1º de julho de 2021

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

Mudanças na API

  • O componente BadgeBox foi adicionado. Consulte os documentos e exemplos para entender como usar (I5e284).
  • Renomeação de useDefaultMaxWidth em PopupProperties para usePlatformDefaultWidth (I05710).
  • Agora, as caixas de diálogo podem usar toda a largura da tela (I83929, b/190810877).
  • Um controle deslizante de intervalo experimental foi adicionado (I2f4b3).

Correções de bugs

  • Para alinhar com as especificações do Material Design, OutlinedTextField com entrada inválida parou de usar a cor de erro para rótulo quando o rótulo está sendo usado como um marcador de posição. A segunda opção é verdadeira quando não há texto de entrada no campo de texto e ele não está em foco. Com essa mudança, o significado do parâmetro error:Boolean na função TextFieldColors.labelColor() também mudou: ele retornará false mesmo quando a entrada for inválida se o rótulo estiver sendo usado como um marcador (I45f78).

Versão 1.0.0-beta09

16 de junho de 2021

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

Mudanças na API

  • O parâmetro Shape foi adicionado a OutlinedTextField para personalizar a forma da borda (I8f39e, b/181322957).
  • TextOverflow foi alterado para ser uma classe in-line (I433af).

Correções de bugs

  • Scrim em BottomDrawer, BackdropScaffold e ModalBottomSheetLayout desaparecerão e Color.Unspecified será transmitido (I2d899, b/182063309).

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 APK é criado e inclui esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário compacto que seja específico para o APK. Assim, o ART poderá aproveitar esse perfil quando o APK estiver instalado em dispositivos para compilar um subconjunto específico do aplicativo, com antecedência, para melhorar o desempenho dele, especialmente na 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.material:material-*:1.0.0-beta08. A versão 1.0.0-beta08 contém estas confirmações.

Novos recursos

Mudança da API que causa interrupção de comportamento

  • INTERRUPÇÃO DE COMPORTAMENTO: agora, cards consomem cliques, fazendo com que os cliques adicionados por Card(Modifier.clickable) sejam um ambiente autônomo. Use a nova sobrecarga experimental de cards que aceita o método onClick (Ia8744, b/183775620).
    • Uma nova sobrecarga de cards que processa cliques e outras funcionalidades clicáveis foi adicionada: indicação, interactionSource, ativada/desativada. Não era possível usar cards não clicáveis normais com Modifier.clickable porque eles não recortavam a indicação de ondulação nesses casos.
  • INTERRUPÇÃO DE COMPORTAMENTO: agora, a plataforma consome cliques, fazendo com que os cliques adicionados por Surface(Modifier.clickable) sejam um ambiente autônomo. Use a nova sobrecarga experimental da plataforma que aceita o método onClick (I73e6c, b/183775620).
    • Uma nova sobrecarga da plataforma que processa cliques e outras funcionalidades clicáveis foi adicionada: indicação, interactionSource, ativada/desativada. Não era possível usar uma plataforma normal não clicável com Modifier.clickable porque a plataforma não recortava a indicação de ondulação nesses casos.

Mudanças na API

  • FabPosition foi convertida de um tipo enumerado para ser uma classe inline, o que oferece suporte a uma possível expansão no futuro (I030fb).
  • O uso de tipos enumerados para classes inline foi refatorado para evitar problemas com a adição de instruções "when" com novos valores de tipos enumerados (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).
  • A função Modifier.focusModifier() foi descontinuada e substituída por Modifier.focusTarget() (I6c860).
  • A enumeração FocusState foi substituída por uma interface FocusState (Iccc1a, b/187055290).
  • LocalRippleNativeRendering foi removido agora que a implementação de ondulação baseada em visualização é estável (I7fab3, b/188569367).

Correções de bugs

  • 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).
  • Um README foi adicionado ao catálogo do Compose Material (If9191).

Versão 1.0.0-beta07

18 de maio de 2021

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

Mudanças na API

  • Você não precisará mais usar métodos de extensão para oferecer compatibilidade com as rotas do Navigation Compose (I22beb, b/172823546).

Versão 1.0.0-beta06

5 de maio de 2021

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

Mudanças na API

  • O Ripple foi migrado para usar o RippleDrawable internamente em dispositivos Android. Isso significa que as animações de ondulação acontecem na RenderThread e, por isso, serão uniformes mesmo quando a linha de execução de IU estiver sendo carregada, como ao navegar entre telas. Isso não muda a superfície de API de ondulação, mas pode resultar em mudanças de comportamento. Para ajudar na migração, LocalRippleNativeRendering foi adicionado. Forneça um valor de false a esse CompositionLocal para voltar à implementação de ondulação anterior no CompositionLocalProvider. Essa API é temporária e será removida no futuro. Por isso, se você estiver usando essa API para evitar problemas, registre um bug (I902f8, b/168777351, b/183019123).
  • 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 error da API de acessibilidade, que permite marcar um nó com uma entrada inválida (I12997, b/180584804, b/182142737).

Correções de bugs

  • Atualização da implementação de inserções do catálogo do Compose em https://github.com/google/accompanist/pull/365 (I25dc3).
  • Elementos filhos de linhas e colunas com weight(fill = false) não fazem mais com que a mãe preencha 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.material:material-*:1.0.0-beta05. A versão 1.0.0-beta05 contém estas confirmações.

Correções de bugs

  • Imagens de bloco de componentes, o seletor de tema e URLs de menu mais específicos foram adicionados ao catálogo existente do Compose Material (I9b58e).

Versão 1.0.0-beta04

7 de abril de 2021

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

Mudanças na API

  • MUDANÇA DA API: o estado DrawerState não estende mais o SwipeableState experimental.
    • MUDANÇA DA API: BottomDrawerState agora está marcado como experimental para corresponder ao componente BottomDrawer experimental (I81114 e b/181656094).
  • hideSoftwareKeyboard e showSoftwareKeyboard em SoftwareKeyboardController foram renomeados como hide() e show(), respectivamente.
    • Fornecida a interface completa do CompositionLocal para LocalSoftwareKeyboardController, possibilitando que ela seja definida, já que é especialmente útil em testes (I579a6).
  • Adição da API de acessibilidade LiveRegion. Se o nó estiver marcado como uma região ativa, os serviços de acessibilidade notificarão automaticamente o usuário sobre as mudanças (Idcf6f, b/172590946).

Correções de bugs

  • A implementação do catálogo do Compose Material foi adicionada ao módulo existente. Atualmente ausentes: imagens de bloco de componentes, seletor de tema (serão adicionados em alterações futuras) (Ie7a94).

Versão 1.0.0-beta03

24 de março de 2021

Lançamento de androidx.compose.material:material-*: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).
  • Uma nova API LeadingIconTab foi adicionada para oferecer suporte à exibição de um ícone e texto in-line em uma guia (I23267).

Contribuição externa

  • [por Jossi Wolf] BottomDrawer agora envolve o conteúdo do slot da gaveta. BottomDrawer não gera uma IllegalStateException quando o pai tem altura infinita. A gaveta de baixo agora vai ser aberta com um estado expandido, se for menor que 50% da mãe dela. Os documentos sobre BottomDrawerState e ModalBottomSheetLayoutState foram atualizados. BottomDrawerState#isOpen agora retorna "true" se estiver no estado aberto ou expandido (I87241).

Versão 1.0.0-beta02

10 de Março de 2021

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

Mudanças na API

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

Correções de bugs

  • Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).
  • Alteração do alinhamento horizontal padrão da TopAppBar e da BottomAppBar para Start, consistente com a Row (Ib2dc7).
  • Um novo módulo e interface de marcador foram adicionados para um catálogo do Compose Material, que atualmente está aninhado nas demonstrações de teste de integração existentes (Idfcb3).
  • androidx.compose.ui:ui não depende mais de AppCompat ou Fragment. Se você estiver usando uma ComposeView no aplicativo com Fragment e/ou AppCompat, confira se está usando o AppCompat/Fragment 1.3 ou mais recente. Essas versões são necessárias para definir corretamente os proprietários do ciclo de vida e de estado salvo necessários para uma ComposeView (I1d6fa, b/161814404).

Versão 1.0.0-beta01

24 de fevereiro de 2021

Lançamento de androidx.compose.material:material-*: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

  • 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).
  • imageResource e vectorResource agora são funções de extensão nos complementares ImageBitmap e ImageVector, respectivamente. As funções load{Image,Vector,Font}Resource foram excluídas (I89130).
  • Modificadores para dimensionamento de 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).
  • Agora, os lambdas de ação da chave, caixa de seleção e botão de opção são anuláveis. As amostras de caixas de seleção clicáveis em linha são atualizadas para usar esse recurso (If601b, b/171819073).
  • 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).
  • Adição da interface AccessibilityMananger e LocalAccessibilityMananger em CompositionLocals (I53520).
  • Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
  • O controle deslizante agora é compatível com o modo ativado/desativado (I6d56b, b/179793072).
  • Criação da nova TextInputSession para sessões de entrada pelos componentes de texto de baixo nível, como o CoreTextField (I8817f, b/177662148).
  • AnimationEndReason.Interrupted foi removido. CancellationException será gerada se a animação for interrompida (I2cbbc, b/179695417).
  • Remoção de@ExperimentalRippleApi e mudança deRippleAlpha para uma classe com propriedades em vez de uma interface (I6df7c).
  • Adição da interface TextFieldColors para representar cores diferentes usadas em TextField e OutlinedTextField em estados diferentes. Para implementação completa, consulte TextFieldDefaults.textFieldColors e TextFieldDefaults.outlinedTextFieldColors.
  • 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 animateScrollBy(), LazyListState.snapToItemIndex() foi renomeado como scrollToItem(), ScrollState.smoothScrollTo() foi renomeado como animateScrollTo() (I35ded).

  • Agora, os elementos combináveis marcados com @ReadOnlyComposable têm a validação do tempo de compilação para garantir que façam apenas chamadas para outros @ReadOnlyComposables (I58961).

  • A API TargetAnimation foi removida (If47d1, b/177457083).

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

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

  • drawerState.open() e drawerState.close() são funções de suspensão. 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 uma lambda simples. É possível criar o estado usando rememberDraggableState { delta -> } para ter o mesmo comportamento de antes (Ica70f, b/175294473).

  • ZoomableController.smoothScaleBy e ZoomableController.stopAnimation agora são funções suspensas (I7f970, b/177457083).

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

  • Foram feitas as seguintes mudanças na API do Material Design:

    • Adição do parâmetro contentPadding a Top/BottomAppBar para permitir a personalização do padding padrão.
    • Reordenados parâmetros no BackdropScaffold para seguir as diretrizes da API para parâmetros obrigatórios antes dos opcionais.
    • O parâmetro icon em BottomNavigationItem foi movido para depois de selected e onClick.
    • O parâmetro alwaysShowLabels em BottomNavigationItem foi renomeado como alwaysShowLabel.
    • Os parâmetros bodyContent em alguns componentes foram renomeados como content.
    • Parâmetros reordenados em ButtonDefaults.buttonColors(). Como o tipo dos parâmetros não mudou, isso não vai causar um erro no seu código. Confira se está usando parâmetros nomeados ou atualize a ordem manualmente; caso contrário o código não vai funcionar da mesma forma que antes.
    • Adição do parâmetro secondaryVariant a darkColors(). Essa cor costuma ser a mesma que secondary no tema escuro, mas é adicionada para consistência e maior personalização.
    • Como ElevationDefaults e animateElevation() não eram muito usados / úteis, eles foram removidos da plataforma da API pública.
    • onValueChangeEnd em Slider foi renomeado como onValueChangeFinished e transformado em anulável.
    • O parâmetro text em Snackbar foi renomeado como content para manter a consistência.
    • Adição do parâmetro contentPadding a DropdownMenuItem para permitir a personalização do padding padrão. Além disso, content passou a ser uma extensão em RowScope.
    • ModalDrawerLayout foi renomeado como ModalDrawer.
    • BottomDrawerLayout foi renomeado como BottomDrawer
    • (I1cc66).
  • BasicTextField agora aceita Pincel em vez de Cor para melhor personalização (I83a36).

  • imageResource e vectorResource agora são funções de extensão nos complementares ImageBitmap e ImageVector, respectivamente. As funções load{Image,Vector,Font}Resource foram excluídas (I89130).

  • Mudança de Indication#createIndication() para Indication#rememberUpdatedIndication(InteractionState) e remoção do parâmetro InteractionState de IndicationInstance#drawIndication(). A IndicationInstance só deve ser responsável por mostrar 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 devem ocorrer dentro de rememberUpdatedIndication(). O parâmetro indication em Modifier.indication também mudou para ser um parâmetro obrigatório (Ic1764, b/152525426).

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.material:material-*: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).
  • BottomDrawerLayout e ListItem foram marcados como @ExperimentalMaterialApi (Id766e).
  • 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).
  • 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).
  • Faça halgExpand() e expand() em ModalBottomSheetState interno (Ic914e).
  • Mudança de Indication#createInstance para @Composable e alteração de LocalIndication para conter uma Indication, não () -> Indication (I5eeea, b/157150564).
  • AlertDialog e DropdownMenu foram movidos para serem somente Android por enquanto. Adição do parâmetro PopupProperties ao DropdownMenu para configuração adicional do Pop-up básico (I9c443).
  • O uso de loadFontResource foi descontinuado. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi descontinuado. Use painterResource (I6b809).
  • Os parâmetros toggle e toggleModifier foram removidos do DropdownMenu, e dropdownModifier, dropdownOffset e dropdownContent foram renomeados como modifier, offset e content, respectivamente. O DropdownMenu agora se comporta de maneira consistente para Popup, em que o layout pai é usado para a posição do menu. Na maioria dos casos, é possível mover toggle para ser um irmão de DropdownMenu e unir ambos em Box. Confira o exemplo atualizado na documentação para obter mais informações sobre o uso dessa API (I884fb).
  • toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).
  • IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).
  • Ações de semântica de expansão e recolhimento foram adicionadas. Expand e halfExpand foram adicionados em ModalBottomSheetState (Ib5064).
  • O uso de Modifier.dragGestureFilter foi descontinuado. Use Modifier.pointerInput { detectDragGestures (...)}. Outra opção é usar Modifier.draggable para arrastar apenas um eixo (I0ba93, b/175294473).
  • Ambients foi renomeado para corresponder à renomeação de Ambient como CompositionLocal. Ambients costumava ser chamado de AmbientFoo. Agora, CompositionLocals será chamado de LocalFoo (I2d55d).
  • 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 economia personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso será assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).
  • Foi adicionada a propriedade ProgressBarRangeInfo.Indeterminate para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).
  • O uso de @ComposableContract foi descontinuado e substituído por três outras anotações mais específicas.

    • @ComposableContract(restartable = false) agora é @NonRestartableComposable
    • @ComposableContract(readonly = true) agora é @ReadOnlyComposable
    • @ComposableContract(preventCapture = true) agora é @DisallowComposableCalls
    • O @ComposableContract(tracked = true) foi removido.
    • (I60a9d).
  • Os utilitários emptyContent() e (@Composable () -> Unit).orEmpty() foram descontinuados por não terem mais valor ou impacto positivo na performance (I0484d).

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

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

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

  • Os parâmetros text e icon da guia e o parâmetro label de BottomNavigationItem mudaram para serem anuláveis, a fim de transmitir melhor o comportamento do componente quando esses parâmetros são ou não fornecidos, já que isso afeta o tamanho e layout do componente. Se estiver usando emptyContent() para representar nenhum texto / ícone / rótulo, use null (I57ed4).

  • Renomeação do parâmetro de cor contentColorFor para backgroundColor (I5bb67).

  • TabDefaults foram descontinuados e substituídos por TabRowDefaults. (I0f189).

  • A API ColorMatrix, usada para modificar valores RGB de conteúdo de origem da API Refactored ColorFilter, foi introduzida para ser uma interface e corresponder à implementação de PathEffect (Ica1e8).

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

  • Adição da API SemânticasProperties.PaneTitle (I20d5a).

  • Adição de parâmetros ativados a Tab e BottomNavigationItem para evitar que sejam clicáveis. Mudança de BottomNavigationItem para RowScope.BottomNavigationItem para expressar melhor os requisitos de layout na API (Id683d).

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

  • Adição do parâmetro layoutDirection ao createOutline de Shape. Isso permite criar formas com reconhecimento da direção do layout (I57c20, b/152756983).

  • Remoção de Recomposer.current(). 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).

Correções de bugs

  • Agora, o ícone é escalonado para se ajustar ao tamanho, respeitando os modificadores de tamanho aplicados a ele. Por exemplo, Icon(.., modifier = Modifier.size(50.dp) agora será desenhado em um espaço de 50x50dp (Ib2ba9, b/178796190).

Versão 1.0.0-alpha11

28 de janeiro de 2021

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

Mudanças na API

  • Promove algumas APIs do Material Design para deixarem de ser @Experimental (I5d20e).
  • Adicionamos o parâmetro de descrição de conteúdo a Image e Icon. Ele é usado para fornecer descrição para os serviços de acessibilidade (I2ac4c).
  • As interfaces de parâmetro com estado do Material Design foram mudadas para ter funções @Composable que retornam State<T>. Adição de Animatable.asState() para facilitar a conversão de um Animatable em um State. Também muda o animationElevation para que se torne uma extensão de suspensão no Animatable (If613c).
  • Snackbar, SnackbarHost, SnackbarHostState não são mais @ExperimentalMaterialAPI (Id1fb5).
  • Muda Typography, Shapes e TabPosition para deixarem de ser classes de dados. Adição de função de cópia para Typography e Shapes para substituir as que foram geradas (I40037).
  • Algumas APIs descontinuadas do Material Design foram excluídas (Ifaa25).

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi descontinuado e substituído pelas APIs SideEffect e DisposableEffect (If760e).
  • A Transition baseada em TransitionDefinition foi descontinuada (I0ac57).
  • Adicionado suporte ao estado inicial de updateTransition (Ifd51d).
  • WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
  • 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).

  • Introdução de 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-o quando quiser iniciar a Activity durante o teste, por exemplo, usando ActivityScenario.launch (I9d782, b/174472899).

  • A ondulação usada no Button e FloatingActionButton não pode mais ser personalizada por uma nova indicação pelo AmbientIndication. A intenção não era ser uma forma de personalizar esses componentes e isso agora os torna consistentes com outros do Material Design. Para personalizar ondulações em um app, consulte RippleTheme (I546c5).

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

  • 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 do destino dele (I16996).

  • Correção de um bug que não permitia definir a largura do campo de texto do material como menor que 280.dp (I78373).

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

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

  • Surface agora pode ter vários filhos de layout (I66a92, b/144488459).

  • Os elementos invalidate e compositionReference() foram descontinuados e substituídos por currentRecomposeScope e rememberCompositionReference, respectivamente (I583a8).

  • Mudança de PopupPositionProvider para usar coordenadas relativas à janela, não coordenadas globais. Renomeação de parentGlobalBounds para anchorBounds e mudança de windowGlobalBounds para windowSize: IntSize (I2994a).

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

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

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

  • Easing mudou para uma interface funcional (Ib14e5).

  • 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 você vai precisar fazer a importação delas manualmente quando forem usadas. Sobrecargas de nova extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

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

  • Modifier.toolingGraphicsLayer, que adiciona um modificador de camada gráfica quando a inspeção é ativada, foi adicionado (I315df).

  • FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer mudanças (I2d898, b/177000821).

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

  • Experimente usar o TestCoroutineDispatcher nos testes (I532b6).

  • A API de gráficos vetoriais foi atualizada para oferecer suporte à análise de tonalidades aplicada à raiz dos gráficos vetoriais (Id9d53, b/177210509).

Versão 1.0.0-alpha10

13 de janeiro de 2021

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

Mudanças na API

  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • @ExperimentalTesting foi renomeado para @ExperimentalTestApi para ser consistente com anotações de API experimentais semelhantes (Ia4502, b/171464963).
  • Position foi renomeado como DpOffset e getDistance() foi removido (lb2dfd).
  • Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
  • Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
  • O uso de FlowRow e FlowColumn foi descontinuado. 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).
  • 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).

Correções de bugs

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

Versão 1.0.0-alpha09

16 de dezembro de 2020

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

Mudanças na API

  • A API foi adicionada para acionar manualmente a animação definida e arrastar em Modifier.swipeable (Iaa17a, b/162408885).
  • Renomeação de objetos *Constants, como ButtonConstants, para terminar com "Defaults", como ButtonDefaults. Também remove os prefixos default desnecessários das propriedades nesses novos objetos (Ibb915, b/159982740).
  • O Compose é compatível com getters de propriedade que podem fazer invocações de composição. A compatibilidade permanece, mas a sintaxe para declarar um getter da propriedade como @Composable foi modificada.

    A sintaxe agora obsoleta para fazer isso era a anotação da propriedade em si:

        @Composable val someProperty: Int get() = ...
    

    A sintaxe que agora é correta para fazer isso é a anotação do getter da propriedade:

       val someProperty: Int @Composable get() = ...
    

    As duas sintaxes vão funcionar por algum tempo, mas a antiga descontinuada vai causar um erro de compilação no futuro (Id9197).

  • Foi adicionada a biblioteca androidx.compose.material:material-ripple, que contém APIs de ondulação para permitir a criação de componentes interativos sem a necessidade do restante da biblioteca do Material Design. rememberRippleIndication foi descontinuado e substituído por rememberRipple (Ibdf11).

Correções de bugs

  • Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
  • O ShaderBrush foi refatorado para criar lentamente uma instância de sombreador quando as informações de dimensionamento do ambiente de desenho estão disponíveis. Isso é útil para definir gradientes que ocupam os limites de desenho completos de um elemento 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).

  • O uso de LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed foi descontinuado. Use LazyColumn e LazyRow (I5b48c).

  • Dp.VectorConverter, Position.VectorConverter etc. foram movidos para animation-core, e os VectorConveters antigos foram descontinuados (If0c4b).

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

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

  • O comportamento de posicionamento de DropdownMenus foi mudado de acordo com a especificação do Material Design (I34c72, b/168594123).

  • Adição de suporte a TextFields para o InteractionState (I61d91).

  • Adição de Modifier.clearAndSetSemantics para limpar a semântica dos descendentes e definir novas (I277ca).

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

Versão 1.0.0-alpha08

2 de dezembro de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha08, androidx.compose.material:material-icons-core:1.0.0-alpha08 e androidx.compose.material:material-icons-extended:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.

Mudanças na API

  • 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).
  • Foi adicionada uma verificação de lint para posicionamento e nomeação do parâmetro lambda de composição, para checar 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).
  • 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 foram movidas para a interface (I6f05c).
  • fun RippleIndication() foi descontinuado e substituído por rememberRippleIndication() para consistência com outras APIs (Id8e2c).
  • 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).

Correções de bugs

  • A ação semântica Dismiss foi adicionada (I2b706).
  • As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. Foi criado o arquivo DrawModifierDeprecated.kt para incluir os métodos typealiases/helper para ajudar na migração das APIs descontinuadas para as atuais (Id6044, b/173834241).
  • Modifier.drawLayer foi renomeado como Modifier.graphicsLayer. Além disso, as classes relacionadas foram atualizadas para GraphicsLayer, de acordo com o feedback da API (I0bd29, b/173834241).
  • <T> foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).
  • Adição de APIs Modifier.scale/rotate como conveniências para drawLayer.
    • O elemento Modifier.drawOpacity foi renomeado como Modifier.alpha.
    • Modifier.drawShadow foi renomeado como Modifier.shadow (I264ca, b/173208140).
  • 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).
  • Introdução às APIs SweepGradientShader e SweepGradientBrush (Ia22c1).
  • Uma verificação de lint foi adicionada para parâmetros Modifier em funções de composição. Essa verificação de lint confere a nomenclatura, o tipo de retorno, o valor padrão e a ordem do parâmetro para garantir consistência com as diretrizes do Compose (If493b).
  • API TextFieldValue atualizada.
    • TextFieldValue.composition agora é somente leitura.
    • Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
  • Foi adicionada uma nova sobrecarga de Modifier.drawLayer(). É necessário um bloco lambda em um novo GraphicsLayerScope, onde você define os parâmetros de camada de uma forma que permite pular a recomposição e o novo layout quando a mudança de estado acontece. O DrawLayerModifier agora é interno como forma de preparo para a migração da lógica para o método placeable.placeWithLayer() do LayoutModifier (I15e9f, b/173030831).
  • Ambientes nomeados com Ambient como sufixo foram descontinuados e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • 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).
  • 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).
  • id foi renomeado como layoutId para LayoutIdParentData. 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.material:material:1.0.0-alpha07, androidx.compose.material:material-icons-core:1.0.0-alpha07 e androidx.compose.material:material-icons-extended:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.

Mudanças na API

  • O uso de Emphasis foi descontinuado e substituído por AmbientContentAlpha. AmbientContentAlpha é uma abstração mais simples que representa o conteúdo alfa em parte da hierarquia, de forma semelhante a como AmbientContentColor representa a cor de conteúdo preferencial. Text e Icon agora consomem o valor atual de AmbientContentAlpha por padrão, e você pode fazer isso manualmente: color.copy(alpha = AmbientContentAlpha.current) para ter o mesmo efeito nos seus componentes. Em vez de usar ProvideEmphasis, você pode fornecer um valor diretamente pelo AmbientContentAlpha e usar os novos níveis padrão em ContentAlpha para substituir o EmphasisLevels antigo (Idf03e, b/159017896).
  • Adição de androidx.compose.material.AmbientContentColor para substituir androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770).
  • androidx.compose.material.Text foi adicionado para substituir androidx.compose.foundation.Text como um componente Text temático e de alto nível. Para um componente de texto básico que não consuma a cor / o estilo do texto do tema, use BasicText (Ie6ae0).
  • Adição de maxLines a TextFields (Ib2a5b).
  • Atualize TextFields para aceitar KeyboardOptions (Ida7f3).
  • Surface agora usa a elevação absoluta (total) ao calcular sobreposições de elevação. Assim, uma Surface aninhada em outra Surface vai usar a elevação combinada para desenhar a sobreposição (I7bd2b, b/171031040).

Correções de bugs

  • captureToBitmap movidos para captureToImage. (I86385).
  • 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).
  • Renomeação de KeyboardOptions como ImeOptions (I82f36).
  • KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
  • O uso de BaseTextField foi descontinuado. Use BasicTextField (I896eb).
  • A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
  • FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
  • A API Icon foi atualizada para assumir Color.Unspecified como uma tonalidade possível que renderiza 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).
  • 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).
  • LaunchedTask foi renomeado como LaunchedEffect para fins de consistência com as APIs SideEffect e DisposableEffect. Para incentivar as práticas recomendadas, o uso de LaunchedEffect sem parâmetros de assunto não será permitido (Ifd3d4).
  • 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).

Versão 1.0.0-alpha06

28 de outubro de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha06, androidx.compose.material:material-icons-core:1.0.0-alpha06 e androidx.compose.material:material-icons-extended: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 FloatingActionButtonElevation para representar a elevação usada por FABs em estados diferentes. Consulte FloatingActionButtonConstants.defaultElevation() para conferir a implementação padrão (I2d4f5).
  • Adição da interface SwitchColors para representar cores usadas por um Switch em estados diferentes. Consulte SwitchConstants.defaultColors para personalizar essas cores (I93805).
  • Adição das interfaces ButtonElevation e ButtonColors para representar a elevação e as cores usadas por botões em estados diferentes. Consulte as funções padrão em ButtonConstants para personalizar esses parâmetros (Ic5b7b).
  • Adição da interface RadioButtonColors para representar cores usadas por um RadioButton em estados diferentes. Consulte RadioButtonConstants.defaultColors() para personalizar as cores usadas em estados diferentes (I74130).
  • Adição da interface CheckboxColors para representar cores usadas por uma caixa de seleção em estados diferentes. Consulte CheckboxConstants.defaultColors() para personalizar as cores usadas em estados diferentes (I7dbdb).

Correções de bugs

  • Os componentes do Material Design não definem mais a elevação como zIndex. Isso significa que, dentro do mesmo pai, o filho com tamanho de sombra maior não vai ser desenhado sobre o filho com o menor automaticamente. Se você ainda precisar desse comportamento, defina o Modifier.zIndex() manualmente, quando necessário (I70417, b/170623932).
  • VectorPainter foi descontinuado e substituído por rememberVectorPainter para indicar melhor que a API combinável 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).
  • DrawScope e ContentDrawScope foram refatorados para serem interfaces em vez de classes abstratas.
    • Criação da implementação CanvasDrawScope do DrawScope.
    • Implementações refatoradas do DrawScope para usar o CanvasScope.
    • Criação do DrawContext para unir dependências para o DrawScope.
    • Métodos que tiveram o uso descontinuado no DrawScope foram removidos (I56f5e).
  • Box agora é uma função inline (Ibce0c, b/155056091).

Versão 1.0.0-alpha05

14 de outubro de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha05, androidx.compose.material:material-icons-core:1.0.0-alpha05 e androidx.compose.material:material-icons-extended:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.

Mudanças na API

  • Pop-ups e caixas de diálogo agora herdam FLAG_SECURE da janela mãe. Adição de opção para configurar isso explicitamente (I64966, b/143778148, b/143778149)
  • Modifier.swipeable agora tem limites de 56.dp para estados por padrão (Iab825, b/168610267).
  • Todos os estados de scaffold marcados como @Stable. drawerGesturesEnabled em ScaffoldState foram movidos para o próprio Scaffold (I36645, b/168297016).
  • Remoção de um tipo anulável dos parâmetros lambda Scaffold, você pode usar emptyContent() para representar a ausência de conteúdo para um determinado parâmetro (I2b318, b/157633857, b/158551084).
  • 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)
  • AmbientElevationOverlay foi adicionado, permitindo a personalização ou desativação da sobreposição de elevação padrão aplicada em Surfaces com o tema escuro (I5b74d).

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)
  • 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)
  • launchInCompose foi renomeado como LaunchedTask para corresponder às diretrizes da API Compose (I99a8e)
  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned() (I587e8, b/169083903).

Versão 1.0.0-alpha04

1º de outubro de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha04, androidx.compose.material:material-icons-core:1.0.0-alpha04 e androidx.compose.material:material-icons-extended:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.

Mudanças na API

  • Exposição de parâmetros InteractionState em componentes do Material com estado para permitir a mudança e a leitura / o controle do estado (Iaca5f, b/168025711, b/167164434).
  • Mudanças nos parâmetros *color em RadioButton e TriStateCheckbox para personalizar totalmente as cores usadas em cada estado, além de mudar como as cores são animadas entre os estados, se desejado. Consulte as novas funções de cor animateDefault* em CheckboxConstants e RadioButtonConstants para encontrar mais informações (I1c532).
  • Renomeação de rememberBackdropState como rememberBackdropScaffoldState e adição de outro parâmetro para o relógio da animação. Renomeação do parâmetro backdropScaffoldState do BackdropScaffold como scaffoldState. Renomeação do BackdropConstants como BackdropScaffoldConstants (Ib644d).
  • Adição do componente experimental BottomSheetScaffold (Ie02f0, b/148996320).
  • Adição do componente experimental ModalBottomSheetLayout (Ic209e, b/148996320).
  • Renomeação de ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation como defaultElevation. Agora, um valor Dp é retornado em vez de um AnimatedValue (I5f3ed).

Correções de bugs

  • Atualização de várias APIs Graphics
    • As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
    • Os métodos Rect.expandToInclude e Rect.join foram removidos.
    • Documentação do Radius atualizada para informar oval, além de elíptico.
    • Foi adicionada documentação para indicar que o construtor público da classe Radius in-line não pode ser chamado diretamente, mas os objetos Radius precisam ser instanciados pelos construtores de função deles.
    • Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
    • O uso de Rect.shift foi descontinuado e substituído por Rect.translate.
    • Remoção das APIs RoundRect.grow e Rect.shrink.
    • Renomeação de RoundRect.outerRect para Rect.boundingRect.
    • Remoção dos métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium.
    • Renomeação de RoundRect.longestSide para RoundRect.maxDimension.
    • Renomeação de RoundRect.shortestSide para RoundRect.minDimension.
    • Mudança de RoundRect.center para que seja uma propriedade em vez de uma função.
    • O construtor RoundRect foi atualizado para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
    • As APIs Size, que pressupunham ser um retângulo com origem em 0,0, foram removidas.
    • Adição de uma API de destruição ao Radius.
    • Migração de várias funções de extensão RoundRect para serem propriedades
    • (I8f5c7, b/168762961).
  • O uso de foundation.Box foi descontinuado. Use foundation.layout.Box (Ie5950, b/167680279).
  • Stack foi renomeado como Box. O uso do elemento Box anterior vai ser descontinuado e substituído pelo novo Box em compose.foundation.layout. O comportamento do novo Box quando tem vários filhos é os empilhar um em cima do outro. Isso é diferente do Box anterior, que se comportava de maneira semelhante à Column (I94893, b/167680279).
  • O uso de parâmetros de decoração do Box foi descontinuado. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
  • Atualização de várias APIs Graphics
    • As APIs DrawScope foram atualizadas com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois dele ser invocado.
    • Atualização da documentação do clipPath para se referir ao Path em vez do retângulo arredondado.
    • Correção do espaçamento na documentação para o parâmetro correto em clipPath.
    • DrawScope.drawCanvas foi renomeado como drawIntoCanvas, e o parâmetro de tamanho foi removido.
    • Renomeação de parâmetros dx/dy no método de encarte como horizontal e vertical.
    • Foi adicionada uma sobrecarga do encarte, que fornece o mesmo valor de encarte a todos os quatro limites.
    • A documentação sobre o método do encarte que indicava que o encarte 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).
  • 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).

Versão 1.0.0-alpha03

16 de setembro de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha03, androidx.compose.material:material-icons-core:1.0.0-alpha03 e androidx.compose.material:material-icons-extended:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.

Mudanças na API

  • Renomeia o parâmetro onSelect de BottomNavigationItem para onClick (I91925, b/161809324)
  • Adicionado o parâmetro InteractionState a BottomNavigationItem e Tab, permitindo a mudança desse estado e o ajuste de como o componente aparece em diferentes estados (Ia3e9e, b/168025711).
  • Remove os parâmetros disabledBackgroundColor e disabledContentColor dos botões. Use as novas funções de cor padrão dentro de ButtonConstants. Se você já define contentColor/backgroundColor explicitamente, use essas funções padrão e personalize alguns ou todos os parâmetros para evitar a substituição da cor para os estados ativado/desativado (If9b52).
  • A cor de fundo do Textfield não usa mais a versão Alfa implicitamente. Em vez disso, qualquer cor fornecida pelo parâmetro backgroundColor será usada diretamente (Iecee9, b/167951441).
  • O InnerPadding foi renomeado como PaddingValues (I195f1, b/167389171).
  • Os parâmetros resistanceFactorAtMin e resistanceFactorAtMax em Modifier.swipeable foram substituídos por um único parâmetro de resistência. Um novo método defaultResistanceConfig foi adicionado em SwipeableConstants (I54238).
  • Foi adicionado suporte à elevação com estado animado para Button e FloatingActionButton. A elevação agora é animada entre os estados padrão e pressionado. Para personalizar a elevação entre os estados, use ButtonConstants.defaultAnimatedElevation() e FloatingActionButtonConstants.defaultAnimatedElevation() em vez de definir um valor de DP fixo em todos os casos (I37925).
  • O parâmetro Label se tornou opcional dentro de TextField e OutlinedTextField (I267f6 e b/162234081).

Correções de bugs

  • O uso das funções de teste globais, como onNode ou waitForIdle, foi descontinuado. Migre para as novas contrapartes que estão definidas em ComposeTestRule (I7f45a).
  • O elemento DpConstraints e as APIs que o usavam foram descontinuados (I90cdb, b/167389835).
  • Os parâmetros minWidth e maxWidth de widthIn foram renomeados para min e max. O mesmo ocorreu para preferredWidthIn, heightIn, preferredHeightIn (I0e5e1, b/167389544).
  • Remoção das ações de semântica de rolagem para frente/para trás. Adição de etapas em AccessibilityRangeInfo (Ia47b0).
  • Os usos da gravidade foram renomeados de forma consistente para "align" ou "alignment" nas APIs de layout (I2421a, b/164077038).
  • onNode e outros métodos globais foram adicionados à ComposeTestRule, porque os atuais vão ser descontinuados (Ieae36).
  • 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.material:material:1.0.0-alpha02, androidx.compose.material:material-icons-core:1.0.0-alpha02 e androidx.compose.material:material-icons-extended:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.

Mudanças na API

  • Adição de um componente experimental BackdropScaffold (Iad908).

Correções de bugs

  • A Matrix4 foi substituída por Matrix. Todas as outras partes do pacote vectormath foram removidas (Ibd665, b/160140398).

Versão 1.0.0-alpha01

26 de agosto de 2020

Lançamento de androidx.compose.material:material:1.0.0-alpha01, androidx.compose.material:material-icons-core:1.0.0-alpha01 e androidx.compose.material:material-icons-extended:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.

Problema conhecido

O primeiro caractere em um TextField do Material não pode ser removido usando um backspace (b/165956313).

Versão 0.1.0-dev

Versão 0.1.0-dev17

19 de agosto de 2020

Lançamento de androidx.compose.material:material:0.1.0-dev17, androidx.compose.material:material-icons-core:0.1.0-dev17 e androidx.compose.material:material-icons-extended:0.1.0-dev17. A versão 0.1.0-dev17 contém estas confirmações.

Mudanças na API

  • RadioGroup e RadioGroupItems, que já tinham sido descontinuados, foram removidos. Use Row e RadioBotton (I381b7, b/163806637).
  • 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).
  • Renomeação de algumas propriedades em SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Adição de uma função rememberSwipeableState para criar SwipeableStates (I2fc9c, b/163129614, b/163132293).
  • Foi adicionado suporte à snackbar no posicionamento e enfileiramento adequado. Use a função de suspensão SnackbarHostState.showSnackbar para oferecer o suporte. Além disso:
    • Adição de componentes do SnackbarHost. Ele hospeda snackbars com base no estado e é responsável pela transição entre eles.
    • SnackbarHostState foi adicionado para permitir o controle sobre snackbars e hosts de snackbars, além do dissociamento do ScaffoldState. Você também pode acessar esse estado por scaffoldState.snackbarHostState.
    • Foi adicionada uma sobrecarga de snackbar para oferecer suporte à interface comum entre snackbarHostState e as próprias snackbars (I79aaa).
  • Um parâmetro ativado foi adicionado ao IconButton, e os parâmetros em IconToggleButton foram reordenados (I0a941, b/161809385, b/161807956).
  • Remoção da versão do ListItem com a API baseada em strings. Use a versão de slot (Ib8f57, b/161804681).
  • O componente FilledTextField descontinuado foi removido. Use TextField para conseguir a implementação do Material Design no campo de texto preenchido (I5e889).
  • AlertDialog agora usa FlowRow para botões (I00ec1, b/161809319, b/143682374).
  • Adição de parâmetros em Modifier.swipeable para mudar a quantidade de resistência ao deslizar para além dos limites. Remoção dos parâmetros [min/max]Value (I93d98).
  • Adição do parâmetro backgroundColor ao LinearProgressIndicator e remoção do preenchimento interno de CircularProgressIndicator. Adição de novo ProgressIndicatorConstants.DefaultProgressAnimationSpec, que pode ser usado como AnimationSpec padrão ao animar o progresso entre os valores (If38b5, b/161809914, b/161804677).
  • Adição do parâmetro opcional velocityThreshold a Modifier.swipeable (I698ba).
  • bottomBarSize, fabSize e outros não estão mais disponíveis em ScaffoldState. Use Modifier.onPosition no componente cujo tamanho você quer descobrir. Os parâmetros contentColor e Modifier foram adicionados ao Scaffold (Ic6f7b, b/161811485, b/157174382).
  • Renomeação e reordenação de alguns parâmetros em Tab para consistência com outras APIs (Ia2d12, b/161807532).
  • Divisão de TabRow em TabRow e ScrollableTabRow, removendo isScrollable de TabRow. Exposição de edgePadding em ScrollableTabRow, permitindo controlar o espaço livre antes/depois das guias (I583e8, b/161809544).
  • Remoção do objeto TabRow e substituição por TabConstants. Mudança de TabRow.TabPosition para o nível superior (TabPosition) e do nome de indicatorContainer para indicator. Consulte as amostras e a documentação para encontrar informações detalhadas sobre como usar a API atualizada e os padrões (I54d45, b/161809544).
  • Ajuste do parâmetro de limites em Modifier.swipeable. Agora, ele usa um par de estados (do tipo T) e retorna o limite entre eles na forma de um ThresholdConfig. Adição de um parâmetro dismissThresholds a SwipeToDismiss, que é um lambda (DismissDirection) -> ThresholdConfig (Ie1080).
  • O controle deslizante tem mais cores para personalização granular (I73e64, b/161810475).
  • O parâmetro de cores do cartão foi renomeado para backgroundColor (I01fc1, b/161809546).
  • O snackbar tem cores de plano de fundo e conteúdo personalizáveis (I238f2, b/161804381).
  • Adição dos parâmetros modifier, backgroundColor, contentColor e scrimColor a Drawers (I23655, b/161804378).
  • O elemento combinável state { ... } foi descontinuado e substituído pelas chamadas explícitas de remember { mutableStateOf(...) } para maior clareza. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrão by mutableStateOf() para delegação de propriedade de classe (Ia5727)
  • O parâmetro de preenchimento do botão foi renomeado como contentPadding (Id252e, b/161809394).
  • Adição de um componente experimental do Material, SwipeToDismiss (I129e5).

Correções de bugs

  • Removidos onChildPositioned e OnChildPositionedModifier. Os desenvolvedores precisam usar onPositioned e OnPositionedModifier no layout filho (I4522e, b/162109766).
  • 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).
  • IntSize agora é uma classe inline (I2bf42).
  • 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).
  • PxBounds foi descontinuado e substituído por Rect. Atualização de todos os usos de PxBounds com rect e adição de descontinuação/substituição por anotações para auxiliar na migração (I37038, b/162627058).
  • RRect foi renomeado como RoundRect para se ajustar melhor aos padrões de nomenclatura do Compose. Construtores de função semelhante foram criados, e os construtores de função do RRect foram descontinuados (I5d325).

Versão 0.1.0-dev16

5 de agosto de 2020

Lançamento de androidx.compose.material:material:0.1.0-dev16, androidx.compose.material:material-icons-core:0.1.0-dev16 e androidx.compose.material:material-icons-extended:0.1.0-dev16. A versão 0.1.0-dev16 contém estas confirmações.

Mudanças na API

  • As cores agora são uma classe final em vez de uma interface. Em vez de estender e fornecer uma implementação personalizada, crie um novo ambiente para seu objeto de tema personalizado e acesse o objeto de tema pelo novo ambiente nos seus componentes, da mesma forma que o MaterialTheme funciona internamente (Ibae84).
  • ColorPalette foi renomeado como Colors para mapear melhor o sistema de cores do Material Design e eliminar a confusão sobre ColorPalette ser um objeto de tema "genérico", em vez de uma implementação específica do sistema de cores do Material Design. lightColorPalette e darkColorPalette foram renomeados como lightColors e darkColors, respectivamente (I9e976, b/161812111).
  • O parâmetro text de BottomNavigationItem foi renomeado como label, onSelected como onSelect, activeColor como selectedContentColor e inactiveColor como unselectedContentColor. A ordem dos parâmetros foi atualizada de acordo com as diretrizes (Icb605, b/161809324).
  • Modifier.stateDraggable foi completamente reformulado e renomeado como Modifier.swipeable. Uma nova classe SwipeableState foi introduzida, e as DrawerState e BottomDrawerState foram refatoradas para herdar dela. [Modal/Bottom]O DrawerLayout não usa mais um parâmetro onStateChange (I72332, b/148023068).
  • O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
  • Adição da anotação ExperimentalMaterialApi. RippleTheme foi marcado como Experimental (Ic5fa0, b/161784800).
  • 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).

Correções de bugs

  • O uso de OnChildPositioned foi descontinuado. Use OnPositioned no filho (I87f95, b/162109766).
  • Resolução de correções amplas 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.
  • A caixa de diálogo foi movida para a interface (I47fa6).
  • Remoção de SemanticsNodeInteraction.performPartialGesture. 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).
  • Modifier.deternimateProgress foi renomeado como Modifier.progressSemantics (I9c0b4).
  • Atualização de material-icons-extended com os ícones mais recentes adicionados a Material.io/icons (I4b1d3).
  • Exigência de que o tipo T seja especificado explicitamente para o transitionDefinition (I1aded).
  • 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).
  • AndroidComposeTestRule foi renomeada como createAndroidComposeRule (I70aaf).
  • Adição de isFocused() e isNotFocused() SemanticsMatcher (I0b760).
  • Remoção de BaseGestureScope.globalBounds, que não pode ser usado em testes. Use coordenadas locais para o nó com que você está interagindo (Ie9b08).
  • Correção da posição do pop-up em telas cortadas (Idd7dd).
  • Modifier.drawBackground foi renomeado como Modifier.background (I13677).

Versão 0.1.0-dev15

22 de julho de 2020

Lançamento de androidx.compose.material:material:0.1.0-dev15, androidx.compose.material:material-icons-core:0.1.0-dev15 e androidx.compose.material:material-icons-extended:0.1.0-dev15. A versão 0.1.0-dev15 contém estas confirmações.

Atualização de dependências

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

  • O uso da anotação @Model foi descontinuado. Use state e mutableStateOf como alternativas. Essa decisão de descontinuação foi tomada após uma discussão cuidadosa.

    Motivo

    O motivo inclui, mas não se limita ao seguinte:

    • Reduz a área de superfície da API e os conceitos que precisamos ensinar.
    • Alinha-se melhor a outros kits de ferramentas comparáveis (Swift UI, React, Flutter).
    • Decisão reversível. Podemos trazer @Model de volta a qualquer momento.
    • Remove o uso de caso isolado e dificulta responder a perguntas sobre como configurar o @Model como coisas que precisamos lidar.
    • Classes de dados @Model, equals, hashcode etc.
    • Como faço para que algumas propriedades sejam "observadas" e outras não?
    • Como especificar a igualdade organizacional x referencial a ser usada na observação?
    • Reduz a "mágica" no sistema. Reduziria a probabilidade de alguém supor que o sistema era mais inteligente do que é (ou seja, saber diferenciar uma lista).
    • Torna a granularidade da observação mais intuitiva.
    • Aprimora a refatoração da propriedade "variável" na classe.
    • Abre possibilidades para fazer otimizações específicas do estado.
    • Alinha-se melhor ao restante do ecossistema e reduz ambiguidades em relação a imutáveis ou à "adoção do estado mutável".

    Notas de migração

    Quase todos os usos existentes de @Model são facilmente transformados de duas maneiras. O exemplo abaixo tem uma classe @Model com duas propriedades apenas para fins de exemplo e sendo usada em um composto.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Alternativa 1: use State<OriginalClass> e crie cópias.

    Essa abordagem é facilitada com as classes de dados do Kotlin. Basicamente, transforme todas as propriedades var anteriores em propriedades val de uma classe de dados, use state em vez de remember e atribua o valor do estado a cópias clonadas do original usando o método de conveniência copy(...) da classe de dados.

    É importante observar que essa abordagem só funciona quando as únicas mutações para essa classe foram feitas no mesmo escopo em que a instância de State foi criada. Se a classe estiver se modificando internamente fora do escopo de uso e você estiver contando com a observação disso, a próxima abordagem será a que você deve usar.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Alternativa 2: use mutableStateOf e delegados de propriedade.

    Essa abordagem é facilitada com os delegados de propriedade do Kotlin e a API mutableStateOf, que permite criar instâncias do MutableState fora da composição. Basicamente, substitua todas as propriedades var da classe original por var com mutableStateOf como delegado da propriedade. A vantagem é que não haverá mudança no uso da classe, apenas na implementação interna dela. No entanto, o comportamento não é totalmente idêntico ao exemplo original, já que cada propriedade agora é observada/inscrita individualmente. Portanto, as recomposições que você vê após essa refatoração podem ser mais restritas, o que é algo bom.

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744).

  • O callback onFocusChange em campos de texto foi renomeado como onFocusChanged (Ida4a1).

  • Adição de parâmetros de limites em stateDraggable para especificar limites entre âncoras. Isso foi feito para definir um limite de 56 dp na gaveta inferior. Além disso, o BottomDrawerLayout agora usa um enum BottomDrawerState separado (I533fa).

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

  • Remoção da substituição obsoleta do elemento combinável FilledTextField (I7f8f8).

  • O objeto Button, que contém os padrões usados pela função Button, foi renomeado como ButtonConstants (I7c5f7, b/159687878).

  • O espaço de conteúdo do Button agora se comporta como a Row. Isso é útil quando você precisa ter um ícone com um texto. Confira exemplos do Button sobre como criá-lo (I0ff10, b/158677863).

  • O uso de RadioGroup e RadioGroupItem foi descontinuado. Use o Box com Modifier.selectable, Row e Column para fazer um conjunto adequado de radioButton de opções pelo seu design (I7f5cf, b/149528535).

  • O Material Outlined Textfield foi adicionado (I1a518).

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

  • TabRow.TabPosition contém posição em Dp, não em IntPx (I34a 07, b/158577776).

  • Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).

  • Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).

  • O uso de Modifier.ripple foi descontinuado. 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 o transmita ao recurso de clique como o parâmetro de indicação (I101cd, b/155375067).

  • A API Scaffold foi reformulada: alguns parâmetros mudaram de nome e adicionaram novos parâmetros para melhorar a personalização. Um getter foi adicionado aos tamanhos de consulta de Fab, TopBar e BottomBar (I0e7ce).

  • O componente DropdownMenu foi adicionado ao ui-material, uma implementação do menu do Material Design (I9bb3d).

  • Permissão para mostrar/ocultar o teclado de software manualmente usando SoftwareKeyboardController (Ifb9d6, b/155427736).

  • A Modifier.indication foi adicionada ao pacote básico. Use-a para mostrar as indicações de pressionar/arrastar/outros nos elementos personalizados interativos (I8425f, b/155287131).

  • Implementações consolidadas de CanvasScope para que agora exista apenas DrawScope e ContentDrawScope. CanvasScope foi renomeado como DrawScope. DrawScope foi atualizado para implementar a interface de Density e fornecer LayoutDirection. A subclasse DrawScope foi excluída em ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque DrawScope já fornece isso de maneira automática (I1798e).

  • O Emphasis.emphasize() foi renomeado como Emphasis.applyEmphasis() (Iceebe).

  • Os botões desativados agora seguem visualmente a especificação do Material Design (I47dcb, b/155076924, links em inglês).

  • O FilledTextField recebe a ação do IME (editor de método de entrada, na sigla em inglês), a transformação visual e o suporte ao tipo de teclado (I1f9cf, b/155075201).

  • Adiciona o parâmetro strokeWidth a CircularProgressIndicator para personalizar o tamanho do traço. Para alterar o tamanho do traço (altura) de um LinearProgressIndicator, use Modifier.preferredHeight() ou outro modificador de tamanho (Icea16, b/154919081).

  • Adiciona o parâmetro strokeWidth a CircularProgressIndicator para personalizar o tamanho do traço. Para alterar o tamanho do traço (altura) de um LinearProgressIndicator, use Modifier.preferredHeight() ou outro modificador de tamanho (Icea16, b/154919081).

  • Uma API de slot foi adicionada para ícones finais e principais no FilledTextField e no processamento do estado de erro (Ic12e0).

  • A cor padrão da FAB e da FAB estendida foi modificada para MaterialTheme.colors.secondary (I3b9b9, b/154118816).

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

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

  • O controle deslizante agora não tem estado. Os usuários agora precisam transmitir e atualizar o estado por conta própria, assim como em qualquer outro controle (Ia00aa, link em inglês).

  • StaticDrawer foi removido. Se precisar desse componente, use Box com largura de material especificado (I244a7).

  • Adição da implementação do Material Design do campo de texto preenchido (Ic75cd).

  • Adição do parâmetro de modificador ao ListItem e reordenação dos parâmetros para promover o corpo da lambda final (I66e21).

  • Adição do parâmetro de construtor defaultFontFamily a Typography, permitindo especificar a família de fontes padrão a ser usada para qualquer TextStyles que não tenha uma família definida (I89d07).

  • Material Data Tables temporariamente removido da plataforma da API (Iaea61, link em inglês).

  • Parâmetros foram renomeados no divisor combinável (Ic4373).

  • Parâmetros filhos que podem ser compostos renomeados (Ia6d19).

  • MaterialTheme.emphasisLevels foi removido. Use EmphasisAmbient.current para recuperar os níveis de ênfase (IB5e40).

  • O sistema de temas de forma foi 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).

  • As APIs MaterialTheme, como MaterialTheme.colors(), MaterialTheme.typography(), foram mudadas de funções para propriedades. Remoção dos parênteses das chamadas existentes. Nenhuma mudança de comportamento é esperada (I3565a).

  • As APIs FloatingActionButton foram refatoradas para aceitar lambdas compostos em vez de primitivos. Confira as amostras atualizadas para entender como usar (I00622).

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

  • Surface e Card foram movidos de androidx.ui.material.surface para androidx.ui.material (I88a6d, b/150863888).

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

  • Image foi renomeado como ImageAsset para diferenciar melhor os dados do Image e o futuro composto Image, usado para participar do layout e desenhar conteúdo. Foi criado o método de extensão _Body:Created em android.graphics.Bitmap, Bitmap.asImageAsset(), para criar uma instância de um ImageAsset útil e combinar o desenvolvimento de aplicativos para Android tradicionais com o framework do Compose (Id5bbd).

  • Remoção da API Snackbar com parâmetros String a favor do uso da sobrecarga que aceita lambdas compostas. Consulte amostras atualizadas para entender melhor o uso (I55f80).

  • As APIs Tab foram refatoradas para aceitar lambdas text e icon (Ia057e, link em inglês).

  • Adição do componente BottomNavigation. Consulte os documentos e as amostras para entender melhor o uso (I731a0).

  • Adição de Icon, IconButton and IconToggleButton e remoção de 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).

  • ButtonStyle foi substituído por funções distintas, e a sobrecarga de texto (string) foi removida. Confira exemplos atualizados para informações de uso (If63ab, b/146478620, b/146482131).

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

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

  • Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do Ambient<T> para encontrar mais detalhes (I4c7ee, b/143769776).

  • Adição do componente material Scaffold. Implementações do Scaffold (I7731b).

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

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).
  • 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).
  • runOnIdleCompose foi renomeado como runOnIdle (I83607).
  • 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).
  • 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).
  • A API Transition foi modificada para retornar um TransitionState em vez de passar o TransitionState para filhos. Isso torna a API mais consistente com as APIs animate() (I24e38).
  • Foi adicionada uma classe de unidade IntBounds, que representa os limites de pixels inteiros do layout. A API de PopupPositionProvider foi atualizada para usar essa classe (I0d8d0, b/159596546).
  • Adição de uma nova flag opcional, useUnmergedTree, aos localizadores de teste (I2ce48).
  • APIs de teste de tamanho descontinuadas foram removidas (Iba0a0).
  • Remoção da classe inline do Shader que encapsulava a classe NativeShader. NativeShader foi renomeado como Shader. A classe in-line Shader encapsulada não adicionava valor à superfície da API e era uma classe in-line. Portanto, use a classe NativeShader diretamente (I25e4d).
  • Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
  • Material DropdownMenu agora pode ser rolado. (Ide699)
  • O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível dentro do callback pelo objeto do escopo da medida (Ic7d9d).
  • 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).
  • Switch agora aparece em um estado desativado quando enabled é definido como falso (If4624, b/155941869, b/159331694).
  • Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).
  • Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).
  • A classe Radius foi refatorada para ser uma classe inline. Os métodos de criação complementares foram removidos e substituídos pelo construtor de função com parâmetro padrão para que o raio ao longo do eixo y corresponda ao parâmetro obrigatório de raio do eixo x.

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

  • Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe inline para usar um valor long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).

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

  • O componente Toggleable foi descontinuado. Use o Modifier.toggleable (I35220, b/157642842).

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

  • onClick, que não era invocado para DropdownMenuItems, foi corrigido (I3998b, b/157673259).

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

  • 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 (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 de modo a depender apenas de tipos primitivos e Dp para os parâmetros de pixel (Iede0b).

  • O Modifier.semantics foi descontinuado para permitir o uso de componentes de alto nível (I4cfdc).

  • A API DrawLayer Modifiers mudou: outlineShape foi renomeada como Shape e tem o valor padrão RectangleShape, agora não anulável. clipToOutline foi renomeado como clip. clipToBounds foi removido porque é o mesmo que clip == true com RectangleShape (I7ef11, b/155075735).

  • As APIs combináveis de nível superior que expõem uma tela foram atualizadas para expor CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a um Canvas podem usar o método de extensão drawCanvas, que fornece um callback para emitir comandos de desenho (I80afd).

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

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

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

  • O FocusManagerAmbient foi removido. Use FocusModifier.requestFocus para foco (Ic4826).

  • Criada a API CanvasScope, que envolve um objeto Canvas, para expor uma superfície de API de desenho declarativa e sem estado. As transformações estão contidas no próprio escopo do receptor, e as informações de dimensionamento também têm escopo para os limites inseridos correspondentes. Não é necessário que um consumidor mantenha o próprio objeto de estado Paint para configurar operações de desenho.

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

  • Adição da personalização de cor do cursor ao TextField (I6e33f).

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

  • LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).

  • A interface LayoutModifier descontinuada foi removida (I2a9d6).

  • Substituição do parâmetro CoreTextField/TextField focusIdentifier pelo FocusNode para ser integrado ao subsistema de foco (I7ea48).

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

  • Foi adicionado um novo Modifier.zIndex() para controlar a ordem de renderização dos filhos no mesmo layout pai. A propriedade elevation em DrawLayerModifier foi renomeada como shadowElevation e não controla mais a ordem de renderização. A ordem dos parâmetros para DrawShadow foi modificada: o elevation agora é o primeiro e o shape o segundo, com RectangleShape como padrão (I20150, b/152417501).

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

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

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

  • Criação da API PixelMap para oferecer compatibilidade com consultas de informações de pixel de um ImageAsset (I69ad6).

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

  • O módulo ui-text-compose foi renomeado como ui-text. O ui-text agora contém os elementos ombináveis cCoreText 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).

  • Melhora na API DrawModifier:

    • O escopo do receptor foi definido para draw() ContentDrawScope.
    • Todos os parâmetros em draw() foram removidos.
    • DrawScope tem a mesma interface que o antigo CanvasScope.
    • ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • 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).

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

  • O uso de ColoredRect foi descontinuado. Em vez dele, use Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fa, b/152753731).

  • LayoutResult foi renomeado como MeasureResult (Id8c68).

  • Adição de LayoutModifier2, uma nova API para definir modificadores de layout. LayoutModifier foi suspensa (If32ac).

  • O Modifier plus operator foi substituído por funções de extensão de fábrica (I225e4).

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

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

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

  • Foi adicionada a API VectorPainter para substituir a API de subcomposição já existente de 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).

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

  • A classe RepaintBoundary foi removida e substituída por DrawLayerModifier (I00aa4).

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

  • A função do composto Opacity foi substituída pelo modificador drawOpacity (I5fb62).

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

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

  • Adição de LayerModifier, um modificador que permite adicionar um RenderNode a um Layout. Ele permite definir o recorte, a opacidade, a rotação, o dimensionamento e as sombras. Ele vai substituir o RepaintBoundary (I7100d, b/150774014).

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

  • Criação do composto Image para processar dimensionamento/layout, além de desenhar um determinado ImageAsset na tela. Esse elemento também pode ser usado para renderizar 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).

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

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

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

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

  • O composto DrawShape foi removido. Use o modificador DrawBackground (I7ceb2).

  • Compatibilidade com a direção direita para a esquerda no modificador LayoutPadding (I9e8da).

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

  • A flag ComposeFlags.COMPOSER_PARAM foi atualizada para true, o que muda 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).

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

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

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

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

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