Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestions
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
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 |
---|---|---|---|---|
11 de dezembro de 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
Estrutura
O Compose é uma combinação de sete IDs de grupos do Maven no androidx
. Os grupos
contêm um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas
da versão.
Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.
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.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.8
Versão 1.8.0-alpha07
11 de dezembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha07
. A versão 1.8.0-alpha07 contém estas confirmações.
Mudanças na API
- A sinalização
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
foi excluída e ajudou a reverter a remoção degraphicsLayer
interno deBasicText
. Se você estava usando essa flag, informe os motivos ao registrar um bug. Além disso, você pode transmitirModifier.graphicsLayer()
para suas chamadasBasicText
para ter o mesmo comportamento de antes. (Id9f90). - Adição da implementação padrão para a nova DSL
stickyHeader
. (I68986). - A composição local
LocalAutofillHighlightColor
usa um tipo de cor. (I0e05b). OverscrollEffect#withoutDrawing
foi renomeado comoOverscrollEffect#withoutVisualEffect
(I1a154).
Correções de bugs
- Correção de um problema no cálculo de destino de
AnchoredDraggable
, em que ele poderia se fixar na âncora errada para deslizamentos específicos (I23b87, b/367660226).
Contribuição externa
- Adição de
BringIntoViewResponderModifierNode
à interface, que oferece uma nova maneira de implementar a funcionalidade "Bring Into View" e permite a implementação em um nível de plataforma (Ia6dd8). - Estamos mudando um pouco a forma como o cursor é desenhado. Você pode usar
LocalCursorBlinkEnabled
para desativar a exibição do cursor nos testes. (I4c697).
Versão 1.8.0-alpha06
13 de novembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha06
. A versão 1.8.0-alpha06 contém estas confirmações.
Mudanças na API
- Adiciona o modificador
stylusHoverIcon
. (Iff20a, b/331289114). - O
confirmValueChange
doAnchoredDraggableState
foi descontinuado. Em vez de vetar mudanças de estado, as âncoras não permitidas não podem estar no conjunto de âncoras ativas, e umOverscrollEffect
precisa ser usado para indicar a indisponibilidade da ação solicitada. (Ia717f). - O gerenciador de preenchimento automático foi alterado para ser uma interface. (I84914, b/376080755).
- Foram adicionadas as APIs
OverscrollEffect#withoutDrawing
eOverscrollEffect#withoutEventHandling
. Elas criam uma instância encapsulada do efeito de rolagem esticada fornecido que não renderiza / gerencia eventos. Isso permite renderizar a rolagem esticada em um componente separado do componente que está enviando eventos. Por exemplo, desativando a exibição do overscroll dentro de uma lista lazy e depois exibindo o overscroll separadamente na parte de cima ou em outro lugar. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244). - Adição de suporte a preenchimento automático na barra de ferramentas de texto. (Ie6a4c).
OverscrollConfiguration
eLocalOverscrollConfiguration
foram descontinuados, erememberPlatformOverscrollFactory
foi adicionado para criar uma instância de / personalizar parâmetros da implementação padrão de rolagem excessiva. Para desativar o overscroll, useLocalOverscrollFactory provides null
em vez deLocalOverscrollConfiguration provides null
. Para mudar a cor do brilho / padding, useLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
em vez deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516).- A propriedade
effectModifier
emOverscrollEffect
foi alterada paranode: DelegatableNode
, de acordo com outras APIs (Ic0b46, b/255554340). - A API
GlobalAssertions
experimental foi removida. O uso pretendido era executar verificações de acessibilidade. Para isso, consulteenableAccessibilityChecks()
. (I59322).
Versão 1.8.0-alpha05
30 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha05
. A versão 1.8.0-alpha05 contém estas confirmações.
Novos recursos
- Suporte para dimensionamento automático de texto. Transmita uma instância de
AutoSize
(por exemplo,AutoSize.StepBased
) para o elemento combinável de texto favorito (comoBasicText
) e observe o tamanho do texto se adaptar ao espaço disponível. (Ice7e0, b/139320827). - As APIs
OverscrollFactory
eLocalOverscrollFactory
foram adicionadas para permitir a configuração de rolagem em uma hierarquia. O valor fornecido porLocalOverscrollFactory
será usado por padrão para criar umOverscrollEffect
. Para criar e lembrar um efeito da fábrica atual, userememberOverscrollEffect()
. (I51ca4, b/255554340).
Mudanças na API
- Introdução do
CompositionLocal
, que pode ser usado para modificar a tonalidade do destaque de preenchimento bem-sucedido do preenchimento automático. (I32092). ScrollableDefaults.overscrollEffect
foi removido. UserememberOverscrollEffect
. Isso vai criar uma instância da implementação atual de rolagem excessiva fornecida comLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516).- Apresentamos a nova interface
AutofillManager
, que pode ser usada para ajustar a jornada de preenchimento automático dos usuários, e uma flagisSemanticAutofillEnabled
para ativar essa nova versão. (I9d484). - Remove
CombinedClickableNode
. Essa API experimental foi temporariamente exposta para desbloquear o trabalho de desempenho, mas não é mais necessária. Em vez disso, useModifier.combinedClickable
diretamente, como em outras APIs de modificador. (I4b658). - Adiciona sobrecargas a
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
eVerticalPager
com suporte para especificar umOverscrollEffect
personalizado. OOverscrollEffect
fornecido vai receber eventos e ser renderizado dentro dos limites desses componentes. Não é possível desenhar o mesmoOverscrollEffect
duas vezes. Portanto, não é possível desenhar o mesmoOverscrollEffect
fornecido para um desses componentes separadamente comModifier.overscroll
. O caso de uso de exibição do rolagem fora dos limites desses componentes será abordado separadamente no futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117).
Versão 1.8.0-alpha04
16 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha04
. A versão 1.8.0-alpha04 contém estas confirmações.
Mudanças na API
- Adiciona callbacks
DelegatableNode#onDensityChange
eDelegatableNode#onLayoutDirectionChange
para permitir a atualização do estado do nó quando ele mudar. (I04f3e, b/340662451). - O parágrafo e o
ParagraphIntrinsics
agora recebem uma lista de todas as anotações aplicadas aoAnnotatedString
. Antes, eles só tinham uma lista deSpanStyles
. (I12f80). - O
PointerInputModifierNode#touchBoundsExpansion
foi introduzido. Ele pode ser usado para ampliar os limites de toque de um modificador de entrada de ponteiro único. (Iccf02, b/335339283).
Correções de bugs
- Correção de um bug em que os limites posicionais transmitidos para
AnchoredDraggableDefaults.flingBehavior
não eram considerados corretamente em alguns cenários (Ifdf0d, b/367660226). - Introdução de uma correção para rolagens aninhadas que são removidas da árvore de nós durante uma movimentação contínua. Agora esses nós vão cancelar o movimento rápido e enviar corretamente o evento
onPostFling
com a velocidade restante. Também estamos lançando a flagNewNestedScrollFlingDispatchingEnabled
para controlar o comportamento em caso de regressões. A flag será removida antes da versão Beta. (I05c37, b/371168883). - Correção de um bug em que o
OverscrollEffects
transmitido paraModifier.anchoredDraggable
recebia deltas 2D em vez de 1D. (Ie52c0).
Versão 1.8.0-alpha03
2 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha03
. A versão 1.8.0-alpha03 contém estas confirmações.
Mudanças na API
- Atualização da versão do Kotlin para 1.9 (I1a14c).
- Introdução da flag
DraggableAddDownEventFixEnabled
(I848d5). - Foi introduzido um novo papel de semântica chamado "Carousel" para emular o comportamento da lista em paginadores para serviços a11y. (Id354b, b/354109776, b/239672673).
- O modificador
graphicsLayer
implícito foi removido do elemento combinávelBasicText
. A flagComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
experimental foi adicionada para reverter ao comportamento antigo. (Ie478d). Modifier.recalculateWindowInsets()
foi adicionado para permitir que os filhos na hierarquia useminsetsPadding
, mesmo quando os pais os alinham semconsumeWindowInsets()
. (I7f9e4).
Correções de bugs
- Implemente a detecção de gestos em
detectDragGestures
, arrastáveis e roláveis. Agora, se um elemento filho arrastável desistir de um gesto, o elemento pai terá a oportunidade de recuperá-lo. Isso permite um processamento de gestos mais contínuo e integrado. (Ic88fe). - Atualização do comportamento de cancelamento de rolagem rápida em roláveis. Agora, se um rolamento deslizante atingir os limites, ele vai transmitir corretamente a velocidade do movimento brusco para o próximo rolamento na cadeia, em vez de continuar a impulsionar o movimento brusco. (I9326a).
Versão 1.8.0-alpha02
18 de setembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha02
. A versão 1.8.0-alpha02 contém estas confirmações.
Mudanças na API
TextOverflow.StartEllipsis
eTextOverflow.MiddleEllipsis
agora estão disponíveis, o que permite colocar reticências no início ou no meio da linha do texto de uma única linha (I38913, b/185418980).
Versão 1.8.0-alpha01
4 de setembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.8.0-alpha01
. A versão 1.8.0-alpha01 contém estas confirmações.
Versão 1.7
Versão 1.7.6
11 de dezembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.6
. A versão 1.7.6 contém estas confirmações.
Correções de bugs
- Corrigimos o conteúdo inline de texto que não estava visível para os serviços de acessibilidade.
- Correção de um problema em que o
AndroidEmbeddedExternalSurface
não era redefinido corretamente e ficava travado ao ser reutilizado em uma lista preguiçosa
Versão 1.7.5
30 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.5
. A versão 1.7.5 contém estas confirmações.
Correções de bugs
- Verifique se os itens fixados não são subdivididos duas vezes na área de padding do conteúdo. (Ic6224).
Versão 1.7.4
16 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.4
. A versão 1.7.4 contém estas confirmações.
Correções de bugs
- Correção de um bug que causava uma falha rara em campos de texto (I475c6, b/313010266).
ReusableContentHost
removido na raiz dos itens de layout lento. Essa era uma possível causa raiz de falhas "measure called on a deactivated node". (Id6e60).
Versão 1.7.3
2 de outubro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.3
. A versão 1.7.3 contém estas confirmações.
Correções de bugs
- Correção de um vazamento de memória com
BasicText
quando minLines é definido como um valor diferente do padrão
Versão 1.7.2
18 de setembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.2
. A versão 1.7.2 contém estas confirmações.
Correções de bugs
- Correção de um problema com o elemento arrastável que não estava registrando eventos de baixo, o que fazia com que os movimentos rápidos parecessem mais lentos do que o normal
Versão 1.7.1
10 de setembro de 2024
- Não há mudanças nos artefatos do Android. Os artefatos
-desktop
foram removidos, e os artefatos-jvmStubs
e-linuxx64Stubs
foram adicionados. Nenhuma dessas metas é destinada a ser usada. Elas são marcadores de posição para ajudar os esforços do Jetbrains Compose.
Versão 1.7.0
4 de setembro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0
. A versão 1.7.0 contém estas confirmações.
Mudanças importantes desde a versão 1.6.0
- O desempenho de
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
eModifier.draggable
foi significativamente melhorado. Como parte desse esforço, as seguintes mudanças de API foram feitas além das mudanças internas- Foi adicionada uma nova API de indicação,
IndicationNodeFactory
. Isso leva a implementações de indicação com melhor desempenho em comparação com a APIrememberUpdatedInstance
anterior (agora descontinuada). Para informações sobre a migração, consulte developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
agora aceita um parâmetroMutableInteractionSource
anulável. Se for nulo e a indicação fornecida forIndicationNodeFactory
, ela poderá ser criada de forma lenta apenas quando necessário, o que melhora a performance. Se você não estiver elevando e usando oMutableInteractionSource
, é recomendável transmitir null em vez deremember { MutableInteractionSource() }
.- O uso de
Indication#rememberUpdatedInstance
foi descontinuado Ele tem uma penalidade de desempenho inevitável alta e impede outras otimizações. Em vez disso, use a nova APIIndicationNodeFactory
.
- Foi adicionada uma nova API de indicação,
- A
BasicTextField
que usa umTextFieldState
agora está estável, e recomendamos que todos os call sites comecem a migrar deBasicTextField(value, onValueChange)
paraBasicTextField(TextFieldState)
. - O uso de
ClickableText
foi descontinuado. Para adicionar links clicáveis ao texto, useBasicText
com a nova anotaçãoLinkAnnotation
noAnnotatedString
.LinkAnnotation
permite estilos personalizados com base no estado do link (por exemplo, focado, com o cursor). - Apresentação do
ContextualFlowRow
e doEnhanced FlowRow/Column
comMaxLines
eOverflow
. Temos o prazer de anunciar melhorias nas APIs experimentaisFlowRow
eFlowColumn
, que agora oferecem suporte amaxLines
e overflow, além da estreia deContextualFlowRow
eContextualFlowColumn
. Essa atualização foi projetada para fornecer componentes de desempenho ideais, em queContextualFlow*
é perfeito para um grande número de itens que usam uma pequena configuração de maxLines e botões dinâmicos "+N".FlowRow
eFlowColumn
são perfeitos para um pequeno número de itens, menos de 100. Importante: para manter o comportamento atual emFlowRow
ouFlowColumn
, em que todos os itens são compostos, independentemente de caberem no eixo cruzado máximo, defina o overflow comoFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
durante a inicialização. ConfiraContextualFlowRowSample
eFlowRowSample
para ver exemplos desses novos recursos em ação. (Ib9135, b/293577082). - O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyColumn
eLazyRow
. Antes era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (I2d7f7, b/150812265). - Implementamos o suporte experimental a capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (
ScrollCaptureCallback
). - As origens
NestedScroll
Drag e Fling estão sendo substituídas porUserInput
eSideEffect
para acomodar a definição estendida dessas origens, que agora incluem animações (Side Effect) e a roda do mouse e o teclado (UserInput
). - As solicitações de pré-carregamento
LazyLayout
agora podem ser marcadas como urgentes, o que significa que esperamos que esse item seja necessário no próximo frame e que o orçamento do frame seja ignorado para garantir mais trabalho antecipado (Id513f). - Suporte ao recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
- Várias APIs foram promovidas para a versão estável
- Páginas, fixação e encartes de janela
Versão 1.7.0-rc01
21 de agosto de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-rc01
. A versão 1.7.0-rc01 contém estas confirmações.
Correções de bugs
- Correção de uma regressão em que a falha ocorria quando qualquer elemento era focado dentro de um pai que era focado (ou clicável) e desativado. (b/317561689).
Versão 1.7.0-beta07
7 de agosto de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta07
. A versão 1.7.0-beta07 contém estas confirmações.
Correções de bugs
- As funções
SemanticsNodeInteraction
relacionadas à entrada de textoperformTextReplacement
,performTextInput
eperformTextClearance
agora vão gerar erros de declaração quando forem chamadas emTextFields
somente leitura. (I4ae8f). - Correção de uma falha visual nos hiperlinks. (I23311).
- Correção do modificador
contentReceiver
, que não funcionava com alguns IMEs. - Geração de velocidade: evite a propagação de valores NaN na interface e na Fundação do Compose.
Versão 1.7.0-beta06
24 de julho de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta06
. A versão 1.7.0-beta06 contém estas confirmações.
Versão 1.7.0-beta05
10 de julho de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta05
. A versão 1.7.0-beta05 contém estas confirmações.
Correções de bugs
- Correção do tratamento de valores Nan em
SnapFlingBehavior
e Pager.
Versão 1.7.0-beta04
26 de junho de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta04
. A versão 1.7.0-beta04 contém estas confirmações.
Correções de bugs
- Evitar falhas ao medir linhas de texto muito grandes (por exemplo, 10.000 caracteres) (8157ab).
- Correção da medição de texto muito grande que causava falha no novo
BasicTextField
(6b7575). - Reversão de uma mudança de comportamento na medição de linha/coluna que interrompe o uso de texto em determinados cenários (69e8ba).
Versão 1.7.0-beta03
12 de junho de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta03
. A versão 1.7.0-beta03 contém estas confirmações.
Versão 1.7.0-beta02
29 de maio de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta02
. A versão 1.7.0-beta02 contém estas confirmações.
Mudanças na API
- Foi adicionada uma API experimental para configurar o comportamento de pré-carregamento de
LazyGrids
semelhante à API experimental atual deLazyLists
. Isso inclui suporte para pré-carregar itens emLazyGrids
s aninhadas. Semelhante aLazyListPrefetchStrategy
, a implementação padrão é pré-carregar os dois primeiros itens aninhados de cada grade, mas isso pode ser configurado pelas novas APIsLazyGridPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4). SemanticsProperties.Editable
foi renomeado comoIsEditable
eSemanticsPropertyReceiver.editable
foi alterado paraisEditable
A propriedade agora é booleana e sempre especificada por campos de texto. (I8acd8).- Os valores padrão de
basicMarquee
foram movidos para o objetoMarqueeDefaults
. (I12ff6). - O parâmetro
delayMillis
basicMarquee
foi renomeado comorepeatDelayMillis
. (I12ff6). - A API foi atualizada para estilizar os links: o
TextLinkStyles
foi movido para oTextStyle
e oTextDefaults
foi removido do material (I5477b).
Correções de bugs
- O
LayoutCoordinates.introducesFrameOfReference
foi renomeado comoLayoutCoordinates.introducesMotionFrameOfReference
para refletir melhor a finalidade dele. A função relacionada foi renomeada para calcular coordenadas com base nessa flag. (I3a330). - "Default" foi removido das propriedades
MarqueeDefaults
. (I1d8a0). - Removemos "Marquee" das propriedades
MarqueeDefaults
. (Iad4f4). TextLinkStyles
foi removido da classeTextStyle
. Em vez disso,TextLinkStyles
faz parte do construtorLinkAnntation
e do métodoAnnotatedString.fromHtml
(I90b2b).- Correção de um bug em que o Pager se encaixava ao deslizar para uma borda enquanto já estava na borda. (I9f373, b/339171222).
- O BTF2 agora tem gestos de seleção de mouse corretos. (Ibe8c6).
Contribuição externa
- Reenvie o "Criar conteúdo do tipo de cálculo de tempo de composição/medição com base no pré-carregamento para melhorar a precisão" (Iea622).
- O cálculo do tempo de composição/medição é feito com base no tipo de conteúdo de pré-carregamento para melhorar a precisão (Ibccb1).
- Os modificadores
WindowInsetsPadding
foram disponibilizados no conjunto de origem comum (I070b2).
Versão 1.7.0-beta01
14 de maio de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-beta01
. A versão 1.7.0-beta01 contém estas confirmações.
Mudanças na API
- A propriedade
KeyboardOptions.shouldShowKeyboardOnFocus
foi adicionada de volta como descontinuada e oculta para compatibilidade binária. (I15cfe). - O
Modifier.anchoredDraggable
agora inverte as deltas de arrasto por padrão para componentes com orientação horizontal quando usados em um layout RTL. (I3c6d9). AnnotatedString.hasEqualsAnnotations
agora éhasEqualAnnotations
(I685c0).- Atualizamos a API para receber links com temas do Material Design no texto. Especificamente, foram removidos os métodos do
TextDefaults
para a construção deLinkAnnotations
temáticos e a análise de 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 de texto. (I31b93). onDragStarted
eonDragStopped
foram substituídos por callbacks não suspensos. (I59de8).
Correções de bugs
- Correção de um bug em que o Pager falhava quando o
contentPadding
era maior do que as restrições recebidas. O Pager agora força valores negativos retornados dePageSize
para 0. (Iba5d8, b/314008560).
Versão 1.7.0-alpha08
1º de maio de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha08
. A versão 1.7.0-alpha08 contém estas confirmações.
Novos recursos
- Adicionamos o menu de contexto de clique direito a
BasicTextField
eSelectionContainer
com itens para cortar, copiar, colar e selecionar tudo. (If8c93, Ia2b49, I6f268).
Mudanças na API
- As solicitações de pré-carregamento
LazyLayout
agora podem ser marcadas como urgentes, o que significa que esperamos que esse item seja necessário no próximo frame e que o orçamento do frame seja ignorado para garantir mais trabalho antecipado (Id513f). isPositionedByParentWithDirectManipulation
foi renomeado comointroducesFrameOfReference
Agora, ele tem o efeito reverso, o que significa que, por padrão, a maioria dosLayoutCoordinates
introduz um frame de referência. Somente quando colocado sob manipulação direta, a propriedade será falsa. Para consultar a posição apenas com aqueles que introduzem um frame de referência, usepositionInLocalFrameOfReference(...)
. OupositionInLocalLookaheadFrameOfReference
de umLookaheadScope
. (Ifc5f7).onClicked
foi renomeado comoonClick
emLinkInteractionListener
(Iaa35c).- Mudança da lambda de ação para
getScrollViewportLength
conforme o feedback do conselho da API. (Ibc74a). - As APIs de delegação de escrita à mão com stylus foram renomeadas. (Ica45f, b/327271923).
TextInclusionStrategy.isInside
foi renomeado comoisIncluded
. Faça com que o tipo de retornoParagraph/MultiParagraph#getRangeForRect()
não seja anulável. (I51f26).
Correções de bugs
- A opção "Selecionar tudo" foi adicionada a todos os menus de contexto de texto em
SelectionContainer
. (Ib750e, b/240143283). - Foi corrigida a captura de capturas de tela longas para contêineres de rolagem com
reverseScrolling=true
. (I7c59c). - Correção de um problema em que o
currentValue
doAnchoredDraggableState
mudava ao se aproximar dos limites do estado (Iea30b, b/333846848).
Contribuição externa
- Renomeação de
PrefetchExecutor
paraPrefetchScheduler
para refletir melhor as responsabilidades. (Ib9154). - Foi adicionado suporte para pré-buscar itens em
LazyLists
aninhados (por exemplo, umLazyColumn
que renderizaLazyRows
aninhados). Essa mudança deve reduzir as quedas de frames durante a rolagem para essesLazyLists
. A implementação padrão é pré-carregar os dois primeiros itens aninhados, mas esse comportamento pode ser controlado pelas novas APIsLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I51952).
Versão 1.7.0-alpha07
17 de abril de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha07
. A versão 1.7.0-alpha07 contém estas confirmações.
Novos recursos
- Um objeto
TextDefaults
foi adicionado com métodos para criar umaLinkAnnotation
e analisar strings com tags HTML que aplicamMaterialTheme
aos links. (I98532, b/139312671). - O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyVerticalGrid
eLazyHorizontalGrid
. Antes era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (Ib7d12, b/330510929). - O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. Antes era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (I69bc9, b/330511290).
Mudanças na API
- Adiciona
ContextMenuColors
e oProvidableCompositionLocal
LocalContextMenuTheme
associado. As cores do menu de contexto em campos de texto e texto selecionável podem ser modificadas fornecendo o local de composição. (Ifa154). - Os links de texto receberam a opção de estilo de estado pressionado, além do estilo normal, com o cursor e com foco. (I5f864, b/139312671).
- Introdução de
ViewConfiguration.HandwritingGestureLineMargin
para gestos de escrita manual. Suporte a gestos de escrita à mão paraBasicTextField
. (Ie6e13, b/325660505). DelegatableNode.scrollIntoView
foi removido da versão 1.7 porque não tivemos tempo para terminar de estabilizar o restante da plataforma da API relacionada. Essa função será reintroduzida na versão 1.8 (I6cf61, b/333421581, b/332900232).- Ao consultar as coordenadas do layout, agora é possível usar o argumento
excludeDirectManipulationOffset
para excluir o deslocamento definido pelos layouts pais que posicionaram os filhos usandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Da mesma forma, um layout que muda a posição dos filhos com frequência agora pode posicioná-los usandowithDirectManipulationPlacement
(como Scroll, implementado por padrão). Isso ajuda as animações baseadas emapproachLayout
a serem mais intuitivas, tendo agora a oportunidade de diferenciar qual deslocamento animar e o que aplicar diretamente ao decidir animar a abordagem. (I60ec7). - Apresente
requestScrollToItem
paraLazyStaggeredGrid
. Para cada cartão de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToItem
. Isso não muda o comportamento atual de nenhuma forma, a menos querequestScrollToItem
seja chamado. (I63983). - Introdução de
requestScrollToPage
no Pager. Para cada cartão de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToPage
. Isso não muda o comportamento atual de nenhuma forma, a menos querequestScrollToPage
seja chamado. (Ic4213). - O
requestScrollToItem
foi lançado paraLazyGrids
. Para cada cartão de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToItem
. Isso não muda o comportamento atual de nenhuma forma, a menos querequestScrollToItem
seja chamado. (I0a7a0). ClickableText
está marcado como descontinuado. Para adicionar links ao texto, crie umAnnotatedString
com umLinkAnnotation
correspondente ao link e transmita esseAnnotatedString
ao elemento combinávelText
(I34d4b, b/323346994).- O uso de
UrlAnnotation
foi descontinuado. UseLinkAnnotation.Url
. Se você estiver usando a aplicação de temas do Material Design, use o objetoTextDefaults
para criar a anotação com a aplicação de temas do Material Design (I8d180, b/323346545). String.parseAsHtml
foi renomeado comoAnnotatedString.Companion.fromHtml
(I43dcd).- Adição de argumentos de estilo (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e um listener de interação de link ao métodoparseAsHtml
. Ao analisar a string com tags HTML com tags<a>
, o método vai construir umLinkAnnotation.Url
para cada uma dessas tags e transmitir os objetos de estilo e o listener de interação com o link para cada anotação. (I7c977). - A
LinkAnnotation
agora usa os argumentos de estilo com base no estado e umLinkInteractionListener
Adicione essa anotação aoAnnotatedString
para criar um hiperlink. Ao transmitirfocusedState
e/ouhoveredState
, você pode definir a configuração visual para links quando eles estão focados e/ou com o cursor. (I81ce4, b/139312671). - A flag de recurso para capturas de tela longas foi removida. (I28648, b/329128246).
LazyColumn
agora renderiza cabeçalhos fixos corretamente em capturas de tela longas. (I8d239, b/329296635).- A maioria das APIs experimentais restantes que foram introduzidas com a nova
BasicTextField
foram estabilizadas. (I714e2). - Foi adicionado o parâmetro
textObfuscationCharacter
aoBasicSecureTextField
, que controla qual caractere usar ao ofuscar o conteúdo. (I0588b). - As origens de arrasto e deslizamento rápido
NestedScroll
estão sendo substituídas porUserInput
eSideEffect
para acomodar a definição estendida dessas origens, que agora incluem animações (efeito colateral) e a roda do mouse e o teclado (UserInput
). (I40579) - Introdução de
LocalBringIntoViewSpec
, um comportamento de rolagem de foco dependente da plataforma que é aplicado na camada do modificador rolável. (I27aa5, b/317453911). TextFieldCharSequence
foi removido.TextFieldBuffer.originalValues
foi substituído porTextFieldBuffer.originalText
eTextFieldBuffer.originalSelection
. (I2c7d6).ImeOptions.hintLocales
não é mais anulável. Se você quiser transmitir uma lista de localidades vazia, useLocaleList.Empty
. (Ic5bc4).getOffsetFractionForPage
foi renomeado comogetOffsetDistanceInPages
(Ia05e2).
Correções de bugs
- Quando
InputTransformations
são mesclados comnext
, osKeyboardOptions
são mesclados corretamente por opções individuais usando o novo métodoKeyboardOptions.merge
. (Ie5304, b/295951492). - O
targetValue
doAnchoredDraggableState
não considera mais os limites de posição. Agora, ele tem um limite implícito de 50%, o que significa que otargetValue
muda no ponto médio entre duas âncoras. (I82c2c).
Contribuição externa
- Duas APIs de rolagem foram renomeadas (I56a75).
Versão 1.7.0-alpha06
3 de abril de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha06
. A versão 1.7.0-alpha06 contém estas confirmações.
Novos recursos
- O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyColumn
eLazyRow
. Antes era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de posicionamento (reordenação). Descontinuamos esse modificador e apresentamos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparecimento (desvanecimento), desaparecimento (desvanecimento) e reordenação. (I2d7f7, b/150812265). - Os clientes de
LazyColumn/LazyRow
agora podem desativar a manutenção de um índice com base na chave do próximo cartão de medição chamando umLazyListState.requestToScroll
sem suspensão. (I98036, b/209652366). - Foi adicionado o método
parseAsHtml
para strings com estilo: ele permite converter uma string marcada com tags HTML emAnnotatedString
. Nem todas as tags são compatíveis. Por exemplo, ainda não é possível mostrar listas com marcadores. (I84d3d). - Implementamos o suporte experimental para capturas de tela longas em contêineres de rolagem do Compose usando a API oficial do Android (
ScrollCaptureCallback
). Esse recurso é experimental e pode não processar todos os casos corretamente. Por isso, ela está desativada por padrão. Para ativar, defina a flagComposeFeatureFlag_LongScreenshotsEnabled
como verdadeira. Essa flag será removida antes da versão Beta 1.7. (I2b055, b/329296471). - Introdução de uma nova API
GraphicsLayer
para oferecer mais flexibilidade no posicionamento e na renderização de instânciasGraphicsLayer
e oferecer suporte a recursos de renderização intrínsecos sem precisar coordenar com implementações combináveis para especificar instâncias de modificadorGraphicsLayer
.
Mudanças na API
- Todos os parâmetros
KeyboardOptions
agora têm um valor não especificado por padrão. O métodoKeyboardOptions.merge
foi adicionado. KeyboardOptions.autoCorrect
emautoCorrectEnabled
foi renomeado e transformado em anulável, em que nulo indica que nenhum valor foi especificado. (Ia8ba0, b/295951492).outOfBoundsPageCount
foi renomeado comobeyondViewportPageCount
(I129c6).fun ClipEntry.getMetadata()
mudou paraval ClipEntry.clipMetadata
. (I50155).TextFieldState.valueAsFlow()
foi removido. Preferência porsnapshotFlow { state.text }
ousnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629).- Os parâmetros
InputTransformation.transformInput
foram reorganizados.originalValue: TextFieldCharSequence
foi removido. Em vez disso,TextFieldBuffer
agora carrega esse valor com o mesmo nome. Também foi removido o parâmetrovalueWithChanges: TextFieldBuffer
.TextFieldBuffer
agora é o escopo do receptor na função. (I919cc). - A variante
BasicTextField(state)
eBasicSecureTextField
agora usamKeyboardActionHandler
em vez deKeyboardActions
para processar ações realizadas pelo teclado de software. (I58dda). - APIs de delegação de escrita à mão com stylus para oferecer suporte a essa escrita em campos de entrada de texto "falsos". (I9c09c, b/327271923).
KeyboardOptions.shouldShowKeyboardOnFocus
foi renomeado comoshowKeyboardOnFocus
(Ib4b7a, b/295951492).- O parâmetro
hintMediaTypes
foi removido deModifier.contentReceiver
. Os desenvolvedores já foram incentivados a verificar o tipo de mídia daTransferableContent
recebida, já que ela pode ser incompatível com ahintMediaTypes
configurada. (I82f99). - Os parâmetros de
BasicSecureTextField
foram reordenados. Os parâmetroskeyboardType
eimeAction
foram removidos em favor da classeKeyboardOptions
completa, mantendo os mesmos padrões adequados paraBasicSecureTextField
. Também foi removido o parâmetroscrollState
. (Ibbfa9). - O tipo de
TextFieldState.text
foi alterado deTextFieldCharSequence
paraCharSequence
. Portanto,TextFieldState.selection: TextRange
eTextFieldState.composition: TextRange?
foram adicionados para ler os valores atuais de seleção e composição diretamente do objeto de estado. TextFieldState.forEachTextValue
foi removido. (Idb2a2).- As funções
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
foram removidas. UseclipEntry.getMetadata()
para ler os metadados da entrada de clipe atual. Verifique também se o resultado deClipboardManager.getClip
é nulo ou não para entender se a área de transferência tem um clipe atual. (I50498). - Agora,
ClipboardManager.setClip
aceita null para limpar a área de transferência. (I7d2e9). ReceiveContentListener
é convertido em uma interface de função. Além disso, a sobrecargaModifier.receiveContent
que recebe um lambda foi removida, já queReceiveContentListener
agora é uma interface de função.Modifier.receiveContent
foi renomeado comoModifier.contentReceiver
. (I1e6af).TransferableContent.consumeEach
foi renomeado comoTransferableContent.consume
(I1e462).rememberTextFieldState
foi atualizada para uma API estável. (I37999).
Correções de bugs
- Correção de um bug em que a variante
BasicTextField(state)
não funcionava com teclados CJK(com base na composição) (I54425). - Correção de um bug em que a
Modifier.dragAndDropTarget()
podia fazer referência a dados desatualizados em determinados cenários com reutilização deModifier.Node
(I05bb1). - Revertemos uma mudança recente no contrato em que as chamadas
AnchoredDraggableState#anchoredDrag
eram fixadas no final de uma operaçãoanchoredDrag
. (I95715).
Versão 1.7.0-alpha05
20 de março de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha05
. A versão 1.7.0-alpha05 contém estas confirmações.
Mudanças na API
- A composição experimental
LocalTextLinkStyle
foi removida para estilizar hiperlinks. (Iebfa7). - A substituição experimental de
BasicText
com o argumentoonLinkClicked
foi removida Uma API substituta para suporte a hiperlinks será lançada no futuro. (I107d5). - Os métodos e as propriedades relacionadas a Codepoints foram removidos em
TextFieldState
eTextFieldBuffer
. Também removemos os sufixosinChars
das APIs restantes relacionadas à seleção e composição. (Ief7ce). - O
currentValue
doAnchoredDraggable
agora vai ser atualizado ao passar por um ponto de ancoragem. UsesettledValue
para receber a semânticacurrentValue
anterior, atualizando apenas quando se estabelecer em uma âncora. O progresso agora é exposto como uma função (que exige um ponto inicial e final) em vez de uma propriedade. (Ibe6e8, b/318707189, b/298271489, b/294991954). BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
eTextFieldDecorator
foram graduados para a versão estável. (I9582b).InterceptPlatformTextInput
foi introduzido para ajudar a escrever testes de baixo nível relacionados ao IME e outros casos de uso de baixo nível do IME. O uso dePlatformTextInputTestOverride
foi descontinuado. (I862ed, b/322680547).restrictedConstraints()
foi dividida em dois métodos:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd).
Contribuição externa
- Foram adicionadas duas novas APIs
isLastScrollForward
/isLastScrollBackward
para verificar a direção de rolagem da ação de rolagem mais recente e retornar "false" se não houver nenhuma ação de rolagem. (I63a0e).
Versão 1.7.0-alpha04
6 de março de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha04
. A versão 1.7.0-alpha04 contém estas confirmações.
Mudanças na API
- Suporte ao recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
hintLocales
foi adicionado aKeyboardOptions
para queTextFields
possa sugerir IMEs com localidades específicas para pré-definir um idioma preferido. (Id18c2).- As sobrecargas experimentais
BasicTextField2
eBasicSecureTextField
que usavam os parâmetrosvalue: String
eonValueChange: () -> String
foram removidas (I568b4). - Adicione uma função
applySemantics
opcional aInputTransformation
para influenciar a semântica doBasicTextField2
em que ela é aplicada. (I74a2f, b/170648072). - Nesta CL, estamos adicionando a ação semântica
GetScrollViewportLength
para encaminhar informações sobre os componentes rolados no Compose para o sistema a11y. Essa CL também aplica o uso dessa propriedade nas listas roláveis do Foundation. (Ic5fa2). BasicTextField2
foi renomeado comoBasicTextField
. (Ie5713).- O
FocusRequester.createRefs
agora é estável (I4d92c, b/261436820). DelegatableNode.scrollIntoView()
foi introduzido para permitir que os nós de modificador façam solicitações descrollIntoView
diretamente. (I2b3b7, b/299939840).- Introdução de
DelegatableNode.requireView()
para permitir que nós modificadores recebam oView
do Android atual sem ler um local de composição. (I40768). - Introdução de informações de layout contextual no escopo da linha e da coluna do fluxo contextual, com índice de linha, posição e restrições de largura e altura máxima para permanecer na posição especificada. Os itens que excederem a largura/altura máxima podem fluir para a próxima linha ou ser omitidos com base nas configurações de transbordamento. (Id13f8, b/292114798).
Correções de bugs
- Correção de um bug em que, em determinadas condições, alternar os atributos
enabled
oureadOnly
deTextField
causava uma falha (Iae17b).
Versão 1.7.0-alpha03
21 de fevereiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha03
. A versão 1.7.0-alpha03 contém estas confirmações.
Mudanças na API
DelegatableNode.requireLayoutCoordinates()
foi introduzido como uma maneira de acessar aLayoutCoordinates
atual de umModifier.Node
sem precisar substituironPlaced
e armazenar as coordenadas em uma propriedade. (Ia8657).DelegatableNode.currentLayoutCoordinates
foi introduzido como uma maneira de acessar aLayoutCoordinates
atual de umModifier.Node
sem precisar substituironPlaced
e armazenar as coordenadas em uma propriedade. (Iaebaa).- Otimizações de desempenho em
DraggableAnchors
usadas porAnchoredDraggable
. (I89cff). BasicTextField2
e as APIs relacionadas no pacoteandroidx.compose.foundation.text2
foram movidas paraandroidx.compose.foundation.text
. (I9f635).BasicTextField2
não aceita mais um parâmetroCodepointTransformation
. UseBasicSecureTextField
ouOutputTransformation
. (Id34ff).- Foi adicionado um método para comparar apenas as anotações de dois
AnnotatedStrings
. (I32659). - Conheça o
ContextualFlowRow
e oFlowRow
/Column
otimizado comMaxLines
eOverflow
. Temos o prazer de anunciar melhorias nas APIs experimentaisFlowRow
eFlowColumn
, que agora oferecem suporte amaxLines
e overflow, além da estreia deContextualFlowRow
eContextualFlowColumn
. Essa atualização foi projetada para fornecer componentes de desempenho ideais, em queContextualFlow*
é perfeito para um grande número de itens que usam uma pequena configuraçãomaxLines
e botões dinâmicos +N para ver mais, eFlowRow
eFlowColumn
são perfeitos para um pequeno número de itens, menos de 100. Importante: para manter o comportamento atual emFlowRow
ouFlowColumn
, em que todos os itens são compostos, independentemente de se encaixarem no eixo cruzado máximo, definaoverflow
comoFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
durante a inicialização. ConfiraContextualFlowRowSample
eFlowRowSample
para ver exemplos desses novos recursos em ação. (Ib9135, b/293577082).
Correções de bugs
- A animação do cursor não solicita mais frames entre os estados ativado e desativado. (Ia2253).
- Os construtores de cópia descontinuados de
KeyboardOptions
agora copiam todas as propriedades corretamente. (If12de).
Versão 1.7.0-alpha02
7 de fevereiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha02
. A versão 1.7.0-alpha02 contém estas confirmações.
Mudanças na API
HorizontalPager
,VerticalPager
ePagerState
são promovidos para a versão estável. (I67660, b/316966909).- Adição de um local de composição
LocalTextLinkStyle
que permite mudar o estilo dos links em Texto no app. Se você estiver usando seu próprio tema no app, defina esse local de composição de acordo com o tema. Ao usar o tema Material, a cor do link será definida como a cor primária do Material Design. (I7eb10). - Introdução do modificador
receiveContent
, que oferece aos desenvolvedores uma maneira de receber conteúdo avançado no Jetpack Compose. - O
receiveContent
se integra aoBasicTextField2
para aceitar conteúdo avançado fornecido pelo teclado do software ou pela ação de colar da área de transferência. (I81b72). - Nesta mudança, estamos substituindo
SnapFlingBehavior
porTargetedFlingBehavior
no pagero para desbloquear outros casos de uso e oferecer maior flexibilidade. (I762ea). - Com essa mudança, as APIs de estabilização estão se tornando estáveis. Também estamos limpando parte do código de teste e adicionando mais amostras ao recurso de ajuste. (Id8da9).
- Introdução de
TargetedFlingBehavior
, umFlingBehavior
que permite a propagação de informações sobre o estado da animação em andamento e o deslocamento de rolagem de destino. (I6a207).
Correções de bugs
- Agora,
BasicTextField2
mantém o cursor visível durante a digitação quando ele é rolado para fora da visualização ou se move para fora da visualização devido à entrada. (Ieb856, b/237190748).
Contribuição externa
- Foi adicionada uma API experimental para configurar o comportamento de pré-carregamento de LazyLists. (I022a4).
Versão 1.7.0-alpha01
24 de janeiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.7.0-alpha01
. A versão 1.7.0-alpha01 contém estas confirmações.
Novos recursos
- Foi adicionado um novo
Indication API
,IndicationNodeFactory
. Isso leva a implementações deIndication
com mais desempenho em comparação com a APIrememberUpdatedInstance
anterior (agora descontinuada). Para informações sobre a migração, consulte developer.android.com. clickable / combinedClickable / selectable / toggleable
agora aceita um parâmetroMutableInteractionSource
anulável. Se for nulo e oIndication
fornecido for umIndicationNodeFactory
, oIndication
poderá ser criado de forma lenta apenas quando necessário, o que melhora a performance. Se você não estiver elevando e usando oMutableInteractionSource
, é recomendável transmitir null.
Mudanças na API
- Introdução de
DecayAnimation
emAnchoredDraggable
. Essa mudança adiciona um parâmetrodecayAnimationSpec
aAnchoredDraggable
, permitindo o uso da animação de decréscimo ao se estabelecer em uma das âncoras. A mudança também inclui renomear oanimationSpec
parasnapAnimationSpec
para ajudar a entender o caso de uso de cada especificação. - O
BasicTextField2
está disponível para uso experimental. Ele precisa ter aproximadamente a mesma paridade de recursos queBasicTextField
, e o comportamento precisa estar pronto para produção. No entanto, a API ainda é experimental. Antes da estabilização, ele será renomeado paraBasicTextField
e movido para o mesmo pacote. - Introdução do primeiro rascunho da API
OutputTransformation
paraBasicTextField2
. Essa API substitui a maioria dos casos de uso deVisualTransformation
naBasicTextField
antiga. No entanto, ela ainda não está completa e algumas coisas não funcionam corretamente, mas agradecemos qualquer feedback sobre a usabilidade da API para seus casos de uso. (aosp/2708848). - Foi introduzido o
LinkAnnotation
, que permite adicionar links e elementos clicáveis ao texto. O recurso de links ainda não está completo, e mais mudanças na API estão chegando. - Introdução do modificador
receiveContent
, que oferece aos desenvolvedores uma maneira de receber conteúdo avançado no Jetpack Compose. - O
receiveContent
se integra aoBasicTextField2
para aceitar conteúdo avançado fornecido pelo teclado do software ou colado da área de transferência. KeyboardOptions.shouldShowKeyboardOnFocus
permite desativar o comportamento padrão deBasicTextField
de solicitar um teclado de software no foco.TextInputService
eLocalTextInputService
foram descontinuados. UsePlatformTextInputModifierNode
para se integrar diretamente às APIs IME da plataforma. (aosp/2862698).- O uso de
Indication#rememberUpdatedInstance
foi descontinuado Ele tem uma penalidade de desempenho inevitável alta e impede outras otimizações. Em vez disso, use a nova APIIndicationNodeFactory
.
Correções de bugs
BasicTextField
agora vai pré-validar uma pequena seleção de mapeamentos de deslocamento quandoVisualTransformation
for transmitido. Isso ajuda a detectar erros de programação comuns que levam a exceções irrecuperáveis em medições ou transmissões de desenho posteriores. Ao gerar erros durante a composição, é mais provável que os desenvolvedores identifiquem esses erros durante o desenvolvimento, ajudando a evitar falhas na produção. (I0fd42).VisualTransformation
não será gerado se você retornar um índice inválido para um índice inválido (b/316401857 ).
Versão 1.6
Versão 1.6.8
12 de junho de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.8
. A versão 1.6.8 contém estas confirmações.
Versão 1.6.7
1º de maio de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.7
. A versão 1.6.7 contém estas confirmações.
Versão 1.6.6
17 de abril de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.6
. A versão 1.6.6 contém estas confirmações.
Correções de bugs
- Correção de um bug em que, em determinadas condições, alternar os atributos
enabled
oureadOnly
deTextField
causava uma falha (Iae17b).
Versão 1.6.5
3 de abril de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.5
. A versão 1.6.5 contém estas confirmações.
Correções de bugs
- Adição de registros de depuração para bugs difíceis de reproduzir em linha/coluna: (b/300280216 e b/297974033).
Versão 1.6.4
20 de março de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.4
. A versão 1.6.4 contém estas confirmações.
Correções de bugs
- Um gesto de seleção de pressionar e arrastar que sai dos limites de layout do texto no primeiro frame do arrasto não causa mais falhas. (Icdf90, b/325307463).
Versão 1.6.3
6 de março de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.3
. A versão 1.6.3 contém estas confirmações.
Versão 1.6.2
21 de fevereiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.2
. A versão 1.6.2 contém estas confirmações.
Correções de bugs
- Correção de
AnimateContentSize
não redefinindo corretamente (I07051). - Correção do problema em que o
intrinsicHeight
do texto era armazenado em cache em algumas circunstâncias (3cd398, b/217910352).
Versão 1.6.1
7 de fevereiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.1
. A versão 1.6.1 contém estas confirmações.
Correções de bugs
- Correção da medida da grade escalonada quando rolada acima do limite. (bffc39).
- Adicionar verificação de layout com dimensões grandes. (e74af5).
- Correção do posicionamento de itens de tamanho 0 no início da grade escalonada. (785f94).
- Chamar o callback onRelease na mesma ordem de onForgotten. (31ce3b).
Versão 1.6.0
24 de janeiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.0
. A versão 1.6.0 contém estas confirmações.
Mudanças importantes desde a versão 1.5.0
- Novo modificador
Modifier.anchoredDraggable
que permite arrastar e animar entre conjuntos predefinidos de âncoras. Esse modificador substituiModifier.swipeable
. Saiba como usar e migrar deModifier.swipeable
no guia de migração. - A funcionalidade de arrastar e soltar entre apps e componentes foi adicionada. Consulte
DragAndDropTarget
,Modifier.dragAndDropSource
e outras APIs para começar Modifier.draggable2D
é o novo modificador que permite o suporte fácil ao arrastar em 2D. Consulte Exemplo.AndroidExternalSurface
eAndroidEmbeddedExternalSurface
foram adicionados para facilitar a adição de componentes orientados a plataformas no Compose- Várias mudanças e melhorias na API em
Pager
esnapFlingBehaviour
- Várias APIs de foco, texto e insetos foram promovidas para APIs estáveis
Versão 1.6.0-rc01
10 de janeiro de 2024
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-rc01
. A versão 1.6.0-rc01 contém estas confirmações.
Mudanças na API
- O construtor de extensão
DragAndDropTarget()
foi removido. Crie uma nova instância usandoobject: DragAndDropTarget {}
. (I32318).
Versão 1.6.0-beta03
13 de dezembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta03
. A versão 1.6.0-beta03 contém estas confirmações.
Correções de bugs
- Correção de falha que afetou textos muito grandes medidos com restrições infinitas. (I1a7df, b/312294386).
PlatformImeOptions
agora é uma classe concreta em vez de uma interface. (If40a4).
Versão 1.6.0-beta02
29 de novembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta02
. A versão 1.6.0-beta02 contém estas confirmações.
Correções de bugs
- Correção de
canScroll
que não era atualizado após a rolagem somente de redimensionamento. (I60a86). - Correção para
Modifier.animateItemPlacement()
eLookaheadScope
após rolagens pequenas. (I3a2b7).
Versão 1.6.0-beta01
15 de novembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-beta01
. A versão 1.6.0-beta01 contém estas confirmações.
Mudanças na API
- O modificador
DragAndDropTarget
agora recebe oDragAndDropTarget
explicitamente e tem uma lambda para ativar uma sessão de arrastar e soltar. Agora há duas funções de fábrica para umDragAndDropModifierNode
. Um para receber transferências e outro para transferir dados (I69481). - O
maximumFlingVelocity
foi atualizado para ser representado como Float. Atualizamos a documentação para deixar mais claro sobre a unidademaximumFlingVelocity
. (I8adc7). onDragAndDropStart
na fábricaDragAndDropModifierNode
foi renomeado comoacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
foi adicionado aoModifier
dragAndDropTarget
para aceitar uma sessão de arrastar e soltar. Essa lambda retorna umDragAndDropTarget
viável se houver interesse em uma sessão de arrastar e soltar. Outras lambdas para processamento de eventos de arrasto foram substituídas por essa.Uma função de fábrica
DragAndDropTarget
foi adicionada para receber de sessões de arrastar e soltar (Iebf3a).A exposição de
startDragImmediately
emAnchoredDraggable
permite o controle para detectar gestos de arrasto ao usá-lo. É útil defini-lo quando o widget está animando para uma âncora de destino. Consulte Exemplo. (Ie6d13, b/285139987).As APIs de dica da plataforma agora são
@ExperimentalFoundationApi
(I30b0b).DragAndDropInfo
foi removido, porqueDragAndDropModifierNode.drag
agora usa parâmetros paratransferData
, tamanho de decoração e decoração de arrastoDrawScope
lambdaDragAndDropTarget
tem métodos para eventos de arrastar e soltar específicos em vez de ser um único método abstratoonDragAndDropEvent
na função de fábrica de umDragAndDropModifierNode
foi renomeado comoonDragAndDropStart
para comunicar melhor que oDragAndDropTarget
fornecido é válido apenas para uma determinada sessão de arrastar e soltarO
DragAndDropEventType
foi removido (I645b1).PlatformTextInputModifierNode.runTextInputSession
foi renomeado comoestablishTextInputSession
(I03cd0).Substitua
OriginalText
porTextSubstitution
. (Ifa5a8).PlatformTextInputModifierNode.textInputSession
foi renomeado comorunTextInputSession
(Ie9c6b).Os filhos de
SubcomposeLayout
(e layouts comoLazyColumn
com base nele) que são retidos para serem reutilizados no futuro são considerados desativados. A nova API de testeassertIsDeactivated()
foi introduzida para testar esses nós. O restante das APIs de teste vai filtrar os nós desativados por padrão. (I2ef84, b/187188981).O parâmetro
clippingEnabled
deModifier.magnifier
foi renomeado comoclip
.O parâmetro
magnifierCenter
deModifier.magnifier
se tornou anulável, preservando o mesmo comportamento padrão. (I6aa66).As APIs
SwipeToReveal
do Material Design (para cards e ícones) agora dependem de uma API baseada em slot (como recomendado pelo Compose) em vez de instâncias baseadas em classe de dados para criar esses slots. Essa é uma mudança importante. Consulte a demonstração e o código de exemplo para conferir exemplos de como usar a nova API. (Ia8943).
Correções de bugs
- Implemente equals e hashcode para
PageSize.Fixed
. (Ie3ede, b/300134276). - Correção de um bug que fazia com que o layout
BasicText
não encolhia quandominWidth
mudava eminWidth
era menor que as restrições de medida iniciaismaxWidth
(Idb19c). - Adição de suporte ao renderizador para o gradiente em varredura em
ArcLine
. (I4d5bb). - Correção do problema de compatibilidade binária com a mudança de margem da janela (Iee695).
- A camada principal do Material Design foi removida do ícone/botão do Material3, porque os microbenchmarks mostram um desempenho melhor sem ela. (I55555).
Versão 1.6.0-alpha08
18 de outubro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha08
. A versão 1.6.0-alpha08 contém estas confirmações.
Novos recursos
Modifier.draggable2D
é o novo modificador que permite o suporte fácil ao arrastar em 2D. Consulte Exemplo (Id95f5, b/214412658).
Mudanças na API
- A lambda
onDrawDragShadow
deModifier.dragAndDrawSource
foi renomeada comodrawDragDecoration
, e o parâmetro de tamanho deDragAndDropInfo
foi renomeado comodragDecorationSize
. (Id0e30, b/303904810). - O parâmetro
decorationBox
deBasicTextField2
foi renomeado comodecorator
. O tipo também é alterado para umaTextFieldDecorator
de interface divertida equivalente. (I23c1c).
Correções de bugs
- Melhoria na documentação sobre
BasicTextField
em relação aos requisitos deonValueChange
. (I90fc9, b/160257648).
Versão 1.6.0-alpha07
4 de outubro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha07
. A versão 1.6.0-alpha07 contém estas confirmações.
Mudanças na API
PlatformTextInputMethodTestOverride
foi introduzido para escrever testes para editores de texto personalizados. (Id159b).GraphicsSurface
foi renomeado comoAndroidExternalSurface
(I11680).- A flag temporária
DisableNonLinearFontScalingInCompose
foi adicionada para desativar o dimensionamento de fonte não linear. DefinaDisableNonLinearFontScalingInCompose = true
nos seus testes se precisar de tempo para limpá-los. Essa flag será removida no Compose 1.6.0-beta01. (Ic9486). - Foram adicionadas coleções
ColorList
eColorSet
que evitam alocações. (I744bd). - Essa mudança remove
shortSnapVelocityThreshold
, que foi transformado em um detalhe de implementação das implementações deSnapLayoutInfoProvider
. (I65f6d). - Adição do modificador
dragAndDropSource
para iniciar sessões de arrastar e soltar e do modificadordragAndDropTarget
para receber de sessões de arrastar e soltar (Ib7828, b/286038936). - Atualização da documentação e do método de posição
SnapPositionInLayout
. Adição de paddings de conteúdo ao método de posição emSnapPositionInLayout
. (Id7938, b/300116110). UndoState
foi adicionado aTextFieldState
, o que permite desfazer/refazer as alterações feitas pelo usuário. (Icc024).
Correções de bugs
- Correção de
basicMarquee
que não animava após a mudança de velocidade (Id2e77, b/297974036).
Versão 1.6.0-alpha06
20 de setembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha06
. A versão 1.6.0-alpha06 contém estas confirmações.
Novos recursos
- Novos wrappers combináveis para
SurfaceView
,TextureView: GraphicsSurface()
eEmbeddedGraphicsSurface()
. Essa é uma API experimental e está sujeita a mudanças e modificações. (I9ddb2). - A
Modifier.magnifier()
agora é uma API estável. Isso inclui a remoção deMagnifierStyle
em favor de parâmetros inline no próprio modificador. (I83bec, b/298381260, b/262367109, b/261438887).
Mudanças na API
updateCurrentPage
eupdateTargetPage
foram introduzidos emScrollScope
. Eles são as últimas peças necessárias para permitir a personalização da rolagem animada emPagerState.scroll
. (I9cad5, b/267744105, b/243786897).- A densidade foi removida de
SnapFlingBehavior
. Todas as implementações deSnapLayoutInfoProvider
já têm uma maneira de acessar a densidade. O escopo do receptor pode ser removido, o que vai levar a uma implementação menos complexa deSnapFlingBehavior
eSnapLayoutInfoProviders
. (I153c3). - Mais modificadores marcados como estáveis. (I56af1, b/298046462).
SnapStepSize
foi removido deSnapLayoutInfoProvider
O cálculo precisa ser feito usando as informações de layout e fornecido por meio da abordagem ou dos ajustes de afastamento. (If320c).
Mudanças de comportamento
- O Compose agora usa escala de fonte não linear para melhorar a legibilidade e a acessibilidade. Quando a escala da fonte for maior que 100% nas configurações do sistema, o texto pequeno vai aumentar de tamanho normalmente, mas o texto grande vai aumentar apenas um pouco. Além disso, as alturas de linha definidas em SP são ajustadas automaticamente para permanecerem proporcionais à altura pretendida da escala de 100%. Consulte as práticas recomendadas para dimensionamento de fontes para mais informações. (I11518)
Correções de bugs
- O uso de
rememberSaveable
foi removido das dicas de ferramentas. (Icc131, b/299500338).
Versão 1.6.0-alpha05
6 de setembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha05
. A versão 1.6.0-alpha05 contém estas confirmações.
Mudanças na API
- Adicione sobrecargas para
BasicSecureTextField
que aceitem um valor imutável e um callback para mudar esse valor, assim como a APIBasicTextField
atual. (Ia4882). - A
Modifier.preferKeepClear()
foi adicionada para marcar o elemento combinável como com preferência por janelas flutuantes na API 33 e mais recentes. (Ib51d5, b/297260115). - As velocidades de lançamento em componentes de visualização, como
ScrollView
eRecyclerView
, são limitadas aViewConfiguration.ScaledMaximumFlingVelocity
. O Compose agora contém a própria versão demaximumFlingVelocity
, que agora se aplica aDraggable
. (Ibf974). - Remoção das sobrecargas
Pager
ePagerState
descontinuadas. (Iea07e). BasicTooltipBox
foi adicionado acompose.foundation
, ePlainTooltipBox
eRichTooltipBox
foram atualizados para usarTooltipBox
com novos elementos combináveisPlainTooltip
eRichTooltip
. (I79e1d).
Versão 1.6.0-alpha04
23 de agosto de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha04
. A versão 1.6.0-alpha04 contém estas confirmações.
Mudanças na API
- A interface
ReusableComposition
foi adicionada para gerenciar o ciclo de vida e a reutilização de subcomposições. (I812d1, b/252846775). - O
Modifier.focusGroup
foi promovido para APIs estáveis. (I7ffa3). - Adicione sobrecargas para
BasicTextField2
que aceitem um valor imutável e um callback para mudar esse valor, assim como a APIBasicTextField
atual. (I3f2b8). - A
GridItemSpan::currentLineSpan
agora é uma API estável. (Icc29c). - A tela que aceita
contentDescription
agora é uma API estável. (Ib3d29). viewportSize
foi introduzido emScrollState
, uma maneira de saber o tamanho doviewPort
do componente que usaScrollState
após a medição. (I8b85a, b/283102682).- Correção de um problema em que a pré-busca no Pager não correspondia ao comportamento nas visualizações. (I93352, b/289088847).
- O
Modifier.consumeWindowInsets(PaddingValues)
agora é estável.- A API
Deprecated Modifier.consumedWindowInsets
foi removida. UseModifier.consumeWindowInsets
. (Id72bb).
- A API
Versão 1.6.0-alpha03
9 de agosto de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha03
. A versão 1.6.0-alpha03 contém estas confirmações.
Mudanças na API
- A sobrecarga de
LazyLayout
foi adicionada. Ela aceita uma lambda deLazyLayoutItemProvider
, não um objeto simples como antes. A sobrecarga anterior foi descontinuada. (I42a5a). - Foi adicionado suporte à configuração de
privateImeOptions
(Idb772).
Correções de bugs
- Correção de campos de texto que mostram o teclado e podem ser editados quando
readOnly
é verdadeiro. Também corrigimos o teclado que não aparecia quandoreadOnly
era alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).
Versão 1.6.0-alpha02
26 de julho de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha02
. A versão 1.6.0-alpha02 contém estas confirmações.
Mudanças na API
PagerLayoutInfo
foi introduzido com informações coletadas após uma medida ser aprovada emPager
. Também foi introduzidoPageInfo
, as informações sobre uma única página medida emPager
. (Iad003, b/283098900).- Anotações adicionais para especificar entradas permitidas para elementos combináveis (I51109).
- A
SemanticsNodeInteraction.requestFocus
foi adicionada como uma maneira mais conveniente e detectável de solicitar o foco nos testes. (Ie8722). - A API
PlatformTextInput*
foi redesenhada por completo. (I6c93a, b/274661182, b/267235947, b/277380808). - A
SoftwareKeyboardController
e aLocalSoftwareKeyboardController
não são mais experimentais.LocalSoftwareKeyboardController
também é umaCompositionLocal
adequada. (I4c364). - O
Modifier.transformable
agora fornece delta de deslocamento no parâmetrocanPan
para ajudar a determinar a direção do deslocamento para permitir ou não. (I692aa, b/266829800). - O modificador
consumeWindowInsets
foi atualizado para estender a superclasseAbstractComposeView
(Iacd74, b/269479941).
Versão 1.6.0-alpha01
21 de junho de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.6.0-alpha01
. A versão 1.6.0-alpha01 contém estas confirmações.
Novos recursos
- Introdução de uma nova API
AnchoredDraggable
na base. Ele pode ser usado para criar componentes que podem ser arrastados entre estados discretos, como páginas iniciais modais. Essa API substitui a APISwipeable
do Material Design. (I4a2ed).
Mudanças na API
- Suporte a
InputConnection#requestCursorUpdates
(I0c69b). scrollAnimationSpec
foi introduzido para permitir especificações de animação personalizadas. A configuraçãoBringIntoViewCalculator
foi atualizada paraBringIntoViewScroller
. (Idb741).- O tipo
ResourceResolutionException
foi adicionado para agrupar os throwables gerados ao tentar carregar recursos de bitmap com uma descrição do caminho do recurso que não foi carregado. (I19f44, b/230166331, b/278424788). - Adição de ações e propriedades semânticas para oferecer suporte à tradução de texto. (I4a6bc).
- Uma API
BringIntoViewCalculator
foi lançada e pode ser usada para personalizar como componentes comoScrollable
respondem a solicitaçõesbringIntoView
. A sobrecarga de rolagem foi alterada para aceitar opcionalmente uma instância deBringIntoViewCalculator
. (Iaf5af).
Correções de bugs
- Foi adicionada uma verificação de lint para avisar se você está criando um
MutableInteractionSource
na composição sem lembrar dele, semelhante às verificações de lint para criar estado mutável /Animatable
. (I5daae). - Adição de suporte à seleção por mouse. A seleção por toque vai expandir por palavra e encolher por caractere. (Ic0c6c, b/180639271).
- A interface
FocusTargetModifierNode
foi adicionada e pode ser usada para criar umFocusTarget
personalizado. (I9790e).
Versão 1.5
Versão 1.5.4
18 de outubro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.4
. A versão 1.5.4 contém estas confirmações.
Versão 1.5.3
4 de outubro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.3
. Esta versão não tem mudanças.
Versão 1.5.2
27 de setembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.2
. A versão 1.5.2 contém estas confirmações.
Correções de bugs
- Correção de um bug no texto que causava falhas em determinadas circunstâncias quando a semântica era invalidada
Versão 1.5.1
6 de setembro de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.1
. A versão 1.5.1 contém estas confirmações.
Correções de bugs
- Correção de campos de texto que mostram o teclado e podem ser editados quando
readOnly
é verdadeiro. Também corrigimos o teclado que não aparecia quandoreadOnly
era alterado de verdadeiro para falso enquanto estava em foco (I34a19, b/246909589).
Versão 1.5.0
9 de agosto de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.0
. A versão 1.5.0 contém estas confirmações.
Mudanças importantes desde a versão 1.4.0
- Muitos modificadores básicos, incluindo
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, modificador de layout e muito mais, foram migrados para a APIModifier.Node
, reduzindo a sobrecarga na composição inicial. - Melhorias na estabilidade dos pagers. Vários bugs foram corrigidos.
- Os parâmetros
pageCount
agora estão emPagerState
em vez do próprio Pager
Versão 1.5.0-rc01
26 de julho de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.0-rc01
. A versão 1.5.0-rc01 contém estas confirmações.
Correções de bugs
Uma inspeção opcional para recomendar a migração de chamadas
mutableStateOf()
para os tipos especializados correspondentes de primitivos está disponível. O ID do lint éAutoboxingStateCreation
. Antes, essa inspeção era ativada por padrão para todos os projetos. Para ver essa mensagem no editor do Android Studio e nas saídas de lint do projeto, mude a gravidade de informativo para aviso (ou mais alto) declarandowarning "AutoboxingStateCreation"
dentro da configuraçãobuild.gradle
oubuild.gradle.kts
do módulo, conforme mostrado (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versão 1.5.0-beta03
28 de junho de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta03
. A versão 1.5.0-beta03 contém estas confirmações.
Versão 1.5.0-beta02
7 de junho de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta02
. A versão 1.5.0-beta02 contém estas confirmações.
Versão 1.5.0-beta01
24 de maio de 2023
Lançamento de androidx.compose.foundation:foundation-*:1.5.0-beta01
. A versão 1.5.0-beta01 contém estas confirmações.
Mudanças na API
- Implemente
PlatformDataProvider
para fornecer frequência cardíaca e passos diários. A interfaceSensorGateway
foi removida da API pública. (I55b84).
Correções de bugs
- Redução de alocações durante medições de listas/grades/etc. lentas (Iaf9e2).
- Alocação reduzida ao aplicar snapshots (I65c09).
- Alocações removidas de animações de mola (Ie9431).
- A alocação foi removida de
TextLayout
(I0fd11). - Remoção de várias alocações no rastreamento da velocidade do ponteiro (I26bae).
Versão 1.5.0-alpha04
10 de maio de 2023
Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha04
e androidx.compose.foundation:foundation-layout:1.5.0-alpha04
. A versão 1.5.0-alpha04 contém estas confirmações.
Mudanças na API
- Adição de
TextStyle.merge(...)
otimizado com a lista de parâmetros completa. (Iad234, b/246961787). - Introdução de um
SnapLayoutInfoProvider
que pode ser usado comLazyGridState
. (I92134, b/269237141, b/260914964). - O
Modifier.animateItemPlacement()
experimental foi adicionado para o escopo do item de grade escalonada lenta. Você pode aplicá-lo aos itens para conseguir as animações de mudança de posição/reordenação de automação. (I4b62d, b/257034719). - O
GridCells.FixedSize
foi promovido a estável.FixedSize
define umLazyGrid
em que cada célula tem o tamanho exato no eixo transversal, com o espaço restante distribuído pelo arranjo do eixo transversal. (I8542f). - Foi introduzido o escopo do receptor
PagerScope
para o Pager e uma função de utilitário para o cálculo de um determinado deslocamento de página. (If2577). - Introdução do
snapPositionalThreshold
ao criar um comportamento de rolagem rápida. Use esse parâmetro para especificar um limite de posição para ajustá-la rapidamente no Pager. (If8f7f). - A
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
foi substituída pelacalculateSnappingOffset
Nesse novo método, simplesmente solicitamos o próximo deslocamento para encaixar. O cálculo dos limites precisa ser realizado no nível da implementação, já que isso pode variar dependendo de como a justificação precisa acontecer. (I923a4). - As APIs
LazyStaggeredGrid
foram promovidas para a versão estável. (I633a5). - O
pageCount
foi removido deHorizontal/VerticalPager
Isso precisa ser fornecido na criação do estado.PagerState
erememberPagerState
foram atualizados para aceitarpageCount
. (Ieb52d, b/266965072). - O
pageCount
foi removido deHorizontal/VerticalPager
Isso precisa ser fornecido na criação do estado.PagerState
erememberPagerState
foram atualizados para aceitarpageCount
. (Ifa3cb, b/266965072). - Introduza
shortSnapVelocityThreshold
naSnapFlingBehavior
do pager. (I7379e, b/275579012). - Adiciona um
FlowRowScope
e umFlowColumnScope
. (I54fe2).
Correções de bugs
- As chamadas para receber semântica no texto quando as restrições têm
minWidth
eminHeight
não falham mais. (Ibd072). - Correção de regressão em que o teclado não aparecia para campos de texto em caixas de diálogo não criadas pelo elemento combinável
Dialog
. (I82551, b/262140644).
Versão 1.5.0-alpha03
19 de abril de 2023
Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha03
e androidx.compose.foundation:foundation-layout:1.5.0-alpha03
. A versão 1.5.0-alpha03 contém estas confirmações.
Esta versão ativa a nova pilha de renderização de texto para o Compose. O novo conjunto é otimizado para performance, e você não vai notar mudanças visíveis.
Se você notar mudanças no texto renderizado, poderá depurar definindo NewTextRendering1_5 = false
para confirmar a diferença de comportamento. Definir isso forçará a recomposição. Registre todas as diferenças de comportamento como bugs.
A flag de depuração será removida antes da versão 1.5 beta01 (Iada23, b/246960758).
Mudanças na API
- Coloque
FlowColumn/FlowRow
inline. (Idab37).
Versão 1.5.0-alpha02
5 de abril de 2023
Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha02
e androidx.compose.foundation:foundation-layout:1.5.0-alpha02
. A versão 1.5.0-alpha02 contém estas confirmações.
Mudanças na API
- Adição de suporte a células de tamanho fixo em
LazyGrid
e organização delas com disposição de eixo cruzado. (I83ed9, b/235121277, b/267942510). - Foi adicionado suporte a faixas de tamanho fixo em
LazyStaggeredGrid
e a organização delas com disposição cruzada. (I7d519). - Os
UrlAnnotation
s emAnnotatedString
s agora podem ser abertos por serviços de acessibilidade, comoTalkBack
. (If4d82, b/253292081). - Ação semântica
InsertTextAtCursor
adicionada para campos de texto (I11ed5). - As ações de teste relacionadas a texto (por exemplo,
performTextInput
) agora vão solicitar o foco diretamente, usando a ação semântica, em vez de clicar no campo. (I6ed05). - Adição de suporte ao espaçamento/arranjo de eixo cruzado usando
verticalArrangement
emFlowRow
ehorizontalArrangement
emFlowColumn
. Também removemosverticalAlignment
ehorizontalAlignment
de nível superior emFlowRow/FlowColumn
. Os desenvolvedores podem usarModifier.align
. Isso reduz a confusão entre as convenções de nomenclatura deverticalAlignment
everticalArrangement
. (I87b60, b/268365538).
Versão 1.5.0-alpha01
22 de março de 2023
Lançamento de androidx.compose.foundation:foundation:1.5.0-alpha01
e androidx.compose.foundation:foundation-layout:1.5.0-alpha01
. A versão 1.5.0-alpha01 contém estas confirmações.
Mudanças na API
- O texto e
BasicText
são refatorados para usar o novo sistema de modificadores. Isso leva a melhorias substanciais no desempenho em muitos casos. Nenhuma mudança deve ser visível. (If1d17, b/246961435). - Ação semântica
PerformImeAction
adicionada para invocar a ação IME em nós de editores de texto. (Ic606f, b/269633506).
Correções de bugs
- Atualização dos elementos internos de
Modifier.hoverable
. O modificadorhoverable
só vai aparecer no inspetor se estiver ativado. (I82103).
Versão 1.4
Versão 1.4.3
3 de maio de 2023
androidx.compose.foundation:foundation:1.4.3
e androidx.compose.foundation:foundation-layout:1.4.3
são lançados sem mudanças (apenas um aumento de versão).
Versão 1.4.2
19 de abril de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.2
e androidx.compose.foundation:foundation-layout:1.4.2
. A versão 1.4.2 contém estas confirmações.
Versão 1.4.1
5 de abril de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.1
e androidx.compose.foundation:foundation-layout:1.4.1
. A versão 1.4.1 contém estas confirmações.
Versão 1.4.0
22 de março de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0
e androidx.compose.foundation:foundation-layout:1.4.0
. A versão 1.4.0 contém estas confirmações.
Mudanças importantes desde a versão 1.3.0
- A integração de compatibilidade de emojis foi adicionada a
Text
eTextField
, além do parágrafo de nível mais baixo. Ela é ativada por padrão quando a emojicompat está configurada. - O
EmojiCompat
pode ser configurado em um texto específico usandoPlatformParagraphStyle
. - Adição de suporte ao período completo de linha para
LazyStaggeredGrid
(I28252). - Adição do
onHover
experimental aoClickableText
(I6938f). - Introdução de novas sobrecargas experimentais para a função
runComposeUiTest
e as funçõescreate*ComposeRule
que aceitam parâmetrosCoroutineContext
. O contexto vai ser usado para a composição de teste e todas as chamadasLaunchedEffect
erememberCoroutineScope()
na composição (I10614, b/265177763). FlowRow
eFlowColumn
agora estão disponíveis como@ExperimentalFoundationApi
. Isso permite um layout de linhas e colunas mais flexível com componentes que vão ser divididos em uma nova linha se não houver espaço suficiente no eixo principal (I3a7b2).- O
Modifier.basicMarquee()
está disponível de forma experimental para mostrar conteúdo com um efeito de letreiro com rolagem (I2df44, b/139321650).
Versão 1.4.0-rc01
8 de março de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0-rc01
e androidx.compose.foundation:foundation-layout:1.4.0-rc01
. A versão 1.4.0-rc01 contém estas confirmações.
Mudanças na API
- Introdução de uma nova API
PlatformTextInputAdapter
de baixo nível para criar implementações de entrada de texto personalizadas que se comunicam diretamente com as APIs da plataforma. (I58df4). - Foi adicionado suporte ao layout reverso a
LazyStaggeredGrid
. (I3ef4a).
Correções de bugs
- A ação semântica
SetText
doBasicTextField
agora vai atualizar o buffer de texto usando o mesmo caminho de código das atualizações de IME e das funções de teste (por exemplo,performTextReplacement
). - As funções de teste de texto
performTextClearance
,performTextReplacement
eperformTextSelection
agora usamSemanticsActions
. (I0807d, b/269633168, b/269624358).
Versão 1.4.0-beta02
22 de fevereiro de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0-beta02
e androidx.compose.foundation:foundation-layout:1.4.0-beta02
. A versão 1.4.0-beta02 contém estas confirmações.
Mudanças na API
- Adicionamos um novo callback
Modifier.Node.onReset()
, que permite redefinir alguns estados locais para processar corretamente o caso em que oLayout
será reutilizado (por exemplo, como um item deLazyColumn
). Corrigimos oFocusTargetModifierNode
para redefinir corretamente o estado focado. (I65495, b/265201972). - O parâmetro
BlendMode
foi adicionado aos métodosDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
para oferecer suporte a diferentes algoritmos de mesclagem ao desenhar texto no Canvas. (I57508). - A API
modifierElementOf()
foi removida. Estenda diretamente deModifierNodeElement
. (Ie6d21).
Correções de bugs
- Não é mais possível selecionar um caractere parcial com as alças de seleção. (Idedd1).
- Correção de falha ao pressionar Ctrl+Backspace em
TextField
vazio (I0427f, b/244185537).
Versão 1.4.0-beta01
8 de fevereiro de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0-beta01
e androidx.compose.foundation:foundation-layout:1.4.0-beta01
. A versão 1.4.0-beta01 contém estas confirmações.
Novos recursos
- Desde a versão 1.3, a integração de compatibilidade de emojis foi adicionada a
Text
eTextField
, além do parágrafo de nível mais baixo. Ela é ativada por padrão quando a emojicompat está configurada. - O
EmojiCompat
pode ser configurado em um texto específico usandoPlatformParagraphStyle
.
Mudanças na API
- Adição da implementação comum da API
PinnableContainer
usada em todos osLazyLayouts
para reter itens que saem da composição, mas ainda precisam estar ativos (If45a4). PinnableContainer.PinnedHandle.unpin()
foi renomeado comorelease()
(I4667a).
Contribuição externa
- A propriedade
mainAxisItemSpacing
foi adicionada aLazyListLayoutInfo
,LazyGridLayoutInfo
eLazyStaggeredGridItemInfo
(I52fad).
Versão 1.4.0-alpha05
25 de janeiro de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha05
e androidx.compose.foundation:foundation-layout:1.4.0-alpha05
. A versão 1.4.0-alpha05 contém estas confirmações.
Novos recursos
- Adição de suporte ao período completo de linha para
LazyStaggeredGrid
(I28252). - Adição do
onHover
experimental aoClickableText
(I6938f). - Introdução de novas sobrecargas experimentais para a função
runComposeUiTest
e as funçõescreate*ComposeRule
que aceitam parâmetrosCoroutineContext
. O contexto vai ser usado para a composição de teste e todas as chamadasLaunchedEffect
erememberCoroutineScope()
na composição (I10614, b/265177763).
Mudanças na API
- Mescla as APIs pré/pós de
OverscrollEffect
em funções combinadasapplyToScroll
eapplyToFling
do "decorator". Consulte os exemplos atualizados na documentação para saber como implementar um efeito de rolagem com o novo formato de API (I8a9c4, b/255554340). - Mais tipos/nulidade de funções inline/descontinuadas e ocultas (I24f91).
- As APIs
LineBreak
eHyphens
noTextStyle
foram atualizadas para a versão estável (Ic1e1d).
Correções de bugs
- O cursor nos campos vai continuar a piscar mesmo quando as animações forem desativadas (I95e70, b/265177763).
- O
Modifier.basicMarquee
agora é animado mesmo quando as animações são desativadas nas configurações do sistema (I23389, b/262298306, b/265177763).
Contribuição externa
- Os métodos
notifyFocusedRect
emTextInputSession
eTextInputService
não foram descontinuados novamente (I23a04, b/262648050).
Versão 1.4.0-alpha04
11 de janeiro de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha04
e androidx.compose.foundation:foundation-layout:1.4.0-alpha04
. A versão 1.4.0-alpha04 contém estas confirmações.
Novos recursos
FlowRow
eFlowColumn
agora estão disponíveis como@ExperimentalFoundationApi
. Isso permite um layout de linhas e colunas mais flexível com componentes que vão ser divididos em uma nova linha se não houver espaço suficiente no eixo principal (I3a7b2).- O
Modifier.basicMarquee()
está disponível de forma experimental para mostrar conteúdo com um efeito de letreiro com rolagem (I2df44, b/139321650).
Mudanças na API
- O uso de
FocusRequesterModifier
foi descontinuado e substituído porFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589). - O construtor
AndroidFont
comvariationSettings
agora é uma API estável e pode ser usado para criar novos tipos de descritores de fonte (I5adcc, b/261565807). - Introdução da API
PinnableContainer
propagada por listas lentas usando um local de composição que permite fixar o item atual. Isso significa que esse item não será descartado quando for rolado para fora da visualização. Por exemplo,Modifier.focusable()
vai fixar o item que está em foco usando esse mecanismo (Ib8881, b/259274257, b/195049010). - A forma como os roláveis respondem aos
bringIntoViewRequesters
e aos focalizáveis foi reescrita para modelar melhor a complexidade dessas operações e lidar com mais casos extremos (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114). - Mais nulidade do tipo de retorno das funções descontinuadas e ocultas (Ibf7b0).
- Adição de
TextMotion
experimental aoTextStyle
para definir o texto comoStatic(default)
ou animado. UseTextMotion.Animated
se o texto for dimensionado, transladado ou girado usando uma animação (I24dd7). - Adição de
TextFieldFocusModifier
para corrigir o comportamento da navegação de foco na Plataforma Android (I00303). - O argumento
maxSize: IntSize
foi substituído emdrawText
porsize: Size
para ficar inline com outras funçõesDrawScope
. Osize
é definido comoSize.Unspecified
por padrão, o que não afeta o comportamento padrão anterior (Icd27d).
Correções de bugs
- Correções na física de ajuste de
SnapFlingBehaviour
para parecer mais natural.
Problema conhecido
- Ao atualizar do
androidx.compose.foundation:1.4.0-alpha03
para 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.foundation:foundation:1.4.0-alpha03
e androidx.compose.foundation:foundation-layout:1.4.0-alpha03
. A versão 1.4.0-alpha03 contém estas confirmações.
Mudanças na API
- Em testes de interface que usam uma regra do Compose, as continuações retomadas durante callbacks
withFrameNanos
não serão enviadas até que todos os callbacks de frames sejam executados. Esse é o mesmo comportamento que o Compose apresenta quando é executado normalmente. No entanto, testes que dependem do comportamento antigo podem falhar. Isso só afeta o código que chamawithFrameNanos
ouwithFrameMillis
diretamente e tem uma lógica fora dos callbacks que é transmitida para essas funções e pode precisar ser movida para dentro deles. Exemplos de mudanças em testes de animação estão disponíveis neste CL (link em inglês). - Foi adicionado o parâmetro opcional
onPerformTraversals: (Long) -> Unit
ao construtorTestMonotonicFrameClock
e à função de fábrica para executar o código depois de callbackswithFrameNanos
, mas antes de retomar as corrotinas dos autores das chamadas (Idb413, b/254115946, b/222093277, b/255802670). - Introdução às ações de acessibilidade da página:
PageUp
,PageDown
,PageLeft
,PageRight
. Essas opções estão disponíveis apenas na API 29 (Ida4ab). - Introdução de
HorizontalPager
eVerticalPager
, uma maneira de mostrar elementos combináveis de uma forma de pager. Introdução dePagerState
para controlar os pagers, bem como consultar informações sobre o estado atual deles. Introdução dePageSize
, uma maneira de controlar o tamanho de uma página de pager. Ela pode ser usada para criar um carrossel como os pagers. Introdução dePagerSnapDistance
, uma maneira de controlar como o ajuste vai funcionar no comportamento de rolagem rápida do Pager (I01120). - Introdução de uma sobrecarga em
SnapFlingBehavior.performFling
para ajudar a entender onde a rolagem rápida vai se resolver (I569f6). - Remoção de
OverscrollEffect#isEnabled
. Em vez de precisar lembrar e definir essa sinalização, não envie eventos para o efeito de rolagem esticada quando você não quiser que ela seja mostrada. Por exemplo, seScrollableState#canScrollForward/backward
retornar "false" (I1a4b0, b/255554340, b/255557085). ScrollableState#canScrollForward
eScrollableState#canScrollBackward
foram adicionados para consultar se umScrollableState
tem espaço para rolar em qualquer direção (se está no mínimo / máximo do intervalo). O padrão é "true" para compatibilidade com versões anteriores das implementações existentes doScrollableState
. Os consumidores podem usá-lo para mostrar ao usuário que ainda há espaço para rolar a tela. Ele também pode ser usado para evitar o envio de delta paraScrollableStates
que não tenham espaço para rolar em uma determinada direção, reduzindo o trabalho desnecessário (Idf1a0, b/255557085).- Foi adicionada uma API Modifier para consultar informações de rolagem de ancestrais (I2ba9d, b/203141462).
Clickable
foi usado para atrasar corretamente as interações de pressionamento quando gestos podem se tornar eventos de rolagem.- Os elementos
Clickables
foram corrigidos para passar a atrasar ondulações corretamente quando usados dentro de umScrollable ViewGroup
. - As gavetas e planilhas foram atualizadas para atrasar corretamente os pressionamentos, em casos em que gestos podem se tornar eventos de rolagem.
- A nomenclatura
snapStepSize
foi atualizada para ser consistente com outros métodos emSnapLayoutInfoProvider
(Ife67c). - Adicionamos
EmojiCompat
aoCompose
(Ibf6f9, b/139326806). consumedWindowInsets()
foi renomeado comoconsumeWindowInsets()
ewithConsumedWindowInsets()
comoonConsumedWindowInsetsChanged()
. Além disso, os modificadores se tornaram públicos (Ie44e1).
Correções de bugs
- Correção da falha com as grades
Modifier.animateItemPlacement()
e Lazy. Isso ocorria em algumas condições quando a contagem de novos itens era menor que a anterior (I0bcac, b/253195989).
Versão 1.4.0-alpha02
9 de novembro de 2022
Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha02
e androidx.compose.foundation:foundation-layout:1.4.0-alpha02
. A versão 1.4.0-alpha02 contém estas confirmações.
Mudanças na API
awaitFirstDown
ewaitForUpOrCancellation
agora aceitam umPointerEventPass
para ter mais flexibilidade (I7579a, b/212091796).- A API
beyondBoundCount
foi revertida das APIs lentas* (I12197). - Um parâmetro foi introduzido às APIs lentas para compor e posicionar fora de itens da janela de visualização (I69e89, b/172029355).
- Foi adicionado o parâmetro
minLines
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-alpha01
24 de outubro de 2022
Lançamento de androidx.compose.foundation:foundation:1.4.0-alpha01
e androidx.compose.foundation:foundation-layout:1.4.0-alpha01
. A versão 1.4.0-alpha01 contém estas confirmações.
Mudanças na API
- Um novo método,
awaitEachGesture()
, para detectores de gestos foi adicionado. Ele funciona de forma semelhante 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). - Adição de
WindowInsets.imeAnimationSourc
eWindowInsets.imeAnimationTarget
para determinar o progresso da animação e saber onde o IME será exibido depois que a animação for concluída (I356f1, b/217770337).
Versão 1.3
Versão 1.3.1
9 de novembro de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.1
e androidx.compose.foundation:foundation-layout:1.3.1
. A versão 1.3.1 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema de performance em
BeyondBoundsLayout
(aosp/2255266). - O
ContentInViewModifier
não vai ler as coordenadas de layout, a menos que esteja anexado (aosp/2241316).
Versão 1.3.0
24 de outubro de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0
e androidx.compose.foundation:foundation-layout:1.3.0
. A versão 1.3.0 contém estas confirmações.
Mudanças importantes desde a versão 1.2.0
- Foram lançadas versões experimentais de
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
e outras APIs correspondentes foram adicionadas como experimentais.Modifier.clickable
,Modifier.toggleable
eModifier.selectable
agora mostram ondulações se clicados com o teclado ou botão direcional em um controle remoto.
Versão 1.3.0-rc01
5 de outubro de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-rc01
e androidx.compose.foundation:foundation-layout:1.3.0-rc01
. A versão 1.3.0-rc01 contém estas confirmações.
Mudanças na API
- Introdução do
lowVelocityAnimationSpec
usado pela etapa de abordagem quando não há velocidade suficiente para redução (Iaeb27). - Adição da nova API Hyphens experimental para oferecer suporte à hifenização automática em texto (Iaa869).
Versão 1.3.0-beta03
21 de setembro de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-beta03
e androidx.compose.foundation:foundation-layout:1.3.0-beta03
. A versão 1.3.0-beta03 contém estas confirmações.
Mudanças na API
- Adiciona opções para personalizar a quebra de linha em "Texto" (I86907).
BringIntoViewResponder
s agora podem conseguir os limites mais atualizados de uma solicitação durante o processamento (If86a5, b/241591211).- Foi adicionado suporte ao espaçamento entre itens para
Staggered Grid
experimental (I10b82). - O padding de conteúdo foi introduzido no
Staggered Grid
experimental (I342ea). - O argumento
size:IntSize
comconstraints: Constraints
no métodoTextMeasurer.measure
foi mudado para oferecer suporte a restrições de largura mínima (I37530, b/242707525). - Foi adicionado
Modifier.withConsumedWindowInsets()
a fim de consumirWindowInsets
para o uso fora dewindowInsetsPadding
. - Foi adicionado
MutableWindowInsets
para permitir a mudança fácil deWindowInsets
sem recomposição. (I7fd28, b/237019262, b/243119659).
Versão 1.3.0-beta02
7 de setembro de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-beta02
e androidx.compose.foundation:foundation-layout:1.3.0-beta02
. A versão 1.3.0-beta02 contém estas confirmações.
Mudanças na API
- Versão inicial do
StaggeredGrid
experimental (Ia48be). FocusDirection.In
eFocusDirection.Out
foram renomeados comoFocusDirection.Enter
eFocusDirection.Exit
(Ia4262, b/183746982).- Foi introduzida uma sobrecarga
rememberSnapFlingBehavior
que fornece uma maneira rápida de ativar o ajuste emLazyLists
(Ifb48a). - A fábrica
snapFlingBehavior
foi substituída por uma classeSnapFlingBehavior
concreta. MétodosSnapLayoutInfoProvider
têm escopo para densidade para facilitar as conversões Dp<->Px para os usuários da API (I54a11). - O
LazyLayoutMeasureScope.measure
foi atualizado para retornar uma lista de placeables, destacando a imutabilidade desejada do valor retornado (I48b7c). - O
SnapLayoutInfoProvider
foi introduzido. Ele usa umLazyListState
para criar uma instância doSnapLayoutInfoProvider
que pode ser usada para ativar umFlingBehavior
instantâneo paraLazyLists
(I2dd10).
Correções de bugs
- Refatoração de
AwaitPointerEventScope#awaitLongPressOrCancellation
para corresponder a outras funções de espera (I646e6).
Versão 1.3.0-beta01
24 de agosto de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-beta01
e androidx.compose.foundation:foundation-layout:1.3.0-beta01
. A versão 1.3.0-beta01 contém estas confirmações.
Mudanças na API
- Remoção da
pointerPosition
deOverscrollEffect
. Os efeitos que dependem da posição do ponteiro podem usarModifier.pointerInput { }
noeffectModifier
para saber a posição atual dele (I9f606, b/241239306). AwaitPointerEventScope#awaitLongPressOrCancellation
foi exposto como um elemento básico a mais para detecção de gestos mais complexos (I04374, b/181577176).lazyListSnapLayoutInfoProvider
foi introduzido para permitir o ajuste em listas lentas (I3ecdf).- Introdução de
SnapFlingBehavior
, um comportamento de rolagem rápida que permite o ajuste da lista. Fornecida uma instância doSnapLayoutInfoProvider
com informações sobre o layout de ajuste (Ie754c).
Versão 1.3.0-alpha03
10 de agosto de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha03
e androidx.compose.foundation:foundation-layout:1.3.0-alpha03
. A versão 1.3.0-alpha03 contém estas confirmações.
Mudanças na API
- As fontes de recursos agora oferecem suporte para a configuração de variações de fonte (API 26 ou mais recentes) (I900dd, b/143703328).
- Suporte a fontes variáveis em
DeviceFontFamilyNameFont
(Ic1279, b/143703328). - A anotação experimental foi removida de
PlatformTextStyle
eLineHeightStyle
(I64bef). - Os campos de texto agora geram exceções mais detalhadas quando o
OffsetMapping
fornecido por umaVisualTransformation
retorna índices inválidos (Ie73f9, b/229378536). - Lançamento de APIs experimentais para compartilhar a lógica do provedor de itens entre layouts lentos (Ic891c).
ScrollableDefaults.reverseDirection()
deixou de ser experimental (Iba646).- O uso de
SemanticsModifier.id
foi descontinuado, e o ID semântico foi movido paraLayoutInfo.semanticsId
(Iac808, b/203559524). checkScrollableContainerConstraints()
deixou de ser experimental (I2c290).Modifier.clipScrollableContainer()
não é mais experimental (Ia2b44).- O uso de
TextInputService.show|hideSoftwareKeyboard
foi descontinuado. UseSoftwareKeyboardController
no código do app eTextInputSession
no código de gerenciamento de IME (I14e4c, b/183448615).
Versão 1.3.0-alpha02
27 de julho de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha02
e androidx.compose.foundation:foundation-layout:1.3.0-alpha02
. A versão 1.3.0-alpha02 contém estas confirmações.
Mudanças na API
- A função de extensão
drawText
noDrawScope
foi adicionada para oferecer uma forma de escrever texto com vários estilos em elementos combináveis e modificadores que operam em umDrawScope
, comoCanvas
edrawBehind
(I16a62, b/190787898).
Correções de bugs
- O teclado de software agora vai ficar oculto quando um campo de texto estiver desativado enquanto estiver em foco (I6e3e4, b/237308379).
- Ao adicionar eventos
InputEventChange
no rastreador de velocidade, vamos considerar agora os deltas em vez de posições. Isso vai garantir que a velocidade seja calculada corretamente para todos os casos, mesmo se o elemento de destino for movido (Icea9d, b/216582726, b/223440806, b/227709803). - Quando um elemento rolável tem um filho em foco, agora ele rola corretamente para manter o filho em foco quando o tamanho é reduzido, mesmo quando o tamanho é animado (I80867, b/230756508, b/220119990).
- Foi corrigida uma falha em que o
TextField
era apagado e preenchido novamente enquanto a seleção estava ativa (I1235b, b/208655565, b/214253689).
Versão 1.3.0-alpha01
29 de junho de 2022
Lançamento de androidx.compose.foundation:foundation:1.3.0-alpha01
e androidx.compose.foundation:foundation-layout:1.3.0-alpha01
. A versão 1.3.0-alpha01 contém estas confirmações.
Mudanças na API
- O tipo de anotação
UrlAnnotation
e os métodos associados foram lançados para oferecer suporte a linksTalkBack
emAnnotatedString
s (I1c754, b/231495122).
Correções de bugs
BasicTextField
cursorBrush
agora pode ser animado sem reiniciar a ampulheta do cursor (I812e6, b/236383522).
Versão 1.2
Versão 1.2.1
10 de agosto de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.1
e androidx.compose.foundation:foundation-layout:1.2.1
. A versão 1.2.1 contém estas confirmações.
Versão 1.2.0
27 de julho de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0
e androidx.compose.foundation:foundation-layout:1.2.0
. A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a versão 1.1.0
LazyVerticalGrid
eLazyHorizontalGrid
agora estão na versão estável.- Agora você pode especificar um tipo de conteúdo para itens em listas e grades lentas. Isso vai permitir que os componentes reutilizem elementos com mais eficiência.
- As listas e grades lentas agora têm o parâmetro
userScrollEnabled
, que permite desativar a rolagem usando os gestos do usuário. - Foi adicionada uma nova API experimental chamada
LazyLayout
. É a API que usamos internamente para potencializar listas e grades lentas. - A API
OverscrollEffect
foi introduzida como experimental. Você pode definir efeitos de rolagem personalizados e adicionar uma plataforma padrão a contêineres de rolagem personalizados. - APIs de interoperabilidade de rolagem aninhadas foram introduzidas para permitir a interoperabilidade entre visualizações e agentes de rolagem do Compose.
- A rolagem do mouse e do trackpad foi adicionada a todos os contêineres de rolagem.
Versão 1.2.0-rc03
29 de junho de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-rc03
e androidx.compose.foundation:foundation-layout:1.2.0-rc03
. A versão 1.2.0-rc03 contém estas confirmações.
- Nenhuma mudança desde a versão 1.2.0-rc02.
Versão 1.2.0-rc02
22 de junho de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-rc02
e androidx.compose.foundation:foundation-layout:1.2.0-rc02
. A versão 1.2.0-rc02 contém estas confirmações.
Versão 1.2.0-rc01
15 de junho de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-rc01
e androidx.compose.foundation:foundation-layout:1.2.0-rc01
. A versão 1.2.0-rc01 contém estas confirmações.
Mudanças na API
- Uma interface
OverscrollEffect
experimental foi apresentada para permitir o uso de efeitos de rolagem personalizados, assim como sobrecargas deModifier.scrollable
que a aceitam. - A
LocalOverScrollConfiguration
experimental foi movida defoundation.gesture
para o pacote básico e renomeada comoLocalOverscrollConfiguration
(If19fb, b/204650733). - As interfaces em bibliotecas do Compose agora são criadas usando métodos de interface padrão do jdk8 (I5bcf1).
- Foi introduzida uma nova API experimental
checkScrollableContainerConstraints()
, que permite confirmar se contêineres roláveis não foram aninhados. Você pode usar essa API ao criar seus próprios layouts lentos roláveis comLazyLayout
(Id6fab, b/233352497). - A
LazyVerticalGrid
descontinuada foi removida do pacoteandroidx.compose.foundation.lazy
. A nova API estável está localizada noandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009).
Versão 1.2.0-beta03
1º de junho de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-beta03
e androidx.compose.foundation:foundation-layout:1.2.0-beta03
. A versão 1.2.0-beta03 contém estas confirmações.
Mudanças na API
- Novas
IntervalList
eMutableIntervalList
experimentais foram adicionadas. Elas permitem representar uma lista de valores como vários intervalos. Esses elementos são úteis quando você quer definir sua própria DSL semelhante àquela usada peloLazyColumn
, em que os itens da lista podem ser definidos por várias chamadas de item/itens (I2d05e, b/228580728).
Correções de bugs
- Esclarecimento da documentação de
WindowInsets.ime
para declarar que os encartes deime
são informados até o nível 23 da API, mas apenas animados no nível 30 ou mais recente (Ia7fc0, b/230756508). - Pressionar a tecla de excluir o próximo caractere quando o cursor está no final de um campo de texto não causa mais falhas.
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
agora exigem que os argumentos do construtor não sejam negativos (Ica8e6, b/199919707).
Versão 1.2.0-beta02
18 de maio de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-beta02
e androidx.compose.foundation:foundation-layout:1.2.0-beta02
. A versão 1.2.0-beta02 contém estas confirmações.
- A resolução de fonte disponível para download que não muda o tamanho do layout do texto ou de
TextField
não era recriada, resultando em uma visualização de fonte desatualizada. Essa correção de bug garante que o layout do texto sempre acione uma recriação (I1d49e, b/229727404).
Versão 1.2.0-beta01
11 de maio de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-beta01
e androidx.compose.foundation:foundation-layout:1.2.0-beta01
. A versão 1.2.0-beta01 contém estas confirmações.
Novos recursos
- Esta é a primeira versão Beta da 1.2.
Mudanças na API
- Adicionado o
BeyondBoundsInterval
experimental, que pode ser usado por implementações personalizadas daLazyList
ao definir o layout de itens que estão além dos limites visíveis (Ifabfb, b/184670295). LineHeightBehavior
foi renomeado comoLineHeightStyle
.LineVerticalAlignment
foi renomeado comoLineHeightStyle.Alignment
.- A classe
LineHeightTrim
foi renomeada comoLineHeightStyle.Trim
. - Os valores padrão do construtor foram removidos do
LineHeightStyle
(I582bf, b/181155707). - Foram adicionados valores padrão para os membros opcionais da interface
LazyLayoutItemProvider
(Iba8a0). - Na API
LazyLayoutItemProvider
, em vez de uma fábrica retornar o lambda de composição por índice, agora temos um item da função de composição mais simples que aceita o índice (Id2196). - LazyLayoutItemsProvider foi renomeado como LazyLayoutItemProvider (I0638c).
LazyLayoutItemsProvider.itemsCount
foi renomeado comoitemCount
(Id409c).- O Brush foi adicionado ao
TextStyle
e aoSpanStyle
para oferecer uma forma de escrever texto com uma coloração gradiente (I53869, b/187839528). - Os atributos
trimFirstLineTop
etrimLastLineBottom
doLineHeightBehavior
foram mudados para uma única enumeração:LineHeightTrim
. ALineHeightTrim
tem valores de quatro estados definidos por dois booleanos:FirstLineTop
eLastLineBottom
, Both e None (Ifc6a5, b/181155707). Adição do
LineHeightBehavior
aoTextStyle
e aoParagraphStyle. LineHeightBehavior
para controlar se a altura da linha é adicionada à parte de cima da primeira linha e à de baixo da última. Ele também define o alinhamento da linha no espaço fornecido peloTextStyle
(lineHeight
).Por exemplo, é possível conseguir um comportamento parecido com aquele que o CSS define com
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.As configurações de
trimFirstLineTop
etrimLastLineBottom
só vão funcionar corretamente quandoincludeFontPadding
for falso (I97332, b/181155707).Adicionado o modificador experimental
imeNestedScroll()
para que os desenvolvedores possam controlar o IME (editor de método de entrada, na sigla em inglês) usando a rolagem (I60759).
Correções de bugs
- Foi corrigida a regressão em que os campos de texto não ocultavam o teclado quando eram removidos da composição enquanto estavam em foco (I7a410, b/230536793, b/225541817).
- Foi adicionado suporte ao uso de reticências quando a altura é limitada e não há espaço para todas as linhas de texto (Ie528c, b/168720622).
- Agora, o
BringIntoViewRequester.bringIntoView
sempre fica suspenso até que a solicitação seja concluída ou interrompida por uma solicitação mais recente e sem sobreposição. As solicitações sobrepostas serão colocadas em fila (I43e7f, b/216790855). - Chamadas para
BringIntoViewRequester.bringIntoView
simultâneas para retângulos que se sobrepõem completamente agora respeitam apenas a solicitação do retângulo maior (I34be7, b/216790855, b/184760918). - O
includeFontPadding
fica ativado por padrão. É possível desativar oincludeFontPadding
usando o atributoTextStyle.platformTextStyle
. Em breve, vamos mudar o comportamento padrão. Até lá, temos tempo para integrar melhor as mudanças da altura da linha (aosp/2058653) e resolver os problemas de recorte doTextField
(I01423, b/171394808). - O
Modifier.bringIntoViewRequester
não usa mais oonGloballyPositioned
(I630f5).
Contribuição externa
- O
MouseInjectionScope.scroll(delta = someDelta)
agora é invertido no Android quando rolamos verticalmente. Se someDelta for positivo, a rolagem será para baixo (Ifb697, b/224992993).
Versão 1.2.0-alpha08
20 de abril de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha08
e androidx.compose.foundation:foundation-layout:1.2.0-alpha08
. A versão 1.2.0-alpha08 contém estas confirmações.
Mudanças na API
- Mostra todos os pesos disponíveis para fontes de sistemas no Android ao usar
FontFamily.SansSerif
. Isso usa internamente os nomes de fontes substitutas, como sans-serif-medium, nas APIs de 21 a 28. Essa é uma mudança de comportamento, já que apenas os pesos 400 e 700 tinham suporte das APIs de 21 a 28 (I380fe, b/156048036, b/226441992). - Paragraph e MultiParagraph agora aceitam o parâmetro Constraints. A transmissão de
Constraints.maxHeight
é um ambiente autônomo no momento, mas vai permitir alguns cálculos no futuro, como o uso de reticências com base na altura (I6afee, b/168720622). SubcomposeSlotReusePolicy.getSlotsToRetain()
agora aceita uma classe personalizada semelhante a MutableSet, que não permite adicionar novos itens a ela (Icd314).- O consumo parcial (para baixo OU na posição) foi descontinuado em
PointerInputChange
. 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). - Introdução da nova API experimental
LazyLayout
. Ela permite criar seus próprios componentes, comoLazyColumn
deLazyVerticalGrid
. A API está nas primeiras etapas e pode mudar nas versões futuras (Iba2bc, b/166591700). AndroidFont
agora usatypefaceLoader
como um parâmetro construtor (I2c971).- O elemento complementar
WindowInsets
agora mostra a visibilidade (se está na tela, independente de cruzar com a janela) e o tamanho que poderia ter se estivesse disponível no dispositivo, mas não estivesse ativo (I65182, b/217770337).
Versão 1.2.0-alpha07
6 de abril de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha07
e androidx.compose.foundation:foundation-layout:1.2.0-alpha07
. A versão 1.2.0-alpha07 contém estas confirmações.
Mudanças na API
- Adição de uma API
PinnableParent
que permite que os filhos de layouts lentos impeçam o descarte dos itens atualmente compostos (Ibbdd0, b/184670295). - A
LazyListLayoutInfo
e aLazyGridLayoutInfo
agora têm os camposbeforeContentPadding
eafterContentPadding
(I3b628, b/200920410). - Adição de
KeyboardType.Decimal
como uma alternativa aKeyboard.Number
para a inclusão específica de separador decimal no editor de método de entrada (Iec4c8, b/209835363). - Adição de um novo descritor de fonte (DeviceFontFamilyName) para que, se quiser, você possa pesquisar fontes instaladas no sistema durante cadeias de substitutos de fonte (I30468, b/219754572).
- A
PointerEventType.Scroll
e aPointerEvent.scrollDelta
agora são APIs estáveis (I574c5, b/225669674). - Foi adicionada uma configuração de compatibilidade temporária com
includeFontPadding
emTextStyle/ParagraphStyle. includeFontPadding
pode ser mudado usandoTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Essa é uma opção de configuração temporária para ativar a migração e será removida (If47be, b/171394808). - A interface
FontFamily.Resolver
foi atualizada para integrar a configuração de acessibilidade de texto em negrito em todo o sistema (I6c1e7). - A propriedade de extensão
consumeWindowInsets
daComposeView
permite que os desenvolvedores desativem o consumo de WindowInsets do Android. Isso permite separarComposeViews
na hierarquia para que elas apliquemWindowInsets
sem interferir umas nas outras (I0ef08, b/220943142).
Versão 1.2.0-alpha06
23 de março de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha06
e androidx.compose.foundation:foundation-layout:1.2.0-alpha06
. A versão 1.2.0-alpha06 contém estas confirmações.
Mudanças na API
- Adição da ação semântica
RequestFocus
para solicitar foco no destino focalizável (I17b71). - A
FocusOrder
foi mesclada com asFocusProperties
, e ofocusProperties()
agora tem todos os recursos dofocusOrder()
.FocusOrder
efocusOrder()
foram descontinuados. A funçãofocusOrder()
que aceita umfocusRequester
precisa ser substituída por um modificadorfocusRequester()
em combinação comfocusProperties()
. Isso permite que os modificadores tenham uma separação mais forte de problemas (I601b7). WindowInsets.asPaddingValues(Density)
foi adicionado para permitir que os desenvolvedores façam a conversão sem precisar estar em composição (I94c35).- A análise de drawables vetoriais foi atualizada para oferecer suporte ao espelhamento automático e virar o conteúdo de um objeto
VectorPainter
se a direção atual do layout for da direita para a esquerda (I79cd9, b/185760237).
Correções de bugs
- Os modificadores de rolagem (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
eModifier.scrollable()
) agora rolam para manter o elemento em foco visível se a área de rolagem é redimensionada e o elemento já está visível. - Os TextFields agora são mantidos acima do teclado quando estão em foco, e o teclado é mostrado quando estão dentro de um recurso de rolagem não lenta e o modo de entrada simples é
ADJUST_RESIZE
(I4a485, b/190539358, b/192043120, b/216842427).
Versão 1.2.0-alpha05
9 de março de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha05
e androidx.compose.foundation:foundation-layout:1.2.0-alpha05
. A versão 1.2.0-alpha05 contém estas confirmações.
Mudanças na API
- As APIs
LazyVerticalGrid
eLazyHorizontalGrid
agora estão na versão estável (I307c0). - A API
LazyGridItemInfo.Unknown
foi substituída pelasLazyGridItemInfo.UnknownRow
eLazyGridItemInfo.UnknownColumn
separadas (I56d51). LazyVerticalGrid
/LazyHorizontalGrid
e todas as APIs relacionadas foram movidas para o subpacote.grid
. Atualize as importações deandroidx.compose.foundation.lazy
paraandroidx.compose.foundation.lazy.grid
(I2d446, b/219942574).- Texto:
includeFontPadding
agora fica desativado por padrão. Os problemas de recorte resultantes deincludeFontPadding=false
foram corrigidos e nenhum corte deve ocorrer para scripts altos (I31c84, b/171394808). - A interface medida agora expõe a propriedade parentData (I3313f).
- Lançamento da API
Modifier.onFocusedBoundsChanged
experimental para observar os limites dos focalizáveis filhos (I14283, b/220030968, b/190539358, b/192043120, b/216842427). - A API LazyHorizontalGrid foi adicionada (I61ae7, b/191238807).
- Uma nova API
LazyVerticalGrid
foi adicionada para definir o tamanho de eixos cruzados (I17723). - O modificador FocusGroup foi adicionado (I64bc0, b/213508274, b/184670295).
Correções de bugs
WindowInsets.toString()
agora vai mostrar os valores corretos (I1585d).
Contribuição externa
- Atualização para usar as corrotinas Kotlinx 1.6.0 (I3366d).
Versão 1.2.0-alpha04
23 de fevereiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha04
e androidx.compose.foundation:foundation-layout:1.2.0-alpha04
. A versão 1.2.0-alpha04 contém estas confirmações.
Mudanças na API
BringIntoViewResponders
não precisam mais transmitir manualmente solicitações ao recurso de resposta pai. Em vez disso, precisam retornar imediatamente o retângulo que o pai precisa mostrar (I8e66a).- Suporte ao carregamento de fonte assíncrono no texto (I77057, b/214587005).
LazyVerticalGrid
agora oferece suporte aline breaking
antes de itens com um período que não cabe na linha atual (I05c40, b/207462103).excludeFromSystemGestures
foi renomeado comosystemGesturesExclusion
(I19526).LazyVerticalGrid
agora oferece suporte ao reverseLayout (I6d7d7, b/215572963, b/211753558).- O método
WindowInsets.only()
foi adicionado para permitir que os desenvolvedores incluam somente dimensões de WindowInsets (I14c94, b/217768486). Foram adicionados os elementos
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
, que permitem gerar relatórios sobre o tempo de compilação quando uma função combinável é chamada em um aplicador que ela não foi projetada para usar.Na maioria dos casos, as anotações podem ser inferidas pelo plug-in do compilador do Compose. Portanto, o uso direto delas é raro. Os casos que não podem ser inferidos incluem a criação e o uso de um applier personalizado, funções combináveis abstratas (como métodos de interface), campos ou variáveis globais que são lambdas combináveis (as variáveis locais e os parâmetros são inferidos) ou o uso de
ComposeNode
ou funções combináveis relacionadas.Para appliers personalizados, as funções combináveis que chamam
ComposeNode
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).
Correções de bugs
- Agora, é possível transmitir deslocamentos negativos de rolagem para
LazyGridState.scrollToItem()
eLazyGridState.animateScrollToItem()
(I025c6, b/211753558). - Suporte ao carregamento de fonte assíncrono para TextField (Icc4bf, b/214587005).
Versão 1.2.0-alpha03
9 de fevereiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha03
e androidx.compose.foundation:foundation-layout:1.2.0-alpha03
. A versão 1.2.0-alpha03 contém estas confirmações.
Mudanças na API
- Os métodos
notifyFocusedRect
nas classesTextInputSession
eTextInputService
foram descontinuados e não serão chamados. UseBringIntoViewRequester
(Ia4302, b/192043120, b/216842427, b/178211874). - As animações eram ativadas para itens de grades lentas com Modifier.animateItemPlacement() (Ib6621, b/211753218).
- O
BringIntoViewRequester
agora propaga solicitações para a visualização host do Android (Ia7a51). FontFamilyResolver
agora está disponível viaLocalFontFamilyResolver.current
- Foram adicionados os métodos
createFontFamilyResolver(context)
ecreateFontFamilyResolver(context, coroutineScope)
para criar novos resolvedores da FontFamily fora do uso do Compose. - Os elementos Paragraph e MultiParagraph agora usam o
FontFamily.Resolver
. - O
TextLayoutResult.layoutInput.fontFamilyResolver
agora contém o resolvedor usado para esse layout. OTextLayoutResult.layoutInput.resourceLoader
foi descontinuado porque ele não é mais usado (Id5a45, b/174162090).
- Foram adicionados os métodos
- Foi adicionada
AndroidFont
, uma nova API de baixo nível para fornecer novos tipos de descritores de recursos de fonte no Android. Por exemplo, carregar fontes de um back-end específico do app, localizar opcionalmente fontes pré-instaladas no dispositivo ou carregar uma fonte de um recurso que não é fornecido pelas fábricas de fontes atuais.- A API
Font.ResourceLoaded
foi expandida para oferecer suporte ao carregamento de fonte opcional e assíncrono. Não é recomendável que os desenvolvedores de aplicativos usem essa API diretamente. Para adicionar novos tipos de fonte, consulte AndroidFont. - A função de extensão
Font.AndroidResourceLoader
permite criar umFont.ResourceLoader
quando fora da composição. - O parâmetro
loadingStrategy
foi adicionado às fontes baseadas em recursos para autorizar o carregamento assíncrono quando a fonte do recurso se refere a fontes XML para download (Ie5aea, b/174162090).
- A API
- O construtor
Typeface(FontFamily)
foi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Com fontes para download, essa chamada pode ser bloqueada por 10 segundos. Em vez disso, useFontFamilyResolver.preload
.- O uso de
fontResource(FontFamily): Typeface
foi descontinuado. Ele era usado anteriormente para pré-carregar fontes, o que pode levar até 10 segundos no caso de fontes para download. Em vez disso, useFontFamilyResolver.preload
(If8e7c, b/174162090).
- O uso de
- Agora, é possível especificar o tipo de conteúdo para os itens da
LazyVerticalGrid
. As funções de item/itens noLazyGridScope
agora aceitam esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I7b355, b/215372836). LazyListLayoutInfo
eLazyGridLayoutInfo
agora têm novas propriedades:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410).- Agora, você pode especificar o tipo de conteúdo para os itens de LazyColumn/LazyRow. As funções de item/itens no LazyListScope passaram a aceitar esse parâmetro. Fornecer essas informações ajuda a compor itens reutilizando a lógica para ser mais eficiente e reutilizar apenas o conteúdo entre os itens de tipos semelhantes (I26506).
- O construtor
SubcomposeLayoutState
que aceitamaxSlotsToRetainForReuse
foi descontinuado. Em vez disso, há um novo construtor que aceita aSubcomposeSlotReusePolicy
, uma nova interface que permite um controle mais granular sobre quais slots são retidos para reutilização futura (I52c4d). - Modificadores foram adicionados ao WindowInsets, tanto para preenchimento quanto para dimensionamento. Isso permite que parte do conteúdo se estenda até a área inserida, além de manter a área principal fora da área inserida. Por exemplo, o atributo windowInsetsPadding pode ser usado para preencher a área de conteúdo de modo a evitar áreas que sejam totalmente ou parcialmente cobertas (Id0395, b/213942085).
Correções de bugs
- Os TextFields agora são mantidos acima do teclado quando estão
em foco, e o teclado é mostrado quando o modo de entrada simples é
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120). - O computador usa a composição local para
FontFamily.Resolver
.- O uso do
FontLoader
para computadores foi descontinuado. - Nova fábrica
createFontFamilyResolver
no computador (I6bbbb, b/174162090).
- O uso do
- O tipo de entrada do teclado de software não pisca mais ao mudar o foco entre os campos de texto (I1bf50, b/187746439).
- Os campos de texto não exigem mais um pressionamento da tela de retorno quando a alça do cursor estiver sendo exibida (Ideb4b, b/205726883).
- O comportamento da lupa de seleção foi refinado para corresponder à lupa da plataforma (Idd918, b/206833278).
Versão 1.2.0-alpha02
26 de janeiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha02
e androidx.compose.foundation:foundation-layout:1.2.0-alpha02
. A versão 1.2.0-alpha02 contém estas confirmações.
Mudanças na API
- A anotação
NonRestartableComposable
foi adicionada a métodos que são sobrecargas de métodos já existentes sem lógica complexa. Isso reduz as verificações de memorização geradas pelo compilador (igual a) para todos os parâmetros repetidos na função interna chamada (I90490). - Modificadores
excludeFromSystemGesture
foram adicionados para facilitar o acesso asetSystemGestureExclusionRects
do Android (I46f07).
Correções de bugs
- O comportamento da lupa de seleção foi refinado para corresponder à lupa da plataforma (Idd918, b/206833278).
LazyColumn
,LazyRow
,Modifier.verticalScroll
e outros contêineres que usamModifier.scrollable
agora oferecem suporte à rolagem da roda do mouse (I2b5e1, b/198214718).
Versão 1.2.0-alpha01
12 de janeiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.2.0-alpha01
e androidx.compose.foundation:foundation-layout:1.2.0-alpha01
. A versão 1.2.0-alpha01 contém estas confirmações.
Mudanças na API
- O novo parâmetro
userScrollEnabled
foi adicionado aLazyColumn
,LazyRow
eLazyVerticalGrid
para permitir que os usuários desativem, de forma temporária ou permanente, a rolagem iniciada por gestos de toque ou ações de acessibilidade. A rolagem programática usando os métodos no estado ainda será permitida (I7eae9, b/201150093). - Adição do callback
onSizeChanged
ao modificador de lupa (I6879f). - O widget de lupa agora é mostrado ao arrastar as alças
de seleção em um
SelectionContainer
(I30b38, b/139320979).
Correções de bugs
- Correção da alça do cursor de
TextField
que não era oculta quando o usuário rolava para fora da visualização (I14552, b/208883748).
Atualizações de dependência
- Agora depende do Kotlin
1.6.10
.
Versão 1.1
Versão 1.1.1
23 de fevereiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.1.1
e androidx.compose.foundation:foundation-layout:1.1.1
. A versão 1.1.1 contém estas confirmações.
Correções de bugs
- A
NullPointerException
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.foundation:foundation:1.1.0
e androidx.compose.foundation:foundation-layout:1.1.0
. A versão 1.1.0 contém estas confirmações.
Mudanças importantes desde a versão 1.0.0
- Versão estável do efeito de rolagem do Android 12.
- Melhorias no dimensionamento da área de toque.
- Em relação ao Compose 1.0, os componentes do Material Design vão aumentar o espaço de layout para atender ao tamanho da área de toque das diretrizes de acessibilidade (links em inglês) do Material Design. Por exemplo, a área de toque do botão será expandida para um tamanho mínimo de 48 x 48 dp, mesmo que você defina um tamanho menor para o botão. Isso alinha o Compose Material ao mesmo comportamento dos Componentes do Material Design para ser consistente se você combinar visualizações e o Compose. Essa mudança também garante que, ao criar a interface usando os componentes do Compose Material, os requisitos mínimos para a acessibilidade da área de toque sejam atendidos.
- Versão estável da coluna de navegação.
- Upgrade de várias APIs anteriormente experimentais para a versão estável.
- Compatibilidade com as versões mais recentes do Kotlin.
Versão 1.1.0-rc03
26 de janeiro de 2022
Lançamento de androidx.compose.foundation:foundation:1.1.0-rc03
e androidx.compose.foundation:foundation-layout:1.1.0-rc03
. A versão 1.1.0-rc03 contém estas confirmações.
Correções de bugs
- Atualização de compatibilidade com o Compose Material 1.1.0-rc03.
Versão 1.1.0-rc01
15 de dezembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-rc01
e androidx.compose.foundation:foundation-layout:1.1.0-rc01
. A versão 1.1.0-rc01 contém estas confirmações.
Correções de bugs
- Agora, é possível transmitir deslocamentos negativos de rolagem para
LazyListState.scrollToItem()
eLazyListState.animateScrollToItem()
(Iceb90, b/184252837). - Correção de um bug que causava erro nas ações de rolagem de acessibilidade (I7cbfb).
Versão 1.1.0-beta04
1.º de dezembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-beta04
e androidx.compose.foundation:foundation-layout:1.1.0-beta04
. A versão 1.1.0-beta04 contém estas confirmações.
Novos recursos
- Foi adicionada compatibilidade com o Kotlin
1.6.0
.
Mudanças na API
- Limpeza de nulidade em
androidx.core.view
(I7078a, b/204917439). - APIs experimentais que permitem consumir PointerInputchange como um todo ou verificar se foi consumida ou não foram adicionadas (I2e59d).
- Um widget de lupa é exibido ao arrastar o cursor ou as alças de seleção nos campos de texto (I5391e, b/203781358).
Correções de bugs
- As alças de texto não são movidas quando a visibilidade do IME (editor de método de entrada, na sigla em inglês) muda (I25f2e).
Versão 1.1.0-beta03
17 de novembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-beta03
e androidx.compose.foundation:foundation-layout:1.1.0-beta03
. A versão 1.1.0-beta03 contém estas confirmações.
Mudanças na API
- Suporte a períodos horizontais foi adicionado à LazyVerticalGrid (I7e2fa, b/176758183).
Adição do recurso experimental para animar posições de itens de listas lentas. Há um novo modificador disponível no LazyItemScope chamado
Modifier.animateItemPlacement()
. Exemplo de uso:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Quando você fornece uma chave usando
LazyListScope.item
ouLazyListScope.items
, esse modificador ativa animações de reordenação de itens. Além da reordenação do item, todas as outras mudanças de posição causadas por eventos como mudanças de organização ou de alinhamento também serão animadas (I59e7b, b/150812265).
- Quando você fornece uma chave usando
Versão 1.1.0-beta02
3 de novembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-beta02
e androidx.compose.foundation:foundation-layout:1.1.0-beta02
. A versão 1.1.0-beta02 contém estas confirmações.
Correções de bugs
- As ondulações e outras indicações agora só serão atrasadas se estiverem dentro de um contêiner
Modifier.scrollable()
, em vez de sempre serem atrasadas em um evento para baixo (Ibefe0, b/203141462). - Foi adicionada a API experimental BringIntoView, que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item (Ib918d, b/195353459).
Contribuição externa
- O
Modifier.pointerHoverIcon
foi adicionado (I95f01).
Versão 1.1.0-beta01
27 de outubro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-beta01
e androidx.compose.foundation:foundation-layout:1.1.0-beta01
. A versão 1.1.0-beta01 contém estas confirmações.
Correções de bugs
- Foi adicionada a API experimental BringIntoView, que permite enviar uma solicitação aos elementos pais para que eles rolem a fim de exibir um item (Ib918d, b/195353459).
Versão 1.1.0-alpha06
13 de outubro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha06
e androidx.compose.foundation:foundation-layout:1.1.0-alpha06
. A versão 1.1.0-alpha06 contém estas confirmações.
Mudanças na API
- Foi adicionada uma sobrecarga sem filhos para o Layout, com eficiência melhorada (Ib0d9a).
SemanticsNodeInteraction.performSemanticsAction
agora retorna aSemanticsNodeInteraction
em que a função foi chamada (I9e5db).- Foi adicionado
performScrollToNode(matcher: SemanticsMatcher)
, que rola um contêiner rolável até o conteúdo correspondente (Ic1cb8).
Versão 1.1.0-alpha05
29 de setembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha05
e androidx.compose.foundation:foundation-layout:1.1.0-alpha05
. A versão 1.1.0-alpha05 contém estas confirmações.
Mudanças na API
- Adição de ponteiros históricos experimentais ao PointerEventChange (Ic1fd8, b/197553056, b/199921305).
Correções de bugs
- O suporte à acessibilidade para roláveis lentos e não lentos foi corrigido em relação à rolagem (I6cdb0).
Versão 1.1.0-alpha04
15 de setembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha04
e androidx.compose.foundation:foundation-layout:1.1.0-alpha04
. A versão 1.1.0-alpha04 contém estas confirmações.
Mudanças na API
performGesture
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
- O suporte à rolagem esticada foi adicionado a dispositivos Android 12 (Iccf3c, b/171682480).
Versão 1.1.0-alpha03
1.º de setembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha03
e androidx.compose.foundation:foundation-layout:1.1.0-alpha03
. A versão 1.1.0-alpha03 contém estas confirmações.
Novos recursos
- O Compose
1.1.0-alpha03
foi atualizado para depender do Kotlin1.5.30
(I74545).
Mudanças na API
- Um efeito de brilho para a rolagem foi adicionado. A nova API experimental OverScrollConfiguration foi adicionada para permitir a configuração do efeito visual de rolagem. Forneça um valor nulo para desativar o efeito de rolagem (I0c304, b/171682480).
- A interface AwaitPointerEventScope agora tem withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Um método de teste para receber os limites cortados foi adicionado (I6b28e).
- Um tamanho mínimo da área de toque da ViewConfiguration foi adicionado para uso na entrada de semântica e ponteiros para garantir a acessibilidade (Ie861c).
Versão 1.1.0-alpha02
18 de agosto de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha02
e androidx.compose.foundation:foundation-layout:1.1.0-alpha02
. A versão 1.1.0-alpha02 contém estas confirmações.
Mudanças na API
- Adição das versões de DpSize para
Modifier.size
erequiredSize
(I3fc7e, b/194219828).
Versão 1.1.0-alpha01
4 de agosto de 2021
Lançamento de androidx.compose.foundation:foundation:1.1.0-alpha01
e androidx.compose.foundation:foundation-layout:1.1.0-alpha01
. A versão 1.1.0-alpha01 contém estas confirmações.
Mudanças na API
- O método
DrawScope#drawImage
, que consome retângulos de origem e destino para consumir um parâmetro FilterQuality opcional, foi atualizado. Isso é útil para fazer arte de pixels que precisa ser pixelada quando redimensionada para artes baseadas em pixels. O BitmapPainter e Image que podem ser compostos foram atualizados para consumir também um parâmetro FilterQuality opcional (Ie4fb0, b/180311607). - O TextField agora limpa a seleção quando o botão "Voltar" é pressionado, o que corresponde ao comportamento do EditText do Android (I3ca16, b/174173645).
- A alça do cursor foi adicionada (I07a82, b/173016579).
Correções de bugs
- A rolagem usando ações semânticas para listas lentas e componentes de rolagem regulares agora é animada (Id9066, b/190742024).
Contribuição externa
LazyVerticalGrid
agora aceita parâmetros de disposição horizontal e vertical (If9c92).
Versão 1.0
Versão 1.0.5
3 de novembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.5
e androidx.compose.foundation:foundation-layout:1.0.5
. A versão 1.0.5 contém estas confirmações.
Correções de bugs
- Uma falha de rastreamento de instâncias derivedStateOf foi corrigida (aosp/1792247).
Versão 1.0.4
13 de outubro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.4
e androidx.compose.foundation:foundation-layout:1.0.4
. A versão 1.0.4 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.31
.
Versão 1.0.3
29 de setembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.3
e androidx.compose.foundation:foundation-layout:1.0.3
. A versão 1.0.3 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.30
.
Versão 1.0.2
1.º de setembro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.2
e androidx.compose.foundation:foundation-layout:1.0.2
. A versão 1.0.2 contém estas confirmações.
Atualização para aceitar a versão 1.0.2
do Compose. O Compose 1.0.2
ainda é compatível com o Kotlin 1.5.21
.
Versão 1.0.1
4 de agosto de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.1
e androidx.compose.foundation:foundation-layout:1.0.1
. A versão 1.0.1 contém estas confirmações.
Atualizações de dependência
- Atualização para depender do Kotlin
1.5.21
.
Versão 1.0.0
28 de julho de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0
e androidx.compose.foundation:foundation-layout:1.0.0
. A versão 1.0.0 contém estas confirmações.
Principais recursos da versão 1.0.0
Esta é a primeira versão estável do Compose. Confira mais detalhes na postagem do blog oficial sobre o lançamento do Compose (link em inglês).
Problemas conhecidos
Se você está usando o Android Studio Bumblebee Canary 4 ou o AGP
7.1.0-alpha04
/7.1.0-alpha05
, pode encontrar esta falha:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Para corrigi-la, aumente temporariamente a minSdkVersion para 24+ no arquivo
build.gradle
. Esse problema será corrigido na próxima versão do Android Studio Bumblebee e no AGP7.1
(b/194289155).
Versão 1.0.0-rc02
14 de julho de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-rc02
e androidx.compose.foundation:foundation-layout:1.0.0-rc02
. A versão 1.0.0-rc02 contém estas confirmações.
- Atualização da renderização de bordas para formas genéricas a fim de solucionar problemas nos caminhos definidos com dimensões fixas (aosp/1748871, b/191817116).
Versão 1.0.0-rc01
1º de julho de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-rc01
e androidx.compose.foundation:foundation-layout:1.0.0-rc01
. A versão 1.0.0-rc01 contém estas confirmações.
Mudanças na API
- Agora, o Canvas tem suporte ao parâmetro contentDescription para acessibilidade (Ib547c).
Correções de bugs
- O botão, o card, as caixas de seleção e os valores
Modifier.clickable(enabled=false)
gerais vão bloquear os cliques para o nível pai (Ic2c3b, b/183908811).
Versão 1.0.0-beta09
16 de junho de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta09
e androidx.compose.foundation:foundation-layout:1.0.0-beta09
. A versão 1.0.0-beta09 contém estas confirmações.
Mudanças na API
ManualFrameClock
foi removido. Se você precisar controlar as animações, usecomposeTestRule.mainClock
(I3c3e8, b/189951065).- Mudança das enumerações Role e LiveRegionMode para classes in-line com construtor privado (Id1890).
- A KeyboardCapitalization é convertida em classe in-line (Id5a1c).
- O TextOverflow foi mudado para uma classe in-line (I433af).
Correções de bugs
- Agora, quando você especificar as chaves exclusivas para itens "LazyColumn/Row", a posição de rolagem será mantida com base na chave, ou seja, se você adicionar/remover itens antes do item visível atual, aquele com a chave indicada será mantido como o primeiro visível (Id263f, b/184257857).
- Por enquanto, as constantes de chave são @ExperimentalComposeUiApi. O código de consumo pode declarar constantes particulares antes da estabilização (Ia5d48).
- Adição de IdlingStrategy ao AndroidComposeTestRule, que pode ser
usado por testes de frameworks para instalar um mecanismo alternativo para aguardar
ou alcançar a quiescência. Use
AndroidComposeTestRule.setIdlingStrategyFactory()
antes de começar o teste para instalar sua própria estratégia (I608fa).
Regras de perfil adicionadas
Nesta versão, adicionamos as regras de perfil aos seguintes módulos do Compose (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
O que são as regras de perfil?
As regras de perfil para uma biblioteca são especificadas em um arquivo de texto
baseline-prof.txt
localizado no diretó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 app é criado com esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário, compacto e específico para o app. O ART poderá usar esse perfil quando o app for instalado em dispositivos para compilar antecipadamente um subconjunto específico do app e melhorar o desempenho dele, especialmente a primeira execução. Isso não terá efeito nos aplicativos depuráveis.
Versão 1.0.0-beta08
2 de junho de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta08
e androidx.compose.foundation:foundation-layout:1.0.0-beta08
. A versão 1.0.0-beta08 contém estas confirmações.
Mudanças na API
- A enumeração NestedScrollSource foi substituída por uma classe in-line (Ie321b, b/187055290).
- O uso de enumerações para classes in-line foi refatorado para evitar problemas com a adição de instruções "when" quando novos valores de enumeração forem adicionados (I2b5eb).
- Um tempo limite clicável / alternável foi adicionado para evitar a exibição de uma ondulação durante uma rolagem / ao arrastar (Ia2704, b/168524931).
- As propriedades de semântica de ContentDescription e Text não são mais valores únicos, mas sim listas. Isso permite mesclá-las sem alterações em vez de como concatenações. Também disponibilizamos APIs de teste melhores para usar essas mudanças (Ica6bf, b/184825850).
Modifier.focusModifier()
foi descontinuado e substituído porModifier.focusTarget()
(I6c860).- A enumeração KeyboardType foi substituída por uma classe in-line (I73045, b/187055290).
- A enumeração
FocusState
foi substituída por uma interfaceFocusState
(Iccc1a, b/187055290). - A enumeração ImeAction foi substituída por uma classe in-line (I18be5, b/187055290).
- As funções
AnnotatedString.withAnnotation
agora são ExperimentalTextApi em vez de ExperimentalComposeApi (I0cd0a).- O construtor TextUnit com TextUnitType agora é ExperimentalTextApi, em vez de ExperimentalComposeApi.
- PaddingValues agora é
@Stable
em vez de@Immutable
(I88c50).
Correções de bugs
- As falhas ao tocar área em branco em textos não vazios e mantê-la pressionada foram corrigidas (I33ab5, b/187437299).
- A barra de ferramentas é exibida após SelectAll (I495d9, b/185919613).
- Correção para contêineres roláveis que cortavam os filhos no eixo cruzado. Eles eram facilmente reproduzíveis se você tivesse uma LazyRow com itens de Card. Agora a sombra não será cortada (Icb635, b/186318448).
- Corrigido um problema em que ondulações / outras indicações algumas vezes ficavam presas após um clique longo ao usar Modifier.combinedClickable (I2298c, b/186223077).
- Agora,
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
consomem a mudança de posição automaticamente, sem necessidade de chamar change.consumePositionChange nos callbacks onDrag (I42fc4, b/185096350, b/187320697). Modifier.onGloballyPositioned()
mudou para informar as coordenadas desse modificador na cadeia de modificadores, não as coordenadas de layout após aplicar todos os modificadores. Isso significa que agora a ordem dos modificadores afeta as coordenadas que seriam informadas (Ieb67d, b/177926591).
Versão 1.0.0-beta07
18 de maio de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta07
e androidx.compose.foundation:foundation-layout:1.0.0-beta07
. A Versão 1.0.0-beta07 contém estas confirmações.
Mudanças na API
- A próxima lógica de pré-busca de itens visíveis foi introduzida para LazyColumn/Row (I8a4bc, b/184940225).
- Uma alça de seleção de clipe foi adicionada (Iff80d, b/183408447).
Correções de bugs
- LazyColumn/Row manterá até dois itens visíveis anteriormente ativos (não descartados), mesmo quando eles já tiverem rolado para fora da tela. Isso permite que o componente reutilize as subcomposições ativas quando precisarmos compor um novo item, o que melhora o desempenho de rolagem (Ie5555).
- paintBackground foi removido (I38660).
- Exiba o segundo plano da seleção usando o DrawScope (I73c61, b/186674472).
- Correção de uma regressão beta06 que afetava linhas/coluna que usavam disposições spacedBy para layouts filhos ponderados (Ifaf8c, b/187326588).
Versão 1.0.0-beta06
5 de maio de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta06
e androidx.compose.foundation:foundation-layout:1.0.0-beta06
. A versão 1.0.0-beta06 contém estas confirmações.
Mudanças na API
- Resolução de conflitos com o gesto de navegação (I1145e).
- Novas APIs de acessibilidade CollectionInfo e CollectionItemInfo, que permitem marcar a coleção e os itens relacionados para serviços de acessibilidade (Id54ef, b/180479017).
- Novo
SemanticsActions.ScrollToIndex
para rolar uma lista com itens indexados até um item com determinado índice, eSemanticsProperties.IndexForKey
para conferir o índice de um item de uma lista com itens com chave. As duas ações são implementadas por LazyList.- Novo
SemanticsNodeInteraction.performScrollToIndex
, que rola uma lista até o índice especificado, eSemanticsNodeInteraction.performScrollToKey
, que rola uma lista até o item com a chave especificada (I4fe63, b/178483889, b/161584524).
- Novo
- AnnotatedString é compatível com salvamento para TextFieldValue.Saver. As funções utilitárias addTtsAnnotation e withAnnotation foram adicionadas ao método AnnotatedString.Builder (I8cbdc, b/178446304).
- Valores padrão de parâmetro
0.dp
foram adicionados aosPaddingValues(horizontal, vertical)
(I05571, b/181336792)
Correções de bugs
- Elementos filhos da linha e da coluna com
weight(fill = false)
não fazem mais a mãe preencher todo o espaço do eixo principal disponível (Ied94d, b/186012444, b/184355105).
Versão 1.0.0-beta05
21 de abril de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta05
e androidx.compose.foundation:foundation-layout:1.0.0-beta05
. A versão 1.0.0-beta05 contém estas confirmações.
Mudanças na API
- A interface FlingBehavior agora está marcada como @Stable. Todas as implementações precisam estar em conformidade com os termos
@Stable
(I93354, b/184830577).
Correções de bugs
- Foram corrigidas ações de rolagem de acessibilidade em
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Em vez de rolar até o final, agora a rolagem é feita por uma tela na direção indicada (Ieccb0). - Os arquivos AndroidManifest de ui-test-manifest e ui-tooling-data agora são compatíveis com o Android 12 (I6f9de, b/184718994).
Versão 1.0.0-beta04
7 de abril de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta04
e androidx.compose.foundation:foundation-layout:1.0.0-beta04
. A versão 1.0.0-beta04 contém estas confirmações.
Mudanças na API
- hideSoftwareKeyboard e showSoftwareKeyboard no
SoftwareKeyboardController foram renomeados para
hide()
eshow()
, respectivamente.- A interface completa do CompositionLocal agora é fornecida para o LocalSoftwareKeyboardController, possibilitando que ela seja definida já que é especialmente útil em testes (I579a6).
TextOverflow.Visible
foi introduzido (Ic8f89).- As instâncias públicas de
RowScope
,ColumnScope
,BoxScope
eBoxWithConstraintsScope
foram removidas (I4e83e, b/181869067).
Correções de bugs
- Foi corrigido o problema que ocorria quando os itens de
LazyColumn
/LazyRow
localizados nas bordas eram posicionados incorretamente após o gesto de deslizar rapidamente (Ie4d13, b/183877420). Antes dessa mudança, as funções combináveis locais podiam ser ignoradas com base nos parâmetros delas. Após essa mudança, nenhuma função de composição local vai ser ignorada. Essa mudança é feita porque é comum e esperado que as funções locais capturem parâmetros de pai e mãe. Nesse caso, ignorá-los é uma fonte comum de bugs.
Para resumir, considere o exemplo:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Antes dessa mudança, a função que pode ser composta
ShowCount
sempre era ignorada, mesmo depois de atualizar o parâmetrocount
. Entretanto, esse não é mais o caso (I5648a).
Versão 1.0.0-beta03
24 de março de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta03
e androidx.compose.foundation:foundation-layout:1.0.0-beta03
. A versão 1.0.0-beta03 contém estas confirmações.
Mudanças na API
- O uso de
DefaultMonotonicFrameClock
foi descontinuado. ChamarwithFrameNanos
ouRecomposer.runRecomposeAndApplyChanges
semMonotonicFrameClock
agora vai gerar umaIllegalStateException
(I4eb0d).
Correções de bugs
FlingBehavior.performFling()
agora é chamado mesmo quando a velocidade é 0 (I0b6e5, b/181237123).
Versão 1.0.0-beta02
10 de Março de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta02
e androidx.compose.foundation:foundation-layout:1.0.0-beta02
. A versão 1.0.0-beta02 contém estas confirmações.
Mudanças na API
- Foram adicionadas várias pequenas otimizações à lógica de medida do LazyColumn (Ic6889).
- Adicionada nova API local de composição,
LocalSoftwareKeyboardController
, para substituir a interface SoftwareKeyboardController anterior no TextField (I5951e, b/168778053). - Adicionada nova API local de composição,
LocalSoftwareKeyboardController
, para substituir a interface SoftwareKeyboardController anterior no TextField (I84472, b/168778053).
Correções de bugs
- Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).
Versão 1.0.0-beta01
24 de fevereiro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-beta01
e androidx.compose.foundation:foundation-layout:1.0.0-beta01
. A versão 1.0.0-beta01 contém estas confirmações.
Esta é a primeira versão do Compose 1.0.0 Beta.
Mudanças na API
- O callback onStart foi adicionado a
detectDragGestures
(I67269, b/179995594). - Modificadores de tamanho para intrínsecos não são mais experimentais (I15744).
- Declarações dp foram removidas (I798d2).
- O callback SoftwareKeyboardController foi removido de todos os campos de texto para ser substituído por uma nova API em breve (Iae869, b/168778053).
- O MeasureBlocks foi renomeado como MeasurePolicy, que se tornou uma interface divertida. As APIs de layout foram atualizadas / simplificadas para usar MeasurePolicy (Icab48, b/167662468, b/156751158).
InteractionState
foi substituído por[Mutable]InteractionSource
.- As interfaces são responsáveis por emitir / coletar eventos de interação.
- Em vez de transmitir
interactionState = remember { InteractionState() }
para componentes 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).
- Os métodos LayoutCoordinates descontinuados foram removidos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
- Foi criada uma nova TextInputSession para sessões de entrada de componentes de texto de baixo nível, como o CoreTextField (I8817f, b/177662148).
- Placeable agora expõe measuredSize, representando o tamanho em que o layout filho é realmente medido. Esse tamanho pode não respeitar as restrições de medidas (Ib2729, b/172560206, b/172338608).
- O modificador selectGroup, que permite marcar a coleção de guias ou botões de opção, foi adicionado para fins de acessibilidade (Ie5c29).
Adição de LazyListState.animateScrollToItem
Esse método rola suavemente até um item específico na lista (I4bfd7).
ScrollableState.smoothScrollBy() foi renomeado como animationScrollBy() LazyListState.snapToItemIndex() foi renomeado como scrollToItem() ScrollState.smoothScrollTo() foi renomeado como animationScrollTo() (I35ded).
Modifier.zoomable foi substituído por Modifier.transformable. Os elementos smoothPanBy e smoothRotationBy foram adicionados como uma funcionalidade (Ifc32b, b/175294473).
A
defaultFactory
paracompositionLocalOf
estaticCompositionLocalOf
agora é obrigatória, não opcional.Essa mudança remove um possível erro para tipos não anuláveis, em que nenhuma fábrica padrão era fornecida. Anteriormente, isso forneceria uma referência nula para um tipo não anulável.
Para tipos anuláveis, considere fornecer
{ null }
como a fábrica padrão.Não recomendamos o uso de locais com tipos não anuláveis, a menos que um padrão simples possa ser fornecido. Se não houver esse padrão, o lambda
defaultFactory
gerará uma exceção. No entanto, isso significa que os consumidores do local terão uma dependência implícita sendo fornecida, mas não aplicada pelo sistema de tipos (Ifbd2a).Indication#createIndication()
mudou paraIndication#rememberUpdatedIndication(InteractionState)
e remoção do parâmetroInteractionState
de IndicationInstance#drawIndication()
. A IndicationInstance só deve ser responsável por desenhar efeitos visuais, e não iniciar animações / estado de gravação em resposta a mudanças no InteractionState. Estas animações e gravações de estado ocorrerão dentro derememberUpdatedIndication()
. O parâmetroindication
emModifier.indication
também foi modificado para ser um parâmetro obrigatório (Ic1764, b/152525426).As ações de texto agora verificam o foco automaticamente (I13777, b/179648629).
Remoção de
runBlockingWithManualClock
(I15cdc, b/179664814).A posição de rolagem em Modifier.verticalScroll()/horizontalScroll() é representada com o Ints agora (I81298).
Os pacotes de métodos smoothScrollBy e scrollBy foram mudados para
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473).FlingConfig foi renomeado como FlingBehavior e agora permite a personalização da animação de suspensão em vez de valores de Decays predefinidos (I02b86, b/175294473)
Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize foi renomeado como width/height/size (I5b414).
defaultMinSizeConstraints foi renomeado como defaultMinSize (I4eaae).
Modifier.tapGestureFilter foi removido. Use
Modifier.pointerInput { detectTapGestures(...) }
(I266ed, b/175294473).O consumo parcial foi removido do sistema de entrada do ponteiro. A forma recomendada de coordenar o consumo parcial é Modifier.nestedScroll (Ie9c9b).
A orientação foi movida para o pacote básico. VelocirtTracker foi movido de ui.gesture para ui.input.pointer (Iff4a8, b/175294473).
AnimationClockObservable e subclasses foram removidos. AnimatedFloat foi removido (Icde52, b/177457083).
drawerState.open() e drawerState.close() estão suspendendo funções. Use rememberCoroutineScope() para acessar o escopo da composição para chamá-la (I16f60, b/175294473).
Providers foi renomeado como CompositionLocalProvider.
- O construtor Composition não aceita mais um parâmetro chave e foi descontinuado.
- A currentCompositeKeyHash foi transformada em uma propriedade combinável de nível superior, em vez de uma função combinável de nível superior.
- CompositionData e CompositionGroup foram movidos para o namespace androidx.compose.runtime.tooling.
- ComposableLambda foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
- ComposableLambdaN foi transformada em uma interface em vez de uma classe concreta e não tem mais parâmetros de tipo.
- A função snapshotFlow foi movida para o namespace androidx.compose.runtime.
- O método de mesclagem de SnapshotMutationPolicy não é mais experimental.
- A função clearRoots de nível superior
@TestOnly
foi removida. Ela não é mais necessária. - As funções keySourceInfoOf e resetSourceInfo foram removidas. Elas não são mais necessárias.
- Composer.collectKeySourceInformation foi removido. Ele não é mais necessário.
- Os métodos isJoinedKey, joinedKeyLeft e joinedKeyRight foram removidos. Eles não são mais necessários.
- Várias APIs de nível superior foram movidas e reorganizadas em arquivos diferentes. Devido à semântica de classe de arquivos do Kotlin, essa mudança corrompe a compatibilidade binária, mas não a compatibilidade com a fonte. Portanto, isso não vai ser um problema para a maioria dos usuários
- (I99b7d, b/177245490).
O Modifier.scrollable foi reformulado. Agora, ele usa a interface Scrollable em vez da classe ScrollableController (I4f5a5, b/174485541, b/175294473).
Modifier.draggable agora aceita DraggableState em vez de um lambda simples. É possível criar o estado usando o
rememberDraggableState { delta -> }
para ter o mesmo comportamento de antes (Ica70f, b/175294473).Modificadores requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) foram adicionados para o dimensionamento necessário para tamanhos intrínsecos (I0a6b4).
O
emptyContent()
descontinuado foi removido. Use{}
(Idb33f, b/179432510).Algumas APIs descontinuadas foram excluídas (Ice5da, b/178633932).
Correções de bugs
- A nova API local de composição LocalSoftwareKeyboardController foi adicionada para substituir a interface SoftwareKeyboardController anterior no TextField (I658b6, b/168778053).
Versão 1.0.0-alpha12
10 de fevereiro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha12
e androidx.compose.foundation:foundation-layout:1.0.0-alpha12
. A versão 1.0.0-alpha12 contém estas confirmações.
Mudanças na API
- Agora, Modifier.pointerInput requer que as chaves remember indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
- Atualização de testes: hasText() vai conferir se há texto de entrada e de etiqueta/dica/marcador no campo de texto (Iab803).
- PaddingValues.Absolute foi adicionado e pode ser usado em APIs que aceitam PaddingValues (Ia5f30).
- O uso de onImeActionPerformed foi descontinuado. Use KeyboardActions (If0bbd, b/179071523).
- Para se adequar melhor às convenções de nomenclatura com ImageBitmap e ImageVector, o ImagePainter foi renomeado como BitmapPainter para o VectorPainter paralelo (Iba381, b/174565889).
- Melhoria das APIs de teste de substring que agora usam substrings como argumentos (Icbe78).
- Introduzido um elemento de
contexto de corrotina
InfiniteAnimationPolicy
que vai ser aplicado a animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes comComposeTestRule
(I50ec4, b/151940543). - Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
- ComponentActivity.setContent foi movido para androidx.activity.compose.setContent no módulo androidx.activity:activity-compose (Icf416).
- Os métodos de desestruturação e copy() foram removidos de várias classes em que raramente eram usados (I26702, b/178659281).
Foi adicionada a compatibilidade com chaves personalizadas para LazyColumn/LazyRow. Isso nos permite gerenciar melhor a reordenação dos itens. Assim, o estado armazenado em blocos remember {} vai se mover com o item quando os elementos forem reorganizados ou o item for removido do meio
LazyColumn { items(users, key = { user -> user.id }) { ... } }
- (Ia50ef, b/164901852).
Mudança de Indication#createInstance para @Composable e alteração de LocalIndication para conter uma Indication, não () -> Indication (I5eeea, b/157150564).
Constraints.enforce
foi substituído porConstraints.constrain
(I8b8ea).O uso de loadFontResource foi descontinuado. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi descontinuado. Use painterResource (I6b809).
Por motivos de performance, a semântica ScrollAxisRange agora usa lambdas que retornam Floats em vez de valores Float diretos (If4a35, b/178657186).
A semântica EditableText foi adicionada para marcar o texto de entrada editável do campo para acessibilidade e os métodos de teste correspondentes para conferir a semântica (I8e07a).
Modifier.clickable agora não é compatível com cliques duplos e longos. Use Modifier.combinedClickable para essa funcionalidade (Iafad1).
toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).
IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).
O uso de Modifier.dragGestureFilter foi descontinuado. Use
Modifier.pointerInput { detectDragGestures (...)}
. Outra opção é usar Modifier.draggable para arrastar apenas um eixo (I0ba93, b/175294473).Ambients foi renomeado para corresponder à renomeação de Ambient como CompositionLocal. Ambients costumava ser chamado de AmbientFoo. Agora, CompositionLocals será chamado de LocalFoo (I2d55d).
A seleção foi movida para a base (I7892b).
Da mesma forma que removemos o elemento combinável
state { 0 }
e agora promovemos o uso 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 gravação personalizado, agora vai precisar usar uma nova sobrecarga de rememberSaveable, que tem o parâmetrostateSaver
. O uso vai ser assim:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004).Adição de semântica de senha para acessibilidade (I231ce).
Adição de ProgressBarRangeInfo.Indeterminate para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).
Agora, o tempo de reprodução na animação é unificado em nanossegundos (If776a).
O uso de @ComposableContract foi descontinuado e substituído por três outras anotações mais específicas.
@ComposableContract(restartable = false)
passou a ser@NonRestartableComposable
@ComposableContract(readonly = true)
passou a ser@ReadOnlyComposable
@ComposableContract(preventCapture = true)
passou a ser@DisallowComposableCalls
@ComposableContract(tracked = true)
foi removido (I60a9d).O uso dos utilitários
emptyContent()
e(@Composable () -> Unit).orEmpty()
foi descontinuado por não terem mais valor ou impacto positivo na performance (I0484d).Os recompositores agora podem ser fechados. Os recompositores fechados continuarão a recomposição até que as corrotinas filhas sejam compostas. Recomposer.shutDown foi renomeado para eliminar o contraste com o fechamento (Ib6d76).
As APIs relacionadas a LazyVerticalGrid são marcadas como experimentais (Ia53e3, b/178519862).
rememberSavedInstanceState() foi renomeado como rememberSaveable() e movido para o pacote androidx.compose.runtime.saveable (I1366e, b/177338004).
RestorableStateHolder foi renomeado como SaveableStateHolder e movido para o pacote androidx.compose.runtime.saveable. O método interno RestorableStateProvider foi renomeado como SaveableStateProvider. O tipo genérico foi removido para que você possa transmitir qualquer valor como uma chave. A anotação experimental não é mais necessária (I0902e, b/174598702).
Saver, listSaver(), mapSaver() e autoSaver foram movidos de androidx.compose.runtime.savedinstancestate para androidx.compose.runtime.saveable (I77fe6).
O artefato androidx:compose:runtime:runtime-saved-instance-state foi renomeado como androidx:compose:runtime:runtime-saveable (I6dcac).
Várias APIs antigas que tiveram o uso descontinuado no pacote da interface foram excluídas (I2f2dc).
O uso do artefato compose:runtime-dispatch foi descontinuado. A interface MonotonicFrameClock agora pode ser encontrada em compose:runtime, e a classe AndroidUiDispatcher pode ser encontrada em compose:ui (Ib5c36).
Os parâmetros em RounderCornerShape, CutCornerShape e CornerBasedShape foram renomeados de esquerda/direita para início/fim para oferecer suporte ao espelhamento automático do formato na direção RTL. AbsoluteRounderCornerShape e AbsoluteCutCornerShape foram introduzidos para os casos em que o espelhamento automático não é desejado (I61040, b/152756983).
canDrag foi removido de Modifier.scrollable (Id66e7, b/175294473).
A API à qual o plug-in do compilador do Compose é destinado foi refatorada para usar uma interface em vez de uma classe concreta. A interface também não usa mais um parâmetro de tipo.
Essa é uma mudança interna que não afeta a compatibilidade do código-fonte, mas é uma alteração interruptiva binária (I3b922, b/169406779).
Modifier.scaleGestureFilter foi removido. Use Modifier.zoomable. Você também pode usar
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473).O uso de AnimatedValue/Float foi descontinuado. Use o Animatable (I71345, b/177457083).
- CoreText e CoreTextField foram removidos da API pública.
- A sobrecarga descontinuada SelectionContainer foi removida (I99c19).
Para continuar com as mudanças da última versão, as funções de rolagem que não são de suspensão foram totalmente removidas. Converta para as funções de suspensão com os mesmos nomes. Um escopo de corrotina pode ser conseguido com rememberCoroutineScope() (I3d39c, b/178169563).
O uso de androidx.compose.foundation.layout.ConstraintLayout foi descontinuado e substituído por androidx.constraintlayout.compose.ConstraintLayout. Você vai precisar adicionar uma dependência a
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
(I87adc).O uso de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter foi descontinuado. Use Modifier.clickable ou Modifier.pointerInput com a função detectTapGestures (I6baf9, b/175294473).
Recomposer.current()
foi removido. Por padrão, [Abstract]ComposeView agora usa recompositores criados de forma lenta e com escopo de janela gerados pelo ViewTreeLifecycleOwner para a janela. As marcações de animação com base em withFrameNanos e em recomposições vão ser pausadas enquanto o ciclo de vida do host estiver parado (I38e11).O Recomposer.runningRecomposers agora oferece um StateFlow global de RecomposerInfo somente leitura para observar o estado de composição em andamento no processo. Use essa API em vez de Recomposer.current(), que agora teve o uso descontinuado (If8ebe).
Versão 1.0.0-alpha11
28 de janeiro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha11
e androidx.compose.foundation:foundation-layout:1.0.0-alpha11
. A versão 1.0.0-alpha11 contém estas confirmações.
Mudanças na API
O uso do scrollBy que não é de suspensão foi descontinuado, e o scrollTo que não é de suspensão foi removido.
Agora recomendamos o uso de funções de suspensão para controlar a rolagem e aguardar a conclusão da rolagem. Estamos descontinuando e/ou removendo as versões não suspensas dessas funções como parte da transição (Ie9ced).
O uso do smoothScrollBy que não é de suspensão foi descontinuado. Agora, recomendamos o uso de funções de suspensão para controlar a rolagem e aguardar a conclusão dela. Como parte da transição, estamos descontinuando as versões dessas funções que não são de suspensão (I12880).
O parâmetro de descrição de conteúdo foi adicionado a Image e Icon. Ele é usado para fornecer descrição para os serviços de acessibilidade (I2ac4c).
BasicTextField recebeu um novo parâmetro chamado "decorationBox". Ele permite adicionar decorações como ícones, marcadores, etiquetas e similares ao campo de texto e aumentar a área de toque dele (I16996).
O parâmetro canDrag foi removido do Modifier.draggable (Ic4bec, b/175294473).
AnimatedFloat.fling que aceita FlingConfig foi removido. Use o Animatable.animateDecay de suspensão (I4659b, b/177457083).
A
data class
foi removida das seguintes classes:- InlineTextContent
- Locatelist
- (I605c7)
clickable, toggleable e selectable agora podem ser criados fora da composição (I0a130, b/172938345, b/175294473).
O uso de ScrollableColumn/Row foi descontinuado. O uso do ScrollableColumn é menos eficiente se comparado ao LazyColumn quando você tem um conteúdo de rolagem grande, porque com o LazyColumn só é possível escrever, medir ou renderizar elementos visíveis. Para evitar que os usuários escolhessem uma forma não eficiente, decidimos suspender o uso de ScrollableColumn e de ScrollableRow e promover o uso de LazyColumn e LazyRow. Os usuários ainda podem decidir que não precisam do comportamento lento e usar os modificadores diretamente, como Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Novo método de fábrica
items(count: Int)
para o escopo de LazyColumn/LazyRow/LazyVerticalGrid. Agora,items(items: List)
eitemsIndexed(items: List)
são funções de extensão, então precisam ser importadas manualmente quando são usadas. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).O elemento descontinuado AbsoledAggregation foi removido (Iffa96, b/177641870).
O parâmetro propagadMinConstraints foi adicionado ao Box para especificar se as restrições mínimas de entrada precisam ser transmitidas ao conteúdo do Box ou não. O padrão é false (I0125b, b/152613457).
Correções de bugs
- O uso de onCommit, onDispose e onActive foi descontinuado e substituído pelas APIs SideEffect e DisposableEffect (If760e).
- WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
Mudanças nas funções de fábrica de Font/FontFamily/Typeface
- Foram adicionadas funções de fábrica que começam com letra maiúscula.
- Funções antigas de fábrica com letras minúsculas foram descontinuadas.
- As novas funções de fábrica retornam a FontFamily em vez das subclasses.
- Os construtores das subclasses foram ocultados para que só possam ser criados por funções de fábrica.
- Font.asFontFamily foi renomeada como Font.toFontFamily.
- (I42aa7)
Foi introduzido
ComposeContentTestRule
, que 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 isso quando quiser iniciar a atividade durante o teste, por exemplo, usandoActivityScenario.launch
(I9d782, b/174472899).animateAsState agora é animateFooAsState, em que Foo é o tipo da variável que está sendo animada. Por exemplo, Float, Dp, Offset etc. (Ie7e25).
Agora, a densidade é o escopo do receptor para interfaces de Arrangement (I18aad).
TextFieldValue aceita AnnotatedString. No entanto, essa é uma mudança apenas na API, e a edição de texto em vários estilos ainda não foi implementada.
initial
foi removido dos parâmetros do construtor EditingBuffer (I326d5).
Os elementos invalidate e compositionReference() foram descontinuados e substituídos por currentRecomposeScope e rememberCompositionReference, respectivamente (I583a8).
AnnotatedString foi alterada para ser estendida de kotlin.CharSequence. Portanto, length e subSequence agora são funções de instância, e as funções de extensão foram removidas (Iaf429).
Duration e Uptime vão ser substituídos por milissegundos Long, e essa etapa vai remover a dependência de entrada do ponteiro nessas classes (Ia33b2, b/175142755, b/177420019).
O RememberObserver substituiu o CompositionLifecycleObserver, e o CompositionLifecycleObserver teve o uso descontinuado.
RememberObserver
é uma substituição deCompositionLifecycleObserver
com semânticas modificadas e métodos renomeados. A mudança para a nova API pode ser feita de maneira mecânica para objetos que são lembrados apenas uma vez e continua a ser a prática recomendada. No entanto, se uma referência foi lembrada mais de uma vez em uma composição,onRemembered
é chamado para cada referência em queonEnter
é chamado apenas uma vez.onEnter
era chamado várias vezes quando o objeto era usado em subcomposições, comoWithConstraints
eScaffold
, tornando a única garantia de chamada deonEnter
não confiável, e foi removido paraRememberObserver
.A interface
RememberObserver
adiciona a funçãoonAbandoned
, que é chamada se a instância deRememberObserver
é retornada do callback transmitido pararemember
, mas não é lembrada no estado de composição e, portanto, a chamada deonRemembered
nunca ocorre. Isso poderá ocorrer se uma exceção encerrar a composição antes de ela ser concluída ou se a composição for descartada porque o estado para o qual ela estava produzindo uma composição não é mais atual ou necessário. Se a instância deRememberObserver
após a recomendação de referência única acima estiver rastreando um recurso externo,onForgotten
eonAbandoned
vão indicar que o recurso não é mais necessário. Se o objeto estiver rastreando o trabalho iniciado ou os recursos alocados emonRemembered
, a funçãoonAbandoned
pode ser ignorada, porque não vai ser chamada se aonRemembered
for chamada (I02c36).Renomeação de TransformedText.transformedText para TransformedText.text
- TransformedText não é mais uma classe de dados (Ie672a).
As seguintes classes não são mais classes de dados:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Remoção dos métodos monotonicFrameAnimationClockOf experimentais (Ib753f, b/170708374).
O uso dos métodos de coordenadas globais foi descontinuado, e foram criados novos métodos de coordenadas baseados em janela (Iee284).
Use ImeAction.None em vez de ImeAction.NoAction
- Use ImeAction.Default em vez de ImeAction.Unspecified (Ie1bcc).
FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer mudanças (I2d898, b/177000821).
SemanticsPropertyReceiver.hidden foi renomeada como invisibleToUser e marcada como @ExperimentalComposeUiApi. AccessibilityRangeInfo foi renomeado como ProgressBarRangeInfo. stateDescriptionRange foi renomeado como progressBarRangeInfo. AccessibilityScrollState foi renomeado como ScrollAxisRange. horizontalAccessibilityScrollState foi renomeado como horizontalScrollAxisRange. verticalAccessibilityScrollState foi renomeado como verticalScrollAxisRange (Id3148).
Alteração de VisualTransformation para ser uma interface funcional (I3bba4).
Use TestCoroutineDispatcher nos testes (I532b6).
PointerInputData foi removido, e PointerInputChange foi modificado para fornecer todos os campos de PointerInputData. PointerInputEvent e PointerInputEventData agora são internos porque não são usados em nenhuma API pública (Ifff97, b/175142755).
TextInputService.onStateUpdated foi renomeado como updateState (Id4853).
Remova displaySize, porque ele precisa ser evitado. Normalmente, é melhor usar o tamanho de onRoot() ou pelo menos o tamanho da janela (I62db4).
Versão 1.0.0-alpha10
13 de janeiro de 2021
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha10
e androidx.compose.foundation:foundation-layout:1.0.0-alpha10
. A versão 1.0.0-alpha10 contém estas confirmações.
Mudanças na API
- ImeOptions e KeyboardOptions não são mais uma classe de dados (I3c898, b/168684531).
- Mudanças na API VisualTransformation.
- Renomeação de OffsetMap como OffsetMapping.
- Renomeação de OffsetMapping.identityOffsetMap como OffsetMapping.Identity.
- PasswordTransformation não é mais uma classe de dados.
- OffsetMapping foi movido para o próprio arquivo
- (I0bdf3).
- Mudanças na API EditOperations.
- Renomeação de EditOperation como EditCommand.
- Adição do sufixo Command para implementações concretas do EditOperation.
- EditCommands não são mais classes de dados.
- Renomeação da função EditOperation.process como applyTo.
- Renomeação de InputEventListener como InputEventCallback
- (I0a366).
- Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
- Renomeação de @ExperimentalTesting como @ExperimentalTestApi para ser consistente com anotações de API experimental semelhantes (Ia4502, b/171464963).
- Adição do método experimental stickyHeader a LazyColumn/LazyRow (I0a81d).
- Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
- O uso de TestUiDispatcher foi descontinuado. Em vez disso, use Dispatchers.Main (Ic171f, b/175385255).
- Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
- O nativeClass foi movido para o módulo ui e definido como interno. Atualização dos usos de nativeClass em implementações equivalentes para usar "is MyClass" (I4f734).
- FlowRow e FlowColumn foram descontinuados. Use um layout personalizado (I09027).
- O uso de Modifier.focus() e Modifier.focusRequester() foi descontinuado. Use Modifier.focusModifier() e Modifier.focusReference() (I75a48, b/175160751, b/175160532, b/175077829).
- Introdução do SelectionRegistrar.notifySelectableChange para notificar atualizações do Selectable ao SelectionManager (I6ff30, b/173215242).
- Mudança de
fun Dp.isFinite()
paraval Dp.isFinite
(I50e00). - Constraints#satisfiedBy foi renomeado como isSatiendedBy (I9cf5c).
- Adição de isSpecified, isUnspecified e useOrElse para classes in-line com uma constante Unspecified (I93f7b, b/174310811).
Correções de bugs
- Nova API baseada em corrotina
Animatable
que garante exclusividade mútua entre as animações. Nova DecayAnimationSpec para oferecer suporte a animação de redução multidimensional (I820f2, b/168014930). - Foi adicionado suporte a campos de texto desativados e somente leitura (I35279, b/171040474, b/166478534).
animate()
agora é substituído 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).
- O keyEvent nativo agora pode ser acessado pelo keyEvent.nativeKeyEvent (I87c57, b/173086397).
Versão 1.0.0-alpha09
16 de dezembro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha09
e androidx.compose.foundation:foundation-layout:1.0.0-alpha09
. A versão 1.0.0-alpha09 contém estas confirmações.
Mudanças na API
Adicione a interface Scrollable.
Isso permite que o ScrollState e o LazyListState sejam tratados como um tipo comum, permitindo que a rolagem personalizada seja implementada em ambos os tipos.
Isso também move smoothScrollBy para uma função de extensão no Scrollable, aproveitando essa funcionalidade (I2153b).
LazyVerticalGrid foi adicionado (I17267, b/162213211).
LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed foram descontinuados. Use LazyColumn e LazyRow (I5b48c).
Para suspender as APIs de entrada de ponteiro, o HandlePointerInputScope foi renomeado como AwaitPointerEventScope e o handlePointerInput() como awaitPointerEventScope() (Idf0a1, b/175142755).
Adição de LazyListState.layoutInfo que expõe a lista de tamanhos e deslocamentos dos itens visíveis no momento (If8678, b/170472532).
A anotação ExperimentalPointerInput foi removida (Ia7a24).
Foi adicionado suporte a TextFields para o InteractionState (I61d91).
Adicione o parâmetro ReverseLayout a LazyColumn/Row quando itens
true
forem compostos da parte inferior para a parte superior, eLazyListState.firstVisibleItemIndex == 0
vai significar que o primeiro item está localizado na parte inferior (I552ae, b/166589935).O parâmetro verticalArrangement foi adicionado a LazyColumn. O parâmetro horizontalArrangement foi adicionado a LazyRow. A organização nos permite adicionar um espaçamento entre os itens e especificar a organização deles quando não houver espaço suficiente para preencher todo o tamanho mínimo (Icf79a, b/170394300).
Agora, detectMultitouchGestures usa um callback com parâmetros combinados de centroide, de panorâmica, de zoom e de rotação (Ie6e1c).
O ContentDrawScope foi movido para o módulo ui-graphics para ser usado com o DrawScope (Iee043, b/173832789).
Correções de bugs
- Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
Remoção de SlotTable, SlotReader e SlotWriter da API pública. Antes, eles eram marcados como InternalComposeAPI. Agora, eles são internos do módulo do Compose.
CompositionData e CompositionGroup foram adicionados como substitutos da API de IU para extrair as informações da composição. Elas são públicas, mas não são destinadas para uso fora da API de interface, já que fornecem as informações brutas que a API de interface interpreta (I31a9c).
ShaderBrush foi refatorado para criar lentamente uma instância de sombreador quando as informações de dimensionamento do ambiente de desenho estão disponíveis. Isso é útil para definir gradientes que ocupam os limites de desenho completos de um elemento combinável no momento da composição, sem precisar fazer implementações DrawModifier personalizadas.
As APIs do construtor de função de gradiente foram descontinuadas e substituídas pelos métodos de fábrica em um objeto Gradient (I511fc, b/173066799).
O uso de Modifier.focusObserver foi descontinuado. Use Modifier.onFocusChanged ou Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
A API Autofill agora é experimental e requer ativação (I0a1ec).
Adição de declarações de desestruturação para criar instâncias de FocusRequester (I35d84, b/174817008).
accessibilityLabel foi renomeado como contentDescription. accessibilityValue foi renomeado como stateDescription (I250f2).
Várias novas funções foram introduzidas no SelectionRegistrar, e onPositionChange foi renomeado notifyPositionChange (Ifbaf7).
AndroidOwner agora é interno (Ibcad0, b/170296980).
Nova função InfiniteRepeatable para criar um InfiniteRepeatableSpec (I668e5).
A interface
Applier
foi modificada para simplificar a criação de árvores de baixo para cima, em vez de cima para baixo.O método
insert()
foi renomeado comoinsertTopDown()
.Um novo método,
insertBottomUp()
, foi adicionado.Uma Applier insere nós na árvore que está editando com
insertTopDown()
ouinsertBottomUp()
, dependendo de qual apresenta melhor desempenho.Algumas árvores, como
LayoutNode
eView
, são muito mais eficientes para criação de baixo para cima do que de cima para baixo. Antes dessa mudança, uma pilha de inserções era necessária para implementar de baixo para cima. Ela precisava ser copiada para cada Applier, que precisava da construção de baixo para cima para ter bom desempenho. Com essa mudança, umApplier
substitui uminsertBottomUp()
para criar uma árvore de baixo para cima, einsertTopDown()
para criar a árvore de cima para baixo (Icbdc2).A API painterResource foi adicionada para lidar com o carregamento opaco de objetos Painter de formatos de recursos rasterizados (como PNGs) ou VectorDrawables. Os consumidores não precisam mais determinar o tipo de recurso com antecedência e podem chamar esse método para receber um objeto Painter para uso em elementos combináveis Image ou modificadores de Painter (I2c703, b/173818471).
Adição da função de fábrica buildAnnotatedString para criar uma AnnotatedString. Descontinuação do uso da função builder da annotatedString (Idfe0b).
Versão 1.0.0-alpha08
2 de dezembro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha08
e androidx.compose.foundation:foundation-layout:1.0.0-alpha08
. A versão 1.0.0-alpha08 contém estas confirmações.
Mudanças na API
- Remoção do parâmetro
maxLines
doCoreTextField
. Se você quiser limitar a altura do campo de texto pelo número de linhas, useBasicTextField
(Iec002). - Os métodos
await*TouchSlop()
foram mudados para não detectar o ponteiro e renomeados como*OrCancellation
. Também foi eliminada a necessidade do parâmetroorientationLock
(Ie96e1). - Uma verificação de lint foi adicionada para posicionamento e nomeação do parâmetro lambda combinável, para conferir a consistência com as diretrizes do Compose.
Também ocorreu a migração de algumas APIs usando
children
como o nome da lambda final paracontent
, de acordo com a verificação e as orientações do lint (Iec48e). - As APIs
foundation:foundation-text
foram movidas parafoundation:foundation
. A estrutura do pacote permaneceu a mesma (Id3eb2). - Novo detector de gestos multitoque, incluindo auxiliares para detectar rotação, zoom e movimento (Ic459d).
- Nova API de entrada do ponteiro de suspensão para detector de gesto de arrastar, incluindo o bloqueio de orientação (Icef25).
- VectorAsset foi renomeado como ImageVector. VectorAsset foi movido e renomeado como Builder para ser uma classe interna de ImageVector, de acordo com as diretrizes do conselho da API. Foram adicionados typealias de VectorAssetBuilder para vincular ImageVector.Builder para compatibilidade (Icfdc8).
- ImageAsset e métodos relacionados foram renomeados como ImageBitmap (Ia2d99).
- Propriedades semânticas de base movidas para interface (I6f05c).
APIs de rolagem baseadas em corrotinas foram adicionadas:
LazyListState.snapToItem e LazyListState.smoothScrollBy e APIs de nível inferior foram adicionadas para controle de rolagem. Essas APIs fornecem uma interface de suspensão para controlar a rolagem, que aguarda até que a rolagem seja concluída antes de retornar (Ie5642).
Adição de um parâmetro singeLine a BasicTextField, TextField e OutlinedTextField. Defina esse parâmetro como verdadeiro para tornar o campo de texto uma única linha rolável horizontalmente (I57004, b/168187755).
O detector de gestos para toque, dois toques, tocar e manter pressionado e indicação de pressionamento foi adicionado usando a nova entrada de ponteiro de suspensão. Alguns utilitários também foram adicionados, o que facilita a gravação de detectores de gesto próprios pelos desenvolvedores (I00807).
Modifier.focusable precisa ser adicionado na base. Use-o para adicionar comportamentos focalizáveis a um componente, com semântica e acessibilidade corretas (I41eb9, b/152525426, b/162865824).
As APIs descontinuadas foram removidas: Border foi removida, use BorderStroke. Modifier.drawBorder foi removida, use Modifier.border. Modifier.gravity foi removida, use Modifier.align. Stack foi removida, use Box (I32c2b, b/172470874).
AbsoluteArrangement foi renomeado como Arrangement.Absolute (If26f2).
Correções de bugs
- As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. Foi criado o arquivo DrawModifierDeprecated.kt para incluir os métodos typealiases/helper para ajudar na migração das APIs descontinuadas para as atuais (Id6044, b/173834241).
- O Modifier.drawLayer foi renomeado como Modifier.graphicsLayer. Além disso, as classes relacionadas foram atualizadas para GraphicsLayer, de acordo com o feedback do conselho da API (I0bd29, b/173834241).
<T>
foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).- Tornou os campos de posição e de tempo de atividade do PointerInputData não anuláveis (Id468a).
- Agora, o MaterialTheme define as cores corretas para as alças e para o segundo plano da seleção. Apps que não são do Material podem usar manualmente AmbientTextSelectionColors para personalizar as cores usadas para seleção (I1e6f4, b/139320372, b/139320907).
- O parâmetro de alinhamento do Box foi renomeado como contentAlignment (I2c957).
- Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
- WindowManager.isWindowFocused foi adicionado para conferir se a janela do host está em foco, assim como um WindowFocusObserver que fornece um callback de onWindowFocusChanged (I53b2a, b/170932874).
- Adição do parâmetro resetInput para TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
- API TextFieldValue atualizada.
- TextFieldValue.composition agora é somente leitura.
- Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
- Ambients nomeados com
Ambient
como sufixo foram descontinuados e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440). - Adição do wrapper Android Typeface. Você pode carregar um Android
Typeface usando a função
typeface
, ou seja,typeface(Typeface.DEFAULT)
. Além disso,typefaceFromFontFamily()
foi renomeado comotypeface()
(I52ab7). - Uma verificação de lint foi adicionada para conferir se as fábricas do Modifier usam
androidx.compose.ui.composed {}
internamente em vez de serem marcadas como@Composable
(I3c4bc). - Foi adicionada uma verificação de lint para conferir se as funções de fábrica do Modifier estão definidas como extensões nele. Assim, elas podem ser encadeadas juntas (I07981).
- Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
- O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
- Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
- TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
- A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
- O módulo
foundation:foundation-text
foi mesclado emfoundation:foundation
(Idac0f). - O uso de place(Offset) e placeRelative(Offset) foi descontinuado. Use sobrecargas com deslocamentos int (I4c5e7).
id
foi renomeado comolayoutId
paraLayoutIdParentData
. OMeasurable.id
foi renomeado comoMeasurable.layoutId
(Iadbcb, b/172449643).
Versão 1.0.0-alpha07
11 de novembro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
e androidx.compose.foundation:foundation-text:1.0.0-alpha07
. A versão 1.0.0-alpha07 contém estas confirmações.
Mudanças na API
- Assim como ocorre com
Modifier.fillMaxSize[Width|Height]
, agora aceitamos frações emModifier.fillParentMaxSize[Width|Height]
dentro do escopo deLazyColumn/Row
(I797e2, b/166586426). - Remoção de
KeyboardOptions.toImeOptions
da API pública (Ic2e45). - O uso de AmbientTextStyle, ProvideTextStyle e AmbientContentColor de base foi descontinuado. Em vez disso, use as novas versões disponíveis na biblioteca Material. Em aplicativos que não usam o Material Design, crie seus próprios ambientes de temas específicos do sistema de design que possam ser consumidos nos seus componentes (I74acc, b/172067770).
- O uso de foundation.Text foi descontinuado e substituído por material.Text. Para uma API de texto básica e discreta que não consome valores de um tema, consulte androidx.compose.foundation.BasicText (If64cb).
- Adição de maxLines a TextFields (Ib2a5b).
- Atualize TextFields para aceitar KeyboardOptions (Ida7f3).
- Adição de KeyboardOptions para uso em TextFields (I9ca32).
- Adição de BasicText como uma API de design discreta para texto, paralela à BasicTextField (I28268).
- A anotação ExperimentalLazyDsl foi removida. LazyColumn/LazyRow agora pode ser usado sem a adição de @OptIn (Idab7a, b/166584730).
- O uso de BaseTextField foi descontinuado. Use BasicTextField (I896eb).
- BasicTextField foi adicionado como substituto para CoreTextField e BaseTextField (Id4cea).
- Os LazyColumnItems/LazyRowItems descontinuados foram removidos (I1d8a8).
- Os elementos combináveis de dimensionamento para medidas intrínsecas descontinuados foram removidos (I18537, b/171811496).
- relativePaddingFrom foi renomeado como paddingFrom. O modificador paddingFromBaseline foi adicionado, como conveniência para a especificação de distâncias de limites de layout para linhas de base do texto (I0440a, b/170633813).
- O parâmetro matchHeightConstraintsFirst foi adicionado ao modificador aspectRatio, que pode ser usado para especificar o modificador de acordo com as restrições de altura antes de testar os correspondentes de largura (Ie7c43, b/155290593).
- O elemento descontinuado DpConstraints foi removido (I87884, b/171702471).
Correções de bugs
- A classe
in-line ScaleFactor foi introduzida para representar fatores de escala
para os eixos horizontal e vertical
independentes uns dos outros para oferecer
suporte a casos de uso de escalonamento não uniforme.
- Adição do método computeScaleFactor ao ContentScale.
- ContentScale.FillBounds foi adicionado para realizar o escalonamento não uniforme e esticar os limites de src para ocupar completamente o destino.
- Adição de métodos de operador para calcular parâmetros ScaleFactor com parâmetros Size
- (Ic96a6, b/172291582).
- captureToBitmap foi movido para captureToImage (I86385).
- Marcação de CoreText como @InternalTextApi. Use BasicText (I6aaeb).
- Renomeação de KeyboardOptions como ImeOptions (I82f36).
- KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
- CoreTextField foi marcado como @InternalTextApi. Use BasicTextField (Ie2469).
- A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
- O módulo ui-test-junit4 foi introduzido (Ib91f8).
- A API Icon foi atualizada para assumir Color.Unspecified como uma tonalidade possível, que desenha o recurso ou o Painter fornecido sem um ColorFilter. Anteriormente, tentativas de ignorar a tonalidade com Color.Unspecified resultavam em uma cor transparente que acabava sem renderização alguma (I049e2, b/171624632).
- MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
- Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).
- androidx.ui.test movido para androidx.compose.ui.test (I9ffdb).
- FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
- Foi adicionado o SelectContainer sem o callback (Ibfadb).
- Adição de testes para posições de SelectionHandles no SelectionContainer (Ie93db).
- Adição da opção IME (editor de método de entrada, na sigla em inglês) de correção automática do teclado (I57b8d).
Versão 1.0.0-alpha06
28 de outubro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
e androidx.compose.foundation:foundation-text:1.0.0-alpha06
. A versão 1.0.0-alpha06 contém estas confirmações.
Mudanças na API
- androidx.compose.foundation.Icon foi movido para androidx.compose.material.Icon. Você também pode usar o componente de imagem/Modifier.paint() com um Painter se não quiser usar a biblioteca do Material Design (I9f622).
- Adição de interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805).
- alignByBaseline foi adicionado a RowScope, e alignWithSiblings foi renomeado como alignBy (I06503, b/170628732).
- Box foi criada como uma função in-line (Ibce0c, b/155056091).
- Adição de maxLines ao CoreTextField (Ibee58, b/143687793).
- Adição de softwrap ao CoreTextField (I21a4b).
Correções de bugs
- VectorPainter foi descontinuado e substituído por rememberVectorPainter para indicar melhor que a API de composição usa o "remember" internamente para manter dados entre composições (Ifda43).
- Ativação de transições em ComposeTestRule. Remoção da opção para ativar o cursor piscante na ComposeTestRule (If0de3).
- Adição da opção de teclado de linha única para CoreTextField (I72e6d).
- A API Radius foi renomeada como CornerRadius para expressar melhor a forma de uso dela no Compose. Atualização da documentação para indicar que raios negativos dos cantos são fixados a zero (I130c7, b/168762961).
- Foi adicionada a possibilidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
- Foi adicionada a opção IME KeyboardCapitalization (I8ac38).
- Correção de Handle Position RTL (I6e1e0).
- Alteração interruptiva: o valor de retorno de PointerInputFilter.onPointerEvent(...) foi removido, já que o único valor que precisaria poder ser mudado nos eventos de ponteiro é o dos dados de consumo. Em vez de retornar dados de PointerInputFilter.onPointerEvent(...), agora é possível mudar os dados de consumo dos PointerEvents transmitidos (I6acd0).
- Adição da opção SelectAll no menu de seleção (Ief02b).
Versão 1.0.0-alpha05
14 de outubro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
e androidx.compose.foundation:foundation-text:1.0.0-alpha05
. A versão 1.0.0-alpha05 contém estas confirmações.
Mudanças na API
- CoreTextField agora oferece suporte à funcionalidade de cursor (Id23aa).
Descontinuação do uso das APIs contentColor() e currentTextStyle() e substituição delas pelos ambientes AmbientContentColor e AmbientTextStyle, respectivamente. É possível acessar o valor atual usando
.current
na propriedade do ambiente, assim como em qualquer outro ambiente. Essa mudança foi feita para manter a consistência e para evitar a existência de várias maneiras de alcançar o mesmo resultado. Também renomeia algumas propriedades de ambiente para descrever melhor a finalidade delas da seguinte maneira:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Correções de bugs
- Como parte da padronização de valores de sentinela para classes in-line, renomeie a Color.Unset como Color.Unspecified para consistência com outras classes in-line (I97611, b/169797763).
- Foram adicionadas ações de acessibilidade de copiar/colar/cortar (I6db4f).
- Introdução de TextOverflow.None. Quando overflow for "None", o Text não vai mais ser processado e vai informar o tamanho real para o LayoutNode (I175c9, b/158830170).
- Os parâmetros Size.Unspecified foram atualizados para Float.NaN, em vez de Float.POSITIVE_INFINITY. As implementações do Painter foram atualizadas para conferir o Size.Unspecified, assim como Sizes não finitos (I95a7e).
- O módulo Paging Compose e a integração de paginação foram adicionados (Ib85da).
- Modificação do LazyListScope para receber valores anuláveis (I1765b).
- OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned() (I587e8, b/169083903).
- Foram adicionados exemplos para LazyColumn/Row (Idc16d).
- Correção dos itens e métodos itemsIndexed para permitir emptyList (I06647).
- Adição de uma DSL para especificar informações do inspetor (Ic9a22).
- LongPress movido para Text (Iff2bc).
- Desativação de Selection em Text, e uma Demo (Ie7e97).
- Foi adicionado suporte a AnnotatedString para conversão do SpannableString para acessibilidade (Ief907).
PointerInputFilter.onPointerInput(...)
foi removido.PointerInputFilter.onPointerEvent(...)
precisa ser usado no lugar dele (I6f04a).
Versão 1.0.0-alpha04
1º de outubro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
e androidx.compose.foundation:foundation-text:1.0.0-alpha04
. A versão 1.0.0-alpha04 contém estas confirmações.
Mudanças na API
- Stack foi renomeado como Box. O uso do foundation.Box anterior vai ser descontinuado e substituído pelo novo Box em compose.foundation.layout. O comportamento do novo Box quando tem vários filhos é empilhá-los um em cima do outro. Isso é diferente do Box anterior, que se comportava de maneira semelhante a Column (I94893, b/167680279).
- O uso de parâmetros de decoração do Box foi descontinuado. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
- Adição de uma nova classe LazyListState. Isso permite observar e controlar a posição de rolagem dos componentes LazyRow e LazyColumn. As instâncias podem ser criadas usando RememberLazyListState() e transmitidas para o parâmetro de estado do componente. Atualmente, o primeiro item visível e os deslocamentos podem ser observados nessa versão inicial (Ic7cb7, b/159307669).
- A posição de lista atrasada e o deslocamento de rolagem agora são salvos e restaurados na recriação da Activity (Ie045f, b/166589058).
- A ação semântica de clique longo foi adicionada (I6281b, b/156468846).
- O utilitário MututorMutex foi adicionado para manter um único mutador de estado compartilhado ao longo do tempo e cancelar mutações conflitantes por prioridade (I3f975).
- rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory foram anotadas com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).
- O parâmetro inlineContent foi removido do Text com entrada de String. Ele não vai ser usado porque inlineContent precisa funcionar com AnnotatedString (Ief403).
- As APIs Arrangement personalizadas descontinuadas foram removidas (Ic576d, b/168297922, b/168297923).
- O parâmetro
unbounded
foi adicionado aos modificadores do wrapContentSize, o que permite medir o elemento do layout com restrições máximas infinitas (I77951, b/158559319). - Evitamos importações estáticas de conteúdo de escopos de layout, por exemplo, alignWithSiblings no RowScope. A alternativa do escopo explícito precisa ser usada:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
(I216be, b/166760797).
Correções de bugs
- Atualização de várias APIs Graphics
- As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
- Os métodos Rect.expandToInclude e Rect.join foram removidos.
- Documentação do Radius atualizada para informar oval, além de elíptico.
- Foi adicionada documentação para indicar que o construtor público da classe Radius in-line não pode ser chamado diretamente, mas os objetos Radius precisam ser instanciados pelos construtores de função deles.
- Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
- O uso de Rect.shift foi descontinuado e substituído por Rect.translate.
- Remoção das APIs RoundRect.grow e Rect.shrink.
- Renomeação de RoundRect.outerRect para Rect.boundingRect.
- Remoção dos métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium.
- Renomeação de RoundRect.longestSide para RoundRect.maxDimension.
- Renomeação de RoundRect.shortestSide para RoundRect.minDimension.
- Mudança de RoundRect.center para que seja uma propriedade em vez de uma função.
- O construtor RoundRect foi atualizado para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
- As APIs Size, que pressupunham ser um retângulo com origem em 0,0, foram removidas.
- Adição de uma API de destruição ao Radius.
- Migração de várias funções de extensão RoundRect para serem propriedades
- (I8f5c7, b/168762961).
- Otimizações de desempenho para a rolagem LazyColumnFor/LazyRowFor, sem realizar recomposições desnecessárias durante cada rolagem (I64f65, b/168293643, b/167972292, b/165028371).
- Foi corrigida uma falha em LazyColumnFor/LazyRowFor depois de rolar a página e mudar os itens. Além disso, foi implementada a rolagem automática para cima quando o item visível anteriormente é removido, então não há mais a exibição de lacunas vazias no final (I220ab, b/161480164, b/167855468).
- O aninhamento de item rolável nos mesmos contêineres de direção, como ScrollableContainer e LazyColumnFor, não é mais permitido. Nunca houve suporte para esse aninhamento, e isso corrompia a rolagem e todo o atraso de composição dos itens de LazyColumnFor (I6e101).
- Atualização de várias APIs Graphics
- As APIs DrawScope foram atualizadas com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois dele ser invocado.
- Atualização da documentação do clipPath para se referir ao Path em vez do retângulo arredondado.
- Correção do espaçamento na documentação para o parâmetro correto em clipPath.
- DrawScope.drawCanvas foi renomeado como drawIntoCanvas, e o parâmetro de tamanho foi removido.
- Renomeação de parâmetros dx/dy no método de inset como horizontal e vertical.
- Recuo extra adicionado, fornecendo o mesmo valor de recuo a todos os quatro limites.
- A documentação sobre o método do recuo que indicava que o recuo seria aplicado a todos os quatro lados foi removida.
- Atualização da documentação da classe Rect.
- Os comentários sobre os parâmetros Rect foram atualizados para corresponder ao estilo kdoc.
- Rect.join e Rect.expandToInclude foram removidos.
- Foi criada uma sobrecarga para Rect.translate(offset) e o Rect.shift foi descontinuado
- (If086a, b/167737376).
- Adição de AccessibilityScrollState às propriedades semânticas (Ifeda9).
- O TextRange se torna in-line para evitar a criação de objetos (Id034b).
- O ParagraphConstraints foi removido. Agora, a largura é transmitida diretamente para o Paragraph (Ica712).
Versão 1.0.0-alpha03
16 de setembro de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
e androidx.compose.foundation:foundation-text:1.0.0-alpha03
. A versão 1.0.0-alpha03 contém estas confirmações.
Mudanças na API
- O InnerPadding foi renomeado como PaddingValues (I195f1, b/167389171).
- Os usos da gravidade foram renomeados de forma consistente para align ou alignment nas APIs de layout (I2421a, b/164077038).
- Um parâmetro de alinhamento foi adicionado à pilha, o que permite especificar o alinhamento padrão para todos os filhos dela (Ie80ca, b/164085265).
Correções de bugs
- O elemento DpConstraints e as APIs que o usavam foram descontinuados (I90cdb, b/167389835).
- Os parâmetros
minWidth
emaxWidth
dewidthIn
foram renomeados comomin
emax
. O mesmo ocorreu parapreferredWidthIn
,heightIn
,preferredHeightIn
(I0e5e1, b/167389544). - onNode e outros métodos globais foram adicionados na ComposeTestRule, porque os atuais serão descontinuados (Ieae36).
- Correção de cálculos de tamanho e posição em GestureScope, o que causava, entre outros, a geração de gestos de deslizar inválidos (Iaf358, b/166589947).
createAndroidComposeRule
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.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
e androidx.compose.foundation:foundation-text:1.0.0-alpha02
. A versão 1.0.0-alpha02 contém estas confirmações.
Correções de bugs
- O TestUiDispatcher é marcado como experimental (Iae99d, b/161247083).
ManualFrameClock.hasAwaiters
foi adicionado para conferir se algo está aguardando um frame desse relógio,runWithManualClock
como uma substituição derunBlocking
ao executar testes que precisam de um ManualFrameClock eTestUiDispatcher.Main
que fornece acesso fácil ao principal agente de interface nos seus testes.Por exemplo:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Versão 1.0.0-alpha01
26 de agosto de 2020
Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
e androidx.compose.foundation:foundation-text:1.0.0-alpha01
. A versão 1.0.0-alpha01 contém estas confirmações.
Versão 0.1.0-dev
Versão 0.1.0-dev17
19 de agosto de 2020
Lançamento de androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
e androidx.compose.foundation:foundation-text:0.1.0-dev17
. A versão 0.1.0-dev17 contém estas confirmações.
Mudanças na API
- O spacedBy Arrangement foi adicionado a Row e Column para ativar o posicionamento dos filhos de layout com um espaçamento fixo. O Arrangement alinhado também foi adicionado, para permitir que o posicionamento dos filhos de layout seja um ao lado do outro e alinhados a Row/Column de acordo com um Alinhamento. Os métodos anteriores Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange foram descontinuados, e a criação de Arrangements personalizados não vai ser mais possível no futuro (I6733d, b/161985975).
- Offset se tornou uma classe in-line (Iaec70).
- Remoção dos callbacks onFocusChanged do TextField. Use Modifier.focusObserver (I51089, b/161297615).
- O uso de Modifier.drawBorder foi descontinuado. Use Modifier.border. A classe de dados Border foi substituída por BorderDraw (I4257d, b/158160576).
- Remoção de VerticalScroller e HorizontalScroller. Use ScrollableColumn/Row. Modifier.drawBackground foi removido. Use Modifier.background (I73b0d, b/163019183).
- Os modificadores fillMax* marcados como descontinuados foram removidos de LazyItemScope porque dificultavam a adição correta de modificadores em itens que não são filhos diretos de LazyColumnFor (Ifa78d).
- Foi adicionada a implementação LazyColumn/LazyRow como DSL (I93cc6).
- As restrições agora são uma classe inline (I88736).
- Foi adicionada a possibilidade de dimensionar um layout para uma fração do espaço disponível usando os modificadores fillMaxWidth, fillMaxHeight e fillMaxSize (I945bb, b/161562591).
Correções de bugs
- Adição de um parâmetro modificador a SelectionContainer (I4aada, b/161487952).
- Adição do lambda mergePolicy a SemanticsPropertyKey. É possível usá-la para definir uma política personalizada para a mesclagem de semântica mergeAllDescendants. A política padrão será usar o valor pai se já estiver presente. Caso contrário, o valor filho (Iaf6c4, b/161979921).
PlacementScope.placeAbsolute()
foi renomeado 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).- O componente FilledTextField descontinuado foi removido. Use TextField para conseguir a implementação do Material Design no campo de texto preenchido (I5e889).
- O parâmetro backgroundColor foi adicionado ao LinearProgressIndicator e o preenchimento interno de CircularProgressIndicator foi removido. Um novo ProgressIndicatorConstants.DefaultProgressAnimationSpec, que pode ser usado como AnimationSpec padrão ao animar o progresso entre valores, foi adicionado (If38b5, b/161809914, b/161804677).
- Para aumentar a clareza, o elemento combinável
state { ... }
foi descontinuado e substituído pelas chamadas explícitas deremember { mutableStateOf(...) }
. 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). - RRect foi renomeado como RoundRect para se ajustar melhor aos padrões de nomenclatura do Compose. Construtores de função semelhantes foram criados para RoundRect, e os construtores de função do RRect foram descontinuados (I5d325).
- Remoção de onChildPositioned e OnChildPositionedModifier. Os desenvolvedores precisam usar onPositioned e OnPositionedModifier no layout filho (I4522e, b/162109766).
- IntSize agora é uma classe inline (I2bf42).
- Pressionar a área vazia para editar (Ib1e5b).
- Ocultar FloatingToolbar depois de tocar no texto (If4525).
- Ocultar de FloatingToolbar ao atualizar a seleção (I8444c).
- Desmarcar ao desfocar (I781a2).
Versão 0.1.0-dev16
5 de agosto de 2020
Lançamento de androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
e androidx.compose.foundation:foundation-text:0.1.0-dev16
. A versão 0.1.0-dev16 contém estas confirmações.
Mudanças na API
- Adição de LazyItemScope no parâmetro itemContent de listas Lazy. Ele fornece modificadores para preencher o tamanho máximo pai, que resolve o caso de uso quando o item precisa preencher a janela de visualização, e o Modifier.fillMaxSize() normal não funciona, já que o item é medido com restrições de infinito (Ibd3b2, b/162248854).
- A caixa de diálogo foi movida para a interface (I47fa6).
- Adição de LazyColumnForIndexed/LazyRowForIndexed: versões de LazyColumnFor/LazyRowFor que fornecem índice e item no itemCallback. Ele é útil quando é preciso saber um índice atual além de um item atual (I65ff3).
- Modifier.deternimateProgress foi renomeado como Modifier.progressSemantics (I9c0b4).
- LazyColumnItems foi renomeado como LazyColumnFor. LazyRowItems foi renomeado como LazyRowFor (I84f84).
- Marks/Annotations foi adicionado para seguir as práticas recomendadas (I66b20).
- O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
- Um parâmetro de gravidade сrossaxis foi adicionado para LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems agora são compatíveis com agrupamento de conteúdo (Ib39fc).
- ZoomableState foi renomeado como ZoomableController. Foi adicionado suporte a curvas personalizadas em smoothScale. As funcionalidades
enabled
eonZoomStarted
foram adicionadas (If8b8f). - O FilledTextField do Material foi renomeado como TextField, e o TextField de base foi renomeado como BaseTextField para facilitar a descoberta e o uso da API mais simples desejada (Ia6242, b/155482676).
- O elemento AdapterList descontinuado foi removido. Use LazyColumnItems (I12b9b).
- Modifier.drawBackground foi renomeado como Modifier.background (I13677).
- A antiga DSL ConstraintLayout foi removida. Renomeação de ConstraintSet2 para ConstraintSet (If58d1, b/162450908).
- Modifier.absoluteOffset() e Modifier.absoluteOffsetPx() foram adicionados. Ao contrário dos modificadores de deslocamento, os modificadores de deslocamento absoluto não serão espelhados automaticamente no contexto da direita para a esquerda (I3aa21).
Row
eColumn
agora executam funções in-line reduzindo significativamente a sobrecarga de uso (I75c10).
Correções de bugs
- Resolução de variados problemas de API (I077bc).
- 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.
MonotonicFrameAnimationClock, que permite usar um MonomonicFrameClock como um AnimationClockObservable, foi adicionado para fazer a ponte entre os novos relógios e APIs baseados em corrotinas que ainda usam os relógios antigos baseados em callback.
O equivalente de ManualAnimationClock do ManualAnimationClock agora é ManualFrameClock (I111c7, b/161247083).
SemanticsNodeInteraction.performPartialGesture
foi removido. 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).
O uso de Modifier.plus foi descontinuado. Use Modifier.then. "Then" tem um sinal mais forte de ordem, mas também proíbe o tipo
Modifier.padding().background() + anotherModifier
, que interrompe a cadeia e é mais difícil de ler (Iedd58, b/161529964).SemanticsMatcher
isFocused()
eisNotFocused()
foram adicionados (I0b760).Adição de RemeasurementModifier. Ele permite que usuários meçam novamente o layout de maneira síncrona. Em geral, você não precisa dele, já que a nova medida de layout é feita automaticamente, mas o usamos em LazyColumnItems durante a rolagem (I5f331, b/160791058).
Agora, isSystemInDarkTheme sempre considera a configuração do tema escuro em todo o sistema e ignora o status de economia de energia antes de Q, seguindo as orientações mais recentes (I0c10c).
O uso de OnChildPositioned foi descontinuado. Use OnPositioned no filho (I87f95, b/162109766).
Renomeação de AndroidComposeTestRule como createAndroidComposeRule (I70aaf).
Adição da ação de acessibilidade para receber o TextLayoutResult (I9d6e6).
Versão 0.1.0-dev15
22 de julho de 2020
Lançamento de androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
e androidx.compose.foundation:foundation-text:0.1.0-dev15
. A versão 0.1.0-dev15 contém estas confirmações.
Para usar a versão 0.1.0-dev15
do Compose, você precisará:
Atualização de dependências
- Para usar a versão
0.1.0-dev15
do Compose, será necessário atualizar suas dependências de acordo com os novos snippets de código mostrados acima em Como declarar dependências.
Mudanças na API
- Da mesma forma que o novo parâmetro em ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems agora também tem o parâmetro contentPadding, que permite adicionar um padding ao conteúdo depois que ele é cortado, o que não é possível apenas com um parâmetro modificador. Ele também permite adicionar um espaço somente antes do primeiro item/depois do último item (Ibc24e).
- O callback onFocusChange em campos de texto foi renomeado como onFocusChanged (Ida4a1).
- O uso de VerticalScroller e HorizontalScroller foi descontinuado. Use ScrollableColumn e ScrollableRow para ter uma experiência integrada com o comportamento e os parâmetros de Column/Row, ou Modifier.verticalScroll e Modifier.horizontalScroll no seu elemento. De modo semelhante, o elemento ScrollerPosition foi descontinuado e substituído pelo ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- As APIs Modifier.draggable e Modifier.scrollable foram reformuladas. DragDirection foi removido e substituído por Orientation. O estado necessário para rolagem foi simplificado. ScrollableState foi renomeado como ScrollableController (Iab63c, b/149460415).
- As propriedades de semântica de valor único agora usam um estilo de chamada.
Por exemplo, "semantics {hidden = true}" agora é escrito como:
semantics { hidden() }
(Ic1afd, b/145951226, b/145955412). - Agora, os tamanhos de canto usados por RoundedCornerShape e CutCornerShape podem ser maiores que 50% (Id2340, b/160400213).
- O parâmetro padrão ContentScale foi substituído pelo composto de imagem Inside para Fit. Isso foi feito para gerar o comportamento de escalonamento do Painter se o tamanho do layout for maior que o tamanho intrínseco do Painter, mantendo a proporção. Esse comportamento corresponde melhor às expectativas de oferecer tamanhos fixos à imagem, sem afetar o comportamento padrão, apenas se o tamanho intrínseco é usado para calcular o tamanho do elemento combinável (I40ae3, b/159838006).
- Use AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática. Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente. O uso do AnimationSpec foi facilitado para abrir construtores em vez de builders. A duração e o atraso de KeyFrames e Tween foram mudados para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer suporte a Long e Int) (Ica0b4).
- Clickable foi removido. Use Modifier.clickable (I84bdf).
- LazyRowItems foi adicionado, análogo a rolagem horizontal de LazyColumnItems (Ibbcf7).
- Foram lançadas APIs de animação sem estado de baixo nível. Essas APIs (I63bf7).
- O uso de androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue foi descontinuado. Os elementos TextField, FilledTextField e CoreTextField que usam esse tipo também foram descontinuados. Use androidx.ui.input.TextFieldValue (I4066d, b/155211005).
- Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
- androidx.ui.foundation.shape.RectangleShape foi removido. Use androidx.ui.graphics.RectangleShape (I94939, b/154507984).
- Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).
- Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe inline para usar um valor long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).
- Modifier.zoomable foi adicionado para a funcionalidade de fazer gesto de pinça para aplicar zoom (Id5d63).
- O componente Toggleable foi descontinuado. Use o Modifier.toggleable (I35220, b/157642842).
- O uso de MutuallyExclusiveSetItem foi descontinuado. Use Modifier.selectable (I02b47, b/157642842).
- O uso de TestTag foi descontinuado. Use Modifier.testTag (If5110, b/157173105).
- O parâmetro fontWeight foi adicionado ao texto. Antes ele não havia sido adicionado por engano (I56937).
- O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I19d02).
- O VerticalScroller agora fornece Column pronta para uso. O HorizontalScroller agora fornece Row pronto para uso (Ieca5d, b/157020670).
- O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (Iede0b).
- Modifier.indication foi adicionado ao pacote básico. Use-o para mostrar os gestos de pressionar/arrastar/outras indicações nos elementos personalizados interativos (I8425f, b/155287131).
- O VerticalScroller e o HorizontalScroller agora oferecem suporte para a rolagem reversa. O isReversed é definido em ScrollerPosition (I953bd).
- Foi adicionado suporte à adição de elementos combináveis no layout de texto (I1373c).
- Implementações consolidadas de CanvasScope para que agora exista apenas o DrawScope e o ContentDrawScope. CanvasScope foi renomeado como DrawScope. O DrawScope foi atualizado para implementar a interface de Density e fornecer a LayoutDirection. A subclasse DrawScope foi excluída do ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque o DrawScope já fornece uma automaticamente (I1798e).
- A API DrawBackground descontinuada foi removida e substituída pelas APIs de extensão drawBackground no Modifier. As implementações de drawBackground de cores, pincéis e pintura foram refatoradas para reduzir os caminhos de código, além de remover o requisito para que o Modifier seja criado como parte da composição (I0343a).
- As APIs de composição de alto nível que expõem uma tela foram atualizadas para expor o CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a um Canvas podem usar o método de extensão drawCanvas, que fornece um callback para emitir comandos de desenho (I80afd).
- HorizontalScroller e VerticalScroller não restauram a posição de rolagem usando o estado da instância salva (Ia0fae, b/155075048).
- O FocusManagerAmbient foi removido. Use FocusModifier.requestFocus para foco (Ic4826).
- O layout da tabela foi removido temporariamente até ser possível disponibilizá-lo novamente com uma API atualizada (Id88a7).
A API CanvasScope, que envolve um objeto Canvas, foi criada para expor uma API de exibição declarativa e sem estado. As transformações estão contidas no próprio escopo do receptor, e as informações de dimensionamento também têm escopo para os limites inseridos correspondentes. Não é necessário que um consumidor mantenha o próprio objeto de estado Paint para configurar operações de desenho.
Inclusão do CanvasScopeSample, bem como atualização do app de demonstração para incluir uma demonstração gráfica declarativa (Ifd86d).
ColouredRect foi removido. Use Box com o modificador drawBackground (I983c7, b/152753731).
A personalização de cor do cursor foi adicionada ao TextField (I6e33f).
Agora é possível ocultar/mostrar o teclado do software usando o SoftwareKeyboardController que é entregue pelo callback onTextInputStarted (I8dc44, b/151860051).
O TextFieldValue com TextField agora pode sobreviver à recriação de atividades quando usado desta forma:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724).Os parâmetros comumente usados foram adicionados a Text(). Se você está criando um estilo de texto local para passar um pequeno número desses parâmetros, como
Text(style = TextStyle(textAlign = TextAlign.Center))
, pode fornecer os parâmetros diretamente:Text(textAlign = TextAlign.Center)
(I82768).O parâmetro CoreTextField/TextField focusIdentifier foi substituído pelo FocusNode para ser integrado ao subsistema de foco (I7ea48).
Atualização de TextField: na dimensão horizontal, ocupará todo o espaço disponível concedido a ele (Ib08df, b/154638552).
Os elementos InteractionState e Interaction foram adicionados, facilitando a criação de componentes que reagem a mudanças de estado da interface, como pressionar e arrastar (Icfe25, b/152525426).
RectangleShape movido de androidx.ui.foundation.shape.* para androidx.ui.graphics.* (Ia74d5, b/154507984).
Todos os usos anuláveis de Color foram substituídos na API por não anuláveis e usam Color.Unset em vez de null (Iabaa7).
Atualização da API TextField: callbacks onFocus e onBlur foram mesclados em um único callback onFocalChange com parâmetro booleano (I66cd3).
ScaleFit foi renomeado como ContentScale. ContentScale foi movido do módulo ui-graphics para ui-core para ficar no mesmo módulo que a API Alignment. FillMaxDimension foi renomeado como Crop. FillMinDimension foi renomeado como Fit. Fit foi renomeado como Inside para melhorar a correspondência com os equivalentes a ImageView.ScaleType. Foi adicionada uma documentação que indica que a combinação de Crop e Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_CROP e que Fit usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.FIT_CENTER. Inside usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
Remoção de ProvideContentColor. Basta usar ContentColorAmbient diretamente com
Providers
(Iee942).Foi adicionado um parâmetro de cor ao texto, permitindo mudar a cor do estilo sem precisar fazer a unificação manual de acordo com o estilo fornecido em um tema (I41a66).
Melhorias na API DrawModifier:
- O escopo do receptor foi definido para draw() ContentDrawScope.
- Todos os parâmetros em draw() foram removidos.
- DrawScope tem a mesma interface que o antigo CanvasScope.
- O ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
O uso de ColoredRect foi descontinuado. Use
Box(Modifier.preferredSize(width, height).drawBackground(color))
(I499fa, b/152753731).O sistema de temas de forma é atualizado de acordo com a especificação do Material Design. Agora você pode oferecer formas pequenas, médias e grandes para serem usadas pela maior parte dos componentes (Ifb4d1).
O Modifier e o operador foram substituídos por funções de extensão de fábrica (I225e4).
O arrastável foi movido para o modificador (Id9b16, b/151959544).
Text
foi movido de androidx.ui.core para o pacote androidx.ui.foundation (I87ce5).Adição do parâmetro
enabled
a Checkbox, Switch e Toggleable (I41c16).O Ripple agora é um modificador. Embora Clickable ainda não tenha sido convertido, o uso recomendado é
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/1.50060763).A API VectorPainter foi adicionada para substituir a API de subcomposição já existente para gráficos vetoriais. O resultado da subcomposição é um objeto VectorPainter em vez de um DrawModifier. Os elementos combináveis DrawVector foram descontinuados e substituídos por elementos VectorPainter.
A API
Image(Painter)
foi renomeada comoPaintBox(Painter)
. Foi criado o elemento combinável Vector, que se comporta como o elemento combinável Image, mas com um VectorAsset em vez de um ImageAsset (I9af9a, b/149030271).Criação do composto Image para processar dimensionamento/layout, além de desenhar um determinado ImageAsset na tela. Esse elemento combinável também pode ser usado para mostrar qualquer instância arbitrária do Painter que respeite o tamanho intrínseco dele e ofereça suporte a um determinado tamanho fixo ou mínimo (Ibcc8f).
Agora, Button, FloatingActionButton e Clickable têm um parâmetro
enabled
separado. Alguns dos parâmetros no Button foram renomeados ou reordenados (I54b5a).Image foi renomeado como ImageAsset para diferenciar melhor os dados do Image e o futuro elemento combinável Image, usado para participar do layout e desenhar conteúdo.
O método de extensão foi criado em android.graphics.Bitmap,
Bitmap.asImageAsset()
, para criar uma instância de um ImageAsset útil para combinar o desenvolvimento de aplicativos para Android tradicionais com o framework do Compose (Id5bbd).O elemento combinável DrawImage foi removido. Use o ImagePainter para mostrar uma imagem no layout atual ou SimpleImage para introduzir uma imagem que ocupe espaço (I595e1, b/149827027).
O componente Stack é compatível com a direcionalidade da direita para a esquerda (Ic9e00).
Icon, IconButton e IconToggleButton foram adicionados, removendo AppBarIcon. Você pode substituir diretamente os usos atuais do AppBarIcon pelo iconButton. Agora, eles vão ter a área de toque correta. Consulte os exemplos para informações de uso. Confira também os ícones do Material Design fornecidos que podem ser usados diretamente com esses componentes (I96849).
O elemento combinável DrawShape foi removido. Use o modificador DrawBackground (I7ceb2).
Adição do Adapterlist, um componente de lista de rolagem que apenas compõe e apresenta os itens visíveis. Os problemas conhecidos atualmente incluem o fato de que ele só é vertical e não processa integralmente todos os casos de mudança nos filhos (Ib351b).
O componente de rolagem foi adicionado, o que permite a criação de rolagens/listas personalizadas (I5fd37).
Background foi renomeado como DrawBackground. Agora, ele é memorizado por padrão (Ia0bd3).
Adição de parâmetros de padding, borda, forma e plano de fundo a Box (I05027, b/148147281).
Adição do componente Canvas. Esse elemento combinável pode ocupar algum tamanho fornecido pelo usuário e permite que você desenhe com o CanvasScope (I0d622).
O modificador
Border
foi renomeado comoDrawBorder
(I8ffcc).Um componente Box foi adicionado para combinar layouts e desenhar funcionalidades comuns (I6e2a7).
Agora, os controles de rolagem têm o comportamento do movimento de arremesso nativo do Android (I922af, b/147493715).
DrawBorder foi substituído por Border Modifier (Id335a).
Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).
O parâmetro de porcentagem ao criar diretrizes de ConstraintLayout foi renomeado para fração (Ida2db).
Foi adicionado suporte a margens de barreiras de ConstraintLayout (I47ffe).
Corrigido o suporte a RTL em ConstraintLayout. APIs sem reconhecimento de RTL foram adicionadas (I3b1c7).
Uma nova DSL para ConstraintLayout foi adicionada. Consulte as amostras para ver mais detalhes (Icaa9a).
Adicionada a anotação @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn agora são marcados com ela para sinalizar que as APIs vão ser modificadas (I412a8).
Foi adicionado o
Modifier.padding(InnerPadding)
(I94985, b/157133803).Os elementos RowAlign e ColumnAlign descontinuados foram removidos de Row e Column (If60d4, b/155858731).
O LayoutTag() descontinuado foi removido. Use Modifier.tag(). O Modifier.matchParent() descontinuado foi removido. Use Modifier.matchParentSize() (If8044).
Adicionado o modificador de layout offsetPx, que pode ser usado para definir deslocamentos (dinâmicos) em px (I5af57).
O uso do elemento combinável AlignmentLineOffset foi descontinuado. Use o modificador relativePaddingFrom(). O elemento combinável CenterAlignmentLine foi removido (I60107).
Adicionado o modificador de layout defaultMinSizeConstraints, que define restrições de tamanho para o layout encapsulado apenas quando as restrições correspondentes recebidas não são especificadas (0 para restrições mínimas e infinito para restrições máximas) (I311ea, b/150460257).
Container foi removido. Use Box (Ibbc2b, b/151407926).
Os modificadores LayoutWidth/Height/Size descontinuados foram removidos (Ib0bc1).
Foram adicionados valores de parâmetro padrão para o modificador de deslocamento (I37f06).
Modificador de preenchimento simétrico adicionado (I39840).
O modificador LayoutAspectRatio descontinuado foi removido (I65a74).
Os modificadores LayoutAlign descontinuados foram removidos (I10877).
Foi corrigido um bug nos modificadores de largura e altura que fazia o layout encapsulado ser medido sem restrições de eixo oposto (I210b8, b/154797971).
Adição dos parâmetros verticalGravity e horizontalGravity a Row e Column, respectivamente (I7dc5a).
wrapContentWidth e wrapContentHeight foram atualizados para esperar um alinhamento vertical ou horizontal em vez de qualquer outro. O modificador de gravidade foi atualizado para aceitar o alinhamento vertical ou horizontal. Row, Column e Stack foram atualizados para oferecer suporte a alinhamentos contínuos personalizados (Ib0728).
Alignment se tornou instanciável com valores arbitrários. Alignments 1D foi adicionado (Ia0c05).
EdgeInsets foi renomeado como InnerPadding. O parâmetro innerPadding de botões do Material Design foi renomeado como padding (I66165).
alignToSiblings agora aceita um Measured em vez de Placeable (I5788d).
Foram adicionados modificadores para o dimensionamento de medidas intrínsecas. O uso dos componentes que realizavam essa tarefa foi descontinuado (I8295d).
Foi adicionado suporte à personalização de dimensões de filhos do ConstraintLayout (Idb1a5).
Os elementos combináveis Wrap e Center descontinuados foram removidos (I29e23).
LayoutModifier2, uma nova API para definir modificadores de layout, foi adicionada. O uso de LayoutModifier foi descontinuado (If32ac).
Os membros de RowScope e ColumnScope podem ser acessados fora de Row e Column (I3a641).
O uso de Container foi descontinuado. Use Box (I675ce, b/151407926).
O modificador LayoutOffset foi adicionado para ajustar a posição do layout (I0b8a3).
Foi adicionado suporte inicial ao layout RTL no Compose (Ia5519).
Atualização do LayoutAlign para não preencher mais o espaço disponível (I2b14f).
Remoção do composto AspectRatio em favor do modificador. Os elementos combináveis FlexColumn, FlexRow e o modificador Spacing descontinuados foram excluídos (Iec8a7).
Remoção do modificador LayoutInflexible de linha e coluna (I0d820).
Implemente as alças de seleção para arrastar para mudar a seleção de TextField (I27032).
Implementação de LongpressAndDrag para seleção de TextField (I17919).
Correções de bugs
- O uso de FocusModifier foi descontinuado e substituído por Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. O uso de FocusState e FocusDetailedState foi descontinuado e substituído por FocusState2 (I46919, b/160822875, b/160922136).
runOnIdleCompose
foi renomeado comorunOnIdle
(I83607).- Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
- O Modifier.ripple descontinuado foi removido. Agora, o recurso de clique usa ondulações como indicação padrão quando você tem um MaterialTheme {} definido no aplicativo. Na maioria dos casos, você pode usar o recurso de clique e receber a indicação de ondulação sem custos. Se você precisar personalizar o parâmetro de cor, tamanho ou delimitação para a ondulação, crie manualmente um RippleIndication e transmita-o para o recurso de clique como o parâmetro de indicação (I663b2, b/155375067).
- As APIs de teste de tamanho descontinuadas foram removidas (Iba0a0).
- A API experimental LayoutNode foi criada (I4f2e9).
- A versão 1 do bloqueio da orientação de rolagem é implementada no Compose (I1ce7a, b/150289741).
- Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
- O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível no callback pelo objeto do escopo da medida (Ic7d9d).
- Adição de AbsoluteArrangement: permite a organização dos filhos dentro da linha sem espelhamento automático em RTL (I3a1df).
- A anotação @Untracked foi descontinuada. Substitua por @ComposableContract(tracked=false) (Id211e).
- Antes da mudança, o plug-in do compilador do Compose interceptava chamadas a construtores dentro de uma função @Composable se houvesse um (I5205a, b/158123804).
- Adição do composto
viewModel()
, que permite criar ou usar o ViewModel já criado de forma semelhante a como ele funciona em Activity ou Fragment (I5fdd1). A classe Radius foi refatorada para ser uma classe in-line. Os métodos de criação complementares foram removidos e substituídos pelo construtor de função com parâmetro padrão para que o raio ao longo do eixo y corresponda ao parâmetro obrigatório de raio do eixo x.
Atualização de DrawScope.drawRoundRect para consumir um único parâmetro de raio em vez de dois valores flutuantes separados para o raio ao longo dos eixos x e y (I46d1b).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel. Classe Px excluída na íntegra (I3ff33).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I086f4).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e Dp para os parâmetros de pixel (Id3434).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e Dp para os parâmetros de pixel (I97a5a).
O cursor do TextField tem uma animação intermitente (Id10a7).
Os gestos parciais não exigem mais a transmissão de um GestureToken (Id7ae5).
O uso da classe Px foi substituído em várias classes do Compose como parte do grande esforço de refatoração a fim de depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I57bff).
O Modifier.semantics voltou a ser usado para permitir o uso de componentes de alto nível (I4cfdc).
AnnotatedString.Builder.addAnnotationString foi renomeado como addStringAnnotation (I5059e).
A API Alignment foi atualizada e foi adicionado suporte ao alinhamento absoluto, que não é espelhado automaticamente no contexto RTL (I38cd3).
Os filhos de Layout e LayoutModifier podem ser medidos com uma direção de layout diferente (Ibd731).
Introdução do parâmetro opcional rect extra a ImagePainter para permitir o desenho de uma subseção de ImageAsset subjacente (I0ea9e).
Correção de uma falha no Adapterlist ao remover itens (Ic64b0, b/153195921).
Mudamos a forma como medimos o primeiro layout colocado no bloco activity.setContent { }. Antes, ele era forçado a preencher toda a tela da atividade. Agora, se comporta como se você colocasse o layout dentro de uma pilha: ele pode ser menor que uma tela e vai ser posicionado no canto superior esquerdo. Caso prefira o comportamento antigo, é possível aplicar Modifier.fillMaxSize() para seu layout (Ie88a7, b/153453714).
O módulo ui-text-compose foi renomeado como ui-text. O ui-text agora contém os elementos combináveis CoreText e CoreTextField (IB7d47).
O módulo ui-text foi renomeado como ui-text-core (I57dec).
Os compostos ui-framework/CoreText e CoreTextField foram movidos para o ui-text-compose. É recomendável incluir o ui-text-compose no seu projeto (I32042).
runOnIdleCompose
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).DrawLayerModifier e drawLayer() agora definem clickToBounds e clipToOutline como falsos por padrão (I0eb8b, b/152810850).
LayoutResult foi renomeado como MeasureResult (Id8c68).
O uso do elemento combinável Center foi descontinuado. Ele precisa ser substituído pelo modificador LayoutSize.Fill + LayoutAlign.Center ou por elementos combináveis Box ou Stack com modificadores adequados aplicados (Idf5e0).
O LayoutFlexible foi renomeado como LayoutWeight. O parâmetro "tight" foi renomeado como "fill" (If4738).
O DrawVector passou de uma função combinável comum para retornar um modificador drawVector() que vai desenhar o vetor como o plano de fundo de um layout (I7b8e0).
O Clip de função combinável foi substituído pelo modificador drawClip(). DrawClipToBounds é um modificador conveniente a ser usado quando você só precisa cortar os limites da camada com uma forma retangular (If28eb).
Substituição da função composta DrawShadow pelo modificador drawShadow(). As sombras agora são renderizadas como parte do LayerModifier (I0317a).
O androidx.composte.ViewComposer foi movido para androidx.ui.node.UiComposer. androidx.compose.Emittable foi removido. Ele era redundante com o ComponentNode. O androidx.compose.ViewAdapters foi removido. Eles não estão mais disponíveis. O uso de Compose.composeInto foi descontinuado. Use
setContent
ousetViewContent
. O uso de Compose.disposeComposition foi descontinuado. Use o métododispose
noComposition
retornado pelosetContent
. androidx.compose.Compose.subcomposeInto foi movido para androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt foi renomeado como ComponentNode#insertAt. ComponentNode#emitRemoveAt foi renomeado como ComponentNode#removeAt. ComponentNode#emitMode foi renomeado como ComponentNode#move (Idef00).O uso do elemento combinável Wrap foi descontinuado. Ele pode ser substituído pelo modificador LayoutAlign ou pelo composto Stack (IB237f).
A direção do layout passou a ser propagada do nó de layout pai para os filhos. Adição de modificador de direção de layout (I3d955).
Painter.toModifier foi renomeado como Painter.asModifier, já que o modificador recém-criado tem uma referência ao Painter original que pode ser compartilhado entre várias instâncias do modificador (I7195b).
- .
Foi adicionado suporte à direção da direita para a esquerda no modificador LayoutPadding (I9e8da).
Density e DensityScope foram unidos em uma única interface. Agora você pode usar DensityAmbient.current em vez de ambientDensity(). Em vez de withDensity(density), apenas with(density) (I11cb1).
Classe ValueHolder removida. As classes AnimatedValue e AnimatedFloat foram reestruturadas para tornar o campo de valor da animação abstrato para que as subclasses possam observar a atualização do valor.
- Adição de classes de modelo para AnimatedValue, AnimatedFloat etc.
- Um novo conjunto de APIs @Composable leves foi adicionado para animação entre valores
- (I79530).
Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do
Ambient<T>
para ver detalhes (I4c7ee, b/143769776).Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).
Correção de um bug de ConstraintLayout que causava uma falha nas recomposições (Ibee5a, b/158164341).
A API WithConstraints lambda final foi mudada. Agora, em vez de dois parâmetros, ela tem um escopo de receptor que, além de restrições e layoutDirection, fornece as propriedades minWidth, maxWidth, minHeight e maxHeight no Dp (I91b9a, b/149979702).
LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).
As funções de medições intrínsecas no Layout e no LayoutModifier2 agora têm um receptor IntrinsicMeasureScope que fornece uma API de consulta intrínseca com a direção de layout propagada implicitamente (Id9945).
O uso de LayoutDirectionAmbient foi descontinuado. Para ler a direção do layout definida pela localidade, use localeLayoutDirection em ConfigurationAmbient (I851b1).
positionInParent e boundsInParent foram adicionados para LayoutCoordinates (Icacdd, b/152735784).
O uso do elemento combinável ParentData foi descontinuado. Caso você precise apenas marcar os filhos do layout para reconhecê-los dentro do bloco de medida, crie um modificador que implemente a interface ParentDataModifier ou use o modificador LayoutTag (I51368, b/150953183).
Adicionamos OnPositionedModifier e OnChildPositionedModifier para substituir as funções compostas OnPositioned e OnChildPositioned (I2ec8f).
Não permite o preenchimento negativo no LayoutPadding. Use o LayoutOffset para deslocamentos de posições negativas (Ifb5b1).
WithConstraints recebeu o parâmetro LayoutDirection (I6d6f7).
A flag
ComposeFlags.COMPOSER_PARAM
foi atualizada paratrue
, o que vai mudar a estratégia de geração de código para o plug-in do Compose. Em um nível alto, isso faz com que funções @Composable sejam geradas com um parâmetro sintético extra, que é transmitido para chamadas @Composable subsequentes para que o ambiente de execução gerencie corretamente a execução. No entanto, essa é uma alteração interruptiva no binário que precisa preservar a compatibilidade no nível da fonte em todo o uso do Compose (I7971c).Foram feitas mudanças no LayoutCoordinates para fazer com que providedAlignmentLines seja um Set em vez de um Map e fazer com que LayoutCoordinates implemente o operador get() em vez de recuperar um valor. Isso facilita a modificação de um ou mais valores do conjunto sem criar uma nova coleção para cada modificador (I0245a).
LayoutGoordinates não tem mais uma propriedade de posição. A propriedade de posição não faz sentido ao considerar LayoutModifiers, rotação ou dimensionamento. Em vez disso, os desenvolvedores precisam usar parentCoordinates e childToLocal() para calcular a transformação de um LayoutCoordinate em outro.
LayoutCoordinates usa IntPxSize para a propriedade Size em vez de PxSize. Os layouts usam tamanhos de pixel inteiros, então todos os tamanhos de layout precisam usar números inteiros, e não valores de pontos flutuantes (I9367b).
Melhorias na superfície da API de Constraints (I0fd15)
TextDirection.Content foi adicionado (I48f36).
Ajuste no menu da Barra de Ferramentas Google para mostrar os comandos de copiar, recortar e colar corretamente (Id3955)
FloatingToolbar foi adicionado à seleção do TextField (Ie8b07).
TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).
TextDirection foi renomeado como ResolveTextDirection (I3ff38).
HapticFeedback foi adicionado à seleção de TextField (I58050).
Adição dos métodos Copiar, Cortar e Colar à seleção TextField (Idb70b).
TestTag e Semantics foram excluídos. Use Modifier.testTag e Modifier.semantics (I15ff0, b/158841414).
O nome do pacote foi mudado para Locale e LocaleList de androidx.ui.text para androidx.ui.intl (I8132c).
Mudança da API:
AnnotatedString(builder: Builder)
foi renomeada comoannotatedString(builder: Builder)
(Ia6377).Mudança da API:
AnnotatedString.Item
foi renomeada comoAnnotatedString.Range
(I2d44d).Adição da barra de ferramentas para operações relacionadas a texto (I49d53).
O novo LifecycleOwnerAmbient já está disponível. Agora, uma atividade usada com a interface do Compose precisa ampliar androidx.activity.ComponentActivity (ou AppCompatActivity). O setContent na android.app.Activity foi descontinuado (Idb25a, b/153141084).
O nome do pacote ui-android-text (androidx.text) foi substituído por androidx.ui.text.platform para se alinhar à política do androidX (I42711).