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 |
---|---|---|---|---|
7 de agosto de 2024 | 1.6.8 | - | 1.7.0-beta07 (link em inglês) | - |
Estrutura
O Compose é uma combinação de sete IDs de grupos do Maven no androidx
. Os grupos
contêm um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas
da versão.
Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.
Grupo | Descrição |
---|---|
compose.animation | Crie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário. |
compose.compiler | Transforme funções @Composable e ative otimizações com um plug-in do compilador Kotlin. |
compose.foundation | Crie aplicativos do Jetpack Compose com elementos básicos prontos que podem ser usados para criar suas próprias peças de sistema de design. |
compose.material | Crie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io. |
compose.material3 | Crie IUs do Jetpack Compose usando componentes do Material Design 3, a nova versão do Material Design. O Material 3 inclui temas e componentes atualizados, além de recursos de personalização do Material You, como cores dinâmicas, e foi desenvolvido para ser coeso com o novo estilo visual do Android 12 e com a interface do sistema. |
compose.runtime | Elementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler. |
compose.ui | Componentes fundamentais do Compose UI necessários para interagir com o dispositivo, incluindo layout, desenho e entrada. |
Declarar dependências
Para adicionar uma dependência ao Compose, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle
do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.7
Versão 1.7.0-beta07
7 de agosto de 2024
Lançamento de androidx.compose.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 noTextFields
somente leitura. (I4ae8f). - Corrigida uma falha visual nos hiperlinks. (I23311).
- Correção do modificador
contentReceiver
que não funcionava com alguns IMEs. - Geração de velocidade: impede a propagação de valores NaN na interface e na base 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 para o 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
- Evite falhas ao medir linhas de texto muito grandes (por exemplo, com 10 mil caracteres) (8157ab).
- Correção da medição de texto muito grande que causava falhas no novo
BasicTextField
(6b7575). - Reverte uma mudança de comportamento na medição de linhas/colunas 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é-busca de
LazyGrids
semelhante à API experimental existente paraLazyLists
. Isso inclui suporte à pré-busca de itens emLazyGrids
aninhado. Assim comoLazyListPrefetchStrategy
, o padrão de implementação é pré-buscar 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
mudou para um valorisEditable
. A propriedade agora é um booleano e sempre é especificada por campos de texto. (I8acd8).- Os valores padrão de
basicMarquee
foram movidos para o objetoMarqueeDefaults
. (I12ff6). - O parâmetro
basicMarquee
delayMillis
foi renomeado comorepeatDelayMillis
. (I12ff6). - Atualização da API para definir o estilo dos links: a
TextLinkStyles
foi movida paraTextStyle
e aTextDefaults
foi removida do Material Design (I5477b).
Correções de bugs
LayoutCoordinates.introducesFrameOfReference
foi renomeado comoLayoutCoordinates.introducesMotionFrameOfReference
para refletir melhor a finalidade Renomeação da função relacionada para calcular coordenadas com base nessa sinalização. (I3a330).- "Padrão" removido das propriedades
MarqueeDefaults
. (I1d8a0). - "Marquee" removido de
MarqueeDefaults
propriedades. (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 se deslocar em direção a um limite enquanto já estava posicionado no limite. (I9f373, b/339171222).
- O BTF2 agora tem gestos corretos de seleção do mouse. (Ibe8c6).
Contribuição externa
- Enviar novamente "Crie um tipo de conteúdo para calcular o tempo de escrita/avaliação com base na pré-busca para aumentar a precisão" (Iea622).
- O tipo de conteúdo para calcular o tempo de escrita/medição com base na pré-busca para melhorar a precisão (Ibccb1).
- Modificadores de
WindowInsetsPadding
disponíveis 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 novamente como oculta obsoleta para compatibilidade binária (I15cfe). Modifier.anchoredDraggable
agora inverte os deltas de arrastar por padrão para componentes com orientação horizontal quando usado em um layout RTL. (I3c6d9).AnnotatedString.hasEqualsAnnotations
agora éhasEqualAnnotations
(I685c0).- A API para receber links com tema do Material Design no texto foi atualizada. Mais especificamente, os métodos do
TextDefaults
foram removidos para construirLinkAnnotations
com tema e analisar HTML com links temáticos Em vez disso, foi adicionada uma classeTextLinkStyles
, que permite estilizar os links como um parâmetro para o elemento combinável Text (I31b93). onDragStarted
eonDragStopped
foram substituídos por callbacks que não são de suspensão. (I59de8).
Correções de bugs
- Correção de um bug em que o Pager falhava quando a
contentPadding
era maior do que as restrições de entrada. O Pager agora força os valores negativos retornados dePageSize
para 0. (Iba5d8, b/314008560).
Versão 1.7.0-alpha08
1o 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
- Menu de contexto de clique com o botão direito do mouse adicionado a
BasicTextField
eSelectionContainer
com itens para ações recortar, copiar, colar e selecionar tudo. (If8c93, Ia2b49, I6f268).
Mudanças na API
- As solicitações de pré-busca do
LazyLayout
podem ser marcadas como urgentes agora, o que significa que esperamos que esse item seja necessário no próximo frame e queremos ignorar o orçamento para trabalhar com mais antecedência (Id513f). isPositionedByParentWithDirectManipulation
foi renomeado comointroducesFrameOfReference
Agora, ela tem o efeito inverso, o que significa que, por padrão, a maioria dasLayoutCoordinates
introduz um frame de referência e, somente quando colocada 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
dentro deLinkInteractionListener
(Iaa35c).- Mude o lambda de ação para
getScrollViewportLength
de acordo com o feedback do conselho de API. (Ibc74a). - As APIs de delegação de escrita à mão da stylus foram renomeadas. (Ica45f, b/327271923).
TextInclusionStrategy.isInside
foi renomeado comoisIncluded
. Tornar o tipo de retornoParagraph/MultiParagraph#getRangeForRect()
não anulável (I51f26).
Correções de bugs
- "Selecionar tudo" adicionado a todos os menus contextuais de texto em
SelectionContainer
. (Ib750e, b/240143283). - A captura de tela longa foi corrigida para rolar contêineres 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
PrefetchExecutor
renomeado como ->PrefetchScheduler
para refletir melhor as próprias responsabilidades. (Ib9154).- Foi adicionado suporte à pré-busca de itens em
LazyLists
aninhado (por exemplo, umLazyColumn
que renderizaLazyRows
aninhado). Essa mudança deve reduzir a queda de frames durante a rolagem daLazyLists
. O padrão de implementação é fazer a pré-busca dos dois primeiros itens aninhados. No entanto, 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
- Foi adicionado um objeto
TextDefaults
que contém métodos para criar umLinkAnnotation
e analisar a string com tag HTML que aplicaMaterialTheme
aos links. (I98532, b/139312671). - O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyVerticalGrid
eLazyHorizontalGrid
. Anteriormente, era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de colocação (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (Ib7d12, b/330510929). - O suporte à animação de aparecimento e desaparecimento de itens foi adicionado a
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. Anteriormente, era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de colocação (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (I69bc9, b/330511290).
Mudanças na API
- Adiciona
ContextMenuColors
e oLocalContextMenuTheme
ProvidableCompositionLocal
associado. Para modificar as cores do menu de contexto nos campos de texto e no texto selecionável, informe o local de composição. (Ifa154). - Os links de texto receberam a opção de estilo de estado pressionado, além do estilo normal, passando o cursor e em foco. (I5f864, b/139312671).
- Introdução do
ViewConfiguration.HandwritingGestureLineMargin
para gestos de escrita à mão. Suporte a gestos de escrita à mão paraBasicTextField
. (Ie6e13, b/325660505). - Removemos o
DelegatableNode.scrollIntoView
da versão 1.7, já que não tínhamos tempo para terminar de estabilizar o restante da plataforma de API relacionada. Essa função será reintroduzida na versão 1.8 (I6cf61, b/333421581, b/332900232). - Ao consultar as coordenadas de 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 pode agora colocá-los usandowithDirectManipulationPlacement
(como o recurso de rolagem, implementado por padrão). Isso ajuda as animações baseadas emapproachLayout
a serem mais intuitivas, permitindo diferenciar o deslocamento a ser animado e o que aplicar diretamente ao decidir animar a abordagem. (I60ec7). - Introdução de
requestScrollToItem
paraLazyStaggeredGrid
. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToItem
. Isso não muda o comportamento existente, a menos querequestScrollToItem
seja chamado. (I63983). - Apresente
requestScrollToPage
no Pager. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToPage
. Isso não muda o comportamento existente, a menos querequestScrollToPage
seja chamado. (Ic4213). requestScrollToItem
foi introduzido paraLazyGrids
. Para cada passagem de medição, o cliente agora pode desativar a manutenção do índice com base na chave chamandorequestScrollToItem
. Isso não muda o comportamento existente, a menos querequestScrollToItem
seja chamado. (I0a7a0).ClickableText
está marcado como descontinuado. Para adicionar links ao texto, crie umaAnnotatedString
com umLinkAnnotation
correspondente ao seu link e transmita esseAnnotatedString
para o elemento combinávelText
(I34d4b, b/323346994).- O uso de
UrlAnnotation
foi descontinuado. UseLinkAnnotation.Url
. Se você estiver usando temas do Material Design, use o objetoTextDefaults
para criar a anotação com aplicação de temas do Material Design (I8d180, b/323346545). String.parseAsHtml
foi renomeado comoAnnotatedString.Companion.fromHtml
(I43dcd).- Foram adicionados argumentos de estilo (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e um listener de interação de link ao métodoparseAsHtml
. Ao analisar a string marcada como HTML com tags<a>
, o método cria umLinkAnnotation.Url
para cada uma dessas tags e transmite os objetos de estilo e o listener de interação de link para cada anotação. (I7c977). LinkAnnotation
agora usa os argumentos de estilo baseado em estado e umaLinkInteractionListener
. Adicione essa anotação aoAnnotatedString
para receber um hiperlink. Ao transmitirfocusedState
e/ouhoveredState
, você pode definir a configuração visual para links quando eles estiverem em foco e/ou passarem o cursor sobre eles. (I81ce4, b/139312671).- A flag de recurso para capturas de tela longas foi removida. (I28648, b/329128246).
LazyColumn
agora renderizará cabeçalhos fixos corretamente em capturas de tela longas. (I8d239, b/329296635).- Estabilização da maioria das APIs experimentais restantes que foram introduzidas com o novo
BasicTextField
. (I714e2). - Adição do parâmetro
textObfuscationCharacter
aBasicSecureTextField
, que controla qual caractere usar ao ofuscar o conteúdo. (I0588b). - As origens de arrastar e deslizar
NestedScroll
estão sendo substituídas porUserInput
eSideEffect
para acomodar a definição estendida dessas origens, que agora inclui animações (Efeito colateral) e roda do mouse e teclado (UserInput
). (I40579). - Introdução do
LocalBringIntoViewSpec
, um comportamento de rolagem de foco dependente da plataforma que é aplicado à 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 mescladas comnext
, asKeyboardOptions
agora são mescladas corretamente pelas opções individuais usando o novo métodoKeyboardOptions.merge
. (Ie5304, b/295951492). - O
targetValue
doAnchoredDraggableState
agora não considera mais os limites de posicionamento. Agora, ela tem um limite implícito de 50%, o que significa que otargetValue
muda no ponto médio entre duas âncoras. (I82c2c).
Contribuição externa
- Renomeação de duas APIs de rolagem (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
. Anteriormente, era possível adicionar o modificadorModifier.animateItemPlacement()
para oferecer suporte a animações de colocação (reordenação). Descontinuamos esse modificador e introduzimos um novo modificador não experimental chamadoModifier.animateItem()
, que permite oferecer suporte aos três tipos de animação: aparência (aparecimento gradual), desaparecimento (desaparecimento) e reordenação. (I2d7f7, b/150812265). - Os clientes de
LazyColumn/LazyRow
agora podem desativar a manutenção de um índice com base na chave para a próxima passagem de medição chamando umLazyListState.requestToScroll
que não seja de suspensão. (I98036, b/209652366). - Adição do 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 exibir listas com marcadores. (I84d3d). - O suporte experimental a capturas de tela longas foi implementado 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 no momento. Por isso, ela está desativada por padrão. Para ativar, defina a flagComposeFeatureFlag_LongScreenshotsEnabled
como "true". Essa sinalização será removida antes da versão 1.7 beta. (I2b055, b/329296471). - A nova API
GraphicsLayer
foi lançada 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 do modificadorGraphicsLayer
.
Mudanças na API
- Todos os parâmetros
KeyboardOptions
agora têm um valor não especificado por padrão. MétodoKeyboardOptions.merge
adicionado. KeyboardOptions.autoCorrect
foi renomeado comoautoCorrectEnabled
e definido como anulável, em que nulo indica que nenhum valor foi especificado. (Ia8ba0, b/295951492).outOfBoundsPageCount
foi renomeado comobeyondViewportPageCount
(I129c6).fun ClipEntry.getMetadata()
é alterado paraval ClipEntry.clipMetadata
. (I50155).TextFieldState.valueAsFlow()
foi removido. Prefiro usarsnapshotFlow { state.text }
ousnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629).- Os parâmetros
InputTransformation.transformInput
foram reorganizados. Contato removido:originalValue: TextFieldCharSequence
. Em vez disso,TextFieldBuffer
agora carrega esse valor com o mesmo nome. O parâmetrovalueWithChanges: TextFieldBuffer
também foi removido.TextFieldBuffer
agora é o escopo do receptor na função. (I919cc). - A variante
BasicTextField(state)
e oBasicSecureTextField
agora usamKeyboardActionHandler
em vez deKeyboardActions
para processar ações realizadas pelo teclado de software. (I58dda). - APIs de delegação de escrita à mão com a stylus para oferecer suporte à escrita à mão com a stylus em algo falso campos de entrada de texto. (I9c09c, b/327271923).
KeyboardOptions.shouldShowKeyboardOnFocus
foi renomeado comoshowKeyboardOnFocus
(Ib4b7a, b/295951492).- Remoção do parâmetro
hintMediaTypes
deModifier.contentReceiver
. Recomendamos que os desenvolvedores verifiquem o tipo de mídia doTransferableContent
recebido, porque ele pode ser incompatível com ohintMediaTypes
configurado. (I82f99). - Reordenamos os parâmetros de
BasicSecureTextField
. Remoção dos parâmetroskeyboardType
eimeAction
em favor da classeKeyboardOptions
completa, mantendo os mesmos padrões adequados paraBasicSecureTextField
O parâmetroscrollState
também foi removido. (Ibbfa9). - O tipo de
TextFieldState.text
é alterado deTextFieldCharSequence
para apenasCharSequence
. Portanto,TextFieldState.selection: TextRange
eTextFieldState.composition: TextRange?
foram adicionados para ler os valores de seleção e composição atuais diretamente do objeto de estado. TextFieldState.forEachTextValue
foi removido. (Idb2a2).- Funções
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
removidas UseclipEntry.getMetadata()
para ler os metadados da entrada do clipe atual. Além disso, confira o resultado deClipboardManager.getClip
, caso ele seja nulo ou não, para entender se a área de transferência tem um clipe atual. (I50498). ClipboardManager.setClip
agora aceita "null" para poder limpar a área de transferência. (I7d2e9).ReceiveContentListener
é convertido em uma interface de função. Além disso, a sobrecargaModifier.receiveContent
que usa uma lambda foi removida, já que agoraReceiveContentListener
é uma interface de funçãoModifier.receiveContent
foi renomeado comoModifier.contentReceiver
. (I1e6af).TransferableContent.consumeEach
foi renomeado comoTransferableContent.consume
(I1e462).rememberTextFieldState
mudou 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(baseados em composição). (I54425). - Correção de um bug em que o
Modifier.dragAndDropTarget()
podia referenciar dados desatualizados em determinados cenários com a reutilização deModifier.Node
(I05bb1). - Reversão de uma mudança recente no contrato em que as chamadas
AnchoredDraggableState#anchoredDrag
seriam ajustadas ao 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
- Remoção da composição experimental
LocalTextLinkStyle
local para definir o estilo de hiperlinks (Iebfa7). - A substituição experimental de
BasicText
com o argumentoonLinkClicked
foi removida Uma API substituta para o suporte a hiperlinks será lançada no futuro. (I107d5). - Remoção dos métodos e propriedades relacionados aos Codepoints em
TextFieldState
eTextFieldBuffer
. Os sufixosinChars
também foram removidos das APIs restantes relacionadas à seleção e à composição (Ief7ce). - O
currentValue
doAnchoredDraggable
agora será atualizado ao transmitir por um ponto de fixação. UsesettledValue
para receber a semânticacurrentValue
anterior, atualizada apenas ao fixar uma âncora. O progresso agora é exposto como uma função (que exige pontos de partida e de chegada) em vez de uma propriedade. (Ibe6e8, b/318707189, b/298271489, b/294991954). BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
eTextFieldDecorator
receberam upgrade para a versão estável. (I9582b).InterceptPlatformTextInput
foi introduzido para ajudar a criar testes de baixo nível relacionados ao IME e outros casos de uso de IME de baixo nível. O uso dePlatformTextInputTestOverride
foi descontinuado. (I862ed, b/322680547).- Divisão de
restrictedConstraints()
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 ainda não houver nenhuma. (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
- Compatibilidade com o recurso de escrita à mão com stylus em dispositivos posteriores ao Android U. (I002e4).
hintLocales
foi adicionado aKeyboardOptions
para permitir queTextFields
sugira a IMEs com localidades específicas para predefinir um idioma preferido. (Id18c2).- Remoção das sobrecargas experimentais
BasicTextField2
eBasicSecureTextField
que usavam os parâmetrosvalue: String
eonValueChange: () -> String
. (I568b4). - Adicione uma função
applySemantics
opcional aInputTransformation
para influenciar a semântica daBasicTextField2
em que ela é aplicada. (I74a2f, b/170648072). - Neste CL, adicionamos a ação semântica
GetScrollViewportLength
para que possamos exibir informações sobre os componentes que estão sendo rolados no Compose para o sistema de acessibilidade. Esse CL também aplica o uso dessa propriedade nas listas roláveis de fundação. (Ic5fa2). BasicTextField2
foi renomeado comoBasicTextField
. (Ie5713).FocusRequester.createRefs
agora está estável (I4d92c, b/261436820).DelegatableNode.scrollIntoView()
foi introduzido para permitir que os nós modificadores façam solicitaçõesscrollIntoView
diretamente. (I2b3b7, b/299939840).- O
DelegatableNode.requireView()
foi introduzido para permitir que os nós modificadores recebam oView
atual do Android sem ler um local de composição. (I40768). - Informações de layout contextuais no escopo da linha de fluxo contextual e da coluna de fluxo contextual, apresentando o índice de linha, a posição e as restrições de largura e altura máximas para permanecer na posição especificada. Os itens que excedem a largura/altura máxima podem fluir para a próxima linha ou ser omitidos com base nas configurações de sobrecarga. (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
- O
DelegatableNode.requireLayoutCoordinates()
foi introduzido como uma forma de acessar oLayoutCoordinates
atual de umModifier.Node
sem precisar substituir oonPlaced
e armazenar as coordenadas em uma propriedade. (Ia8657). - O
DelegatableNode.currentLayoutCoordinates
foi introduzido como uma forma de acessar oLayoutCoordinates
atual de umModifier.Node
sem precisar substituir oonPlaced
e armazenar as coordenadas em uma propriedade. (Iaebaa). - Otimizações de performance em
DraggableAnchors
usado porAnchoredDraggable
. (I89cff). - A
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). - Apresentação do
ContextualFlowRow
e do EnhancedFlowRow
/Column
comMaxLines
eOverflow
. Temos o prazer de anunciar melhorias nos testes experimentais deFlowRow
eFlowColumn
, agora com suporte amaxLines
e overflow, além do lançamento doContextualFlowRow
e doContextualFlowColumn
. Essa atualização foi projetada para fornecer componentes de desempenho ideal, em queContextualFlow*
é perfeito para um grande número de itens que usam uma configuração pequena demaxLines
e o recurso dinâmico +N "Ver mais", enquantoFlowRow
eFlowColumn
são perfeitos para um pequeno número de itens, menos de 100 itens. Importante: para manter o comportamento atual emFlowRow
ouFlowColumn
, em que todos os itens são compostos, independente de se encaixarem no máximo do eixo cruzado, definaoverflow
comoFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
durante a inicialização. Explore oContextualFlowRowSample
e oFlowRowSample
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).
KeyboardOptions
min construtores de cópia descontinuados agora copiarão corretamente todas as propriedades (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).- O local de composição
LocalTextLinkStyle
foi adicionado, permitindo mudar o estilo dos links no texto em todo o app Se você estiver usando seu próprio tema no app, defina essa composição localmente de acordo com o tema. Ao usar o tema do Material Design, a cor do link será definida por padrão como a cor primária do Material Design. (I7eb10). - Lançamento 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 na área de transferência. (I81b72). - Nessa mudança, estamos substituindo
SnapFlingBehavior
porTargetedFlingBehavior
no pager para desbloquear outros casos de uso e oferecer mais flexibilidade. (I762ea). - Nessa mudança, estamos tornando as APIs do Snapping estáveis. Também estamos excluindo alguns códigos de teste e adicionando mais exemplos ao Snapping. (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
- O
BasicTextField2
agora mantém o cursor visível durante a digitação quando ele tiver sido rolado para fora da visualização ou sair da visualização devido a uma entrada. (Ieb856, b/237190748).
Contribuição externa
- Foi adicionada uma API experimental para configurar o comportamento de pré-busca 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
- Um novo
Indication API
,IndicationNodeFactory
, foi adicionado. Isso leva a implementações deIndication
de melhor performance em comparação com a APIrememberUpdatedInstance
anterior, atualmente 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 aIndication
fornecida for umaIndicationNodeFactory
, aIndication
só poderá ser criada lentamente quando necessário, o que melhora a performance. Se você não estiver elevando e usando oMutableInteractionSource
, é recomendável transmitir um valor nulo.
Mudanças na API
- A
DecayAnimation
foi introduzida noAnchoredDraggable
. Essa mudança adiciona um parâmetrodecayAnimationSpec
aAnchoredDraggable
, permitindo usar uma animação de redução ao definir uma das âncoras. A mudança também inclui renomear oanimationSpec
atual parasnapAnimationSpec
, o que ajuda a entender o caso de uso de cada especificação. - O
BasicTextField2
está disponível para uso experimental. Ele precisa estar aproximadamente em paridade de recursos comBasicTextField
, e o comportamento precisa estar pronto para produção. No entanto, a API continua sendo experimental por enquanto. Antes da estabilização, ele será renomeado comoBasicTextField
e movido para o mesmo pacote. - O primeiro rascunho da API
OutputTransformation
foi introduzido paraBasicTextField2
. Essa API substitui a maioria dos casos de uso deVisualTransformation
noBasicTextField
antigo. No entanto, ela ainda não está completa e algumas coisas não funcionarão corretamente, mas gostaríamos de receber seus comentários sobre a usabilidade da API em seus casos de uso. (aosp/2708848). - Introdução de
LinkAnnotation
, que permite adicionar links e elementos clicáveis ao texto. O recurso de vinculações ainda não foi concluído. Em breve, mais mudanças na API vão acontecer. - 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 de software ou colado da área de transferência. KeyboardOptions.shouldShowKeyboardOnFocus
permite desativar o comportamento padrão deBasicTextField
de solicitar um teclado de software em foco.- O uso de
TextInputService
eLocalTextInputService
foi descontinuado. UsePlatformTextInputModifierNode
para fazer a integração direta com as APIs do IME da plataforma. (aosp/2862698). - O uso de
Indication#rememberUpdatedInstance
foi descontinuado Ela tem uma alta penalidade de desempenho inevitável 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 comuns de programação que levam a exceções irrecuperáveis em passes de medição ou desenho posteriores. Ao serem gerados durante a composição, é mais provável que os desenvolvedores percebam esses erros durante o desenvolvimento, o que ajuda a evitar falhas de 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
1o 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 a bugs difíceis de reproduzir na 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 tocar e manter pressionado e arrastar para sair dos limites do layout do texto no primeiro frame da ação de arrastar não falha mais. (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
que não era redefinido corretamente. (I07051). - Correção do problema em que
intrinsicHeight
do texto era armazenado em excesso 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 de grade escalonada quando a rolagem é acima do limite. (bffc39).
- Adiciona verificação para layout com dimensões grandes. (e74af5).
- Correção do posicionamento de itens de tamanho 0 no início da grade escalonada. (785f94).
- Chame o retorno de chamada onRelease na mesma ordem que 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 desbloqueia a capacidade de arrastar e animar entre conjuntos predefinidos de âncoras. Esse modificador foi projetado para substituirModifier.swipeable
. Aprenda a usá-la e migrar doModifier.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 facilita o recurso de arrastar em 2D. Consulte Exemplo.AndroidExternalSurface
eAndroidEmbeddedExternalSurface
foram adicionadas para facilitar a adição de componentes orientados por superfície no Compose.- Várias mudanças e melhorias de API em
Pager
esnapFlingBehaviour
. - Várias APIs de foco, texto e encartes 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
- Foi corrigida a falha que afetava 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 layout. (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
de recebimento 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). maximumFlingVelocity
foi atualizado para ser representado como ponto flutuante. Atualizamos a documentação para ser mais claro sobre a unidademaximumFlingVelocity
. (I8adc7).onDragAndDropStart
neste local:DragAndDropModifierNode
fábrica foi renomeada comoacceptDragAndDropTransfer
.O
acceptsDragAndDropTransfer
foi adicionado aoModifier
dodragAndDropTarget
para ser aceito em uma sessão de arrastar e soltar. Essa lambda retorna umaDragAndDropTarget
se tiver interesse em uma sessão de arrastar e soltar. Outros lambdas para processamento de eventos de arrastar foram substituídos por esseUma função de fábrica
DragAndDropTarget
foi adicionada para receber de sessões de arrastar e soltar (Iebf3a).A exposição de
startDragImmediately
noAnchoredDraggable
oferece controle para detectar gestos de arrastar ao usá-lo. É útil defini-la quando o widget está sendo animado para uma âncora de destino. Consulte Exemplo. (Ie6d13, b/285139987).As APIs de dica de base agora estão
@ExperimentalFoundationApi
(I30b0b).A
DragAndDropInfo
removida como um tipoDragAndDropModifierNode.drag
agora usa parâmetros para otransferData
, o tamanho da decoração e a lambdaDrawScope
de decoração de arrastar.DragAndDropTarget
tem métodos para eventos de arrastar e soltar específicos em vez de ser um único método abstrato.onDragAndDropEvent
na função de fábrica para umDragAndDropModifierNode
foi renomeado paraonDragAndDropStart
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).Substituir
OriginalText
porTextSubstitution
. (Ifa5a8).PlatformTextInputModifierNode.textInputSession
foi renomeado comorunTextInputSession
(Ie9c6b).Os filhos de
SubcomposeLayout
(e layouts comoLazyColumn
baseados 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. As outras APIs de teste filtram 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 torna 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 slots, conforme recomendado pelo Compose, em vez de instâncias baseadas em classes de dados para criar esses slots. Esta é uma alteração interruptiva. Consulte a demonstração e o exemplo de código para ver exemplos de como usar a nova API. (Ia8943).
Correções de bugs
- Implemente igual e hashcode para
PageSize.Fixed
. (Ie3ede, b/300134276). - Correção de um bug que fazia o layout do
BasicText
não diminuir quandominWidth
mudasse eminWidth
menos que as restrições de medida inicialmaxWidth
(Idb19c). - Foi adicionado suporte ao renderizador para "Varredura Gradiente" em
ArcLine
. (I4d5bb). - Correção do problema de compatibilidade binária com a mudança do Window Inset (Iee695).
- A camada de núcleo do Material Design para o chip/botão do Material3 foi removida, já que as microcomparações 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 facilita o recurso de arrastar em 2D. Consulte a Amostra (Id95f5, b/214412658).
Mudanças na API
Modifier.dragAndDrawSource
teve o lambdaonDrawDragShadow
renomeado comodrawDragDecoration
, eDragAndDropInfo
teve o parâmetro de tamanho renomeado comodragDecorationSize
. (Id0e30, b/303904810).- O parâmetro
decorationBox
deBasicTextField2
foi renomeado comodecorator
. O tipo dela também é mudado para uma interface divertida equivalenteTextFieldDecorator
. (I23c1c).
Correções de bugs
- Melhoramos a documentação sobre
BasicTextField
sobre os requisitos doonValueChange
. (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
- Introdução de
PlatformTextInputMethodTestOverride
para programar testes para editores de texto personalizados. (Id159b). GraphicsSurface
foi renomeado comoAndroidExternalSurface
(I11680).- A sinalização temporária
DisableNonLinearFontScalingInCompose
foi adicionada para desativar o dimensionamento de fontes não linear. DefinaDisableNonLinearFontScalingInCompose = true
nos testes se precisar de tempo para limpá-los. Essa flag será removida no Compose 1.6.0-beta01. (Ic9486). - Adição de coleções
ColorList
eColorSet
que evitam alocações. (I744bd). - Essa mudança remove o
shortSnapVelocityThreshold
, que foi transformado em um detalhe das implementações deSnapLayoutInfoProvider
. (I65f6d). - O modificador
dragAndDropSource
foi adicionado para iniciar sessões de arrastar e soltar e o modificadordragAndDropTarget
para receber de sessões de arrastar e soltar (Ib7828, b/286038936). - Atualizamos a documentação de
SnapPositionInLayout
e o método de posição. Os paddings de conteúdo foram introduzidos no método de posição noSnapPositionInLayout
. (Id7938, b/300116110). - Adição de
UndoState
aTextFieldState
, que permite desfazer/refazer mudanças feitas pelo usuário (Icc024).
Correções de bugs
- Correção de
basicMarquee
que não era animado 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()
. Trata-se de uma API experimental e está sujeita a mudanças e modificações. (I9ddb2). Modifier.magnifier()
agora é uma API estável. Isso inclui a remoção deMagnifierStyle
em favor dos parâmetros in-line no próprio modificador (I83bec, b/298381260, b/262367109, b/261438887).
Mudanças na API
updateCurrentPage
eupdateTargetPage
foram introduzidos naScrollScope
. Essas são as últimas partes necessárias para permitir a personalização da rolagem animada peloPagerState.scroll
. (I9cad5, b/267744105, b/243786897).- Remover a densidade 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 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 deve ser feito usando as informações do layout e fornecido por meio da abordagem ou dos deslocamentos de ajuste. (If320c).
Mudanças de comportamento
- O Compose agora usa o dimensionamento de fontes não linear para melhorar a legibilidade e a acessibilidade. Quando escala de fonte > Nas configurações do sistema, o texto pequeno aumentará de tamanho normalmente, mas o texto já grande aumentará um pouco. Além disso, as alturas de linha definidas em SP serã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
- Remover o uso de
rememberSaveable
para dicas (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
- Foram adicionadas sobrecargas para
BasicSecureTextField
que aceitam um valor imutável e um callback para mudar esse valor, assim como a APIBasicTextField
atual. (Ia4882). Modifier.preferKeepClear()
foi adicionado para marcar como elemento combinável como preferencial para se manter longe de janelas flutuantes na API 33 e versões mais recentes. (Ib51d5, b/297260115).- As velocidades de rolagem nos componentes de visualização, como
ScrollView
eRecyclerView
, são limitadas aViewConfiguration.ScaledMaximumFlingVelocity
. O Compose agora contém a própria versão damaximumFlingVelocity
, que agora se aplica aoDraggable
. (Ibf974). - As sobrecargas
Pager
ePagerState
descontinuadas foram removidas (Iea07e). - Adição de
BasicTooltipBox
acompose.foundation
e atualização dePlainTooltipBox
eRichTooltipBox
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). Modifier.focusGroup
foi promovido para APIs estáveis. (I7ffa3).- Foram adicionadas sobrecargas para
BasicTextField2
que aceitam um valor imutável e um callback para mudar esse valor, assim como a APIBasicTextField
atual. (I3f2b8). GridItemSpan::currentLineSpan
agora é uma API estável. (Icc29c).- A tela que aceita
contentDescription
agora é uma API estável. (Ib3d29). viewportSize
foi introduzido aScrollState
, uma maneira de saber o tamanho doviewPort
do componente que usaScrollState
depois que a medição acontece. (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).
Modifier.consumeWindowInsets(PaddingValues)
agora está 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 e 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 dos campos de texto que mostravam o teclado e eram editáveis quando
readOnly
é "true" Também foi corrigido o teclado que não era mostrado quandoreadOnly
era mudado 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
- Introdução de
PagerLayoutInfo
com informações coletadas após uma passagem de medição emPager
. Também apresentamos oPageInfo
, as informações sobre uma única página medida emPager
. (Iad003, b/283098900). - Outras anotações para especificar entradas permitidas para elementos combináveis (I51109).
- Adição de
SemanticsNodeInteraction.requestFocus
como uma maneira mais conveniente e detectável de solicitar foco em testes. (Ie8722). - A API
PlatformTextInput*
foi totalmente reformulada. (I6c93a, b/274661182, b/267235947, b/277380808). - A
SoftwareKeyboardController
e aLocalSoftwareKeyboardController
não são mais experimentais.LocalSoftwareKeyboardController
agora também é umCompositionLocal
adequado. (I4c364). - O
Modifier.transformable
agora fornece um delta de movimento no parâmetrocanPan
para ajudar a determinar a direção do movimento para permitir ou impedir essa ação. (I692aa, b/266829800). - Atualiza o modificador
consumeWindowInsets
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
no Foundation. Ela pode ser usada para criar componentes que podem ser arrastados entre estados discretos, como páginas inferiores 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 unir throwables gerados ao tentar carregar recursos de bitmap com uma descrição do caminho do recurso que falhou ao carregar. (I19f44, b/230166331, b/278424788). - Adicionamos propriedades e ações semânticas para oferecer suporte à tradução de texto. (I4a6bc).
- Introdução de uma API
BringIntoViewCalculator
que pode ser usada para personalizar como componentes comoScrollable
respondem a solicitaçõesbringIntoView
. Mudamos a sobrecarga de rolável 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 se lembrar dele, semelhante às verificações de lint para criar o estado mutável /Animatable
(I5daae). - Adicionado suporte para seleção por mouse. A seleção baseada em toque será expandida por palavra e reduzida por caractere. (Ic0c6c, b/180639271).
- Foi adicionada a interface
FocusTargetModifierNode
, que 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 dos campos de texto que mostravam o teclado e eram editáveis quando
readOnly
é "true" Também foi corrigido o teclado que não era mostrado quandoreadOnly
era mudado 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 de base, incluindo
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, modificador de layout e outros foram migrados para a APIModifier.Node
, reduzindo a sobrecarga na composição inicial. - Melhorias na estabilidade dos pagers. Muitos bugs foram corrigidos.
- Os parâmetros
pageCount
agora ficam emPagerState
em vez de no 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 para primitivos está disponível. O ID do lint éAutoboxingStateCreation
. Antes, essa inspeção era ativada por padrão para todos os projetos. Para que esse aviso apareça no editor do Android Studio e nos resultados do lint do seu projeto, mude a gravidade de informativo para aviso (ou maior) 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
- Reduz as alocações durante listas/grades lentas/etc. (Iaf9e2).
- Alocações reduzidas ao aplicar snapshots (I65c09).
- As alocações de animações de mola foram removidas (Ie9431).
- A alocação foi removida de
TextLayout
(I0fd11). - Remoção de várias alocações no rastreamento de 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 lista completa de parâmetros. (Iad234, b/246961787). - Introdução de uma
SnapLayoutInfoProvider
que pode ser usada comLazyGridState
. (I92134, b/269237141, b/260914964). - O
Modifier.animateItemPlacement()
experimental foi adicionado para o escopo do item de grades escalonadas lentas. É possível aplicá-la aos itens para alcançar as animações de mudança/reordenação de posição da 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 em um eixo cruzado, com o espaço restante distribuído pela organização dos eixos cruzados. (I8542f). - Introdução do escopo do receptor
PagerScope
para pager e uma função utilitária para cálculo de um determinado deslocamento de página. (If2577). - Introduza o
snapPositionalThreshold
ao criar um comportamento de deslize rápido de ajuste. Use esse parâmetro a fim de especificar um limite de posição para o ajuste curto no Pager. (If8f7f). - A
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
foi substituída pelacalculateSnappingOffset
Nesse novo método, simplesmente solicitamos o próximo deslocamento para ajustar. O cálculo dos limites precisa ser feito no nível da implementação, já que isso pode variar dependendo de como o ajuste 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 aceitar apageCount
. (Ieb52d, b/266965072). - O
pageCount
foi removido deHorizontal/VerticalPager
Isso precisa ser fornecido na criação do estado.PagerState
erememberPagerState
foram atualizados para aceitar apageCount
. (Ifa3cb, b/266965072). - Apresente
shortSnapVelocityThreshold
noSnapFlingBehavior
do Pager. (I7379e, b/275579012). - Adiciona um
FlowRowScope
e umFlowColumnScope
. (I54fe2).
Correções de bugs
- Chamadas para receber semântica de texto quando as restrições tiverem
minWidth
eminHeight
não falharem mais (Ibd072). - Correção da regressão em que o teclado não era mostrado para campos de texto dentro de 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 desempenho da nova pilha é otimizado, e você não vai notar mudanças visíveis.
Se você notar mudanças no texto renderizado, depure, 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
- Deixe o
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
- Foi adicionado suporte a células de tamanho fixo em
LazyGrid
e organizá-las em eixos cruzados. (I83ed9, b/235121277, b/267942510). - Foi adicionado suporte a faixas de tamanho fixo em
LazyStaggeredGrid
e organizando-as com a organização de eixos cruzados. (I7d519). UrlAnnotation
s emAnnotatedString
s agora podem ser abertos usando serviços de acessibilidade comoTalkBack
. (If4d82, b/253292081).- A ação semântica
InsertTextAtCursor
foi adicionada para campos de texto. (I11ed5). - As ações de teste relacionadas a texto (por exemplo,
performTextInput
) agora solicitam o foco diretamente, usando a ação semântica, em vez de clicar no campo. (I6ed05). - Adiciona suporte ao espaçamento/organização nos eixos cruzados usando
verticalArrangement
emFlowRow
ehorizontalArrangement
emFlowColumn
. Também removemos osverticalAlignment
ehorizontalAlignment
de nível superior emFlowRow/FlowColumn
. Em vez disso, 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 o
BasicText
foram refatorados para usar o novo sistema de modificadores. Isso leva a melhorias substanciais de desempenho em muitos casos. Nenhuma mudança deve ficar visível. (If1d17, b/246961435). - Adição da ação semântica
PerformImeAction
para invocar a ação do IME em nós do editor de texto. (Ic606f, b/269633506).
Correções de bugs
- Atualização dos componentes internos de
Modifier.hoverable
. O modificadorhoverable
só será mostrado no inspetor se estiver ativado. (I82103).
Versão 1.4
Versão 1.4.3
3 de maio de 2023
Lançamento de androidx.compose.foundation:foundation:1.4.3
e androidx.compose.foundation:foundation-layout:1.4.3
sem mudanças (apenas uma promoção de versão).
Versão 1.4.2
19 de abril de 2023
Lançamento de androidx.compose.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
- Foi adicionada uma integração de compatibilidade com emojis 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
. - Foi adicionado suporte ao período completo de linha para
LazyStaggeredGrid
(I28252). - Adição do
onHover
experimental aClickableText
(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 como experimental para mostrar conteúdo com um efeito de letreiro de 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 da 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 à
LazyStaggeredGrid
. (I3ef4a).
Correções de bugs
- A ação semântica
SetText
deBasicTextField
agora atualizará o buffer de texto usando o mesmo caminho de código das atualizações do 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
- Foi adicionado um novo callback
Modifier.Node.onReset()
, que permite redefinir algum estado local para lidar corretamente com o caso quando aLayout
for reutilizada, por exemplo, como um item deLazyColumn
.FocusTargetModifierNode
foi corrigido para redefinir corretamente o estado em foco (I65495, b/265201972). - O parâmetro
BlendMode
foi adicionado aos métodosDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
para oferecer suporte a diferentes algoritmos de combinação ao desenhar texto no Canvas (I57508). - A API
modifierElementOf()
foi removida. Estenda a mensagem diretamente doModifierNodeElement
. (Ie6d21).
Correções de bugs
- Ajustar as alças de seleção não pode mais selecionar um caractere parcial. (Idedd1).
- Foi corrigida uma 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).