Compose Material
androidx.compose.material
androidx.compose.material.icons
(Consulte os documentos de referência da API para todos os pacotes do Compose)
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
7 de agosto de 2024 | 1.6.8 | - | 1.7.0-beta07 (link em inglês) | - |
Estrutura
O Compose é uma combinação de sete IDs de grupos do Maven no androidx
. Os grupos
contêm um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas
da versão.
Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.
Grupo | Descrição |
---|---|
compose.animation | Crie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário. |
compose.compiler | Transforme funções @Composable e ative otimizações com um plug-in do compilador Kotlin. |
compose.foundation | Crie aplicativos do Jetpack Compose com elementos básicos prontos que podem ser usados para criar suas próprias peças de sistema de design. |
compose.material | Crie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io. |
compose.material3 | Crie IUs do Jetpack Compose usando componentes do Material Design 3, a nova versão do Material Design. O Material 3 inclui temas e componentes atualizados, além de recursos de personalização do Material You, como cores dinâmicas, e foi desenvolvido para ser coeso com o novo estilo visual do Android 12 e com a interface do sistema. |
compose.runtime | Elementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler. |
compose.ui | Componentes fundamentais do Compose UI necessários para interagir com o dispositivo, incluindo layout, desenho e entrada. |
Declarar dependências
Para adicionar uma dependência ao Compose, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle
do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.compose.material:material:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.7
Versão 1.7.0-beta07
7 de agosto de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta07
. A versão 1.7.0-beta07 contém estas confirmações.
Versão 1.7.0-beta06
24 de julho de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta06
. A versão 1.7.0-beta06 contém estas confirmações.
Versão 1.7.0-beta05
10 de julho de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta05
. A versão 1.7.0-beta05 contém estas confirmações.
Versão 1.7.0-beta04
26 de junho de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta04
. A versão 1.7.0-beta04 contém estas confirmações.
Versão 1.7.0-beta03
12 de junho de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta03
. A versão 1.7.0-beta03 contém estas confirmações.
Versão 1.7.0-beta02
29 de maio de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta02
. A versão 1.7.0-beta02 contém estas confirmações.
Mudanças na API
- Atualização da API para definir o estilo dos links: a
TextLinkStyles
foi movida paraTextStyle
e aTextDefaults
foi removida do Material Design (I5477b).
Versão 1.7.0-beta01
14 de maio de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-beta01
. A versão 1.7.0-beta01 contém estas confirmações.
Mudanças na API
- A API para receber links com tema do Material Design no Text foi atualizada. Mais especificamente, os métodos do
TextDefaults
foram removidos para construirLinkAnnotations
com tema e analisar HTML com links temáticos Em vez disso, foi adicionada uma classeTextLinkStyles
, que permite estilizar os links como um parâmetro para o elemento combinável Text (I31b93).
Versão 1.7.0-alpha08
1o de maio de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-alpha08
. A versão 1.7.0-alpha08 contém estas confirmações.
Mudanças na API
- Correção de
backgroundColor
que não se aplica aTextFieldDecorationBox
eOutlinedTextFieldDecorationBox
. As caixas de decoração agora aceitam um parâmetroshape
. (I371c2, b/307694651). RippleConfiguration#isEnabled
foi removido eLocalRippleConfiguration
agora é anulável. Para desativar uma ondulação, em vez de fornecer umRippleConfiguration
comisEnabled = false
, forneçanull
paraLocalRippleConfiguration
. (I22725).- Links de texto têm uma opção de estilo de estado pressionado além do estilo normal, passando o cursor e em foco. Cada método
TextDefaults
tem um argumentopressedStyle
para isso. (Ic473f, b/139312671).
Correções de bugs
- O padding superior do
OutlinedTextField
para o marcador agora considera o tamanho da fonte do sistema. (Idc781).
Versão 1.7.0-alpha07
17 de abril de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-alpha07
. A versão 1.7.0-alpha07 contém estas confirmações.
Mudanças na API
- Os links de texto receberam a opção de estilo de estado pressionado, além do estilo normal, passando o cursor e em foco. (I5f864, b/139312671).
- Foi adicionado um objeto
TextDefaults
que contém métodos para criar umLinkAnnotation
e analisar a string com tag HTML que aplicaMaterialTheme
aos links. (I98532, b/139312671).
Versão 1.7.0-alpha06
3 de abril de 2024
Lançamento de androidx.compose.material:material-*:1.7.0-alpha06
. A versão 1.7.0-alpha06 contém estas confirmações.
Aviso
androidx.compose.material
não exige mais o uso da mesma versão de todos os artefatos neste grupo do Maven. Os usuários podem misturar e combinar versões das bibliotecas de base do Compose (Ie5fba).
Mudanças na API
- Mais
ModalDrawer
eBottomDrawer
padrões foram movidos para o objetoDrawerDefaults
. (Ib5b2e).
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 estas 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 estas confirmações.
Novos recursos
- Foi adicionado um novo artefato
androidx.compose.material:material-navigation
que adiciona suporte a páginas inferiores como destinos ao usar o Navigation Compose. Isso substitui a biblioteca de Material de navegação do Accompanist. (d65d57, b/180247978).
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.BottomDrawerState
agora expõe o progresso como uma função, permitindo consultar o progresso da consulta entre destinos específicos.BottomDrawerState
agora permite personalizar a especificação de animação, econfirmStateChange
não é mais uma lambda final. (I9c029, b/261423850). - O
BackdropScaffold
foi promovido de experimental para estável. A especificação de animação agora étween
de acordo com as diretrizes. O parâmetrosnackbarHost
deBackdropScaffold
não é mais o último parâmetro para evitar confusão com lambdas finais.BackdropScaffoldState
expõe uma APIprogress(from, to)
para consultar o progresso entre âncoras. (I73f48, b/261423218). - As páginas inferiores padrão foram promovidas de experimentais para estáveis. Os construtores descontinuados foram removidos. A especificação de animação agora é de interpolação de acordo com as diretrizes. (I3c1a8, b/278692145, b/261409034).
- As páginas inferiores modais foram promovidas de experimentais para estáveis. Os construtores descontinuados foram removidos. A especificação de animação agora é
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
podia falhar em cenários específicos em combinação com oLookaheadScope
(I51396). - A subcomposição dentro de
BottomSheetScaffold
foi removida para melhorar o desempenho Correção de um problema em que oBottomSheetScaffold
falhava em cenários específicos em combinação com oLookaheadScope
(I2f90c). - A subcomposição foi removida de
ModalBottomSheetLayout
, melhorando 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
eRippleTheme
foram descontinuados da ondulação do Material, com novas APIs de ondulação eRippleConfiguration
adicionadas ao Material Design e a outras bibliotecas de sistema de design.Os componentes do Material Design que anteriormente aceitavam um
MutableInteractionSource
e tinham como padrão lembrar{ MutableInteractionSource() }
agora aceitam umMutableInteractionSource
anulável e assumem o valor nulo como padrão. Se você não estiver elevando e usando oMutableInteractionSource
, 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 mudanças semelhantes nos seus próprios componentes.
Versão 1.6
Versão 1.6.8
12 de junho de 2024
Lançamento de androidx.compose.material:material-*:1.6.8
. A versão 1.6.8 contém estas confirmações.
Versão 1.6.7
1o de maio de 2024
Lançamento de androidx.compose.material:material-*:1.6.7
. A versão 1.6.7 contém estas confirmações.
Versão 1.6.6
17 de abril de 2024
Lançamento de androidx.compose.material:material-*:1.6.6
. Nenhuma mudança desde a última versão.
Versão 1.6.5
3 de abril de 2024
Lançamento de androidx.compose.material:material-*:1.6.5
. A versão 1.6.5 contém estas confirmações.
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
- Suspensão do uso de uma função
materialIcon
em favor da sobrecarga que usa um parâmetroautoMirror
. (Ia338d).
Correções de bugs - Aumento automático da 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 a gavetas foi removida de
BottomSheetScaffold
. Una oBottomSheetScaffold
em um elemento combinável de gaveta para usar a funcionalidade anterior. ConsulteBottomSheetScaffoldWithDrawerSample
para conferir um exemplo. (I1dcc8).
Mudanças na API
- Uma flag temporária foi introduzida para controlar se o Scaffold deve medir os filhos durante a medição ou na posição. Por padrão, a medição será feita. Se você está enfrentando 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 de ícones adicionais para oferecer suporte ao espelhamento automático quando o ícone permite. Os novos conjuntos têm o prefixo
Icons.AutoMirrored.Filled...
e outros ícones e contêm ícones que serão espelhados automaticamente em layouts RTL. Consulte a lista de ícones do Material Design (link em inglês) para conferir uma lista dos ícones que podem (e devem) 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 de ícones adicionais para oferecer suporte ao espelhamento automático quando o ícone permite. Os novos conjuntos têm o prefixo
Icons.AutoMirrored.Filled...
e outros ícones e contêm ícones que serão espelhados automaticamente em layouts RTL. Consulte a lista de ícones do Material Design (link em inglês) para conferir uma lista dos ícones que podem (e devem) ser espelhados automaticamente. As propriedades fornecidas anteriormente para esses ícones agora estão marcadas como descontinuadas e fornecem 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 RTL, recomendamos migrar para o novo conjunto de ícones. Por exemplo,Icons.Filled.ArrowBack
precisa ser refatorado paraIcons.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
- Correção de um problema em que alguns componentes que usavam
Subcomposition
(por exemplo,BottomSheetScaffold
) dentro de um Scaffold dentro de umLookaheadScope
tentavam ler o tamanho muito cedo (If2c5d). - O cálculo de
offset
deDropdownMenu
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 (I acesso74, b/294103942). - Otimização dos componentes internos do layout de
BottomSheetScaffold
e correção de um possível problema comBottomSheetScaffold
dentro de umaLookaheadLayout
. (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 à funcionalidade de ponta a ponta no Android. Ao contrário dos componentes do Material3, os componentes do Material2 não oferecem suporte a encartes por padrão, e o valor precisa ser transmitido manualmente. Consulte os exemplos 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 Planilhas. Use a nova sobrecarga fornecida em que a densidade é 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).
- Foi adicionado um novo alinhamento Start para
FabPosition
(Ib7aea, b/170592777). - O uso de
TextFieldColorsWithIcons
no Material 2 foi descontinuado e substituído porTextFieldColors
. Ao substituirleadingIconColor
outrailingIconColor
, substitua também a sobrecarga porinteractionSource
. (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 de altura padrão da linha também foi modificado paraTrim.None
eAlignment.Center
, elineHeight
explícito (em sp) foi adicionado aosTextStyle
s deTypography
. Para personalizar esses valores, consulte os documentos da API e confira uma explicação detalhada sobre essas mudanças na postagem do blog. (Icabc3, I3f801, I04c03).
Mudanças na API
- As APIs
Swipeable
do Material Design foram descontinuadas. Consulte as APIsAnchoredDraggable
do Foundation, que são otimizadas para casos de uso simples e complexos. (I732e0).
Correções de bugs
BottomSheetState
,ModalBottomSheetState
eBottomDrawerState
agora expõem uma propriedade de progresso que indica o progresso entre a âncora atual (resolvida) e a mais próxima na direção de deslizar. (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 em
BottomSheetScaffold
. O parâmetroconfirmStateChange
deBottomSheetState
foi renomeado comoconfirmValueChange
.progress
agora é exposto como um valor flutuante.animateTo
esnapTo
são internos. Useexpand()
ecollapse()
.direction
eoverflow
foram removidos.offset
foi substituído porrequireOffset()
. 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
eModalBottomSheetState.Saver
gerais e deconfirmStateChange
dorememberModalBottomSheetState
comoconfirmValueChange
(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
. A animateTo deModalBottomSheetState
não usa mais um parâmetroanimationSpec
, e o deslocamento exposto agora é anulável UserequireOffset
para exigir o deslocamento. (Ia2e79). - A anotação
@JvmDefaultWithCompatibility
foi adicionada (I8f206). - As mudanças incorporadas nas APIs deslizantes no
animateTo
deModalDrawer. DrawerState
foram substituídas pelos métodos de abrir e fechar, e o deslocamento agora é anulável. UserequireOffset
para exigir o deslocamento. (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
eOutlinedTextField
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 lambdaonRelease
emModifier.pullRefresh
também foi modificada, passando a retornar um Float para a velocidade consumida (I7db65, b/266874741). BottomSheetState
,ModalBottomSheetState
eBottomDrawerState
agora expõem uma propriedade de progresso que indica o progresso entre a âncora atual (resolvida) e a mais próxima na direção de deslizar. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).- Foi corrigida a ação de dispensar
AlertDialog
para que ela apareça abaixo da ação de confirmação quando as ações empilhadas para caber 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 participará mais da rolagem aninhada quandogesturesEnabled
for definido como "false". (I634f3, b/215403277).- Correção de um bug em que
BottomSheetScaffold
falhava quando fornecido com conteúdo vazio para os slots. (Ib24a5, b/235588730). - Corrige
PullRefreshIndicator
que intercepta eventos de clique/ponteiro (2494256, b/271777421). - Correção de um problema em que
ModalBottomSheetLayout
falhava em um caso extremo na mudança de orientação. Animações de layout (por exemplo,Modifier.animateContentSize
) no conteúdo da página agora 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
eBottomDrawerState
agora expõem uma propriedade de progresso que indica o progresso entre a âncora atual (definida) e a âncora mais próxima na direção de deslizar (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
eBottomDrawerState
não são mais anuláveis Em vez disso, eles retornamFloat.NaN
para indicar a ausência do deslocamento. (Ie9855). - Foi adicionada uma opção para transmitir um
ScrollState
ao construir umDropdownMenu
ou umExposedDropdownMenu
para controlar o estado de rolagem vertical dos itens de menu exibidos. (Idb009, b/185304441). - Foi adicionado suporte à ativação/desativação do gesto de
ModalBottomSheetLayout
para que o usuário possa configurar isso para uma página inferior em destaque (I40af0). - Foi adicionado um parâmetro de cor a
BasicText
para permitir animar ou definir a cor do texto de maneira eficiente. (Iffd88, b/246961787). - Mudança da propriedade semântica
isContainer
paraisTraversalGroup
(I121f6).
Correções de bugs
- Foi corrigida a ação de dispensar
AlertDialog
para que ela apareça abaixo da ação de confirmação quando as ações empilhadas para caber 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
eModalDrawer
. Use a nova sobrecarga fornecida em que a densidade é 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
- Os componentes internos de
BottomDrawer
foram atualizados para usar as novas APIsSwipeableV2
. Por isso, oBottomDrawerState
agora só vai ter APIs definidas no nível da classe. Por isso, ele não vai herdar métodos/propriedades deSwipeableState
. Estamos usando uma composição com umSwipeableV2State
interno. O deslocamento 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 no nível de classe anterior, como abrir/expandir/fechar, e propriedades comoisOpen/isClosed
, continuam sendo compatíveis. (Iad40c, b/178529942, b/220676296).
Correções de bugs
- Atualização dos componentes internos do componente Switch. Agora, o interruptor mostra o estado mais próximo (destino) ao arrastar. (Id90d4).
- O conteúdo de página animado (por exemplo,
Modifier.animateContentSize
em conteúdo de página) emBottomSheetScaffold
foi otimizado e agora funciona sem problemas. (Ia913c, b/270518202, b/254446195). BottomSheetScaffold
não participará mais da rolagem aninhada quandogesturesEnabled
for definido comofalse
. (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
BottomSheetScaffold
falhava quando fornecido com conteúdo vazio para os slots. (Ib24a5, b/235588730). - Corrige
PullRefreshIndicator
que interceptam eventos de clique / 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
- Adicione uma amostra de reflow do chipgroup. Atualize o padding horizontal entre os ícones filhos na amostra de chipgroup 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. Animações de layout (por exemplo,Modifier.animateContentSize
) no conteúdo da página agora 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
. OanimateTo
deDrawerState
foi substituído pelos métodos de abertura e fechamento, e o deslocamento agora é anulável. UserequireOffset
para exigir o deslocamento. (I3de9e). - O parâmetro
minLines
foi adicionado ao Text,TextField
eOutlinedTextField
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
aBasicText
eBasicTextField
. 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âmetroconfirmStateChange
deBottomSheetState
foi renomeado comoconfirmValueChange
.progress
agora é exposto como um valor flutuante.animateTo
esnapTo
são internos. Useexpand()
ecollapse()
.direction
eoverflow
foram removidos.offset
foi substituído porrequireOffset()
. (I323b4).
Correções de bugs
- Remoção dos papéis semânticos de plataformas clicáveis e selecionáveis e atualização dos componentes que os usavam para definir papéis usando modifier.semantics (Ibb4ba).
- Uma pequena atualização nos ícones estendidos do Material Design que ajusta os ícones preenchidos
desktop_mac
,directions
ekitchen
(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 lambdaonRelease
emModifier.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 paraLocalMinimumInteractiveComponentEnforcement
(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
eModalBottomSheetState.Saver
gerais e deconfirmStateChange
dorememberModalBottomSheetState
comoconfirmValueChange
(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
. OanimateTo
doModalBottomSheetState
não usa mais um parâmetroanimationSpec
, e ooffset
exposto agora é anulável. UserequireOffset
para exigir ooffset
(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 orefreshThreshold
erefreshingOffset
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 ocurrentValue
sem uma animação quandosnapTo
ouanimateTo
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 eraHalfExpanded
(aberto na metade do tamanho) ao alternar da orientação de retrato para paisagem. Confira se você está transmitindo oinitialValue
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. OModalBottomSheetLayout
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 oandroidx.compose.foundation:1.4.0-alpha04
, talvez você receba um errojava.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 bibliotecasandroidx.compose.material
eandroidx.compose.material3
para a versão mais recente (1.1.0-alpha04) ou faça o downgrade doandroidx.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
emModalDrawer
. O elementoanimateTo
deDrawerState
foi substituído pelos métodosopen
eclose
. O deslocamento agora é anulável. Para exigir o deslocamento, userequireOffset
(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 umScrollable 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ósonRefresh
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
ewaitForUpOrCancellation
agora aceitam umPointerEventPass
para ter mais flexibilidade (I7579a, b/212091796).- O parâmetro
minLines
foi adicionado ao Text,TextField
eOutlinedTextField
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
aBasicTex
t eBasicTextField
. 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 aforEachGesture()
, mas o loop sobre gestos opera inteiramente dentro doAwaitPointerEventScope
. Assim, os eventos não podem ser perdidos entre iterações. - O uso de
forEachGesture()
foi descontinuado e substituído porawaitEachGesture()
, porque permite que os eventos sejam perdidos entre gestos (Iffc3f, b/251260206).
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
comFloatingActionButton
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
androidx.compose.material:material-*:1.2.0-rc02
é lançado. A versão 1.2.0-rc02 contém estas confirmações.
Versão 1.2.0-rc01
15 de junho de 2022
Lançamento de androidx.compose.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 emOutlinedTextField
foi renomeado comoTextFieldDefaults.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
. Useconsume()
para consumir a mudança completamente. Você pode usarisConsumed
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 dePointerInputChange
for consumida, todas as outras também serão. Se você quiser criar umaPointerInputChange
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
eLazyHorizontalGrid
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 deViewCompat.getWindowInsetsController
foi descontinuado e substituído porWindowCompat.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 deincludeFontPadding=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 aOutlinedTextFieldDecorationBox
foram adicionados. O uso deles comBasicTextField
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
eComposableOpenTarget
, 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
ouReusableComposeNode
precisam adicionar uma anotaçãoCompoableTarget
à função e a qualquer tipo de parâmetro lambda combinável. No entanto, é recomendável criar uma anotação comComposableTargetMarker
e, em seguida, usar essa anotação marcada em vez de usar aComposableTarget
diretamente. Uma anotação combinável marcada comComposableTargetMarker
é equivalente a umaComposbleTarget
com o nome totalmente qualificado da classe de atributo como o parâmetro do applier. Para conferir um exemplo de como usar aComposableTargetMarker
, consulteanroidx.compose.ui.UiComposable
(I38f11).
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
- Adição de exemplo de grupo de ícones (I97080, b/192585545).
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 flagisSkipHalfExpanded
. Ela pode ser definida pelo construtor ou atualizada posteriormente configurando a propriedadeisSkipHalfExpanded
daModalBottomSheetState
comotrue
. A atualização do valor daisSkipHalfExpanded
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
emandroidx.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
- Correção do raio dos cantos aplicado às
Checkbox
es (I38b03, b/175198975, b/202309440).
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
androidx.compose.material:material-*:1.1.0-alpha06
é lançado. 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 emExposedDropdownMenuBox
usandoTextField
eDropdownMenu
(If60b2). - A propriedade
dismissOnOutsideClick
foi adicionada ao parâmetroPopupProperties
, substituindo adismissOnClickOutside
, 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 aPopupProperties
, 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).
- O
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
eGestureScope
foram descontinuados e substituídos porperformTouchInput
eTouchInjectionScope
(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 aDp.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 Kotlin1.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 AGP7.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
emPopupProperties
parausePlatformDefaultWidth
(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çãoTextFieldColors.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óriosrc/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 comadb shell profman --dump-classes-and-methods ...
. Essas regras podem ter uma das duas formas destinadas a métodos ou classes.Uma regra de método tem o seguinte padrão:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
E uma regra de classe tem o seguinte padrão:
<CLASS_DESCRIPTOR>
Aqui,
<FLAGS>
é um ou mais dos caracteresH
,S
eP
, para indicar se esse método precisa ser sinalizado como "Hot" (frequente), "Startup" (de inicialização) ou "Post Startup" (pós-inicialização).O
<CLASS_DESCRIPTOR>
é o descritor da classe à qual o método desejado pertence. Por exemplo, a classeandroidx.compose.runtime.SlotTable
teria o descritorLandroidx/compose/runtime/SlotTable;
.A
<METHOD_SIGNATURE>
é a assinatura do método e inclui o nome, os tipos de parâmetro e os tipos de retorno do método. Por exemplo, o métodofun isPlaced(): Boolean
emLayoutNode
tem a assinaturaisPlaced()Z
.Esses padrões podem ter caracteres curinga (
**
,*
e?
) para que uma única regra inclua vários métodos ou classes.
O que as regras fazem?
Um método com a flag
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.
- 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
- 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.
- 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
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 porModifier.focusTarget()
(I6c860). - A enumeração
FocusState
foi substituída por uma interfaceFocusState
(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 defalse
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).
- MUDANÇA DA API:
hideSoftwareKeyboard
eshowSoftwareKeyboard
emSoftwareKeyboardController
foram renomeados comohide()
eshow()
, respectivamente.- Fornecida a interface completa do CompositionLocal para LocalSoftwareKeyboardController, possibilitando que ela seja definida, já que é especialmente útil em testes (I579a6).
- Adição da API de acessibilidade LiveRegion. Se o nó estiver marcado como uma região ativa, os serviços de acessibilidade notificarão automaticamente o usuário sobre as mudanças (Idcf6f, b/172590946).
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. ChamarwithFrameNanos
ouRecomposer.runRecomposeAndApplyChanges
semMonotonicFrameClock
agora vai gerar umaIllegalStateException
(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 umaIllegalStateException
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 sobreBottomDrawerState
eModalBottomSheetLayoutState
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 interfaceSoftwareKeyboardController
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 do 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 comoButton
eModifier.clickable()
, useinteractionSource = remember { MutableInteractionSource() }
. - Em vez de
Interaction.Pressed in interactionState
, use as funções de extensão em InteractionSource, como InteractionSource.collectIsPressedAsState(). - Para casos de uso complexos, use InteractionSource.interactions para observar o fluxo de interações. Consulte as amostras e a documentação do InteractionSource para mais informações
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378).
- Adição da interface AccessibilityMananger e LocalAccessibilityMananger em CompositionLocals (I53520).
- Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
- 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.
- Renomeação do parâmetro isErrorValue dentro de TextField e OutlinedTextField em isError (I831f9, b/171305338, b/168004067).
- 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 comoanimateScrollBy()
,LazyListState.snapToItemIndex()
foi renomeado comoscrollToItem()
,ScrollState.smoothScrollTo()
foi renomeado comoanimateScrollTo()
(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 deselected
eonClick
. - O parâmetro
alwaysShowLabels
em BottomNavigationItem foi renomeado comoalwaysShowLabel
. - Os parâmetros
bodyContent
em alguns componentes foram renomeados comocontent
. - Parâmetros reordenados em
ButtonDefaults.buttonColors()
. Como o tipo dos parâmetros não mudou, isso não vai causar um erro no seu código. Confira se está usando parâmetros nomeados ou atualize a ordem manualmente; caso contrário o código não vai funcionar da mesma forma que antes. - Adição do parâmetro
secondaryVariant
adarkColors()
. Essa cor costuma ser a mesma quesecondary
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
emSlider
foi renomeado comoonValueChangeFinished
e transformado em anulável.- O parâmetro
text
emSnackbar
foi renomeado comocontent
para manter a consistência. - Adição do parâmetro
contentPadding
aDropdownMenuItem
para permitir a personalização do padding padrão. Além disso,content
passou a ser uma extensão emRowScope
. ModalDrawerLayout
foi renomeado comoModalDrawer
.BottomDrawerLayout
foi renomeado comoBottomDrawer
- (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âmetroindication
emModifier.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
etoggleModifier
foram removidos do DropdownMenu, edropdownModifier
,dropdownOffset
edropdownContent
foram renomeados comomodifier
,offset
econtent
, respectivamente. O DropdownMenu agora se comporta de maneira consistente paraPopup
, em que o layout pai é usado para a posição do menu. Na maioria dos casos, é possível movertoggle
para ser um irmão deDropdownMenu
e unir ambos emBox
. 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 deremember { mutableStateOf(0) }
, também vamos remover o elemento combinávelsavedInstanceState { 0 }
. UserememberSaveable { mutableStateOf(0) }
para salvar e restaurar automaticamente se o tipo usado dentro de MutableState puder ser armazenado no pacote. Se você transmitia um objeto de economia personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetrostateSaver
. O uso será assim:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004). - 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
eicon
da guia e o parâmetrolabel
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 usandoemptyContent()
para representar nenhum texto / ícone / rótulo, usenull
(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 deAnimatable.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 estendeComposeTestRule
e definesetContent
, que foi removido deComposeTestRule
. Foi adicionado um método de fábricacreateEmptyComposeRule()
que retorna umaComposeTestRule
e não inicia uma atividade para você. Use-o quando quiser iniciar a Activity durante o teste, por exemplo, usandoActivityScenario.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)
eitemsIndexed(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)
eitemsIndexed(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 poranimateAsState()
, que retorna umState<T>
em vez deT
. Isso permite uma performance melhor, já que o escopo de invalidação pode ser restrito ao local em que o valor do State é lido (Ib179e).- Adição da API Semantics Role e adição de Role como um parâmetro de SemanticsModifier clicável, selecionável e alternável. Modifier.progressSemantics foi mudado para que o controle deslizante também possa usá-lo (I216cd).
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 paracontent
, 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 porrememberRippleIndication()
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 comoModifier.alpha
. Modifier.drawShadow
foi renomeado comoModifier.shadow
(I264ca, b/173208140).
- O elemento
- 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étodoplaceable.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 paracaptureToImage
. (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).
- Refatoração de DrawScope e
ContentDrawScope para que sejam interfaces
em vez de classes abstratas.
- Criação da implementação CanvasDrawScope do DrawScope.
- Implementações refatoradas do DrawScope para usar o CanvasScope.
- Criação do DrawContext para unir dependências para o DrawScope.
- Métodos 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 inset como horizontal e vertical.
- Recuo extra adicionado, fornecendo o mesmo valor de recuo a todos os quatro limites.
- A documentação sobre o método do recuo que indicava que o recuo seria aplicado a todos os quatro lados foi removida.
- Atualização da documentação da classe Rect.
- Os comentários sobre os parâmetros Rect foram atualizados para corresponder ao estilo kdoc.
- Rect.join e Rect.expandToInclude foram removidos.
- Foi criada uma sobrecarga para Rect.translate(offset) e o Rect.shift foi descontinuado
- (If086a, b/167737376).
- 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
deBottomNavigationItem
paraonClick
(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
edisabledContentColor
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
eresistanceFactorAtMax
emModifier.swipeable
foram substituídos por um único parâmetro de resistência. Um novo métododefaultResistanceConfig
foi adicionado emSwipeableConstants
(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()
eFloatingActionButtonConstants.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
ouwaitForIdle
, 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
eAndroidInputDispatcher
foram movidos deandroidx.ui.test.android
paraandroidx.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 paraindicator
. 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 deremember { mutableStateOf(...) }
para maior clareza. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrãoby mutableStateOf()
para delegação de propriedade de classe (Ia5727) - 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
eOnChildPositionedModifier
. Os desenvolvedores precisam usaronPositioned
eOnPositionedModifier
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 comoPlacementScope.place()
, e oPlacementScope.place()
anterior foi renomeado comoPlacementScope.placeRelative()
. Por essa razão, o métodoPlacementScope.place()
não espelhará de forma automática a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, usePlacementScope.placeRelative()
(I873ac, b/162916675).- 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 comolabel
,onSelected
comoonSelect
,activeColor
comoselectedContentColor
einactiveColor
comounselectedContentColor
. 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 variados problemas de API (I077bc).
- Remoção da interface OffsetBase não utilizada.
- Alinhamento das classes Offset e IntOffset para que tenham uma superfície de API consistente.
- IntOffset.Origin foi renomeado como IntOffset.Zero para ser consistente com a API Offset.
- O método nativeCanvas foi movido da interface Canvas para que os consumidores possam criar as próprias instâncias.
- A classe stub EmptyCanvas foi criada para refatorar DrawScope para ser um parâmetro não nulo em vez de lateinit e garantir a não nulidade do campo.
- Os tipos enumerados ClipOp foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados FilterQuality foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados StrokeJoin foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PointMode foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PaintingStyle foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados PathFillType foram renomeados para seguir o padrão Pascal Case.
- Os tipos enumerados StrokeCap foram renomeados para seguir o padrão Pascal Case.
- Atualização da implementação de DrawCache para não usar mais parâmetros lateinit.
- Atualização de DrawScope para não usar mais delegação lenta para os parâmetros internos fillPaint e strokePaint.
- Atualização do composto Image para evitar o uso do Box e ter menos sobrecarga.
- Atualização da classe Outline para ter anotações @Immutable.
- PathNode foi atualizado para ter anotações @Immutable em cada instrução de caminho.
- A subcomposição Vector foi atualizada para remover verificações condicionais redundantes para fins de igualdade, já que o Compose já as processa.
- O uso de métodos construtores complementares de Rect foi descontinuado e substituído por construtores de função.
- As classes Brush e construtores de função foram atualizados com APIs @Immutable e @Stable.
- Atualização da enumeração VertexMode para seguir o padrão Pascal Case.
- Atualização do método DrawScope selectPaint para substituir condicionalmente os parâmetros de traço na pintura quando eles tiverem mudado.
- Atualização de Size para adicionar a desestruturação da API, renomear UnspecifiedSize para Unspecified e remover métodos não utilizados.
- A caixa de diálogo foi movida para a interface (I47fa6).
- Remoção de
SemanticsNodeInteraction.performPartialGesture
. UseSemanticsNodeInteraction.performGesture
(Id9b62). SemanticsNodeInteraction.getBoundsInRoot()
foi renomeado comoSemanticsNodeInteraction.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 propriedadesval
de uma classe de dados, usestate
em vez deremember
e atribua o valor do estado a cópias clonadas do original usando o método de conveniênciacopy(...)
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 propriedadesvar
da classe original porvar
commutableStateOf
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
eicon
(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 comoDrawBorder
(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 comorunOnIdle
(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
erunOnUiThread
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 { ... }
ouby 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
ousetViewContent
. O uso de Compose.disposeComposition foi descontinuado. Use o métododispose
noComposition
retornado porsetContent
. 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 paratrue
, 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)