Compose Material

Crie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io.
Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
4 de agosto de 2021 1.0.1 - - 1.1.0-alpha01

Estrutura

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

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

GrupoDescrição
compose.animationCrie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário.
compose.compilerTransforme funções que podem ser @compostas e ative otimizações com um plug-in do compilador Kotlin.
compose.foundationCrie aplicativos do Jetpack Compose com elementos básicos prontos e amplie a base para criar suas próprias peças de sistema de design.
compose.materialCrie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io.
compose.runtimeElementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler.
compose.uiComponentes fundamentais da IU do Compose 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 ver mais informações.

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

Groovy

dependencies {
    implementation "androidx.compose.material:material:1.1.0-alpha01"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.5.10"
        kotlinCompilerExtensionVersion "1.1.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.1.0-alpha01")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerVersion = "1.5.10"
        kotlinCompilerExtensionVersion = "1.1.0-alpha01"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Para ver 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 existentes nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema

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

Versão 1.1.0

Versão 1.1.0-alpha01

4 de agosto de 2021

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

Mudanças na API

  • O método DrawScope#drawImage, que consome retângulos de origem e destino para consumir um parâmetro FilterQuality opcional foi atualizado. Isso é útil para fazer arte de pixels que precisa ser pixelada quando escalonada verticalmente para artes baseadas em pixels. Atualização do elemento que pode ser composto BitmapPainter + Image para também consumir um parâmetro FilterFilter opcional (Ie4fb0, b/180311607).
  • Renomeação do BadgeBox para BadgedBox. Os parâmetros mudaram para aceitar o componente Badge que pode ser composto. O componente Badge que é o conteúdo de ícone típico para um BadgedBox foi adicionado (I639c6).
  • O componente NavigationRail foi adicionado. Consulte os documentos e os exemplos para ver informações de uso (I8de77).

Correções de bugs

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

Versão 1.0.1

Versão 1.0.1

4 de agosto de 2021

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

Atualizações de dependência

  • Atualização para depender do Kotlin 1.5.21.

Versão 1.0.0

Versão 1.0.0

28 de julho de 2021

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

Principais recursos da versão 1.0.0

Esta é a primeira versão estável do Compose. Veja mais detalhes na postagem do blog oficial sobre a versão 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 ocorrer a seguinte falha:

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

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

Versão 1.0.0-rc02

14 de julho de 2021

Lançamento de androidx.compose.material:material-*:1.0.0-rc02. A versão 1.0.0-rc02 contém essas confirmações (link em inglês).

Correções de bugs

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

Versão 1.0.0-rc01

1º de julho de 2021

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

Mudanças na API

  • Adição do componente BadgeBox. Consulte os documentos e as amostras para ver informações de uso (I5e284).
  • Renomeação de useDefaultMaxWidth em PopupProperties para usePlatformDefaultWidth (I05710).
  • Agora, as caixas de diálogo podem usar toda a largura da tela (I83929, b/190810877).
  • Adição de implementação de controle deslizante de intervalo experimental (I2f4b3).

Correções de bugs

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

Versão 1.0.0-beta09

16 de junho de 2021

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

Mudanças na API

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

Correções de bugs

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

Regras de perfil adicionadas

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

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

O que são as regras de perfil?

  • As regras de perfil para uma biblioteca são especificadas em um arquivo de texto baseline-prof.txt localizado no diretório src/main ou equivalente. O arquivo especifica uma regra por linha, em que uma regra, nesse caso, é 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 é utilizada ao usar adb shell profman --dump-classes-and-methods .... Essas regras podem ter uma das duas formas destinadas a métodos ou classes.

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

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

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

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

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

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

O que as regras fazem?

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

  • Um método com a sinalização 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 sinalização P indica que ele é chamado após a inicialização.

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

Como isso funciona?

  • As bibliotecas podem definir essas regras que serão empacotadas nos artefatos do AAR. Quando um APK é criado e inclui esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário compacto que seja específico para o APK. Assim, o ART poderá aproveitar esse perfil quando o APK estiver instalado em dispositivos para compilar um subconjunto específico do aplicativo, com antecedência, para melhorar o desempenho dele, especialmente na primeira execução. Isso não terá efeito nos aplicativos depuráveis.

Versão 1.0.0-beta08

2 de junho de 2021

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

Novos recursos

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

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

Mudanças na API

  • FabPosition foi convertida de uma enumeração para ser uma classe in-line, o que oferece compatibilidade com uma possível expansão no futuro (I030fb).
  • 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 utilizar essas mudanças (Ica6bf, b/184825850).
  • Modifier.focusModifier() foi descontinuado e substituído por Modifier.focusTarget() (I6c860).
  • A enumeração FocusState foi substituída por uma interface FocusState (Iccc1a, b/187055290).
  • LocalRippleNativeRendering foi removido agora que a implementação de ondulação baseada em visualização é estável (I7fab3, b/188569367).

Correções de bugs

  • Modifier.onGloballyPositioned() mudou para informar as coordenadas desse modificador na cadeia de modificadores, não as coordenadas de layout após aplicar todos os modificadores. Isso significa que agora a ordem dos modificadores afeta as coordenadas que seriam informadas (Ieb67d, b/177926591).
  • Um README foi adicionado ao catálogo do Compose Material (If9191).

Versão 1.0.0-beta07

18 de maio de 2021

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

Mudanças na API

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

Versão 1.0.0-beta06

5 de maio de 2021

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

Mudanças na API

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

Correções de bugs

  • Atualização da implementação de inserções do catálogo do Compose em https://github.com/google/accompanist/pull/365 (I25dc3).
  • Elementos filhos de linhas e colunas com weight(fill = false) não fazem mais com que a mãe preencha todo o espaço do eixo principal disponível (Ied94d, b/186012444, b/184355105).

Versão 1.0.0-beta05

21 de abril de 2021

Lançamento de androidx.compose.material:material-*:1.0.0-beta05. A versão 1.0.0-beta05 contém estas confirmações (link em inglês).

Correções de bugs

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

Versão 1.0.0-beta04

7 de abril de 2021

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-beta03

24 de março de 2021

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

Mudanças na API

  • O uso do DefaultMonotonicFrameClock foi descontinuado. Chamar withFrameNanos ou Recomposer.runRecomposeAndApplyChanges sem MonotonicFrameClock agora gerará uma IllegalStateException (I4eb0d).
  • Adição de uma nova API LeadingIconTab para oferecer compatibilidade com a exibição de um ícone e texto in-line em uma guia (I23267).

Contribuição externa

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

Versão 1.0.0-beta02

10 de Março de 2021

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-beta01

24 de fevereiro de 2021

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

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

Mudanças na API

  • Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferenceWidth/preferenceHeight/preferencialSize foi renomeado como width/height/size (I5b414).
  • imageResource e vectorResource agora são funções de extensão nos complementares ImageBitmap e ImageVector, respectivamente. As funções load{Image,Vector,Font}Resource foram excluídas (I89130).
  • Modificadores para dimensionamento para intrínsecos não são mais experimentais. (I15744).
  • Declarações dp removidas (I798d2).
  • Remoção do callback SoftwareKeyboardController de todos os campos de texto para ser substituído por uma nova API em breve (Iae869, b/168778053).
  • Agora, os lambdas de ação da chave, caixa de seleção e botão de opção são anuláveis. As amostras de caixas de seleção clicáveis em linha são atualizadas para usar esse recurso (If601b, b/171819073).
  • InteractionState foi substituído por [Mutable]InteractionSource
    • As interfaces são responsáveis por emitir / coletar eventos de interação.
    • Em vez de transmitir interactionState = remember { InteractionState() } para componentes como Button e Modifier.clickable(), use interactionSource = remember { MutableInteractionSource() }.
    • Em vez de: Interaction.Pressed in interactionState, use as funções de extensão em InteractionSource, como InteractionSource.collectIsPressedAsState().
    • Para casos de uso complexos, use InteractionSource.interactions para observar o fluxo de interações. Consulte as amostras e a documentação do InteractionSource para mais informações
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378).
  • Adição da interface AccessibilityMananger e LocalAccessibilityMananger em CompositionLocals (I53520).
  • Remoção dos métodos LayoutCoordinates obsoletos. Use a função em vez da propriedade para positionInParent e boundsInParent (I580ed, b/169874631, b/175142755).
  • O controle deslizante agora é compatível com o modo ativado/desativado (I6d56b, b/179793072).
  • Criar novo TextInputSession para sessões de entrada a partir de componentes de texto de baixo nível, como o CoreTextField (I8817f, b/177662148).
  • AnimationEndReason.Interrupted foi removido. CancellationException será gerada se a animação for interrompida (I2cbbc, b/179695417).
  • Remoção de@ExperimentalRippleApi e mudança deRippleAlpha para uma classe com propriedades em vez de uma interface (I6df7c).
  • Adição da interface TextFieldColors para representar cores diferentes usadas em TextField e OutlinedTextField em estados diferentes. Para implementação completa, consulte TextFieldDefaults.textFieldColors e TextFieldDefaults.outlinedTextFieldColors.
  • Adição do modificador selectGroup que permite marcar a coleção de guias ou botões de opção para fins de acessibilidade (Ie5c29).
  • Adição de LazyListState.animateScrollToItem

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

  • ScrollableState.smoothScrollBy() foi renomeado como animateScrollBy() LazyListState.snapToItemIndex() foi renomeado como scrollToItem() ScrollState.smoothScrollTo() foi renomeado como animateScrollTo() (I35ded).

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

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

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

  • Mudança dos pacotes de métodos smoothScrollBy e scrollBy para androidx.compose.foundation.gestures.* (I3f7c1, b/175294473).

  • Agora, o FlingConfig foi renomeado para FlingBehavior e permite a personalização da animação suspensa em vez da redução de valores predefinidos. (I02b86, b/175294473)

  • Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferenceWidth/preferenceHeight/preferencialSize foi renomeado como width/height/size (I5b414).

  • defaultMinSizeConstraints foi renomeado como defaultMinSize (I4eaae).

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

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

  • Providers foi renomeado como CompositionLocalProvider.

    • O construtor Composition não aceita mais um parâmetro chave e foi descontinuado.
    • currentCompositeKeyHash foi transformado em uma propriedade de nível superior que pode ser composta em vez de uma função de nível superior que pode ser composta.
    • 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 origem. Portanto, isso não deve 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 por meio do rememberDraggableState { delta -> } para ter o mesmo comportamento de antes (Ica70f, b/175294473).

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

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

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

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

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

  • Mudança de Indication#createIndication() para RIndication#rememberUpdatedIndication(InteractionState) e remoção do parâmetro InteractionState de IndicationInstance#drawIndict(). 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 devem ocorrer dentro de rememberUpdatedIndication(). O parâmetro indication em Modifier.indication também foi mudado para ser um parâmetro obrigatório. (Ic1764, b/152525426).

Correções de bugs

  • Adição da nova API local de composição LocalSoftwareKeyboardController para substituir a interface SoftwareKeyKeyboard anterior no TextField (I658b6, b/168778053).

Versão 1.0.0-alpha12

10 de fevereiro de 2021

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

Mudanças na API

  • Agora, Modifier.pointerInput requer que as chaves remember indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
  • BottomDrawerLayout e ListItem foram marcados como @ExperimentalMaterialApi (Id766e).
  • PaddingValues.Absolute foi adicionado e pode ser usado em APIs que aceitam PaddingValues (Ia5f30).
  • onImeActionPerformed foi descontinuado. Use KeyboardActions (If0bbd, b/179071523).
  • Para se adequar melhor às convenções de nomenclatura com ImageBitmap e ImageVector, o ImagePainter foi renomeado como BitmapPainter para o VectorPainter paralelo (Iba381, b/174565889).
  • Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
  • ComponentActivity.setContent foi movido para androidx.activity.compose.setContent no módulo androidx.activity:activity-compose (Icf416).
  • Os métodos de desestruturação e copy() foram removidos de várias classes em que raramente eram usados (I26702, b/178659281).
  • Faça halgExpand() e expand() em ModalBottomSheetState interno (Ic914e).
  • Mudança de Indication#createInstance para @Composable e alteração de LocalIndication para conter uma Indication, não () -> Indication (I5eeea, b/157150564).
  • AlertDialog e DropdownMenu foram movidos para serem somente Android por enquanto. Adição do parâmetro PopupProperties ao DropdownMenu para configuração adicional do Pop-up básico. (I9c443).
  • loadFontResource foi descontinuado. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi descontinuado. Use painterResource (I6b809).
  • Os parâmetros toggle e toggleModifier foram removidos do DropdownMenu e renomeados dropdownModifier, dropdownOffset e dropdownContent como modifier, offset e content, respectivamente. O DropdownMenu agora se comporta de maneira consistente para Popup, em que o layout parental é usado para a posição do menu. Na maioria dos casos, é possível mover toggle para ser um irmão de DropdownMenu e unir ambos em uma Box. Veja o exemplo atualizado na documentação para obter mais informações sobre o uso dessa API (I884fb).
  • toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).
  • IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).
  • Adição de ações de semântica de expansão e recolhimento. Adição de expansão e halfExpand em ModalBottomSheetState (Ib5064).
  • O uso de Modifier.dragGestureFilter foi suspenso. 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 state { 0 } que pode ser composto e agora passamos a promover o uso como remember { mutableStateOf(0) }, removeremos o savedInstanceState { 0 } que pode ser composto. Use rememberSaveable { mutableStateOf(0) } para salvar e restaurar automaticamente se o tipo usado dentro de MutableState puder ser armazenado no pacote. Se você transmitia um objeto de economia personalizado, agora precisará usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso será assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).
  • Adição de ProgressBarRangeInfo.Indeterminate para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).
  • O uso de @ComposableContract foi descontinuado e substituído por três outras anotações mais específicas.

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

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

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

  • Os parâmetros em RounderCornerShape, CutCornerShape e CornerBasedShape foram renomeados de esquerda/direita para início/fim para oferecer compatibilidade com o 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).

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

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

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

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

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

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

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

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

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

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

Correções de bugs

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

Versão 1.0.0-alpha11

28 de janeiro de 2021

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

Mudanças na API

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

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi descontinuado em favor das APIs SideEffect e DisposableEffect (If760e).
  • A Transition baseada em TransitionDefinition foi descontinuada (I0ac57)
  • O estado inicial de updateTransition agora é compatível (Ifd51d).
  • WithConstraints foi reformulada como BoxWithConstraints e movida para fund.layout (I9420b, b/173387208).
  • Pare de usar o scrollBy que não é de suspensão, remova scrollTo que não é de suspensão

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

  • Descontinuar o uso do scrollBy não suspenso Agora recomendamos o uso de funções de suspensão para controlar a rolagem e aguardar a conclusão da rolagem. Estamos descontinuando o uso de versões não suspensas dessas funções como parte da transição (I12880).

  • Introdução de ComposeContentTestRule, que estende ComposeTestRule e define setContent, que foi removido de ComposeTestRule. Um método de fábrica createEmptyComposeRule() que retorna uma ComposeTestRule e não inicia uma atividade por você foi adicionado. Use-o quando quiser iniciar a Activity durante o teste, por exemplo, usando ActivityScenario.launch (I9d782, b/174472899).

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

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

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

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

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

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

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

  • invalidate e writingReference() agora foram descontinuados em favor de currentRecomposeScope e RememberComAnnotationReference, respectivamente (I583a8).

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

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

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

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

  • Easing foi mudado para uma interface funcional (Ib14e5).

  • O uso de ScrollableColumn/Row foi descontinuado. O uso do ScrollableColumn é menos eficiente se comparado ao LazyColumn quando você tem um conteúdo de rolagem grande, porque com o LazyColumn só é possível escrever, medir ou desenhar 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. items(items: List) e itemsIndexed(items: List) agora são funções de extensão, portanto, você precisa importá-las manualmente quando as usar. Sobrecargas de nova extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

  • Remoção dos métodos monotonicFrameAnimationClockOf experimentais (Ib753f, b/170708374).

  • Descontinuação do uso dos métodos de coordenadas globais e criação de novos métodos de coordenadas baseados em janela (Iee284).

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

  • FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer alterações (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).

  • Aproveite o TestCoroutineDispatcher no teste (I532b6).

  • A API de gráficos vetoriais foi atualizada para ser compatível com a análise de tonalidades aplicada à raiz dos gráficos vetoriais (Id9d53, b/177210509).

Versão 1.0.0-alpha10

13 de janeiro de 2021

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

Mudanças na API

  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • @ExperimentalTesting foi renomeado para @ExperimentalTestApi para ser consistente com anotações de API experimentais semelhantes (Ia4502, b/171464963).
  • Renomeação de Posição para DpOffset e removida getDistance() (lb2dfd).
  • Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
  • Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
  • 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).
  • O nativeClass foi movido para o módulo ui e definido como interno. Atualização dos usos de nativeClass em implementações equivalentes para usar "is MyClass" (I4f734).

Correções de bugs

  • Adição de compatibilidade com campos de texto desativados e somente leitura (I35279, b/171040474, b/166478534).
  • animate() agora é substituído por animateAsState(), que retorna um State<T> em vez de T. Isso permite um desempenho 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. Mudança de Modifier.progressSemantics para que o Slider também possa usá-lo (I216cd).

Versão 1.0.0-alpha09

16 de dezembro de 2020

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

Mudanças na API

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

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

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

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

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

    As duas sintaxes funcionarão por algum tempo, mas a antiga obsoleta se tornará um erro de compilação (Id9197).

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

Correções de bugs

  • Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
  • O ShaderBrush foi refatorado para criar lentamente uma instância de sombreador quando as informações de dimensionamento do ambiente de desenho estão disponíveis. Isso é útil para definir gradientes que ocupam os limites de desenho completos de um elemento que pode ser composto no momento da composição, sem precisar fazer implementações DrawModifier personalizadas.

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

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

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

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

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

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

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

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

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

  • Adição de compatibilidade de InteractionState com TextFields (I61d91).

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

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

Versão 1.0.0-alpha08

2 de dezembro de 2020

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

Mudanças na API

  • Agora, o MaterialTheme define as cores corretas para as alças e para o segundo plano da seleção. Apps que não são do Material podem usar manualmente AmbientTextSelectionColors para personalizar as cores usadas para seleção (I1e6f4, b/139320372, b/139320907).
  • Adição de verificação de lint para posicionamento e nomeação do parâmetro lambda composto, para verificar a consistência com as diretrizes do Compose. Também ocorreu a migração de algumas APIs usando children como o nome do lambda final para content, de acordo com a verificação e as orientações do lint (Iec48e).
  • Renomeação de VectorAsset como ImageVector. VectorAsset movido e renomeado como Builder para ser uma classe interna de ImageVector, de acordo com as diretrizes do conselho da API. Adição de 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 iu (I6f05c).
  • fun RippleIndication() foi descontinuado e substituído por rememberRippleIndication() para consistência com outras APIs (Id8e2c).
  • Adição de um parâmetro singeLine a BasicTextField, TextField e OutlinedTextField. Defina esse parâmetro como verdadeiro para tornar o campo de texto uma única linha rolável horizontalmente (I57004, b/168187755).

Correções de bugs

  • A ação semântica Dismiss foi adicionada (I2b706).
  • As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. Criação do arquivo DrawModifierDeprecated.kt para incluir os métodos typealiases/helper para ajudar na migração da suspensão de uso para as APIs atuais (Id6044, b/173834241).
  • Renomeação de Modifier.drawLayer para Modifier.graphicsLayer. Além disso, houve a atualização das classes relacionadas para GraphicsLayer de acordo com o feedback da API (I0bd29, b/173834241).
  • <T> foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).
  • Adição de APIs Modifier.scale/rotate como conveniências para drawLayer.
    • Modifier.drawOpacity foi renomeado como Modifier.alpha.
    • Modifier.drawShadow foi renomeado como Modifier.shadow (I264ca, b/173208140).
  • O parâmetro de alinhamento do Box foi renomeado como contentAlignment (I2c957).
  • Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
  • Introdução às APIs SweepGradientShader e SweepGradientBrush (Ia22c1).
  • Adição de verificação de lint para parâmetros Modifier em funções que podem ser compostas. Essa verificação de lint confere a nomenclatura, o tipo de retorno, o valor padrão e a ordem do parâmetro para garantir consistência com as diretrizes do Compose (If493b).
  • API TextFieldValue atualizada.
    • TextFieldValue.composition agora é somente leitura.
    • Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
  • Adição de uma nova sobrecarga de Modifier.drawLayer(). É necessário um bloco lambda em um novo GraphicsLayerScope, onde você define os parâmetros de camada de uma forma que permite pular a recomposição e o novo layout quando a mudança de estado acontece. O DrawLayerModifier agora é interno como forma de preparo para a migração da lógica para o método placeable.placeWithLayer() do LayoutModifier (I15e9f, b/173030831).
  • Ambientes descontinuados nomeados como sufixo Ambient e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • Adição de verificação de lint para conferir se as fábricas do Modifier usam androidx.compose.ui.composed {} internamente, em vez de serem marcadas como @Composable (I3c4bc).
  • Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
  • O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
  • Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
  • TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
  • A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
  • id foi renomeado como layoutId para LayoutIdParentData. Measurable.id foi renomeado como Measurable.layoutId (Iadbcb, b/172449643).

Versão 1.0.0-alpha07

11 de novembro de 2020

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

Mudanças na API

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

Correções de bugs

  • captureToBitmap movidos para captureToImage. (I86385).
  • O uso de AmbientTextStyle, ProvideTextStyle e AmbientContentColor de base está descontinuado. Em vez disso, use as novas versões disponíveis na biblioteca Material. Em aplicativos que não usam Material, crie seus próprios ambientes de temas específicos do sistema de design que possam ser consumidos nos seus componentes (I74acc, b/172067770).
  • foundation.Text foi descontinuado e substituído por material.Text. Para uma API de texto básica e discreta que não consome valores de um tema, consulte androidx.compose.foundation.BasicText (If64cb).
  • Renomeação de KeyboardOptions como ImeOptions (I82f36).
  • KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
  • Descontinuação de uso de BaseTextField. Use BasicTextField (I896eb).
  • A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
  • FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
  • Atualização da API Icon 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).
  • relativePaddingFrom foi renomeado como paddingFrom. O modificador paddingFromBaseline foi adicionado, como conveniência para a especificação de distâncias de limites de layout para linhas de base do texto (I0440a, b/170633813).
  • LaunchedTask foi renomeado como LaunchedEffect para fins de consistência com as APIs SideEffect e DisposableEffect. Para incentivar as práticas recomendadas, o LaunchedEffect sem parâmetros de assunto não será permitido (Ifd3d4).
  • MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
  • Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).

Versão 1.0.0-alpha06

28 de outubro de 2020

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

Mudanças na API

  • androidx.compose.foundation.Icon foi movido para androidx.compose.material.Icon. Você também pode usar o componente de imagem / Modifier.paint() com um Painter se não quiser usar a biblioteca Material (I9f622).
  • Adição de FloatingActionButtonElevation para representar a elevação usada por FABs em estados diferentes. Consulte FloatingActionButtonConstants.defaultElevation() para a implementação padrão (I2d4f5).
  • Adição da interface SwitchColors para representar cores usadas por um Switch em estados diferentes. Consulte SwitchConstants.defaultColors para personalizar essas cores (I93805).
  • Adição das interfaces ButtonElevation e ButtonColors para representar a elevação e as cores usadas por botões em estados diferentes. Consulte as funções padrão em ButtonConstants para personalizar esses parâmetros (Ic5b7b).
  • Adição da interface RadioButtonColors para representar cores usadas por um RadioButton em estados diferentes. Consulte RadioButtonConstants.defaultColors() para personalizar as cores usadas em estados diferentes (I74130).
  • Adição da interface CheckboxColors para representar cores usadas por uma caixa de seleção em estados diferentes. Consulte CheckboxConstants.defaultColors() para personalizar as cores usadas em estados diferentes (I7dbdb).

Correções de bugs

  • Os componentes do Material Design não definem mais a elevação como zIndex. Isso significa que, dentro do mesmo pai, o filho com tamanho de sombra maior não será desenhado sobre o filho com o menor automaticamente. Se você ainda precisar desse comportamento, defina o Modifier.zIndex() manualmente, quando necessário (I70417, b/170623932).
  • Substituição do uso de VectorPainter pelo rememberVectorPainter para indicar melhor que a API que pode ser composta usa internamente o "remember" de modo a 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).
  • Renomeação da API Radius como CornerRadius para expressar melhor a forma de uso dela no Compose. Atualização da documentação para indicar que raios negativos dos cantos são fixados a zero (I130c7, b/168762961).
  • Refatoração de DrawScope e ContentDrawScope para que sejam interfaces em vez de classes abstratas.
    • Criação da implementação CanvasDrawScope do DrawScope.
    • Implementações refatoradas do DrawScope para usar o CanvasScope.
    • Criação do DrawContext para unir dependências para o DrawScope.
    • Remoção de métodos que tiveram o uso descontinuado no DrawScope (I56f5e).
  • Box agora é uma função inline (Ibce0c, b/155056091).

Versão 1.0.0-alpha05

14 de outubro de 2020

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

Mudanças na API

  • Pop-ups e caixas de diálogo agora herdam FLAG_SECURE da janela mãe. Adição de opção para configurar isso explicitamente (I64966, b/143778148, b/143778149)
  • Modifier.swipeable agora tem limites de 56.dp para estados por padrão (Iab825, b/168610267).
  • Todos os estados de scaffold marcados como @Stable. drawerGesturesEnabled em ScaffoldState foram movidos para o próprio Scaffold (I36645, b/168297016).
  • Remoção de um tipo anulável dos parâmetros lambda Scaffold, você pode usar emptyContent() para representar a ausência de conteúdo para um determinado parâmetro (I2b318, b/157633857, b/158551084).
  • Descontinuação do uso das APIs contentColor() e currentTextStyle() e substituição delas pelos ambientes AmbientContentColor e AmbientTextStyle, respectivamente. É possível acessar o valor atual usando .current na propriedade do ambiente, assim como em qualquer outro ambiente. Essa mudança foi feita para manter a consistência e para evitar a existência de várias maneiras de alcançar o mesmo resultado. Também renomeia algumas propriedades de ambiente para descrever melhor a finalidade delas da seguinte maneira:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
  • Adição de AmbientElevationOverlay, permitindo a personalização / desativação da sobreposição de elevação padrão aplicada em Surfaces com o tema escuro (I5b74d).

Correções de bugs

  • Como parte da padronização de valores de sentinela para classes in-line, renomeie a Color.Unset como Color.Unspecified para consistência com outras classes in-line (I97611, b/169797763)
  • Introdução de TextOverflow.None. Quando overflow for "None", o Text não será mais processado e informará o tamanho real para o LayoutNode (I175c9, b/158830170)
  • launchInCompose foi renomeado como LaunchedTask para corresponder às diretrizes da API Compose (I99a8e)
  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned(). (I587e8, b/169083903)

Versão 1.0.0-alpha04

1º de outubro de 2020

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

Mudanças na API

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

Correções de bugs

  • Atualização de várias APIs Graphics
    • As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
    • Remoção dos métodos Rect.expandToInclude e Rect.join.
    • Documentação do Radius atualizada para informar oval, além de elíptico.
    • Adição da documentação para indicar que o construtor público da classe Radius in-line não deve 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.
    • Substituição do Rect.shift descontinuado 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.
    • Atualização do construtor RoundRect para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
    • Remoção das APIs Size que pressupunham ser um retângulo com origem em 0,0.
    • 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).
  • Descontinuação do uso de foundation.Box. Use foundation.layout.Box (Ie5950, b/167680279).
  • Stack foi renomeado como Box. O uso do Box anterior será descontinuado e foi 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).
  • Os parâmetros de decoração do Box foram descontinuados. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
  • Atualização de várias APIs Graphics
    • Atualização das APIs DrawScope com métodos de transformação com escopo para indicar que a transformação só é aplicada dentro do callback e removida depois de ele 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.
    • Renomeação de DrawScope.drawCanvas como drawIntoCanvas e remoção do parâmetro de tamanho.
    • Renomeação de parâmetros dx/dy no método de encarte como horizontal e vertical.
    • Adição de sobrecarga do encarte, que fornece o mesmo valor de encarte a todos os quatro limites.
    • Remoção da documentação sobre o método do encarte indicando que o encarte seria aplicado a todos os quatro lados.
    • Atualização da documentação da classe Rect.
    • Atualização de comentários sobre os parâmetros Rect para corresponder ao estilo kdoc.
    • Remoção de Rect.join e Rect.expandToInclude.
    • Criação de sobrecarga para Rect.translate(offset) e para o Rect.shift descontinuado
    • (If086a, b/167737376).
  • Evitamos importações estáticas de conteúdo de escopos de layout, por exemplo, alignWithSiblings no RowScope. A alternativa do escopo explícito precisa ser usada: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797).

Versão 1.0.0-alpha03

16 de setembro de 2020

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

Mudanças na API

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

Correções de bugs

  • O uso das funções de teste globais, como onNode ou waitForIdle, foi descontinuado. Migre para as novas contrapartes que estão definidas em ComposeTestRule (I7f45a).
  • DpConstraints e as APIs que o usavam foram descontinuados (I90cdb, b/167389835).
  • Os parâmetros minWidth e maxWidth de widthIn foram renomeados para min e max. O mesmo ocorreu para preferredWidthIn, heightIn, preferredHeightIn (I0e5e1, b/167389544).
  • Remoção das ações de semântica de rolagem para frente/para trás. Adição de etapas em AccessibilityRangeInfo (Ia47b0).
  • Os usos da gravidade foram renomeados de forma consistente para align ou alignment nas APIs de layout (I2421a, b/164077038).
  • Adição de onNode e de outros métodos globais na ComposeTestRule, porque os atuais ficarão obsoletos (Ieae36).
  • createAndroidComposeRule e AndroidInputDispatcher foram movidos de androidx.ui.test.android para androidx.ui.test (Idef08, b/164060572).

Versão 1.0.0-alpha02

2 de setembro de 2020

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

Mudanças na API

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

Correções de bugs

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

Versão 1.0.0-alpha01

26 de agosto de 2020

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

Problema conhecido

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

Versão 0.1.0-dev

Versão 0.1.0-dev17

19 de agosto de 2020

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

Mudanças na API

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

Correções de bugs

  • Removidos onChildPositioned e OnChildPositionedModifier. Os desenvolvedores precisam usar onPositioned e OnPositionedModifier no layout filho (I4522e, b/162109766).
  • Adição do lambda mergePolicy a SemanticsPropertyKey. É possível usá-la para definir uma política personalizada para a mesclagem de semântica mergeAllDescendants. A política padrão será usar o valor pai se já estiver presente. Caso contrário, o valor filho (Iaf6c4, b/161979921).
  • IntSize agora é uma classe inline (I2bf42).
  • PlacementScope.placeAbsolute() foi renomeado como PlacementScope.place(), e o PlacementScope.place() anterior foi renomeado como PlacementScope.placeRelative(). Por essa razão, o método PlacementScope.place() não espelhará automaticamente a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, use PlacementScope.placeRelative() (I873ac, b/162916675).
  • Descontinuação do uso de PxBounds em favor de Rect. Atualização de todos os usos de PxBounds com rect e adição de descontinuação/substituição por anotações para auxiliar na migração (I37038, b/162627058).
  • Renomeação de RRect para RoundRect para ajustar melhor os padrões de nomenclatura de composto Criação de construtores de função semelhantes para RRect e construtores de função RRect descontinuados (I5d325).

Versão 0.1.0-dev16

5 de agosto de 2020

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

Mudanças na API

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

Correções de bugs

  • Descontinuação do uso de OnChildPositioned. Use OnPositioned no filho (I87f95, b/162109766).
  • Resolução de variados problemas de API (I077bc).
    1. Remoção da interface OffsetBase não utilizada.
    2. Alinhamento das classes Offset e IntOffset para que tenham uma superfície de API consistente.
    3. Renomeação de IntOffset.Origin como IntOffset.Zero para ser consistente com a API Offset.
    4. O método nativeCanvas foi movido da interface Canvas para que os consumidores possam criar as próprias instâncias.
    5. Criação da classe stub EmptyCanvas para refatorar DrawScope para ser um parâmetro não nulo em vez de lainit e garantir a não nulidade do campo.
    6. Renomeação das enumerações ClipOp para seguir o padrão Pascal Case.
    7. Renomeação das enumerações FilterQuality para seguir o padrão Pascal Case.
    8. Renomeação das enumerações StrokeJoin para seguir o padrão Pascal Case.
    9. Renomeação das enumerações PointMode para seguir o padrão Pascal Case.
    10. Renomeação das enumerações PaintingStyle para seguir o padrão Pascal Case.
    11. Renomeação das enumerações PathFillType para seguir o padrão Pascal Case.
    12. Renomeação das enumerações StrokeCap para seguir o padrão Pascal Case.
    13. Atualização da implementação de DrawCache para não usar mais parâmetros lateinit.
    14. Atualização de DrawScope para não usar mais delegação lenta para os parâmetros internos fillPaint e strokePaint.
    15. Atualização do composto Image para evitar o uso do Box e ter menos sobrecarga.
    16. Atualização da classe Outline para ter anotações @Immutable.
    17. Atualização de PathNode para ter anotações @Immutable em cada instrução de caminho.
    18. Atualização da subcomposição Vector para remover verificações condicionais redundantes para fins de igualdade, já que o composto já as processa.
    19. Suspensão do uso de métodos construtores de Rect em favor de construtores de função.
    20. Atualização de classes Brush e construtores de função com APIs @Immutable e @Stable.
    21. Atualização da enumeração VertexMode para seguir o padrão Pascal Case.
    22. Atualização do método DrawScope selectPaint para substituir condicionalmente os parâmetros de traço na pintura quando eles tiverem mudado.
    23. Atualização de Size para adicionar a desestruturação da API, renomear UnspecifiedSize para Unspecified e remover métodos não utilizados.
  • A caixa de diálogo foi movida para a IU (I47fa6)
  • Contato removido: SemanticsNodeInteraction.performPartialGesture. Use SemanticsNodeInteraction.performGesture (Id9b62).
  • Renomeação de SemanticsNodeInteraction.getBoundsInRoot() como SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)
  • Atualização das APIs para compatibilidade 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).
  • Renomeação de Modifier.deternimateProgress para Modifier.progressSemantics (I9c0b4).
  • Atualização de material-icons-extended com os ícones mais recentes adicionados a Material.io/icons (I4b1d3).
  • Exigência de que o tipo T seja especificado explicitamente para o transitionDefinition (I1aded).
  • Descontinuação do uso de Modifier.plus. 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)
  • Renomeação de AndroidComposeTestRule como createAndroidComposeRule (I70aaf).
  • Adição de isFocused() e isNotFocused() SemanticsMatcher (I0b760).
  • Remoção de BaseGestureScope.globalBounds, que não pode ser usado em testes. Use coordenadas locais para o nó com que você está interagindo (Ie9b08).
  • Correção da posição do pop-up em telas cortadas (Idd7dd).
  • Renomeação de Modifier.drawBackground como Modifier.background (I13677).

Versão 0.1.0-dev15

22 de julho de 2020

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

Atualização de dependências

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

Mudanças na API

  • A anotação @Model agora está obsoleta. Use state e mutableStateOf como alternativas. Essa decisão de descontinuação foi tomada após uma discussão cuidadosa.

    Motivo

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

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

    Notas de migração

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

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

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

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

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

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

    Alternativa 2: use mutableStateOf e delegados de propriedade.

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

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

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

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

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

  • Remoção do Modifier.ripple já descontinuado. Agora, o recurso de clique usa ondulação como indicação padrão (se você tiver um MaterialTheme {} definido no seu aplicativo). Assim, na maioria dos casos, você pode usar o recurso de clique e receber a indicação de ondulação gratuitamente. Se você precisar personalizar o parâmetro de cor / tamanho / delimitação para a ondulação, crie manualmente um RippleIndication e transmita-o para recurso de clique como o parâmetro de indicação (I663b2, b/155375067).

  • Remoção da substituição descontinuada do composto FilledTextField (I7f8f8).

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

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

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

  • O Material Outlined Textfield foi adicionado (I1a518).

  • O uso de androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue foi descontinuado. Os compostos TextField, FilledTextField e CoreTextField que usam esse tipo também foram suspensos. Use androidx.ui.input.TextFieldValue (I4066d, b/155211005).

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

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

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

  • Descontinuação do uso de Modifier.ripple. Agora, o recurso de clique usa ondulação como indicação padrão (se você tiver um MaterialTheme {} definido no seu aplicativo). Assim, na maioria dos casos, você pode usar o recurso de clique e receber a indicação de ondulação gratuitamente. Se você precisar personalizar o parâmetro de cor / tamanho / delimitação para a ondulação, crie manualmente um RippleIndication e transmita-o para recurso de clique como o parâmetro de indicação (I101cd, b/155375067).

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

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

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

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

  • Implementações consolidadas de CanvasScope para que agora exista apenas DrawScope e ContentDrawScope. CanvasScope foi renomeado como DrawScope. Atualização de DrawScope para implementar a interface de Density e fornecer LayoutDirection. Exclusão da subclasse DrawScope em ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque DrawScope já fornece isso sem ser de forma manual (I1798e).

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

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

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

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

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

  • Adição da API de slot para ícones finais e principais no FilledTextField e no processamento do estado de erro (Ic12e0).

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

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

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

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

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

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

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

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

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

  • Parâmetros renomeados no divisor que pode ser composto (Ic4373).

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

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

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

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

  • As APIs FloatingActionButton foram refatoradas para aceitar lambdas compostos em vez de primitivos. Veja amostras atualizadas para informações de uso (I00622).

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

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

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

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

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

  • Remoção da API Snackbar com parâmetros String a favor do uso da sobrecarga que aceita lambdas compostos. Consulte amostras atualizadas para ver informações de uso (I55f80)

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

  • Adição do componente BottomNavigation. Consulte os documentos e as amostras para ver informações de uso (I731a0)

  • Adição de Icon, IconButton and IconToggleButton e remoção de AppBarIcon. Você pode substituir diretamente os usos existentes do AppBarIcon pelo iconButton. Agora, eles terão a área de toque correta. Consulte as amostras para ver informações de uso. Veja também os ícones do material fornecidos que podem ser usados diretamente com esses componentes. (I96849).

  • Substituição de ButtonStyle por funções distintas e remoção da sobrecarga de texto (string). Veja amostras atualizadas para informações de uso (If63ab, b/146478620, b/146482131).

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

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

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

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

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

  • Substituição de DrawBorder pelo Border Modifier (Id335a)

Correções de bugs

  • FocusModifier teve o uso descontinuado e foi substituído por Modifier.focus, Modifier.focusRequest e Modifier.focusObserver. FocusState e FocusDetailedState foram descontinuados e substituídos por FocusState2 (I46919, b/160822875, b/160922136).
  • O uso do VerticalScroller e do 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 próprio elemento. De modo semelhante, o ScrollerPosition foi descontinuado e substituído pelo ScrollState' (I400ce, b/157225838, b/149460415, b/154105299).
  • As APIs Modifier.draggable e Modifier.scrollable foram reformuladas. DragDirection foi removido e substituído por Orientation. O estado necessário para rolagem foi simplificado. ScrollableState foi renomeado como ScrollableController (Iab63c, b/149460415).
  • runOnIdleCompose foi renomeado como runOnIdle (I83607).
  • As propriedades de semântica de valor único agora usam um estilo de chamada. Por exemplo, "semantics {hidden = true}" agora é escrito como: "semantics {hidden()}" (Ic1afd, b/145951226, b/145955412).
  • Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
  • A API Transition foi modificada para retornar um TransitionState em vez de passar o TransitionState para filhos. Isso torna a API mais consistente com as APIs animate() (I24e38).
  • Adição de uma classe de unidade IntBounds, que representa os limites de pixels inteiros do layout. A API de PopupPositionProvider foi atualizada para usar essa classe (I0d8d0, b/159596546).
  • Adição de uma nova sinalização opcional, useUnmergedTree, aos localizadores de teste (I2ce48).
  • Remoção de APIs de teste de tamanho descontinuadas (Iba0a0).
  • Remoção da classe inline do Shader que encapsulava a classe NativeShader. NativeShader foi renomeado como Shader. A classe in-line Shader encapsulada não adicionava valor à superfície da API e era uma classe in-line. Portanto, use a classe NativeShader diretamente (I25e4d).
  • Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
  • Material DropdownMenu agora pode ser rolado. (Ide699)
  • O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível dentro do callback pelo objeto do escopo da medida (Ic7d9d).
  • Use AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática. Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente. Melhora na facilidade geral de uso do AnimationSpec para abrir construtores em vez de builders. Mudança na duração e no atraso de KeyFrames e Tween para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer compatibilidade com Long e Int) (Ica0b4).
  • Switch agora aparece em um estado desativado quando enabled é definido como falso (If4624, b/155941869, b/159331694).
  • Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).
  • Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).
  • Classe de raio refatorada para ser uma classe inline. Remoção dos métodos de criação complementares em favor do 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).

  • 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 in-line para usar um long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).

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

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

  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel (I086f4).

  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel (Id3434).

  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel (I97a5a).

  • Correção de onClick que não era invocado para DropdownMenuItems (I3998b, b/157673259).

  • MutualyExclusiveSetItem foi descontinuado. Use Modifier.selectable (I02b47, b/157642842).

  • O uso de TestTag agora está descontinuado. Use Modifier.testTag (If5110, b/157173105).

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

  • Substituição do uso da classe Px em várias classes 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 (I19d02).

  • O VerticalScroller agora fornece Column pronta para uso. O HorizontalScroller agora fornece Row pronto para uso (Ieca5d, b/157020670).

  • Substituição do uso da classe Px em várias classes 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).

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

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

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

  • O uso do composto AlignmentLineOffset está descontinuado. Em vez disso, use o modificador relativePaddingFrom(). O composto CenterAlignmentLine removido (I60107).

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

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

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

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

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

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

  • TextFieldValue usado com TextField agora pode ser usado para recuperar atividades recreativas quando usado assim: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).

  • Remoção da interface de LayoutModifier obsoleta (I2a9d6).

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

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

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

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

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

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

  • Atualização de wrapContentWidth e wrapContentHeight 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 ter compatibilidade com alinhamentos contínuos personalizados (Ib0728).

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

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

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

  • Melhora na API DrawModifier:

    • Definição do escopo do receptor para draw() ContentDrawScope.
    • Remoção de todos os parâmetros em draw().
    • DrawScope tem a mesma interface que o antigo CanvasScope.
    • ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • runOnIdleCompose e runOnUiThread agora são funções globais e não métodos em ComposeTestRule (Icbe8f).

  • [Mutable] Os operadores para delegação de propriedade de estado foram movidos para extensões compatíveis com as otimizações de delegação de propriedade do Kotlin 1.4. Os autores da chamada precisam adicionar importações para continuar usando by state { ... } ou by mutableStateOf(...) (I5312c).

  • Adição de positionInParent e boundsInParent a LayoutCoordinates (Icacdd, b/152735784).

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

  • LayoutResult foi renomeado como MeasureResult (Id8c68).

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

  • Substituição de Modifier mais operador por funções de extensão de fábrica (I225e4).

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

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

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

  • Adição da API VectorPainter 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. O uso de compostos DrawVector anteriores foi suspenso e substituído pelo VectorPainter.

    A API Image(Painter) foi renomeada como PaintBox(Painter). Criação do composto Vector que se comporta como o composto Image, mas com um VectorAsset em vez de um Image Asset(I9af9a, b/149030271).

  • O LayoutFlexible foi renomeado como LayoutWight. O parâmetro restrito foi renomeado como preenchimento (If4738)

  • Remoção do RepaintBoundary em favor do DrawLayerModifier (I00aa4).

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

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

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

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

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

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

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

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

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

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

  • O composto Draw foi descontinuado por ser uma fonte comum de bugs da forma como é (I78392, b/149827027).

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

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

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

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

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

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

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

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

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

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