O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Compose Foundation

Crie aplicativos do Jetpack Compose com blocos de construção prontos e amplie a base para criar suas próprias peças de sistema de design.
Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
10 de fevereiro de 2021 - - - 1.0.0-alpha12

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 @Composable e ative otimizações com um plug-in do compilador Kotlin.
compose.foundationCrie aplicativos do Jetpack Compose com blocos de construção 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.

Como 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:

dependencies {
    implementation "androidx.compose.foundation:foundation:1.0.0-alpha11"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.21-2"
        kotlinCompilerExtensionVersion "1.0.0-alpha11"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies"]
    }
}

Para ver mais informações sobre dependências, consulte Adicionar dependências de compilação.

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 (link em inglês) 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.0.0

Versão 1.0.0-alpha12

10 de fevereiro de 2021

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

Mudanças na API

  • Agora, Modifier.pointerInput requer que as chaves remember indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
  • Atualização de testes: hasText() verificará se há texto de entrada e de etiqueta/dica/marcador no campo de texto (Iab803).
  • PaddingValues.Absolute foi adicionado e pode ser usado em APIs que aceitam PaddingValues (Ia5f30).
  • O uso de onImeActionPerformed foi suspenso. Use KeyboardActions (If0bbd, b/179071523).
  • Para se adequar melhor às convenções de nomenclatura com ImageBitmap e ImageVector, o ImagePainter foi renomeado como BitmapPainter para o VectorPainter paralelo (Iba381, b/174565889).
  • Melhoria das APIs de teste de substring que agora usam substrings como argumentos (Icbe78).
  • Introdução de um elemento de contexto de corrotina InfiniteAnimationPolicy que será aplicado em animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes com ComposeTestRule (I50ec4, b/151940543).
  • Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
  • ComponentActivity.setContent foi movido para androidx.activity.compose.setContent no módulo androidx.activity:activity-compose (Icf416).
  • Os métodos de desestruturação e copy() foram removidos de várias classes em que eram raramente usados (I26702, b/178659281).
  • Foi adicionada a compatibilidade com chaves personalizadas para LazyColumn/LazyRow. Isso nos permite gerenciar melhor a reordenação dos itens. Assim, o estado armazenado em blocos remember {} se moverá com o item quando os elementos forem reorganizados ou o item for removido do meio

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Mudança de Indication#createInstance para @Composable e alteração de LocalIndication para conter uma Indication, não () -> Indication (I5eeea, b/157150564).

  • Constraints.enforce foi substituído por Constraints.constrain (I8b8ea).

  • O uso de loadFontResource foi suspenso. Use fontResource. O uso de imageResource, loadImageResource, vectorResource e loadVectorResource foi suspenso. Use painterResource (I6b809).

  • Por motivos de desempenho, a semântica ScrollAxisRange agora usa lambdas que retornam Floats em vez de valores Float diretos (If4a35, b/178657186).

  • Adição da semântica EditableText para marcar o texto de entrada editável do campo para acessibilidade e os métodos de teste correspondentes para verificar a semântica (I8e07a).

  • Modifier.clickable agora não é compatível com cliques duplos e longos. Use Modifier.combinedClickable para essa funcionalidade (Iafad1).

  • toIntPx() foi renomeado como roundToPx() (I9b7e4, b/173502290).

  • IntBounds foi renomeado como IntRect, e a API foi aprimorada (I1f6ff).

  • O uso de Modifier.dragGestureFilter foi 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 semântica de senha para acessibilidade (I231ce).

  • Adição de ProgressBarRangeInfo.Indeterminate para marcar barras de progresso indeterminadas para acessibilidade (I6fe05).

  • Agora, o tempo de reprodução na animação é unificado em nanossegundos (If776a).

  • O uso de @ComposableContract foi suspenso e substituído por três outras anotações mais específicas.

    @ComposableContract(restartable = false) passou a ser @NonRestartableComposable @ComposableContract(readonly = true) passou a ser @ReadOnlyComposable @ComposableContract(preventCapture = true) passou a ser @DisallowComposableCalls @ComposableContract(tracked = true) foi removido (I60a9d).

  • O uso dos utilitários emptyContent() e (@Composable () -> Unit).orEmpty() foi suspenso por não terem mais valor ou impacto positivo no desempenho (I0484d).

  • Os recompositores agora podem ser fechados. Os recompositores fechados continuarão a recomposição até que as corrotinas filhas sejam compostas. Recomposer.shutDown foi renomeado para cancelar o contraste com o fechamento (Ib6d76).

  • As APIs relacionadas a LazyVerticalGrid são marcadas como experimentais (Ia53e3, b/178519862).

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

  • RestorableStateHolder foi renomeado como SaveableStateHolder e movido para o pacote androidx.compose.runtime.saveable. O método interno RestorableStateProvider foi renomeado como SaveableStateProvider. O tipo genérico foi removido para que você possa transmitir qualquer valor como uma chave. A anotação experimental não é mais necessária (I0902e, b/174598702).

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

  • O artefato androidx:compose:runtime:runtime-saved-instance-state foi renomeado como androidx:compose:runtime:runtime-saveable (I6dcac).

  • Muitas APIs antigas que tiveram o uso suspenso no pacote da IU foram excluídas (I2f2dc).

  • O uso do artefato compose:runtime-dispatch foi suspenso. MonotonicFrameClock agora pode ser encontrado em compose:runtime, e AndroidUiDispatcher pode ser encontrado em compose:ui (Ib5c36).

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

  • canDrag foi removido de Modifier.scrollable (Id66e7, b/175294473).

  • A API à qual o plug-in do compilador do Compose é destinado foi refatorada para usar uma interface em vez de uma classe concreta. A interface também não usa mais um parâmetro de tipo.

    Essa é uma mudança interna que não afeta a compatibilidade do código-fonte, mas é uma alteração interruptiva binária (I3b922, b/169406779).

  • Modifier.scaleGestureFilter foi removido. Use Modifier.zoomable. Você também pode usar Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473).

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

    • CoreText e CoreTextField foram removidos da API pública.
    • A sobrecarga suspensa SelectionContainer foi removida (I99c19).
  • As funções de rolagem que não são de suspensão e tiveram o uso suspenso foram removidas. Para continuar com as mudanças da última versão, as funções de rolagem que não são de suspensão agora foram removidas completamente. Converta para as funções de suspensão com os mesmos nomes. Um escopo de corrotina pode ser adquirido com rememberCoroutineScope() (I3d39c, b/178169563).

  • O uso de androidx.compose.foundation.layout.ConstraintLayout foi suspenso e substituído por androidx.constraintlayout.compose.ConstraintLayout. Você precisará adicionar uma dependência a androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 (I87adc).

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

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

  • O Recomposer.runningRecomposers agora oferece um StateFlow global de RecomposerInfo de somente leitura para observar o estado de composição em andamento no processo. Use essa API em vez de Recomposer.current(), que agora teve o uso suspenso (If8ebe).

Versão 1.0.0-alpha11

28 de janeiro de 2021

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

Mudanças na API

  • Suspender o uso do scrollBy não suspenso, remover scrollTo 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 suspendendo o uso e/ou removendo as versões não suspensas dessas funções como parte da transição (Ie9ced).

  • Suspender 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 suspendendo o uso de versões não suspensas dessas funções como parte da transição (I12880).

  • Adição do 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).

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

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

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

  • A data class foi removida das seguintes classes:

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

  • O uso de ScrollableColumn/Row foi suspenso. 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 usá-las. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).

  • O AbsoledAggregation suspenso foi removido (Iffa96, b/177641870).

  • O parâmetro propagadMinConstraints foi adicionado ao Box para especificar se as restrições mínimas de entrada precisam ser transmitidas ao conteúdo do Box ou não. O padrão é false (I0125b, b/152613457).

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi suspenso em favor das APIs SideEffect e DisposableEffect (If760e).
  • WithConstraints foi reformulada como BoxWithConstraints e movida para foundation.layout (I9420b, b/173387208).
  • Mudanças nas funções de fábrica de Font/FontFamily/Typeface

    • Foram adicionadas funções de fábrica que começam com letra maiúscula.
    • Funções antigas de fábrica com letras minúsculas foram suspensas.
    • As novas funções de fábrica retornam a FontFamily em vez das subclasses.
    • Construtores hierárquicos das subclasses foram escondidos, para que só possam ser criados por meio de funções de fábrica.
    • Font.asFontFamily foi renomeada como Font.toFontFamily.
    • (I42aa7)
  • Introdução de ComposeContentTestRule, que estende ComposeTestRule e define setContent, que foi removido de ComposeTestRule. Adição de um método de fábrica createEmptyComposeRule() que retorna uma ComposeTestRule e não inicia uma atividade para você. Use isso quando quiser iniciar a atividade durante o teste, por exemplo, usando ActivityScenario.launch (I9d782, b/174472899).

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

  • Agora, a densidade é o escopo do receptor para interfaces de Arrangement (I18aad).

  • TextFieldValue aceita AnnotatedString. No entanto, essa é uma mudança apenas na API, e a edição de texto em vários estilos ainda não foi implementada.

    • initial foi removido dos parâmetros do construtor EditingBuffer (I326d5).
  • O uso de invalidate e writingReference() foi suspenso em favor de currentRecomposeScope e RememberComAnnotationReference, respectivamente (I583a8).

  • AnnotatedString foi alterada para ser estendida de kotlin.CharSequence. Portanto, length e subSequence agora são funções de instância, e as funções de extensão foram removidas (Iaf429).

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

  • O RememberObserver substituiu o CompositionLifecycleObserver, e o CompositionLifecycleObserver teve o uso suspenso.

    RememberObserver é uma substituição de CompositionLifecycleObserver com semânticas modificadas e métodos renomeados. A mudança para a nova API pode ser feita de maneira mecânica para objetos que são lembrados apenas uma vez e continua a ser a prática recomendada. No entanto, se uma referência foi lembrada mais de uma vez em uma composição, onRemembered é chamado para cada referência em que onEnter é chamado apenas uma vez. onEnter foi chamado várias vezes se o objeto foi usado em subcomposições, como WithConstraints e Scaffold, tornando a única garantia de chamada de onEnter não confiável, e foi removido para RememberObserver.

    RememberObserver adiciona onAbandoned, que é chamado se a instância de RememberObserver é retornada do callback transmitido para remember, mas não é lembrada no estado de composição e, portanto, nunca terá a chamada de onRemembered. Isso poderá ocorrer se uma exceção encerrar a composição antes que ela seja concluída ou se a composição for descartada porque o estado para o qual ela estava produzindo uma composição não é mais atual ou necessário. Se a instância de RememberObserver após a recomendação de referência única acima estiver acompanhando um recurso externo, onForgotten e onAbandoned indicam que o recurso não é mais necessário. Se o objeto estiver rastreando o trabalho iniciado ou os recursos alocados em onRemembered, onAbandoned poderá ser ignorado, porque ele não será chamado se onRemembered for chamado (I02c36).

  • Renomeação de TransformedText.transformedText para TransformedText.text

    • TransformedText não é mais uma classe de dados (Ie672a).
  • As seguintes classes não são mais classes de dados:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Remoção dos métodos monotonicFrameAnimationClockOf experimentais (Ib753f, b/170708374).

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

  • Use ImeAction.None em vez de ImeAction.NoAction

    • Use ImeAction.Default em vez de ImeAction.Unspecified (Ie1bcc).
  • FocusRequester.createRefs agora está marcado como experimental, já que pode sofrer mudanças (I2d898, b/177000821).

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

  • Alteração de VisualTransformation para ser uma interface funcional (I3bba4).

  • Use TestCoroutineDispatcher nos testes (I532b6).

  • Remoção de PointerInputData e mudança de PointerInputChange para fornecer todos os campos de PointerInputData. PointerInputEvent e PointerInputEventData agora são internos porque não são usados em nenhuma API pública (Ifff97, b/175142755).

  • Renomeação de TextInputService.onStateUpdated como updateState (Id4853).

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

Versão 1.0.0-alpha10

13 de janeiro de 2021

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha10 e androidx.compose.foundation:foundation-layout:1.0.0-alpha10. A versão 1.0.0-alpha10 contém essas confirmações.

Mudanças na API

  • ImeOptions e KeyboardOptions não são mais uma classe de dados (I3c898, b/16868431).
  • Mudanças na API VisualTransformation.
    • Renomeação de OffsetMap como OffsetMapping.
    • Renomeação de OffsetMapping.identityOffsetMap como OffsetMapping.Identity.
    • PasswordTransformation não é mais uma classe de dados.
    • OffsetMapping foi movido para o próprio arquivo
    • (I0bdf3).
  • Mudanças na API EditOperations.
    • Renomeação de EditOperation como EditCommand.
    • Adição do sufixo Command para implementações concretas do EditOperation.
    • EditCommands não são mais classes de dados.
    • Renomeação da função EditOperation.process para applyTo.
    • Renomeação de InputEventListener como InputEventCallback
    • (I0a366).
  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • Renomeação de @ExperimentalTesting como @ExperimentalTestApi para ser consistente com anotações de API experimental semelhantes (Ia4502, b/171464963).
  • Adição do método experimental stickyHeader a LazyColumn/LazyRow (I0a81d).
  • Renomeação de Color.useOrElse() como Color.takeOrElse() (Ifdcf5).
  • TestUiDispatcher está obsoleto. Em vez disso, use Dispatchers.Main (Ic171f, b/175385255).
  • Adição de Toggle a Strings.kt de fundação (I4a5b7, b/172366489).
  • O nativeClass foi movido para o módulo ui e definido como interno. Atualização dos usos de nativeClass em implementações equivalentes para usar "is MyClass" (I4f734).
  • FlowRow e FlowColumn foram suspensos. Use um layout personalizado (I09027).
  • Modifier.focus() e Modifier.focusRequester() estão obsoletos. Use Modifier.focusModifier() e Modifier.focusReference() (I75a48, b/175160751, b/175160532, b/175077829).
  • Introdução do SelectionRegistrar.notifySelectableChange para notificar atualizações do Selectable ao SelectionManager (I6ff30, b/173215242).
  • Mudança de fun Dp.isFinite() para val Dp.isFinite (I50e00).
  • Constraints#satisfiedBy foi renomeado como isSatiendedBy (I9cf5c).
  • Adição de isSpecified, isUnspecified e useOrElse para classes in-line com uma constante Unspecified (I93f7b, b/174310811).

Correções de bugs

  • Nova API baseada em corrotina Animatable que garante exclusividade mútua entre as animações. Nova DecayAnimationSpec para ser compatível com animação de redução multidimensional (I820f2, b/168014930).
  • 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).
  • O keyEvent nativo agora pode ser acessado pelo keyEvent.nativeKeyEvent (I87c57, b/173086397).

Versão 1.0.0-alpha09

16 de dezembro de 2020

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

Mudanças na API

  • Adicione a interface Scrollable.

    Isso permite que o ScrollState e o LazyListState sejam tratados como um tipo comum, permitindo que a rolagem personalizada seja implementada em ambos os tipos.

    Isso também move smoothScrollBy para uma função de extensão no Scrollable, aproveitando essa funcionalidade (I2153b).

  • LazyVerticalGrid foi adicionado (I17267, b/162213211).

  • Suspensão do uso de LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Use LazyColumn e LazyRow (I5b48c).

  • Para suspender as APIs de entrada de ponteiro, o HandlePointerInputScope foi renomeado como AwaitPointerEventScope e o handlePointerInput() como awaitPointerEventScope() (Idf0a1, b/175142755).

  • Adição de LazyListState.layoutInfo que expõe a lista de tamanhos e deslocamentos dos itens visíveis no momento (If8678, b/1704372532).

  • Remoção da anotação de ExperimentalPointerInput (Ia7a24).

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

  • Adicione o parâmetro ReverseLayout a LazyColumn/Row quando itens true forem compostos da parte inferior para a parte superior, e LazyListState.firstVisibleItemIndex == 0 significará que o primeiro item está localizado na parte inferior (I552ae, b/166589935).

  • O parâmetro verticalArrangement foi adicionado a LazyColumn. O parâmetro horizontalArrangement foi adicionado a LazyRow. A organização nos permite adicionar um espaçamento entre os itens e especificar a organização deles quando não houver espaço suficiente para preencher todo o tamanho mínimo (Icf79a, b/170394300).

  • Agora, detectMultitouchGestures usa um callback com parâmetros combinados de centroide, de panorâmica, de zoom e de rotação (Ie6e1c).

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

Correções de bugs

  • Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
  • Remoção de SlotTable, SlotReader e SlotWriter da API pública. Antes, elas eram marcadas como InternalComposeAPI. Agora, elas são internas do módulo do Compose.

    CompositionData e CompositionGroup foram adicionadas como substitutas da API de IU para extrair as informações da composição. Elas são públicas, mas não são destinadas para uso fora da API de IU, já que fornecem as informações brutas que a API de IU interpreta (I31a9c).

  • 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 teve o uso suspenso. Use Modifier.onFocusChanged ou Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).

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

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

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

  • Introdução de várias novas funções no SelectionRegistrar e também renomeação de onPositionChange para notifyPositionChange (Ifbaf7).

  • AndroidOwner agora é interno (Ibcad0, b/170296980).

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

  • A interface Applier foi modificada para simplificar a criação de árvores de baixo para cima, em vez de cima para baixo.

    O método insert() foi renomeado como insertTopDown().

    Um novo método insertBottomUp() foi adicionado.

    Uma Applier insere nós na árvore que está editando com insertTopDown() ou insertBottomUp(), dependendo de qual apresenta melhor desempenho.

    Algumas árvores, como LayoutNode e View, são muito mais eficientes para criação de baixo para cima do que de cima para baixo. Antes dessa mudança, uma pilha de inserções era necessária para implementar de baixo para cima. Ela precisava ser copiada para cada Applier, que precisava da construção de baixo para cima para desempenho. Com essa mudança, um Applier substitui uma insertBottomUp() para criar uma árvore de baixo para cima, e insertTopDown() para criar a árvore de cima para baixo (Icbdc2).

  • Adição da API painterResource para lidar com o carregamento opaco de objetos Painter de formatos de recursos rasterizados (como PNGs) ou VectorDrawables. Os consumidores não precisam mais determinar o tipo de recurso com antecedência e podem chamar esse método para receber um objeto Painter para uso em elementos Image que podem ser compostos ou modificadores de Painter (I2c703, b/173818471).

  • Adição da função de fábrica buildAnnotatedString para criar uma AnnotatedString. Suspensão do uso da função builder da annotatedString (Idfe0b).

Versão 1.0.0-alpha08

2 de dezembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha08 e androidx.compose.foundation:foundation-layout:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.

Mudanças na API

  • Remoção do parâmetro maxLines do CoreTextField. Se você quiser limitar a altura do campo de texto pelo número de linhas, use BasicTextField (Iec002).
  • Os métodos await*TouchSlop() foram mudados para não detectar o ponteiro e renomeados como *OrCancellation. Também foi eliminada a necessidade do parâmetro orientationLock (Ie96e1).
  • 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).
  • As APIs foundation:foundation-text foram movidas para foundation:foundation. A estrutura do pacote permaneceu a mesma (Id3eb2).
  • Novo detector de gestos multitoque, incluindo auxiliares para detectar rotação, zoom e movimento (Ic459d).
  • Nova API de entrada do ponteiro de suspensão para detector de gesto de arrastar, incluindo o bloqueio de orientação (Icef25).
  • 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).
  • Adição de APIs de rolagem baseadas em corrotinas:

    Adição de LazyListState.snapToItem e LazyListState.smoothScrollBy, assim como APIs de nível inferior para controle de rolagem. Essas APIs fornecem uma interface de suspensão para controlar a rolagem, que aguarda até que a rolagem seja concluída antes de retornar (Ie5642).

  • Adição de um parâmetro singeLine a BasicTextField, TextField e OutlinedTextField. Defina esse parâmetro como verdadeiro para tornar o campo de texto uma única linha rolável horizontalmente (I57004, b/168187755).

  • O detector de gestos para toque, dois toques, tocar e manter pressionado e indicação de pressionamento foi adicionado usando a nova entrada de ponteiro de suspensão. Alguns utilitários também foram adicionados, o que facilita a gravação de detectores de gesto próprios pelos desenvolvedores (I00807).

  • Modifier.focusable precisa ser adicionado na base. Use-o para adicionar comportamentos focalizáveis a um componente, com semântica e acessibilidade corretas (I41eb9, b/152525426, b/162865824).

  • As APIs obsoletas anteriormente foram removidas: Border foi removida, use BorderStroke. Modifier.drawBorder foi removida, use Modifier.border. Modifier.gravity foi removida, use Modifier.align. Stack foi removida, use Box (I32c2b, b/172470874).

  • AbsoluteArrangement foi renomeado como Arrangement.Absolute (If26f2).

Correções de bugs

  • As APIs DrawModifier foram movidas do pacote androidx.compose.ui para androidx.compose.ui.draw. 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 do conselho da API (I0bd29, b/173834241).
  • <T> foi removido da declaração de SubcomposeLayout. Você pode usá-lo sem especificar um tipo agora (Ib60c8).
  • Tornou os campos de posição e de tempo de atividade do PointerInputData não anuláveis (Id468a).
  • Agora, o MaterialTheme define as cores corretas para as alças e para o segundo plano da seleção. Apps que não são do Material podem usar manualmente AmbientTextSelectionColors para personalizar as cores usadas para seleção (I1e6f4, b/139320372, b/139320907).
  • O parâmetro de alinhamento do Box foi renomeado como contentAlignment (I2c957).
  • Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
  • Adição de WindowManager.isWindowFocused para verificar se a janela do host está em foco, e um WindowFocusObserver que fornece um callback de onWindowFocusChanged (I53b2a, b/170932874).
  • Adição do parâmetro resetInput para TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
  • API TextFieldValue atualizada.
    • TextFieldValue.composition agora é somente leitura.
    • Remoção da exceção gerada para intervalo de seleção inválido (I4a675, b/172239032).
  • Ambientes suspensos nomeados com Ambient como sufixo e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • Adição do wrapper Android Typeface. Você pode carregar um Android Typeface usando a função typeface, ou seja, typeface(Typeface.DEFAULT). Além disso, typefaceFromFontFamily() foi renomeado como typeface() (I52ab7).
  • 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).
  • Adição de verificação de lint para conferir se as funções de fábrica do Modifier estão definidas como extensões nele, para que possam ser encadeadas juntas (I07981).
  • Renomeação do argumento semântico, mergeAllDescendants como mergeDescendants (Ib6250).
  • O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
  • Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
  • TextUnit.Inherit renomeado como TextUnit.Unspecified para consistência com outras unidades (Ifce19).
  • A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).
  • O módulo foundation:foundation-text foi mesclado em foundation:foundation (Idac0f).
  • Suspensão do uso de place(Offset) e placeRelative(Offset). Use sobrecargas com deslocamentos int (I4c5e7).
  • id foi renomeado como layoutId para LayoutIdParentData. O 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.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 e androidx.compose.foundation:foundation-text:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.

Mudanças na API

  • Assim como ocorre com Modifier.fillMaxSize[Width|Height], agora aceitamos frações em Modifier.fillParentMaxSize[Width|Height] dentro do escopo de LazyColumn/Row (I797e, b/116886426).
  • Remoção de KeyboardOptions.toImeOptions da API pública (Ic2e45).
  • AmbientTextStyle, ProvideTextStyle e AmbientContentColor de base estão obsoletos. 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).
  • O uso do foundation.Text foi suspenso e ele foi substituído por material.Text. Para uma API de texto básica e discreta que não consome valores de um tema, consulte androidx.compose.foundation.BasicText (If64cb).
  • Adição de maxLines a TextFields (Ib2a5b).
  • Atualize TextFields para aceitar KeyboardOptions (Ida7f3).
  • Adição de KeyboardOptions para uso em TextFields (I9ca32).
  • Adição de BasicText como uma API de design discreta para texto, paralela a BasicTextField (I28268).
  • A anotação ExperimentalLazyDsl foi removida. LazyColumn/LazyRow agora pode ser usado sem a adição de @OptIn (Idab7a, b/166584730).
  • Suspensão de uso de BaseTextField. Use BasicTextField (I896eb).
  • BasicTextField foi adicionado como substituto para CoreTextField e BaseTextField (Id4cea).
  • Remoção de LazyColumnItems/LazyRowItems de uso suspenso (I1d8a8).
  • Os elementos que podem ser compostos obsoletos de dimensionamento para medidas intrínsecas foram removidos (I18537, b/171811496).
  • relativePaddingFrom foi renomeado como paddingFrom. O modificador paddingFromBaseline foi adicionado, como conveniência para a especificação de distâncias de limites de layout para linhas de base do texto (I0440a, b/170633813).
  • O parâmetro matchHeightConstraintsFirst foi adicionado ao modificador aspectRatio, que pode ser usado para especificar o modificador de acordo com as restrições de altura antes de testar os correspondentes de largura (Ie7c43, b/155290593).
  • O DpConstraints de uso suspenso foi removido (I87884, b/171702471).

Correções de bugs

  • Introdução da classe in-line ScaleFactor para representar fatores de escala para os eixos horizontal e vertical independentes uns dos outros para compatibilidade com casos de uso de escalonamento não uniforme.
    • Adição do método computeScaleFactor ao ContentScale.
    • Adição de ContentScale.FillBounds para realizar o escalonamento não uniforme e esticar os limites de src para ocupar completamente o destino.
    • Adição de métodos de operador para calcular parâmetros ScaleFactor com parâmetros Size
    • (Ic96a6, b/172291582).
  • captureToBitmap foi movido para captureToImage (I86385).
  • Marcação de CoreText como @InternalTextApi. Use BasicText (I6aaeb).
  • Renomeação de KeyboardOptions como ImeOptions (I82f36).
  • KeyboardType e ImeAction foram movidos para KeyOptions (I910ce).
  • CoreTextField foi marcado como @InternalTextApi. Use BasicTextField (Ie2469).
  • A anotação ExperimentalSubcomposeLayoutApi foi removida. SubcomposeLayout agora pode ser usado sem adicionar @OptIn (I708ad).
  • Introdução do módulo ui-test-junit4 (Ib91f8).
  • 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).
  • MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
  • Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).
  • androidx.ui.test movido para androidx.compose.ui.test (I9ffdb).
  • FirstBaseline e LastBaseline foram movidos para o pacote androidx.compose.ui.layout (Ied2e7).
  • Adição de SelectContainer sem o callback (Ibfadb).
  • Adição de testes para posições de SelectionHandles no SelectionContainer (Ie93db).
  • Adição da opção IME (editor de método de entrada, na sigla em inglês) de correção automática do teclado (I57b8d).

Versão 1.0.0-alpha06

28 de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 e androidx.compose.foundation:foundation-text:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.

Mudanças na API

  • androidx.compose.foundation.Icon foi movido para androidx.compose.material.Icon. Você também pode usar o componente de imagem / Modifier.paint() com um Painter se não quiser usar a biblioteca Material (I9f622).
  • Adição de interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805).
  • alignByBaseline foi adicionado a RowScope, e alignWithSiblings foi renomeado como alignBy (I06503, b/170628732).
  • Box foi criada como uma função in-line (Ibce0c, b/155056091).
  • Adição de maxLines ao CoreTextField (Ibee58, b/143687793).
  • Adição de softwrap ao CoreTextField (I21a4b).

Correções de bugs

  • 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).
  • Adição da capacidade de especificar informações do inspetor no modificador composto (Idee08, b/163494569).
  • Adição da opção IME (editor de método de entrada, na sigla em inglês) KeyboardCapitalization (I8ac38).
  • Correção de Handle Position Rtl (I6e1e0).
  • Alteração interruptiva: remoção do valor de retorno de PointerInputFilter.onPointerEvent(...), já que o único valor que deveria poder ser mudado nos eventos de ponteiro é o dos dados de consumo. Em vez de retornar dados de PointerInputFilter.onPointerEvent(...), agora é possível mudar os dados de consumo dos PointerEvents transmitidos (I6acd0).
  • Adição da opção SelectAll no menu de seleção (Ief02b).

Versão 1.0.0-alpha05

14 de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 e androidx.compose.foundation:foundation-text:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.

Mudanças na API

  • CoreTextField agora é compatível com a funcionalidade de cursor (Id23aa).
  • Suspensão do uso das APIs contentColor() e currentTextStyle() e substituição delas pelos ambientes AmbientContentColor e AmbientTextStyle, respectivamente. É possível acessar o valor atual usando .current na propriedade do ambiente, assim como em qualquer outro ambiente. Essa mudança foi feita para manter a consistência e para evitar a existência de várias maneiras de alcançar o mesmo resultado. Também renomeia algumas propriedades de ambiente para descrever melhor a finalidade delas da seguinte maneira:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Correções de bugs

  • Como parte da padronização de valores de sentinela para classes in-line, renomeie a Color.Unset como Color.Unspecified para consistência com outras classes in-line (I97611, b/169797763).
  • Adição de ações de acessibilidade de copiar/colar/cortar (I6db4f).
  • 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).
  • Atualização dos parâmetros Size.Unspecified para Float.NaN, em vez de Float.POSITIVE_INFINITY. Atualização das implementações do Painter para verificar o Size.Unspecified, assim como Sizes não finitos (I95a7e).
  • Adição do módulo Paging Compose e da integração de paginação (Ib85da).
  • Modificação do LazyListScope para receber valores anuláveis (I1765b).
  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned(). (I587e8, b/169083903).
  • Adição de amostras para LazyColumn/Row (Idc16d).
  • Correção dos itens e métodos itemsIndexed para permitir emptyList (I06647).
  • Adição de uma DSL para especificar informações do inspetor (Ic9a22).
  • LongPress movido para Text (Iff2bc).
  • Desativação de Selection em Text, e uma Demo (Ie7e97).
  • Compatibilidade com AnnotatedString para conversão do SpannableString para acessibilidade (Ief907).
  • Remoção de PointerInputFilter.onPointerInput(...). PointerInputFilter.onPointerEvent(...) precisa ser usado no lugar dele (I6f04a).

Versão 1.0.0-alpha04

1º de outubro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 e androidx.compose.foundation:foundation-text:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.

Mudanças na API

  • Stack foi renomeado como Box. O uso do foundation.Box anterior será suspenso 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 estão obsoletos. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
  • Adição de uma nova classe LazyListState. Isso permite observar e controlar a posição de rolagem dos componentes LazyRow e LazyColumn. As instâncias podem ser criadas usando RememberLazyListState() e transmitidas para o parâmetro de estado do componente. Atualmente, o primeiro item visível e os deslocamentos podem ser observados nessa versão inicial (Ic7cb7, b/159307669).
  • A posição de lista atrasada e o deslocamento de rolagem agora são salvos e restaurados na recriação da Activity (Ie045f, b/15895890).
  • Adição de ação semântica de clique longo (I6281b, b/115646846).
  • Adição do utilitário MututorMutex para manter um único mutador de estado compartilhado ao longo do tempo e cancelar mutações conflitantes por prioridade (I3f975).
  • Anotação de rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).
  • Remoção do parâmetro inlineContent do Text com String de entrada. Ele não será usado porque inlineContent precisa funcionar com AnnotatedString (Ief403).
  • As APIs Arrangement personalizadas obsoletas foram removidas (Ic576d, b/168297922, b/168297923).
  • O parâmetro unbounded foi adicionado aos modificadores do wrapContentSize, o que permite medir o elemento do layout com restrições máximas infinitas (I77951, b/158559319).
  • Evitamos importações estáticas de conteúdo de escopos de layout, por exemplo, alignWithSiblings no RowScope. A alternativa do escopo explícito precisa ser usada: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797).

Correções de bugs

  • Atualização de várias APIs Graphics
    • As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
    • 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 por meio dos construtores de função deles.
    • Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
    • Substituição do Rect.shift obsoleto 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).
  • Otimizações de desempenho para a rolagem LazyColumnFor/LazyRowFor, sem realizar recomposições desnecessárias durante cada rolagem (I64f65, b/168293643, b/167972292, b/165028371).
  • Correção da falha em LazyColumnFor/LazyRowFor depois de rolar a página e, em seguida, mudar os itens. Além disso, implementamos a rolagem automática para cima quando o item visível anteriormente foi removido, então não há mais a exibição de lacunas vazias no final (I220ab, b/161480164, b/167855468).
  • O aninhamento de item rolável nos mesmos contêineres de direção, como ScrollableContainer e LazyColumnFor, não é mais permitido. Isso nunca foi compatível e corrompia a rolagem e todo o atraso de composição dos itens de LazyColumnFor (I6e101).
  • 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 obsoleto
    • (If086a, b/167737376).
  • Adição de AccessibilityScrollState às propriedades semânticas (Ifeda9).
  • O TextRange se torna in-line para evitar a criação de objetos (Id034b).
  • O ParagraphConstraints foi removido. Agora, a largura é transmitida diretamente para o Paragraph (Ica712).

Versão 1.0.0-alpha03

16 de setembro de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 e androidx.compose.foundation:foundation-text:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.

Mudanças na API

  • O InnerPadding foi renomeado como PaddingValues (I195f1, b/167389171).
  • Os usos da gravidade foram renomeados de forma consistente para align ou alignment nas APIs de layout (I2421a, b/164077038).
  • Um parâmetro de alinhamento foi adicionado à pilha, o que permite especificar o alinhamento padrão para todos os filhos da pilha (Ie80ca, b/164085265).

Correções de bugs

  • O DpConstraints e as APIs que o usavam estão obsoletos (I90cdb, b/167389835).
  • Os parâmetros minWidth e maxWidth de widthIn foram renomeados como min e max. O mesmo ocorreu para preferredWidthIn, heightIn, preferredHeightIn (I0e5e1, b/167389544).
  • Adição de onNode e de outros métodos globais na ComposeTestRule, porque os atuais se tornarão obsoletos (Ieae36).
  • Correção de cálculos de tamanho e posição em GestureScope, o que causava, entre outros, a geração de gestos de deslizar inválidos (Iaf358, b/166589947).
  • createAndroidComposeRule 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.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 e androidx.compose.foundation:foundation-text:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.

Correções de bugs

  • O TestUiDispatcher é marcado como experimental (Iae99d, b/161247083).
  • Adição de ManualFrameClock.hasAwaiters para ver se algo está aguardando um frame desse relógio, runWithManualClock como uma substituição de runBlocking ao executar testes que precisam de um ManualFrameClock e TestUiDispatcher.Main que fornece acesso fácil ao principal agente de IU nos seus testes.

    Por exemplo:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    I0a85b, b/161247083

Versão 1.0.0-alpha01

26 de agosto de 2020

Lançamento de androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 e androidx.compose.foundation:foundation-text:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.

Versão 0.1.0-dev

Versão 0.1.0-dev17

19 de agosto de 2020

Lançamento de androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 e androidx.compose.foundation:foundation-text:0.1.0-dev17. A versão 0.1.0-dev17 contém estas confirmações.

Mudanças na API

  • O spacedBy Arrangement foi adicionado a Row e Column para ativar o posicionamento dos filhos de layout com um espaçamento fixo. O Arrangement alinhado também foi adicionado, para permitir que o posicionamento dos filhos de layout seja um ao lado do outro e alinhados a Row/Column de acordo com um Alinhamento. Os métodos anteriores Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange foram suspensos, e a criação de Arrangements personalizados não será mais possível no futuro (I6733d, b/161985975).
  • Offset se tornou uma classe inline (Iaec70).
  • 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).
  • Remoção de VerticalScroller e HorizontalScroller. Use ScrollableColumn/Row. Remoção de Modifier.drawBackground. Use Modifier.background (I73b0d, b/163019183).
  • Remoção de modificadores fillMax* marcados como obsoletos de LazyItemScope porque eles dificultam a adição correta desses modificadores em itens que não são filhos diretos de LazyColumnFor (Ifa78d).
  • Adição da implementação LazyColumn/LazyRow como DSL (I93cc6).
  • As restrições agora são uma classe inline (I88736).
  • Adição da capacidade de dimensionar um layout para uma fração do espaço disponível usando os modificadores fillMaxWidth, fillMaxHeight e fillMaxSize (I945bb, b/161562591).

Correções de bugs

  • Adição de um parâmetro modificador a SelectionContainer (I4aada, b/161487952).
  • Adição do lambda mergePolicy a SemanticsPropertyKey. É possível usá-la para definir uma política personalizada para a mesclagem de semântica mergeAllDescendants. A política padrão será usar o valor pai se já estiver presente. Caso contrário, o valor filho (Iaf6c4, b/161979921).
  • PlacementScope.placeAbsolute() foi renomeado como PlacementScope.place(), e o PlacementScope.place() anterior foi renomeado como PlacementScope.placeRelative(). Por essa razão, o método PlacementScope.place() não espelhará de forma automática a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, use PlacementScope.placeRelative() (I873ac, b/162916675).
  • Remoção do componente obsoleto FilledTextField. Use TextField para conseguir a implementação do Material Design no campo de texto preenchido (I5e889).
  • 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).
  • 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 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 obsoletos (I5d325).
  • Remoção de onChildPositioned e OnChildPositionedModifier. Os desenvolvedores precisam usar onPositioned e OnPositionedModifier no layout filho (I4522e, b/162109766).
  • IntSize agora é uma classe inline (I2bf42).
  • Pressionar a área vazia para editar (Ib1e5b).
  • Ocultar FloatingToolbar depois de tocar no texto (If4525).
  • Ocultar de FloatingToolbar ao atualizar a seleção (I8444c).
  • Desmarcar ao desfocar (I781a2).

Versão 0.1.0-dev16

5 de agosto de 2020

Lançamento de androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 e androidx.compose.foundation:foundation-text:0.1.0-dev16. A versão 0.1.0-dev16 contém estas confirmações.

Mudanças na API

  • Adição de LazyItemScope no parâmetro itemContent de listas Lazy. Ele fornece modificadores para preencher o tamanho máximo pai, que resolve o caso de uso quando o item precisa preencher a janela de visualização e o Modifier.fillMaxSize() normal não funciona, já que o item é medido com restrições de infinito (Ibd3b2, b/162248854).
  • A caixa de diálogo foi movida para a IU (I47fa6).
  • Adição de LazyColumnForIndexed/LazyRowForIndexed: versões de LazyColumnFor/LazyRowFor que fornecem índice e item no itemCallback. Ele é útil quando é preciso saber um índice atual além de um item atual (I65ff3).
  • Renomeação de Modifier.deternimateProgress para Modifier.progressSemantics (I9c0b4).
  • Renomeação de LazyColumnItems para LazyColumnFor. Renomeação de LazyRowItems para LazyRowFor (I84f84).
  • Adição de Marks/Annotations para seguir práticas recomendadas (I66b20).
  • O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
  • Adição de parâmetro de gravidade сrossaxis em LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems agora são compatíveis com agrupamento de conteúdo (Ib39fc).
  • Renomeação de ZoomableState para ZoomableController. Adição de compatibilidade com curva personalizada em smoothScale. Adição das funcionalidades enabled e onZoomStarted (If8b8f).
  • O FilledTextField do Material foi renomeado como TextField, e o TextField de base foi renomeado como BaseTextField para facilitar a descoberta e o uso da API mais simples desejada (Ia6242, b/155482676).
  • Remoção do AdapterList obsoleto. Use LazyColumnItems (I12b9b).
  • Renomeação de Modifier.drawBackground para Modifier.background (I13677).
  • Remoção da antiga DSL ConstraintLayout. Renomeação de ConstraintSet2 para ConstraintSet (If58d1, b/162450908).
  • Adição de Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). Ao contrário dos modificadores de deslocamento, os modificadores de deslocamento absoluto não serão espelhados automaticamente no contexto da direita para a esquerda (I3aa21).
  • Row e Column agora executam funções in-line reduzindo significativamente a sobrecarga de uso (I75c10).

Correções de bugs

  • Resolução de variados problemas de API (I077bc).
    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 para 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.
  • Adição de MonotonicFrameAnimationClock que permite usar um MonomonicFrameClock como um AnimationClockObservable para fazer a ponte entre os novos relógios e APIs baseados em corrotinas que ainda usam os relógios antigos baseados em callback.

    O equivalente de ManualAnimationClock do ManualAnimationClock agora é ManualFrameClock (I111c7, b/161247083).

  • Remoção de SemanticsNodeInteraction.performPartialGesture. Use SemanticsNodeInteraction.performGesture (Id9b62).

  • Renomeação de SemanticsNodeInteraction.getBoundsInRoot() como SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafd, b/113333632).

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

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

  • Adição de SemanticsMatcher isFocused() e isNotFocused() (I0b760).

  • Adição de RemeasurementModifier. Ele permite que usuários meçam novamente o layout de maneira síncrona. Em geral, você não precisa dele, já que a nova medida de layout é feita automaticamente, mas o usamos em LazyColumnItems durante a rolagem (I5f331, b/160791058).

  • Agora, isSystemInDarkTheme sempre considera a configuração do tema escuro em todo o sistema e ignora o status de economia de energia antes de Q, seguindo as orientações mais recentes (I0c10c).

  • Suspensão do uso de OnChildPositioned. Use OnPositioned no filho (I87f95, b/162109766).

  • Renomeação de AndroidComposeTestRule como createAndroidComposeRule (I70aaf).

  • Adição da ação de acessibilidade para receber o TextLayoutResult (I9d6e6).

Versão 0.1.0-dev15

22 de julho de 2020

Lançamento de androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 e androidx.compose.foundation:foundation-text:0.1.0-dev15. A versão 0.1.0-dev15 contém estas confirmações.

Para usar a versão 0.1.0-dev15 do Compose, você precisará:

Atualização de dependências

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

Mudanças na API

  • Da mesma forma que o novo parâmetro em ScrollableColumn/ScrollableRow, LDyColumnItems/LDyRowItems agora também tem o parâmetro contentPadding, que permite adicionar um padding ao conteúdo depois que ele é cortado, o que não é possível apenas com um parâmetro modificador. Ele também permite adicionar um espaço somente antes do primeiro item/depois do último item (Ibc24e).
  • O callback onFocusChange em campos de texto foi renomeado como onFocusChanged (Ida4a1).
  • O uso do VerticalScroller e do HorizontalScroller foi suspenso. 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 suspenso e substituído pelo ScrollState' (I400ce, b/157225838, b/149460415, b/154105299).
  • As APIs Modifier.draggable e Modifier.scrollable foram reformuladas. DragDirection foi removido e substituído por Orientation. O estado necessário para rolagem foi simplificado. ScrollableState foi renomeado como ScrollableController (Iab63c, b/149460415).
  • As propriedades de semântica de valor único agora usam um estilo de chamada. Por exemplo, "semantics {hidden = true}" agora é escrito como: semantics { hidden() } (Ic1afd, b/145951226, b/145955412).
  • Agora, os tamanhos de canto usados por RoundedCornerShape e CutCornerShape podem ser maiores que 50% (Id2340, b/160400213).
  • O parâmetro padrão ContentScale foi substituído pelo composto de imagem Inside para Fit. Isso foi feito para gerar o comportamento de escalonamento do Painter subjacente se o tamanho do layout for maior que o tamanho intrínseco do Painter, mantendo a proporção. Esse comportamento corresponde melhor às expectativas de oferecer tamanhos fixos à imagem, sem afetar o comportamento padrão se apenas o tamanho intrínseco for usado para calcular o tamanho do composto (I40ae3, b/159838006).
  • Use AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática. Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente. 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).
  • Clickable foi removido. Use Modifier.clickable (I84bdf).
  • LazyRowItems foi adicionado, análogo a rolagem horizontal de LazyColumnItems (Ibbcf7).
  • Foram introduzidas estas APIs de animação sem estado de baixo nível. Essas APIs (I63bf7).
  • androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue estão obsoletos. Os compostos TextField, FilledTextField e CoreTextField que usam esse tipo também foram suspensos. Use androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
  • androidx.ui.foundation.shape.RectangleShape foi removido. Use androidx.ui.graphics.RectangleShape (I94939, b/154507984).
  • Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).
  • Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).
  • Modifier.zoomable foi adicionado para a funcionalidade de fazer gesto de pinça para aplicar zoom (Id5d63).
  • O componente Toggleable foi suspenso. Use o Modifier.toggleable (I35220, b/157642842).
  • MutualyExclusiveSetItem foi suspenso. Use Modifier.selectable (I02b47, b/157642842).
  • A TestTag agora está obsoleta. Use Modifier.testTag (If5110, b/157173105).
  • O parâmetro fontWeight foi adicionado ao texto. Antes ele não havia sido adicionado por engano (I56937).
  • 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).
  • 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/1528287131).
  • O VerticalScroller e o HorizontalScroller agora são compatíveis com a rolagem reversa. O isReversed é definido em ScrollerPosition (I953bd).
  • Compatibilidade com a adição de compostos no layout de texto (I1373c).
  • Implementações consolidadas de CanvasScope para que agora exista apenas o DrawScope e o ContentDrawScope. CanvasScope foi renomeado como DrawScope. Atualização do DrawScope para implementar a interface de Density e fornecer a LayoutDirection. Exclusão da subclasse DrawScope no ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque o DrawScope já fornece isso sem ser de forma manual (I1798e).
  • Remoção da API DrawBackground obsoleta, que foi substituída pelas APIs de extensão drawBackground em Modifier. Implementações de drawBackground de cores, pincéis e pintura refatoradas para reduzir os caminhos de código, bem como remover o requisito para que o modificador seja criado como parte da composição (I0343a).
  • Atualização das APIs de composição de nível superior que expõem uma tela para expor o CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a uma tela podem usar o método de extensão drawCanvas, que fornece um retorno de chamada para emitir comandos de desenho. (I80afd).
  • HorizontalScroller e VerticalScroller não restauram a posição de rolagem usando o estado da instância salva (Ia0fae, b/155075048).
  • O FocusManagerAmbient foi removido. Use FocusModifier.requestFocus para foco (Ic4826).
  • O layout da tabela foi removido temporariamente até ser possível disponibilizá-lo novamente com uma API atualizada (Id88a7).
  • Criação da API CanvasScope que envolve um objeto Canvas para expor uma 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).

  • ColouredRect foi removido. Use Box com o modificador drawBackground (I983c7, b/154753731).

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

  • Agora é possível ocultar/mostrar o teclado do software usando o SoftwareKeyboardController que é entregue pelo callback onTextInputStarted (I8dc44, b/151860051).

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

  • Adição de parâmetros comumente usados a Text(). Se você estiver criando um estilo de texto local para passar um pequeno número desses parâmetros, como Text(style = TextStyle(textAlign = TextAlign.Center)), poderá fornecer os parâmetros diretamente: Text(textAlign = TextAlign.Center) (I82768).

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

  • Atualização de TextField: na dimensão horizontal, ocupará todo o espaço disponível concedido a ele (Ib08df, b/154638552).

  • Adição de InteractionState e Interaction, facilitando a criação de componentes que reagem a mudanças de estado da IU, como pressionar e arrastar (Icfe25, b/15252426).

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

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

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

  • ScaleFit foi renomeado como ContentScale. ContentScale foi movido do módulo ui-graphics para ui-core para ficar no mesmo módulo que a API Alignment. FillMaxDimension foi renomeado como Crop. FillMinDimension foi renomeado como Fit. Fit foi renomeado como Inside para melhor correspondência com os equivalentes a ImageView.ScaleType. Adicionada documentação que indica que a combinação de Crop e Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_CROP e que Fit usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.FIT_CENTER. Inside usado com Alignment.Center alcança o mesmo resultado que ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).

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

  • Adição de um parâmetro de cor ao texto, permitindo modificar a cor do estilo do texto sem precisar unificá-lo manualmente ao estilo fornecido em um tema (I41a66).

  • Melhorias 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.
    • O ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • O ColouredRect foi suspenso. Use Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fa, b/152753731).

  • O sistema de temas de forma é atualizado de acordo com a especificação do Material Design. Agora você pode oferecer formas pequenas, médias e grandes para serem usadas pela maior parte dos componentes (Ifb4d1).

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

  • Text foi movido de androidx.ui.core para o pacote androidx.ui.foundation (I87ce5).

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

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

  • 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 ImageAsset (I9af9a, b/149030271).

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

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

    Criação do método de extensão em android.graphics.Bitmap, Bitmap.asImageAsset(), para criar uma instância de um ImageAsset útil para combinar o desenvolvimento de aplicativos para Android tradicionais com o framework do Compose (Id5bbd).

  • O composto DrawImage foi removido. Use o ImagePainter para desenhar uma imagem no layout existente ou SimpleImage para introduzir uma imagem que ocupe espaço (I595e1, b/114982727).

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

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

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

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

  • O componente de rolagem foi adicionado, o que permite a criação de rolagens/listas personalizadas (I5fd37).

  • Renomeação de Background para DrawBackground. Agora, ele é memorizado por padrão (Ia0bd3).

  • Adição de parâmetros de padding, borda, forma e plano de fundo a Box (I05027, b/148147281).

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

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

  • Adição de componente Box para combinar layouts e desenhar funcionalidades comuns (I6e2a7).

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

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

  • Modifier.tag foi renomeado como Modifier.layoutId para evitar confusão com Modifier.testTag (I995f0).

  • O parâmetro de porcentagem ao criar diretrizes de ConstraintLayout foi renomeado para fração (Ida2db).

  • Foi adicionada a compatibilidade com margens de barreiras de ConstraintLayout (I47ffe).

  • A compatibilidade com RTL em ConstraintLayout foi corrigida. APIs sem reconhecimento de RTL foram adicionadas (I3b1c7).

  • Uma nova DSL para ConstraintLayout foi adicionada. Consulte as amostras para ver mais detalhes (Icaa9a).

  • Adicionada a anotação @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn agora são marcados com ela para sinalizar que as APIs serão modificadas (I412a8).

  • Adição de Modifier.padding(InnerPadding) (I94985, b/157133803).

  • Remoção de RowAlign obsoleto, ColumnAlign em Row e Column (If60d4, b/155858731).

  • Remoção da LayoutTag() obsoleta. Use a Modifier.tag(). Remoção do Modifier.matchParent() obsoleto. Use Modifier.matchParentSize() (If8044).

  • Adicionado o modificador de layout offsetPx, que pode ser usado para definir deslocamentos (dinâmicos) em px (I5af57).

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

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

  • Container foi removido. Use Box (Ibbc2b, b/151407926).

  • Remoção de modificadores de LayoutWidth/Height/Size obsoletos (Ib0bc1).

  • Adição de valores de parâmetro padrão para o modificador de deslocamento (I37f06).

  • Modificador de preenchimento simétrico adicionado (I39840).

  • O modificador LayoutAspectRatio obsoleto foi removido (I65a74).

  • Remoção dos modificadores do LayoutAlign obsoletos (I10877).

  • Correção de um bug nos modificadores de largura e altura que fazem o layout encapsulado ser medido sem restrições de eixo oposto (I210b8, b/154797971).

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

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

  • Alignment se tornou instanciável com valores arbitrários. Adição de Alignments 1D (Ia0c05).

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

  • alignToSiblings agora aceita um Measured em vez de Placeable (I5788d).

  • Adição de modificadores para o dimensionamento de medidas intrínsecas e suspensão do uso dos componentes que realizavam essa tarefa (I8295d).

  • Adição de compatibilidade com a personalização de dimensões de filhos do ConstraintLayout (Idb1a5).

  • Os compostos Wrap e Center suspensos foram removidos (I29e23).

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

  • Os membros de RowScope e ColumnScope podem ser acessados fora de Row e Column (I3a641).

  • Container foi suspenso. Use Box (I675ce, b/151407926).

  • Adição do modificador LayoutOffset para ajustar a posição do layout (I0b8a3).

  • Compatibilidade inicial com o layout RTL no Compose (Ia5519).

  • Atualização do LayoutAlign para não preencher mais o espaço disponível (I2b14f).

  • Remoção do composto AspectRatio em favor do modificador. Os compostos FlexColumn, FlexRow e o modificador do Spacing obsoletos foram excluídos (Iec8a7).

  • Remoção do modificador LayoutInflexible de linha e coluna (I0d820).

  • Implemente as alças de seleção para arrastar para mudar a seleção de TextField (I27032).

  • Implementação de LongpressAndDrag para seleção de TextField (I17919).

Correções de bugs

  • FocusModifier está obsoleto e foi substituído por Modifier.focus, Modifier.focusRequest e Modifier.focusObserver. FocusState e FocusDetailedState estão obsoletos e foram substituídos por FocusState2 (I46919, b/160822875, b/160922136).
  • runOnIdleCompose foi renomeado como runOnIdle (I83607).
  • Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
  • Remoção do já obsoleto 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 (I663b2, b/155375067).
  • Remoção de APIs obsoletas de teste de tamanho (Iba0a0).
  • Criação da API experimental LayoutNode (I4f2e9).
  • A versão 1 do bloqueio da orientação de rolagem é implementada no Compose (I1ce7a, b/150289741).
  • Pop-ups, caixas de diálogo e menus agora herdam o MaterialTheme contextual (Ia3665, b/156527485).
  • O parâmetro de direção do layout foi removido do bloco de medida da função Layout(). No entanto, a direção do layout está disponível dentro do callback pelo objeto do escopo da medida (Ic7d9d).
  • Adição de AbsoluteArrangement: permite a organização dos filhos dentro da linha sem espelhamento automático em RTL (I3a1df).
  • A anotação @Untracked foi suspensa. Substitua por @ComposableContract(tracked=false) (Id211e).
  • Antes da mudança, o plug-in do compilador do Compose interceptava chamadas a construtores dentro de uma função @Composable se houvesse um (I5205a, b/158123804).
  • Adição do composto viewModel(), que permite criar ou usar o ViewModel já criado de forma semelhante a como ele funciona em Activity ou Fragment (I5fdd1).
  • Classe Radius refatorada para ser uma classe in-line. 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).

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

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

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

  • Os gestos parciais não exigem mais a transmissão de um GestureToken (Id7ae5).

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

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

  • AnnotatedString.Builder.addAnnotationString foi renomeado como addStringAnnotation (I5059e).

  • Atualização da API Alignment e adição de compatibilidade para alinhamento absoluto, que não espelha automaticamente no contexto RTL (I38cd3).

  • Os filhos de Layout e LayoutModifier podem ser medidos com uma direção de layout diferente (Ibd731).

  • Introdução do parâmetro opcional rect extra a ImagePainter para permitir o desenho de uma subseção de ImageAsset subjacente (I0ea9e).

  • Correção de uma falha no Adapterlist ao remover itens (Ic64b0, b/153195921).

  • Mudamos a forma como medimos o primeiro layout colocado no bloco activity.setContent { }. Antes, ele era forçado a preencher toda a tela da atividade. Agora, se comporta como se você colocasse o layout dentro de uma pilha: ele pode ser menor que uma tela e será posicionado no canto superior esquerdo. Caso prefira o comportamento antigo, é possível aplicar Modifier.fillMaxSize() para seu layout (Ie88a7, b/153453714).

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

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

  • DrawLayerModifier e drawLayer() agora definem clickToBounds e clipToOutline como falsos por padrão (I0eb8b, b/152810850).

  • LayoutResult foi renomeado como MeasureResult (Id8c68).

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

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

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

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

  • 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 suspenso. Use setContent ou setViewContent. O uso de Compose.disposeComposition foi suspenso. Use o método dispose no 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).

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

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

  • Painter.toModifier foi renomeado como Painter.asModifier, já que o modificador recém-criado tem uma referência ao Painter original que pode ser compartilhado entre várias instâncias do modificador (I7195b).

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

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

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

  • Classe ValueHolder removida. Reestruturação das classes AnimatedValue e AnimatedFloat para tornar o campo de valor da animação abstrato para que as subclasses possam observar a atualização do valor.

    • Adição de classes de modelo para AnimatedValue, AnimatedFloat etc.
    • Adição de um novo conjunto de APIs @Composable leves para animação entre valores
    • (I79530)
  • Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do Ambient<T> para ver detalhes (I4c7ee, b/143769776).

  • Agora, as posições de Int da linha de alinhamento retornadas de Placeable#get(AlignmentLine) não são nulas. Se a linha de alinhamento consultada estiver ausente, AlignmentLine.Unspecified será retornado (I896c5, b/158134875).

  • Correção de um bug de ConstraintLayout que causava uma falha nas recomposições (Ibee5a, b/158164341).

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

  • LayoutModifier2 foi renomeado como LayoutModifier (Id29f3).

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

  • O LayoutDirectionAmbient está obsoleto. Para ler a direção do layout definida pela localidade, use localeLayoutDirection em ConfigurationAmbient (I851b1).

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

  • O composto ParentData foi suspenso. 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).

  • Adição de OnPositionedModifier e OnChildPositionedModifier para substituir as funções compostas OnPositioned e OnChildPositioned (I2ec8f).

  • Não permite o preenchimento negativo no LayoutPadding. Use o LayoutOffset para ajustes de posições negativas (Ifb5b1).

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

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

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

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

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

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

  • Adição de TextDirection.Content (I48f36).

  • Ajuste no menu da Barra de Ferramentas Google para mostrar os comandos de copiar, recortar e colar corretamente (Id3955)

  • Adição da FloatingToolbar para a seleção do TextField (Ie8b07).

  • TextDirectionAlgorithm foi renomeado como TextDirection (I75ce8).

  • TextDirection foi renomeado como ResolveTextDirection (I3ff38).

  • Adição de HapticFeedback à seleção de TextField (I58050).

  • Adição dos métodos Copiar, Cortar e Colar à seleção TextField (Idb70b).

  • TestTag e Semantics foram excluídos. Use Modifier.testTag e Modifier.semantics (I15ff0, b/158841414).

  • Mudança do nome do pacote para Locale e LocaleList de androidx.ui.text para androidx.ui.intl (I8132c).

  • Mudança da API: AnnotatedString(builder: Builder) foi renomeada como annotatedString(builder: Builder) (Ia6377).

  • Mudança da API: AnnotatedString.Item foi renomeada como AnnotatedString.Range (I2d44d).

  • Adição da barra de ferramentas para operações relacionadas a texto (I49d53).

  • O novo LifecycleOwnerAmbient já está disponível. Agora, uma atividade usada com a IU do Compose precisa ampliar androidx.activity.ComponentActivity (ou AppCompatActivity). O setContent na android.app.Activity agora está obsoleto (Idb25a, b/153141084).

  • O nome do pacote ui-android-text (androidx.text) foi substituído por androidx.ui.text.platform para se alinhar à política do androidX (I42711).