Compose Foundation

Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed espandi la base per creare i componenti del tuo sistema di progettazione.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Versione alpha
11 dicembre 2024 1.7.6 - - 1.8.0-alpha07

Struttura

Compose è una combinazione di 7 ID gruppo Maven in androidx. Ogni gruppo contiene un sottoinsieme mirato di funzionalità, ciascuna con il proprio insieme di note di rilascio.

Questa tabella illustra i gruppi e i link a ogni set di note di rilascio.

GruppoDescrizione
compose.animationCreare animazioni nelle loro applicazioni Jetpack Compose per arricchire l'esperienza utente.
compose.compilerTrasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in del compilatore Kotlin.
compose.foundationScrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed espandi la base per creare i componenti del tuo sistema di progettazione.
compose.materialCrea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di contatto di primo livello di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io.
compose.material3Crea interfacce utente Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You come i colori dinamici ed è progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12.
compose.runtimeComponenti di base del modello di programmazione e della gestione dello stato di Compose, nonché runtime di base per il plug-in del compilatore Compose come target.
compose.uiComponenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input.

Dichiarazione delle dipendenze

Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Versione 1.8

Versione 1.8.0-alpha07

11 dicembre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha07 viene rilasciato. La versione 1.8.0-alpha07 contiene questi commit.

Modifiche all'API

  • È stato eliminato il flag ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled che ha contribuito a annullare la rimozione di graphicsLayer interno da BasicText. Se utilizzavi questo indicatore, comunicaci i motivi inviando un bug. Inoltre, puoi semplicemente passare Modifier.graphicsLayer() alle chiamate BasicText per ottenere lo stesso comportamento di prima. (Id9f90)
  • È stata aggiunta l'implementazione predefinita per il nuovo DSL stickyHeader. (I68986)
  • La composizione LocalAutofillHighlightColor ha un utilizzo locale di tipo Colore. (I0e05b)
  • OverscrollEffect#withoutDrawing rinominato in OverscrollEffect#withoutVisualEffect. (I1a154)

Correzioni di bug

  • Correzione di un problema nel calcolo del target di AnchoredDraggable, che potrebbe essere impostato sull'ancora errata per scorrimenti specifici. (I23b87, b/367660226)

Contributo esterno

  • Aggiunta di BringIntoViewResponderModifierNode all'interfaccia utente, che offre un nuovo modo per implementare la funzionalità Porta in primo piano e consente l'implementazione a livello di piattaforma (Ia6dd8)
  • Stiamo modificando leggermente il modo in cui viene disegnato il cursore. Puoi utilizzare LocalCursorBlinkEnabled per disattivare il disegno del cursore nei test. (I4c697)

Versione 1.8.0-alpha06

13 novembre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha06 viene rilasciato. La versione 1.8.0-alpha06 contiene questi commit.

Modifiche all'API

  • Aggiunge il modificatore stylusHoverIcon. (Iff20a, b/331289114)
  • confirmValueChange di AnchoredDraggableState è stato ritirato. Anziché vietare le modifiche dello stato, le ancore non consentite non devono essere nell'insieme di ancore attive e deve essere utilizzato un OverscrollEffect per indicare la non disponibilità dell'azione richiesta. (Ia717f)
  • Modifica il gestore della compilazione automatica in modo che sia un'interfaccia. (I84914, b/376080755)
  • Aggiunge le API OverscrollEffect#withoutDrawing e OverscrollEffect#withoutEventHandling: queste API creano un'istanza con wrapping dell'effetto overscroll fornito che non disegna / gestisce gli eventi, rispettivamente, il che consente di eseguire il rendering dell'overscroll in un componente separato da quello che gestisce gli eventi. Ad esempio, disattivando il disegno dell'overscroll all'interno di un elenco lazy e poi disegnando l'overscroll separatamente in alto o altrove. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • È stato aggiunto il supporto della compilazione automatica nella barra degli strumenti di testo. (Ie6a4c)
  • Ritirata la funzionalità di OverscrollConfiguration e LocalOverscrollConfiguration e aggiunta di rememberPlatformOverscrollFactory per creare un'istanza di / personalizzare i parametri dell'implementazione predefinita del movimento oltre lo scorrimento. Per disattivare lo scorrimento eccessivo, utilizza LocalOverscrollFactory provides null anziché LocalOverscrollConfiguration provides null. Per modificare il colore dell'effetto bagliore / il padding, anziché LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), utilizza LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • La proprietà effectModifier in OverscrollEffect è stata modificata in node: DelegatableNode, in linea con le altre API. (Ic0b46, b/255554340)
  • È stata rimossa l'API GlobalAssertions sperimentale. L'utilizzo previsto era eseguire controlli di accessibilità. Per questo scopo, consulta enableAccessibilityChecks(). (I59322)

Versione 1.8.0-alpha05

30 ottobre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha05 viene rilasciato. La versione 1.8.0-alpha05 contiene questi commit.

Nuove funzionalità

  • Supporto per il ridimensionamento automatico del testo. Passa un'istanza AutoSize (ad es. AutoSize.StepBased) al tuo composable di testo preferito (ad es. BasicText) e osserva come le dimensioni del testo si adattano allo spazio disponibile. (Ice7e0, b/139320827)
  • Aggiunge le API OverscrollFactory e LocalOverscrollFactory per consentire la configurazione del movimento orizzontale oltre il limite all'interno di una gerarchia. Il valore fornito tramite LocalOverscrollFactory verrà utilizzato per impostazione predefinita per creare un OverscrollEffect. Per creare e ricordare un effetto dall'attuale factory fornita, utilizza rememberOverscrollEffect(). (I51ca4, b/255554340)

Modifiche all'API

  • Introduzione di CompositionLocal che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione riuscita della compilazione automatica. (I32092)
  • ScrollableDefaults.overscrollEffect è stato rimosso. Utilizza rememberOverscrollEffect. Verrà creata un'istanza dell'attuale implementazione del scorrimento oltre i limiti fornita con LocalOverscrollFactory. (I1651a, b/255554340),(b/234451516)
  • Viene introdotta una nuova interfaccia AutofillManager che può essere utilizzata per perfezionare il percorso di compilazione automatica degli utenti e un flag isSemanticAutofillEnabled per attivare questa nuova versione della compilazione automatica. (I9d484)
  • Rimuove CombinedClickableNode. Questa API sperimentale è stata esposta temporaneamente per sbloccare il lavoro sul rendimento, ma non è più necessaria. Dovresti invece utilizzare direttamente Modifier.combinedClickable come per le altre API di modificatori. (I4b658)
  • Aggiunge sovraccarichi a horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager e VerticalPager con il supporto per la specifica di un OverscrollEffect personalizzato. Il OverscrollEffect fornito riceverà gli eventi e verrà visualizzato nei limiti di questi componenti. Tieni presente che non è supportato il disegno dello stesso OverscrollEffect due volte, quindi non puoi disegnare lo stesso OverscrollEffect fornito a uno di questi componenti separatamente con Modifier.overscroll. Il caso d'uso di disegno del movimento oltre lo scorrimento al di fuori dei limiti di questi componenti verrà affrontato separatamente in futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)

Versione 1.8.0-alpha04

16 ottobre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha04 viene rilasciato. La versione 1.8.0-alpha04 contiene questi commit.

Modifiche all'API

  • Aggiunge i callback DelegatableNode#onDensityChange e DelegatableNode#onLayoutDirectionChange per consentire l'aggiornamento dello stato del nodo quando questi cambiano. (I04f3e, b/340662451)
  • Paragrafo e ParagraphIntrinsics ora accettano un elenco di tutte le annotazioni applicate al AnnotatedString, in precedenza era presente solo un elenco di SpanStyles. (I12f80)
  • È stato introdotto PointerInputModifierNode#touchBoundsExpansion, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del cursore. (Iccf02, b/335339283)

Correzioni di bug

  • È stato risolto un bug per cui le soglie di posizione passate a AnchoredDraggableDefaults.flingBehavior non venivano considerate correttamente in alcuni scenari. (Ifdf0d, b/367660226)
  • È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante un fling in corso. Ora questi nodi annulleranno il fling e invieranno correttamente l'evento onPostFling con la velocità rimanente. Stiamo anche introducendo il flag NewNestedScrollFlingDispatchingEnabled per controllare il comportamento in caso di regressioni. L'indicatore verrà rimosso prima della versione beta. (I05c37, b/371168883)
  • È stato corretto un bug per cui OverscrollEffects passato a Modifier.anchoredDraggable riceveva delta 2D anziché 1D. (Ie52c0)

Versione 1.8.0-alpha03

2 ottobre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha03 viene rilasciato. La versione 1.8.0-alpha03 contiene questi commit.

Modifiche all'API

  • Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
  • È stato introdotto il flag DraggableAddDownEventFixEnabled (I848d5)
  • È stato introdotto un nuovo ruolo di semantica denominato Carosello per emulare il comportamento dell'elenco nei pager per i servizi a11y. (Id354b, b/354109776, b/239672673)
  • È stato rimosso il modificatore graphicsLayer implicito dal composable BasicText. È stato aggiunto il flag sperimentale ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled per poter tornare al comportamento precedente. (Ie478d)
  • È stato aggiunto Modifier.recalculateWindowInsets() per consentire ai figli nella gerarchia di utilizzare insetsPadding anche quando i genitori li hanno allineati senza consumeWindowInsets(). (I7f9e4)

Correzioni di bug

  • Implementa il rilevamento dei gesti in detectDragGestures, elementi spostabili e scorrevoli. Ora, se un elemento trascinabile secondario non risponde a un gesto, il genitore ha la possibilità di riprenderlo. Ciò consente una gestione dei gesti più continua e integrata. (Ic88fe)
  • Aggiornamento del comportamento di annullamento del movimento brusco negli elementi scorrevoli. Ora, se un elemento scorrevole viene lanciato e raggiunge i limiti, trasmette correttamente la velocità di lancio all'elemento scorrevole successivo della catena anziché continuare a gestire il lancio. (I9326a)

Versione 1.8.0-alpha02

18 settembre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha02 viene rilasciato. La versione 1.8.0-alpha02 contiene questi commit.

Modifiche all'API

  • Ora sono disponibili TextOverflow.StartEllipsis e TextOverflow.MiddleEllipsis, che consentono di inserire i puntini di sospensione all'inizio o al centro della riga del testo a una riga (I38913, b/185418980)

Versione 1.8.0-alpha01

4 settembre 2024

androidx.compose.foundation:foundation-*:1.8.0-alpha01 viene rilasciato. La versione 1.8.0-alpha01 contiene questi commit.

Versione 1.7

Versione 1.7.6

11 dicembre 2024

androidx.compose.foundation:foundation-*:1.7.6 viene rilasciato. La versione 1.7.6 contiene questi commit.

Correzioni di bug

  • È stato corretto il problema relativo alla visibilità dei contenuti in linea di testo per i servizi di accessibilità.
  • Risolto un problema per cui AndroidEmbeddedExternalSurface non veniva reimpostato correttamente e si bloccava quando veniva riutilizzato in un elenco lazy.

Versione 1.7.5

30 ottobre 2024

androidx.compose.foundation:foundation-*:1.7.5 viene rilasciato. La versione 1.7.5 contiene questi commit.

Correzioni di bug

  • Assicurati che gli elementi bloccati non siano sottocomposti due volte nell'area di spaziatura dei contenuti. (Ic6224)

Versione 1.7.4

16 ottobre 2024

androidx.compose.foundation:foundation-*:1.7.4 viene rilasciato. La versione 1.7.4 contiene questi commit.

Correzioni di bug

  • Risolto un bug che causava un raro arresto anomalo nei campi di testo. (I475c6, b/313010266)
  • È stato rimosso ReusableContentHost dalla radice degli elementi di layout lazy. Si trattava di una potenziale causa principale degli arresti anomali "Misura chiamata su un nodo disattivato". (Id6e60)

Versione 1.7.3

2 ottobre 2024

androidx.compose.foundation:foundation-*:1.7.3 viene rilasciato. La versione 1.7.3 contiene questi commit.

Correzioni di bug

  • È stata corretta una perdita di memoria con BasicText quando minLines è impostato su un valore diverso da quello predefinito.

Versione 1.7.2

18 settembre 2024

androidx.compose.foundation:foundation-*:1.7.2 viene rilasciato. La versione 1.7.2 contiene questi commit.

Correzioni di bug

  • Risolto un problema relativo agli elementi trascinabili per i quali mancavano gli eventi di scorrimento verso il basso, che causavano un movimento più lento del normale.

Versione 1.7.1

10 settembre 2024

  • Nessuna modifica agli elementi Android. Sono stati rimossi -desktop elementi e aggiunti -jvmStubs e -linuxx64Stubs elementi. Nessuno di questi target è destinato all'uso, ma sono segnaposto per supportare le attività di JetBrains Compose.

Versione 1.7.0

4 settembre 2024

androidx.compose.foundation:foundation-*:1.7.0 viene rilasciato. La versione 1.7.0 contiene questi commit.

Modifiche importanti dalla versione 1.6.0

  • Il rendimento di Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollable e Modifier.draggable è stato notevolmente migliorato. Nell'ambito di questo impegno, oltre alle modifiche interne, sono state apportate le seguenti modifiche all'API:
    • È stata aggiunta una nuova API Indication, IndicationNodeFactory. Ciò comporta implementazioni di indicatori più performanti rispetto all'API rememberUpdatedInstance precedente (ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com.
    • clickable / combinedClickable / selectable / toggleable ora accetta un parametro MutableInteractionSource nullable. Se è nullo e l'indicazione fornita è un IndicationNodeFactory, l'indicazione può essere creata in modo lazy solo quando necessario, il che migliora le prestazioni. Se non esegui l'elevazione e non utilizzi MutableInteractionSource, ti consigliamo di passare null anziché remember { MutableInteractionSource() }.
    • Indication#rememberUpdatedInstance è stato deprecato. Ha un elevato impatto negativo sulle prestazioni e impedisce altre ottimizzazioni. Dovresti utilizzare la nuova API IndicationNodeFactory.
  • BasicTextField che utilizza un TextFieldState è ora stabile e consigliamo a tutti i call-site di iniziare la migrazione da BasicTextField(value, onValueChange) a BasicTextField(TextFieldState).
  • ClickableText è stato deprecato. Per aggiungere link cliccabili al testo, utilizza BasicText con la nuova annotazione LinkAnnotation in AnnotatedString. LinkAnnotation consente di applicare stili personalizzati in base allo stato del link (ad es. attivo, con il mouse sopra).
  • Presentazione di ContextualFlowRow e Enhanced FlowRow/Column con MaxLines e Overflow. Siamo lieti di annunciare i miglioramenti apportati a FlowRow e FlowColumn sperimentali, che ora includono il supporto di maxLines e dell'overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, dove ContextualFlow* è perfetto per un numero elevato di elementi che utilizzano una configurazione di maxLines ridotta e pulsanti dinamici +N per visualizzare altri elementi, mentre FlowRow e FlowColumn sono perfetti per un numero ridotto di elementi, meno di 100. Importante: per mantenere il comportamento esistente in FlowRow o FlowColumn, in cui tutti gli elementi vengono composti indipendentemente dal fatto che si adattino all'asse trasversale massimo, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Consulta ContextualFlowRowSample e FlowRowSample per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
  • In LazyColumn e LazyRow è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I2d7f7, b/150812265)
  • È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Scrivi utilizzando l'API Android ufficiale (ScrollCaptureCallback).
  • Le origini NestedScroll Trascina e Fling vengono sostituite da UserInput e SideEffect per supportare la definizione estesa di queste origini, che ora includono le animazioni (Side Effect) e la rotella del mouse e la tastiera (UserInput).
  • Ora le richieste di prefetch LazyLayout possono essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (Id513f)
  • Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi successivi ad Android U. (I002e4)
  • Diverse API sono state promosse a versione stabile.
    • Lettori di codici a barre, accoppiamento, riquadri incassati

Versione 1.7.0-rc01

21 agosto 2024

androidx.compose.foundation:foundation-*:1.7.0-rc01 viene rilasciato. La versione 1.7.0-rc01 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione in cui si verificava un arresto anomalo quando un elemento era attivo all'interno di un elemento principale attivabile (o cliccabile) e disattivato. (b/317561689)

Versione 1.7.0-beta07

7 agosto 2024

androidx.compose.foundation:foundation-*:1.7.0-beta07 viene rilasciato. La versione 1.7.0-beta07 contiene questi commit.

Correzioni di bug

  • Le funzioni SemanticsNodeInteraction relative all'inserimento di testo performTextReplacement, performTextInput e performTextClearance ora genereranno errori di asserzione quando vengono chiamate su TextFields di sola lettura. (I4ae8f)
  • È stato corretto un problema visivo nei link ipertestuali. (I23311)
  • È stato corretto il problema per cui il modificatore contentReceiver non funzionava con alcuni IME.
  • Generazione di velocità: impedisci la propagazione di valori NaN in Compose UI e Foundation.

Versione 1.7.0-beta06

24 luglio 2024

androidx.compose.foundation:foundation-*:1.7.0-beta06 viene rilasciato. La versione 1.7.0-beta06 contiene questi commit.

Versione 1.7.0-beta05

10 luglio 2024

androidx.compose.foundation:foundation-*:1.7.0-beta05 viene rilasciato. La versione 1.7.0-beta05 contiene questi commit.

Correzioni di bug

  • Correzione per il trattamento dei valori Nan in SnapFlingBehavior e Pager.

Versione 1.7.0-beta04

26 giugno 2024

androidx.compose.foundation:foundation-*:1.7.0-beta04 viene rilasciato. La versione 1.7.0-beta04 contiene questi commit.

Correzioni di bug

  • Evitare arresti anomali durante la misurazione di righe di testo molto grandi (ad es.10. 000 caratteri) (8157ab)
  • Corregge la misurazione del testo molto grande che causava un arresto anomalo nella nuova versione di BasicTextField (6b7575)
  • Ripristina una modifica del comportamento nella misurazione di righe/colonne che interrompe l'utilizzo del testo in determinati scenari (69e8ba)

Versione 1.7.0-beta03

12 giugno 2024

androidx.compose.foundation:foundation-*:1.7.0-beta03 viene rilasciato. La versione 1.7.0-beta03 contiene questi commit.

Versione 1.7.0-beta02

29 maggio 2024

androidx.compose.foundation:foundation-*:1.7.0-beta02 viene rilasciato. La versione 1.7.0-beta02 contiene questi commit.

Modifiche all'API

  • Aggiunge un'API sperimentale per la configurazione del comportamento di prefetch di LazyGrids simile all'API sperimentale esistente per LazyLists. È incluso il supporto per il pre-caricamento degli elementi in LazyGrids nidificati. Come per LazyListPrefetchStrategy, l'impostazione predefinita dell'implementazione è il precaricamento dei primi 2 elementi nidificati di ogni griglia, ma questa impostazione può essere configurata dalle nuove API LazyGridPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • SemanticsProperties.Editable è stato rinominato in IsEditable e SemanticsPropertyReceiver.editable in un valore isEditable. La proprietà ora è booleana e sempre specificata da campi di testo. (I8acd8)
  • I valori predefiniti di basicMarquee sono stati spostati nell'oggetto MarqueeDefaults. (I12ff6)
  • Il parametro basicMarquee delayMillis è stato rinominato in repeatDelayMillis. (I12ff6)
  • Aggiornamento dell'API per lo stile dei link: spostato TextLinkStyles in TextStyle e rimosso TextDefaults da Material (I5477b)

Correzioni di bug

  • LayoutCoordinates.introducesFrameOfReference è stato rinominato in LayoutCoordinates.introducesMotionFrameOfReference per rispecchiare meglio la sua finalità. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)
  • È stato rimosso "Predefinito" dalle proprietà MarqueeDefaults. (I1d8a0)
  • L'effetto "Risalto" è stato rimosso dalle proprietà MarqueeDefaults. (Iad4f4)
  • TextLinkStyles è stato rimosso dal corso TextStyle. TextLinkStyles fa invece parte del costruttore LinkAnntation e del metodo AnnotatedString.fromHtml (I90b2b)
  • È stato corretto un bug per cui Pager scattava quando veniva lanciato verso un limite mentre era già agganciato al limite. (I9f373, b/339171222)
  • BTF2 ora ha i gesti di selezione del mouse corretti. (Ibe8c6)

Contributo esterno

  • Invia nuovamente "Fai in modo che il tipo di contenuto del calcolo del tempo di composizione/misurazione si basi sul prefetch per migliorare l'accuratezza" (Iea622)
  • Creare il tipo di contenuto del calcolo del tempo di composizione/misurazione in base al prefetch per migliorare la precisione (Ibccb1)
  • Rendere disponibili i modificatori WindowInsetsPadding dall'insieme di origini comuni (I070b2)

Versione 1.7.0-beta01

14 maggio 2024

androidx.compose.foundation:foundation-*:1.7.0-beta01 viene rilasciato. La versione 1.7.0-beta01 contiene questi commit.

Modifiche all'API

  • La proprietà KeyboardOptions.shouldShowKeyboardOnFocus è stata aggiunta di nuovo come nascosta ritirata per la compatibilità binaria. (I15cfe)
  • Modifier.anchoredDraggable ora inverte i delta di trascinamento per impostazione predefinita per i componenti con orientamento orizzontale quando vengono utilizzati in un layout RTL. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations è diventato hasEqualAnnotations. (I685c0)
  • L'API è stata aggiornata per ottenere link con temi Material nel testo. Nello specifico, sono stati rimossi i metodi dal TextDefaults per la creazione di LinkAnnotations a tema e l'analisi del codice HTML con link a tema. È stata invece aggiunta una classe TextLinkStyles che consente di applicare uno stile ai link come parametro al composable di testo. (I31b93)
  • onDragStarted e onDragStopped sono stati sostituiti con callback non in sospensione. (I59de8)

Correzioni di bug

  • È stato risolto un bug che causava l'arresto anomalo di Pager quando contentPadding era più grande dei vincoli in entrata. Ora la paginazione forza i valori negativi restituiti da PageSize a 0. (Iba5d8, b/314008560)

Versione 1.7.0-alpha08

1° maggio 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha08 viene rilasciato. La versione 1.7.0-alpha08 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il menu contestuale del tasto destro del mouse a BasicTextField e SelectionContainer con voci per le azioni Taglia, Copia, Incolla e Seleziona tutto. (If8c93, Ia2b49, I6f268)

Modifiche all'API

  • Ora le richieste di prefetch LazyLayout possono essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (Id513f)
  • isPositionedByParentWithDirectManipulation rinominato in introducesFrameOfReference. Tieni presente che ora ha l'effetto opposto, il che significa che per impostazione predefinita la maggior parte degli elementi LayoutCoordinates introduce un sistema di riferimento e, solo quando viene sottoposto a manipolazione diretta, la proprietà sarà falsa. Per eseguire query sulla posizione solo con quelle che introducono un sistema di riferimento, utilizza positionInLocalFrameOfReference(...). Oppure positionInLocalLookaheadFrameOfReference da un LookaheadScope. (Ifc5f7)
  • onClicked rinominato in onClick all'interno di LinkInteractionListener (Iaa35c)
  • Modifica l'azione lambda per getScrollViewportLength in base al feedback del Consiglio API. (Ibc74a)
  • Le API di delega della scrittura a mano libera con stilo sono state rinominate. (Ica45f, b/327271923)
  • Rinomina TextInclusionStrategy.isInside in isIncluded. Rendi il tipo di ritorno Paragraph/MultiParagraph#getRangeForRect() non null. (I51f26)

Correzioni di bug

  • È stata aggiunta l'opzione "Seleziona tutto" a tutti i menu contestuali di testo in SelectionContainer. (Ib750e, b/240143283)
  • È stato corretto il problema di acquisizione di screenshot lunghi per i contenitori con scorrimento con reverseScrolling=true. (I7c59c)
  • È stato risolto un problema per cui AnchoredDraggableState di currentValue cambiava quando si avvicinavano i limiti dello stato. (Iea30b, b/333846848)

Contributo esterno

  • PrefetchExecutor -> PrefetchScheduler è stato rinominato per riflettere meglio le relative responsabilità. (Ib9154)
  • È stato aggiunto il supporto per il pre-caricamento degli elementi in LazyLists nidificati (ad es. un LazyColumn che esegue il rendering di LazyRows nidificati). Questa modifica dovrebbe ridurre i cali di frame durante lo scorrimento per questi LazyLists. L'impostazione predefinita dell'implementazione è il pre-caricamento dei primi 2 elementi nidificati, ma questo comportamento può essere controllato dalle nuove API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Versione 1.7.0-alpha07

17 aprile 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha07 viene rilasciato. La versione 1.7.0-alpha07 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto un oggetto TextDefaults che contiene metodi per creare un LinkAnnotation e analizzare la stringa con tag HTML che applica MaterialTheme ai link. (I98532, b/139312671)
  • In LazyVerticalGrid e LazyHorizontalGrid è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (Ib7d12, b/330510929)
  • In LazyVerticalStaggeredGrid e LazyHorizontalStaggeredGrid è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I69bc9, b/330511290)

Modifiche all'API

  • Aggiunge ContextMenuColors e l'elemento LocalContextMenuTheme ProvidableCompositionLocal associato. I colori del menu contestuale nei campi di testo e nel testo selezionabile possono essere modificati specificando la composizione locale. (Ifa154)
  • I link di testo hanno ricevuto l'opzione di stile per lo stato premuto, oltre allo stile normale, al passaggio del mouse e allo stato attivo. (I5f864, b/139312671)
  • Presenta ViewConfiguration.HandwritingGestureLineMargin per i gesti di scrittura a mano libera. Supporto del gesto di scrittura a mano libera per BasicTextField. (Ie6e13, b/325660505)
  • DelegatableNode.scrollIntoView è stato rimosso per la release 1.7 perché non abbiamo avuto il tempo di completare la stabilizzazione del resto dell'interfaccia API correlata. Questa funzione verrà reintrodotta nella versione 1.8 (I6cf61, b/333421581, b/332900232)
  • Quando esegui una query sulle coordinate del layout, ora puoi utilizzare l'argomento excludeDirectManipulationOffset per escludere l'offset impostato dai layout principali che hanno posizionato i figli utilizzando Placeable.PlacementScope.withDirectManipulationPlacement. Analogamente, un layout che modifica di frequente la posizione dei relativi elementi secondari ora può posizionarli utilizzando withDirectManipulationPlacement (ad esempio Scroll, implementato per impostazione predefinita). In questo modo, le animazioni basate su approachLayout sono più intuitive, perché ora è possibile distinguere l'offset da animare e cosa applicare direttamente quando si decide di animare l'approccio. (I60ec7)
  • Presenta requestScrollToItem per LazyStaggeredGrid. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamando requestScrollToItem. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamato requestScrollToItem. (I63983)
  • Presenta requestScrollToPage in Pager. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamando requestScrollToPage. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamato requestScrollToPage. (Ic4213)
  • È stato introdotto requestScrollToItem per LazyGrids. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamando requestScrollToItem. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamato requestScrollToItem. (I0a7a0)
  • ClickableText è deprecato. Per aggiungere link al testo, crea un AnnotatedString con un LinkAnnotation corrispondente al link e passa questo AnnotatedString al composable Text (I34d4b, b/323346994)
  • UrlAnnotation è deprecato. Utilizza LinkAnnotation.Url. Se utilizzi il tema Material, utilizza l'oggetto TextDefaults per creare l'annotazione con il tema Material applicato (I8d180, b/323346545)
  • String.parseAsHtml rinominato in AnnotatedString.Companion.fromHtml (I43dcd)
  • Sono stati aggiunti argomenti di stile (linkStyle, focusedLinkStyle, hoveredLinkStyle) e un gestore di interazioni con i link al metodo parseAsHtml. Durante l'analisi della stringa con tag HTML con tag <a>, il metodo creerà un LinkAnnotation.Url per ogni tag di questo tipo e passerà gli oggetti di stile e l'ascoltatore di interazioni con i link a ogni annotazione. (I7c977)
  • LinkAnnotation ora accetta gli argomenti di stile basati sullo stato e un LinkInteractionListener. Aggiungi questa annotazione al AnnotatedString per ottenere un link ipertestuale. Passando focusedState e/o hoveredState puoi definire la configurazione visiva dei link quando sono attivi e/o quando il mouse passa sopra. (I81ce4, b/139312671)
  • Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
  • LazyColumn ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)
  • È stata stabilizzata la maggior parte delle API sperimentali rimanenti introdotte con il nuovo BasicTextField. (I714e2)
  • È stato aggiunto il parametro textObfuscationCharacter a BasicSecureTextField che controlla il carattere da utilizzare durante l'oscuramento dei contenuti. (I0588b)
  • Le origini NestedScroll Trascinamento e Fling vengono sostituite da UserInput e SideEffect per supportare la definizione estesa di queste origini, che ora includono animazioni (Side Effect), rotella del mouse e tastiera (UserInput). (I40579)
  • Viene introdotto LocalBringIntoViewSpec, un comportamento di scorrimento dell'attenzione dipendente dalla piattaforma che viene applicato al livello del modificatore Scrollable. (I27aa5, b/317453911)
  • TextFieldCharSequence rimosso. TextFieldBuffer.originalValues viene sostituito con TextFieldBuffer.originalText e TextFieldBuffer.originalSelection. (I2c7d6)
  • ImeOptions.hintLocales non è più nullable. Se vuoi passare un elenco di lingue vuoto, utilizza LocaleList.Empty. (Ic5bc4)
  • getOffsetFractionForPage rinominato in getOffsetDistanceInPages. (Ia05e2)

Correzioni di bug

  • Quando InputTransformations vengono uniti a next, i relativi KeyboardOptions vengono ora uniti correttamente in base alle singole opzioni utilizzando il nuovo metodo KeyboardOptions.merge. (Ie5304, b/295951492)
  • AnchoredDraggableState di targetValue ora non prende più in considerazione le soglie di posizione. Ora ha una soglia implicita del 50%, il che significa che targetValue cambia nel punto intermedio tra due ancore. (I82c2c)

Contributo esterno

  • Sono state rinominate due API di scorrimento (I56a75)

Versione 1.7.0-alpha06

3 aprile 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha06 viene rilasciato. La versione 1.7.0-alpha06 contiene questi commit.

Nuove funzionalità

  • In LazyColumn e LazyRow è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I2d7f7, b/150812265)
  • Ora i clienti di LazyColumn/LazyRowpossono disattivare la gestione di un indice in base alla chiave per il prossimo passaggio di misura chiamando un LazyListState.requestToScroll non in sospensione. (I98036, b/209652366)
  • È stato aggiunto il metodo parseAsHtml per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML in AnnotatedString. Tieni presente che non tutti i tag sono supportati, ad esempio non potrai ancora visualizzare elenchi puntati. (I84d3d)
  • È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (ScrollCaptureCallback). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivata per impostazione predefinita. Per attivare questa funzionalità, imposta il flag ComposeFeatureFlag_LongScreenshotsEnabled su true. Questo flag verrà rimosso prima della versione beta 1.7. (I2b055, b/329296471)
  • Viene introdotta una nuova API GraphicsLayer per offrire maggiore flessibilità nel posizionamento e nel rendering delle istanze GraphicsLayer e supportare le funzionalità di rendering intrinseche senza dover coordinarsi con le implementazioni Composable per specificare le istanze di modificatori GraphicsLayer.

Modifiche all'API

  • Per impostazione predefinita, tutti i parametri KeyboardOptions hanno un valore non specificato. Metodo KeyboardOptions.merge aggiunto.
  • Il campo KeyboardOptions.autoCorrect è stato rinominato in autoCorrectEnabled e impostato come nullable, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492)
  • outOfBoundsPageCount rinominato in beyondViewportPageCount. (I129c6)
  • fun ClipEntry.getMetadata() viene modificato in val ClipEntry.clipMetadata. (I50155)
  • TextFieldState.valueAsFlow() rimosso. Ti consigliamo di utilizzare snapshotFlow { state.text } o snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • Parametri InputTransformation.transformInput riorganizzati. originalValue: TextFieldCharSequence rimosso. Ora TextFieldBuffer ha questo valore con lo stesso nome. È stato rimosso anche il parametro valueWithChanges: TextFieldBuffer. TextFieldBuffer ora è l'ambito del ricevitore nella funzione. (I919cc)
  • La variante BasicTextField(state) e BasicSecureTextField ora utilizzano KeyboardActionHandler anziché KeyboardActions per elaborare le azioni eseguite dalla tastiera software. (I58dda)
  • API di delega della scrittura a mano libera con lo stilo per supportare la scrittura a mano libera con lo stilo in campi di immissione di testo "falsi". (I9c09c, b/327271923)
  • KeyboardOptions.shouldShowKeyboardOnFocus rinominato in showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Parametro hintMediaTypes rimosso da Modifier.contentReceiver. Gli sviluppatori erano già invitati a controllare il tipo di media di TransferableContent ricevuto, in quanto potrebbe non essere compatibile con hintMediaTypes configurato. (I82f99)
  • Sono stati riordinati i parametri di BasicSecureTextField. I parametri keyboardType e imeAction sono stati rimossi a favore della classe KeyboardOptions completa, mantenendo gli stessi valori predefiniti appropriati per BasicSecureTextField. È stato rimosso anche il parametro scrollState. (Ibbfa9)
  • Il tipo di TextFieldState.text è stato modificato da TextFieldCharSequence a CharSequence. Di conseguenza, sono stati aggiunti TextFieldState.selection: TextRange e TextFieldState.composition: TextRange? per leggere i valori correnti di selezione e composizione direttamente dall'oggetto stato.
  • TextFieldState.forEachTextValue rimosso. (Idb2a2)
  • Sono state rimosse le funzioni ClipboardManager.getClipMetadata e ClipboardManager.hasClip. Utilizza clipEntry.getMetadata() per leggere i metadati della voce del clip corrente. Controlla anche il risultato di ClipboardManager.getClip per capire se è nullo o meno per capire se gli appunti contengono un clip corrente. (I50498)
  • ClipboardManager.setClip ora accetta null per poter svuotare la clipboard. (I7d2e9)
  • ReceiveContentListener viene convertito in un'interfaccia di funzione. Inoltre, l'overload di Modifier.receiveContent che accetta una lambda è stato rimosso poiché ReceiveContentListener ora è un'interfaccia di funzione.
  • Il nuovo nome di Modifier.receiveContent è Modifier.contentReceiver. (I1e6af)
  • TransferableContent.consumeEach rinominato in TransferableContent.consume. (I1e462)
  • rememberTextFieldState è stata promossa a API stabile. (I37999)

Correzioni di bug

  • È stato corretto un bug per cui la variante BasicTextField(state) non funzionava con le tastiere CJK(basate sulla composizione). (I54425)
  • È stato corretto un bug per cui Modifier.dragAndDropTarget() poteva fare riferimento a dati non aggiornati in determinati scenari con il riutilizzo di Modifier.Node. (I05bb1)
  • È stata ripristinata una recente modifica del contratto in cui le chiamate AnchoredDraggableState#anchoredDrag venivano interrotte al termine di un'operazione anchoredDrag. (I95715)

Versione 1.7.0-alpha05

20 marzo 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha05 viene rilasciato. La versione 1.7.0-alpha05 contiene questi commit.

Modifiche all'API

  • È stata rimossa la composizione locale LocalTextLinkStyle sperimentale per lo stile dei link ipertestuali. (Iebfa7)
  • È stata rimossa l'override sperimentale di BasicText con l'argomento onLinkClicked. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)
  • Sono stati rimossi i metodi e le proprietà relativi ai punti di codice in TextFieldState e TextFieldBuffer. Sono stati rimossi anche i suffissi inChars dalle API rimanenti relative alla selezione e alla composizione. (Ief7ce)
  • Ora currentValue di AnchoredDraggable si aggiorna quando passa attraverso un punto di ancoraggio. Utilizza settledValue per ricevere la semantica currentValue precedente, aggiornando solo quando si stabiliscono gli ancoraggi. Il progresso ora viene visualizzato come funzione (che richiede un punto di inizio e di fine) anziché come proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator sono classificati come stabili. (I9582b)
  • È stato introdotto InterceptPlatformTextInput per aiutare a scrivere test di basso livello relativi all'IME e altri casi d'uso di basso livello dell'IME. PlatformTextInputTestOverride è stato deprecato. (I862ed, b/322680547)
  • Suddividi restrictedConstraints() in due metodi: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd)

Contributo esterno

  • Sono state aggiunte due nuove API isLastScrollForward/isLastScrollBackward per controllare la direzione di scorrimento dell'ultima azione di scorrimento e restituire false se non è stata ancora eseguita alcuna azione di scorrimento. (I63a0e)

Versione 1.7.0-alpha04

6 marzo 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha04 viene rilasciato. La versione 1.7.0-alpha04 contiene questi commit.

Modifiche all'API

  • Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi successivi ad Android U. (I002e4)
  • È stato aggiunto hintLocales a KeyboardOptions per consentire a TextFields di suggerire agli IME con impostazioni internazionali specifiche di preimpostare una lingua preferita. (Id18c2)
  • Sono stati rimossi i sovraccarichi sperimentali BasicTextField2 e BasicSecureTextField che accettavano i parametri value: String e onValueChange: () -> String. (I568b4)
  • Aggiungi una funzione applySemantics facoltativa a InputTransformation per influenzare la semantica del BasicTextField2 a cui viene applicata. (I74a2f, b/170648072)
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength per poter inviare al sistema a11y informazioni sui componenti su cui si scorre in composizione. Questo CL applica l'utilizzo di questa proprietà anche negli elenchi scorrevoli di Foundation. (Ic5fa2)
  • Il nuovo nome di BasicTextField2 è BasicTextField. (Ie5713)
  • FocusRequester.createRefs è ora stabile (I4d92c, b/261436820)
  • È stato introdotto DelegatableNode.scrollIntoView() per consentire ai nodi modificatori di effettuare direttamente richieste scrollIntoView. (I2b3b7, b/299939840)
  • È stato introdotto DelegatableNode.requireView() per consentire ai nodi di modifica di ottenere l'View Android corrente senza leggere una composizione locale. (I40768)
  • Sono state introdotte informazioni sul layout contestuale nell'ambito di Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice riga, posizione e vincoli relativi a larghezza e altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/l'altezza massima possono essere inseriti nella riga successiva o omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)

Correzioni di bug

  • È stato corretto un bug per cui, in determinate condizioni, l'attivazione/la disattivazione degli attributi enabled o readOnly di TextField causava un arresto anomalo. (Iae17b)

Versione 1.7.0-alpha03

21 febbraio 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha03 viene rilasciato. La versione 1.7.0-alpha03 contiene questi commit.

Modifiche all'API

  • È stato introdotto DelegatableNode.requireLayoutCoordinates() come modo per ottenere il LayoutCoordinates corrente di un Modifier.Node senza dover sostituire onPlaced e memorizzare autonomamente le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere il LayoutCoordinates corrente di un Modifier.Node senza dover sostituire onPlaced e memorizzare autonomamente le coordinate in una proprietà. (Iaebaa)
  • Ottimizzazioni del rendimento in DraggableAnchors utilizzate da AnchoredDraggable. (I89cff)
  • BasicTextField2 e le API correlate nel pacchetto androidx.compose.foundation.text2 vengono spostate in androidx.compose.foundation.text. (I9f635)
  • BasicTextField2 non accetta più un parametro CodepointTransformation. Utilizza BasicSecureTextField o OutputTransformation. (Id34ff)
  • È stato aggiunto un metodo per confrontare solo le annotazioni di due AnnotatedStrings. (I32659)
  • Ti presentiamo ContextualFlowRow e FlowRow/Column avanzati con MaxLines e Overflow. Siamo lieti di annunciare i miglioramenti apportati a FlowRow e FlowColumn sperimentali, che ora includono il supporto di maxLines e dell'overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, dove ContextualFlow* è perfetto per un numero elevato di articoli che utilizzano una piccola configurazione maxLines e pulsanti dinamici +N per visualizzare altri risultati, mentre FlowRow e FlowColumn sono perfetti per un numero ridotto di articoli, meno di 100. Importante: per mantenere il comportamento esistente in FlowRow o FlowColumn, in cui tutti gli elementi vengono composti indipendentemente dal fatto che si adattino all'asse trasversale massimo, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Consulta ContextualFlowRowSample e FlowRowSample per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)

Correzioni di bug

  • L'animazione del cursore non richiede più frame tra gli stati On e Off. (Ia2253)
  • I costruttori di copia deprecati di KeyboardOptions ora copieranno correttamente tutte le proprietà. (If12de)

Versione 1.7.0-alpha02

7 febbraio 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha02 viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.

Modifiche all'API

  • HorizontalPager, VerticalPager e PagerState vengono promossi a stabili. (I67660, b/316966909)
  • È stata aggiunta la composizione locale LocalTextLinkStyle che consente di modificare lo stile dei link nel testo nell'app. Se utilizzi il tuo tema nell'app, devi impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, il colore del link verrà impostato per impostazione predefinita sul colore principale di Material. (I7eb10)
  • È stato introdotto il modificatore receiveContent che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose.
  • receiveContent si integra con BasicTextField2 per accettare contenuti avanzati forniti dalla tastiera software o tramite l'azione Incolla dagli appunti. (I81b72)
  • In questa modifica, sostituiremo SnapFlingBehavior con TargetedFlingBehavior nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea)
  • Con questa modifica, le API di snapping diventeranno stabili. Stiamo anche riordinando parte del codice di test e aggiungendo altri esempi a Snapping. (Id8da9)
  • Introduci TargetedFlingBehavior, un FlingBehavior che consente di propagare informazioni sullo stato dell'animazione in corso e sull'offset di scorrimento target. (I6a207)

Correzioni di bug

  • BasicTextField2 ora mantiene il cursore visibile durante la digitazione quando non è visibile a causa dello scorrimento o si sposta fuori dalla visuale a causa dell'input. (Ieb856, b/237190748)

Contributo esterno

  • Aggiunge un'API sperimentale per la configurazione del comportamento di precaricamento di LazyLists. (I022a4)

Versione 1.7.0-alpha01

24 gennaio 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha01 viene rilasciato. La versione 1.7.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto un nuovo Indication API, IndicationNodeFactory. Ciò porta a implementazioni di Indication più performanti rispetto all'API rememberUpdatedInstance precedente (ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com.
  • clickable / combinedClickable / selectable / toggleable ora accetta un parametro MutableInteractionSource nullable. Se è nullo e il Indication fornito è un IndicationNodeFactory, il Indication può essere creato in modo lazy solo quando necessario, il che migliora le prestazioni. Se non esegui l'elevazione e non utilizzi MutableInteractionSource, ti consigliamo di passare null.

Modifiche all'API

  • Viene introdotto DecayAnimation in AnchoredDraggable. Questa modifica aggiunge un parametro decayAnimationSpec a AnchoredDraggable che consente di utilizzare l'animazione di decadimento quando si stabilizza su una delle ancore. La modifica include anche la ridenominazione di animationSpec esistente in snapAnimationSpec per facilitare la comprensione del caso d'uso di ogni specifica.
  • BasicTextField2 è disponibile per uso sperimentale. Dovrebbe avere all'incirca la stessa funzionalità di BasicTextField e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, l'API rimane sperimentale per il momento. Prima della stabilizzazione, verrà rinominato in BasicTextField e spostato nello stesso pacchetto.
  • È stata introdotta la prima bozza dell'API OutputTransformation per BasicTextField2. Questa API sostituisce la maggior parte dei casi d'uso di VisualTransformation nella precedente BasicTextField. Tuttavia, non è ancora completa e alcune funzionalità non funzionano correttamente, ma saremo lieti di ricevere qualsiasi feedback sull'usabilità dell'API per i tuoi casi d'uso. (aosp/2708848)
  • È stato introdotto LinkAnnotation, che consente di aggiungere link e elementi cliccabili al testo. La funzionalità dei link non è ancora completa e sono previste altre modifiche all'API.
  • È stato introdotto il modificatore receiveContent che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose.
  • receiveContent si integra con BasicTextField2 per accettare contenuti avanzati forniti dalla tastiera software o tramite incolla dagli appunti.
  • KeyboardOptions.shouldShowKeyboardOnFocus ti consente di disattivare il comportamento predefinito di BasicTextField di richiedere una tastiera software quando è attivo lo stato attivo.
  • TextInputService e LocalTextInputService sono stati ritirati. Utilizza PlatformTextInputModifierNode per eseguire l'integrazione direttamente con le API IME della piattaforma. (aosp/2862698)
  • Indication#rememberUpdatedInstance è stato deprecato. Ha un'elevata penalizzazione delle prestazioni inevitabile e impedisce altre ottimizzazioni. Dovresti utilizzare la nuova API IndicationNodeFactory.

Correzioni di bug

  • BasicTextField ora prevaliderà una piccola selezione di mappature degli offset quando viene passato VisualTransformation. In questo modo è possibile rilevare errori di codifica comuni che generano eccezioni non recuperabili in passaggi di misurazione o disegno successivi. Se viene lanciato durante la composizione, è più probabile che gli sviluppatori vedano questi errori durante lo sviluppo, contribuendo a evitare arresti anomali in produzione. (I0fd42)
  • VisualTransformation non verrà lanciato se restituisci un indice non valido per un indice non valido (b/316401857 )

Versione 1.6

Versione 1.6.8

12 giugno 2024

androidx.compose.foundation:foundation-*:1.6.8 viene rilasciato. La versione 1.6.8 contiene questi commit.

Versione 1.6.7

1° maggio 2024

androidx.compose.foundation:foundation-*:1.6.7 viene rilasciato. La versione 1.6.7 contiene questi commit.

Versione 1.6.6

17 aprile 2024

androidx.compose.foundation:foundation-*:1.6.6 viene rilasciato. La versione 1.6.6 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug per cui, in determinate condizioni, l'attivazione/la disattivazione degli attributi enabled o readOnly di TextField causava un arresto anomalo. (Iae17b)

Versione 1.6.5

3 aprile 2024

androidx.compose.foundation:foundation-*:1.6.5 viene rilasciato. La versione 1.6.5 contiene questi commit.

Correzioni di bug

Versione 1.6.4

20 marzo 2024

androidx.compose.foundation:foundation-*:1.6.4 viene rilasciato. La versione 1.6.4 contiene questi commit.

Correzioni di bug

  • Il gesto di selezione con pressione prolungata e trascinamento che esce dai limiti del layout del testo nel primo frame del trascinamento non causa più arresti anomali. (Icdf90, b/325307463)

Versione 1.6.3

6 marzo 2024

androidx.compose.foundation:foundation-*:1.6.3 viene rilasciato. La versione 1.6.3 contiene questi commit.

Versione 1.6.2

21 febbraio 2024

androidx.compose.foundation:foundation-*:1.6.2 viene rilasciato. La versione 1.6.2 contiene questi commit.

Correzioni di bug

  • Correggi il problema di reimpostazione non corretta di AnimateContentSize. (I07051)
  • Risolto il problema per cui intrinsicHeight di testo veniva memorizzato nella cache in modo eccessivo in alcune circostanze. (3cd398, b/217910352)

Versione 1.6.1

7 febbraio 2024

androidx.compose.foundation:foundation-*:1.6.1 viene rilasciato. La versione 1.6.1 contiene questi commit.

Correzioni di bug

  • Correzione della misurazione della griglia a zig zag quando si scorre oltre il limite. (bffc39)
  • Aggiungi il controllo per i layout con dimensioni grandi. (e74af5)
  • Correggere il posizionamento degli elementi di dimensioni pari a 0 all'inizio della griglia sfalsata. (785f94)
  • Chiama il callback onRelease nello stesso ordine di onForgotten. (31ce3b)

Versione 1.6.0

24 gennaio 2024

androidx.compose.foundation:foundation-*:1.6.0 viene rilasciato. La versione 1.6.0 contiene questi commit.

Modifiche importanti dalla versione 1.5.0

  • Nuovo modificatore Modifier.anchoredDraggable che consente di trascinare e animare tra insiemi predefiniti di ancore. Questo modificatore è pensato per sostituire Modifier.swipeable. Scopri come utilizzarlo ed esegui la migrazione da Modifier.swipeable nella guida alla migrazione.
  • È stata aggiunta la funzionalità di trascinamento tra app e componenti. Per iniziare, consulta DragAndDropTarget, Modifier.dragAndDropSource e altre API
  • Modifier.draggable2D è il nuovo modificatore che consente di supportare facilmente il trascinamento 2D. Vedi Esempio.
  • AndroidExternalSurface e AndroidEmbeddedExternalSurface sono stati aggiunti per semplificare l'aggiunta di componenti basati su elementi in compose
  • Varie modifiche e miglioramenti alle API in Pager e snapFlingBehaviour
  • Diverse API di messa a fuoco, testo e intestazioni sono state promosse ad API stabili

Versione 1.6.0-rc01

10 gennaio 2024

androidx.compose.foundation:foundation-*:1.6.0-rc01 viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.

Modifiche all'API

  • Il costruttore dell'estensione DragAndDropTarget() è stato rimosso. Crea una nuova istanza utilizzando object: DragAndDropTarget {}. (I32318)

Versione 1.6.0-beta03

13 dicembre 2023

androidx.compose.foundation:foundation-*:1.6.0-beta03 viene rilasciato. La versione 1.6.0-beta03 contiene questi commit.

Correzioni di bug

  • Correzione dell'errore di arresto anomalo che interessava il testo di grandi dimensioni misurato con vincoli infiniti. (I1a7df, b/312294386)
  • PlatformImeOptions ora è una classe concreta anziché un'interfaccia. (If40a4)

Versione 1.6.0-beta02

29 novembre 2023

androidx.compose.foundation:foundation-*:1.6.0-beta02 viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.

Correzioni di bug

  • Correzione del problema relativo al mancato aggiornamento di canScroll dopo lo scorrimento solo per il nuovo layout. (I60a86)
  • Correzione per Modifier.animateItemPlacement() e LookaheadScope dopo piccoli scorrimenti. (I3a2b7)

Versione 1.6.0-beta01

15 novembre 2023

androidx.compose.foundation:foundation-*:1.6.0-beta01 viene rilasciato. La versione 1.6.0-beta01 contiene questi commit.

Modifiche all'API

  • Il modificatore DragAndDropTarget ora prende in modo esplicito il DragAndDropTarget di ricezione e ha un lambda per attivare una sessione di trascinamento. Ora esistono due funzioni di fabbrica per un DragAndDropModifierNode. Uno per ricevere i trasferimenti e uno per trasferire i dati (I69481)
  • maximumFlingVelocity aggiornato in modo da essere rappresentato come numero decimale. Documentazione aggiornata per maggiore chiarezza sull'unità maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart nella fabbrica DragAndDropModifierNode è stato rinominato in acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer è stato aggiunto a dragAndDropTarget Modifier per accettare da una sessione di trascinamento. Questa funzione lambda restituisce un valore valido DragAndDropTarget se ti interessa una sessione di trascinamento. Gli altri lambda per l'elaborazione degli eventi di trascinamento sono stati sostituiti da questo.

    È stata aggiunta una funzione di fabbrica DragAndDropTarget per ricevere dalle sessioni di trascinamento (Iebf3a)

  • L'esposizione di startDragImmediately in AnchoredDraggable consente di rilevare i gesti di trascinamento durante l'utilizzo. È utile impostarlo quando il widget è animato su un'ancora di destinazione. Vedi Esempio. (Ie6d13, b/285139987)

  • Le API di descrizioni comando di base ora sono @ExperimentalFoundationApi (I30b0b)

  • DragAndDropInfo è stato rimosso come tipo. DragAndDropModifierNode.drag ora accetta i parametri per la lambda DrawScope transferData, la dimensione della decorazione e la decorazione trascinata

    DragAndDropTarget ha metodi per eventi di trascinamento specifici anziché essere un singolo metodo astratto

    onDragAndDropEvent nella funzione di fabbrica per un DragAndDropModifierNode è stato rinominato in onDragAndDropStart per comunicare meglio che il DragAndDropTarget fornito è valido solo per una determinata sessione di trascinamento

    DragAndDropEventType è stato rimosso (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession rinominato in establishTextInputSession. (I03cd0)

  • Sostituisci OriginalText con TextSubstitution. (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession rinominato in runTextInputSession. (Ie9c6b)

  • Gli elementi secondari di SubcomposeLayout (e layout come LazyColumn basati su questo) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di test assertIsDeactivated() per testare questi nodi. Il resto delle API di test escluderà i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)

  • Il parametro clippingEnabled di Modifier.magnifier viene rinominato in clip.

  • Il parametro magnifierCenter di Modifier.magnifier viene reso nullable mantenendo lo stesso comportamento predefinito. (I6aa66)

  • Le API SwipeToReveal Material (per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che comporta una interruzione del servizio. Consulta la demo e il codice di esempio per esempi su come utilizzare la nuova API. (Ia8943)

Correzioni di bug

  • Implementa equals e hashcode per PageSize.Fixed. (Ie3ede, b/300134276)
  • È stato corretto un bug che causava il mancato restringimento del layout di BasicText quando minWidth cambiava e minWidth era inferiore ai vincoli di misura iniziali maxWidth (Idb19c)
  • È stato aggiunto il supporto del renderer per il gradiente a scorrimento in ArcLine. (I4d5bb)
  • Risolvere il problema di compatibilità binaria con la modifica dell'Inserimento finestra (Iee695)
  • Rimuovi il livello di base del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza questo livello. (I55555)

Versione 1.6.0-alpha08

18 ottobre 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha08 viene rilasciato. La versione 1.6.0-alpha08 contiene questi commit.

Nuove funzionalità

  • Modifier.draggable2D è il nuovo modificatore che consente di supportare facilmente il trascinamento 2D. Vedi Sample (Id95f5, b/214412658)

Modifiche all'API

  • La funzione lambda onDrawDragShadow di Modifier.dragAndDrawSource è stata rinominata drawDragDecoration e il parametro size di DragAndDropInfo è stato rinominato dragDecorationSize. (Id0e30, b/303904810)
  • Il parametro decorationBox di BasicTextField2 viene rinominato in decorator. Il relativo tipo viene modificato anche in un'interfaccia di divertimento equivalente TextFieldDecorator. (I23c1c)

Correzioni di bug

  • Documentazione migliorata su BasicTextField in merito ai requisiti di onValueChange. (I90fc9, b/160257648)

Versione 1.6.0-alpha07

4 ottobre 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha07 viene rilasciato. La versione 1.6.0-alpha07 contiene questi commit.

Modifiche all'API

  • È stato introdotto PlatformTextInputMethodTestOverride per scrivere test per gli editor di testo personalizzati. (Id159b)
  • GraphicsSurface rinominato in AndroidExternalSurface (I11680)
  • È stato aggiunto il flag temporaneo DisableNonLinearFontScalingInCompose per disattivare il ridimensionamento dei caratteri non lineari. Imposta DisableNonLinearFontScalingInCompose = true nei test se hai bisogno di tempo per ripulire. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)
  • Sono state aggiunte le raccolte ColorList e ColorSet che evitano le allocazioni. (I744bd)
  • Questa modifica rimuove shortSnapVelocityThreshold, che è stato trasformato in un dettaglio di implementazione delle implementazioni di SnapLayoutInfoProvider. (I65f6d)
  • Aggiunge il modificatore dragAndDropSource per avviare le sessioni di trascinamento e il modificatore dragAndDropTarget per la ricezione dalle sessioni di trascinamento (Ib7828, b/286038936)
  • Aggiorna la documentazione e il metodo di posizionamento di SnapPositionInLayout. Inserisci spaziatura interna dei contenuti nel metodo di posizionamento in SnapPositionInLayout. (Id7938, b/300116110)
  • È stato aggiunto UndoState a TextFieldState per consentire di annullare/ripetere le modifiche apportate dall'utente. (Icc024)

Correzioni di bug

  • È stato corretto il problema per cui basicMarquee non si animava dopo la modifica della velocità. (Id2e77, b/297974036)

Versione 1.6.0-alpha06

20 settembre 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha06 viene rilasciato. La versione 1.6.0-alpha06 contiene questi commit.

Nuove funzionalità

  • Nuovi wrapper composable per SurfaceView, TextureView: GraphicsSurface() e EmbeddedGraphicsSurface(). Si tratta di un'API sperimentale soggetta a cambiamenti e modifiche. (I9ddb2)
  • Modifier.magnifier() è ora un'API stabile. È inclusa la rimozione di MagnifierStyle a favore dei parametri in linea nel modificatore stesso. (I83bec, b/298381260, b/262367109, b/261438887)

Modifiche all'API

  • updateCurrentPage e updateTargetPage sono stati introdotti in ScrollScope e sono gli ultimi elementi necessari per consentire la personalizzazione dello scorrimento animato in PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Rimuovi la densità da SnapFlingBehavior. Poiché tutte le implementazioni di SnapLayoutInfoProvider hanno già un modo per accedere alla densità, l'ambito del ricevitore potrebbe essere rimosso, il che comporterà un'implementazione meno complessa sia di SnapFlingBehavior che di SnapLayoutInfoProviders. (I153c3)
  • Altri modificatori contrassegnati come stabili. (I56af1, b/298046462)
  • SnapStepSize è stato rimosso da SnapLayoutInfoProvider. Il calcolo deve essere eseguito utilizzando le informazioni del layout e fornito tramite l'approccio o gli offset di agganci. (If320c)

Modifiche al comportamento

  • Ora Scrivi utilizza il ridimensionamento dei caratteri non lineari per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è superiore al 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, ma quelle del testo già grande aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente in modo da rimanere proporzionali all'altezza prevista della scala del 100%. Per saperne di più, consulta le best practice per la scalabilità dei caratteri. (I11518)

Correzioni di bug

  • Rimuovi l'utilizzo di rememberSaveable per le descrizioni comando. (Icc131, b/299500338)

Versione 1.6.0-alpha05

6 settembre 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha05 viene rilasciato. La versione 1.6.0-alpha05 contiene questi commit.

Modifiche all'API

  • Aggiungi sovraccarichi per BasicSecureTextField che accettano un valore immutabile e un callback per modificarlo, proprio come l'attuale API BasicTextField. (Ia4882)
  • Aggiungi Modifier.preferKeepClear() per contrassegnare come composable la preferenza di evitare le finestre popup nell'API 33 e versioni successive. (Ib51d5, b/297260115)
  • Le velocità di lancio nei componenti View come ScrollView e RecyclerView sono limitate a ViewConfiguration.ScaledMaximumFlingVelocity. Compose ora contiene la propria versione di maximumFlingVelocity, che ora si applica a Draggable. (Ibf974)
  • Sono stati rimossi i sovraccarichi Pager e PagerState deprecati. (Iea07e)
  • È stato aggiunto BasicTooltipBox a compose.foundation e sono stati aggiornati PlainTooltipBox e RichTooltipBox per utilizzare TooltipBox con i nuovi composabili PlainTooltip e RichTooltip. (I79e1d)

Versione 1.6.0-alpha04

23 agosto 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha04 viene rilasciato. La versione 1.6.0-alpha04 contiene questi commit.

Modifiche all'API

  • Aggiungi l'interfaccia ReusableComposition per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
  • Modifier.focusGroup è stato promosso ad API stabili. (I7ffa3)
  • Aggiungi sovraccarichi per BasicTextField2 che accettano un valore immutabile e un callback per modificarlo, proprio come l'attuale API BasicTextField. (I3f2b8)
  • GridItemSpan::currentLineSpan è ora un'API stabile. (Icc29c)
  • Canvas che accetta contentDescription è ora un'API stabile. (Ib3d29)
  • È stato introdotto viewportSize in ScrollState, un modo per conoscere le dimensioni viewPort del componente che utilizza ScrollState dopo la misurazione. (I8b85a, b/283102682)
  • È stato risolto un problema per cui il pre-caricamento in Pager non corrispondeva al comportamento in Visualizzazioni. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) è ora stabile.
    • L'API Deprecated Modifier.consumedWindowInsets è stata rimossa. Utilizza invece Modifier.consumeWindowInsets. (Id72bb)

Versione 1.6.0-alpha03

9 agosto 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha03 viene rilasciato. La versione 1.6.0-alpha03 contiene questi commit.

Modifiche all'API

  • È stato aggiunto il sovraccarico di LazyLayout, che ora accetta una funzione lambda di LazyLayoutItemProvider, non un semplice oggetto come in precedenza. Il sovraccarico precedente è stato ritirato. (I42a5a)
  • È stato aggiunto il supporto per la configurazione di privateImeOptions (Idb772)

Correzioni di bug

  • È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando readOnly è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quando readOnly veniva modificato da true a false quando era attivo. (I34a19, b/246909589)

Versione 1.6.0-alpha02

26 luglio 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha02 viene rilasciato. La versione 1.6.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stato introdotto PagerLayoutInfo con le informazioni raccolte dopo il passaggio di una misura in Pager. È stato introdotto anche PageInfo, le informazioni su una singola pagina misurata in Pager. (Iad003, b/283098900)
  • Annotazioni aggiuntive per specificare gli input consentiti per i composabili (I51109)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più pratico e rilevabile per richiedere lo stato attivo nei test. (Ie8722)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. Anche LocalSoftwareKeyboardController è ora un CompositionLocal corretto. (I4c364)
  • Modifier.transformable ora fornisce il parametro pan delta in canPan per determinare la direzione della panoramica da consentire o meno. (I692aa, b/266829800)
  • Aggiorna il modificatore consumeWindowInsets per estendere la superclasse AbstractComposeView (Iacd74, b/269479941)

Versione 1.6.0-alpha01

21 giu 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha01 viene rilasciato. La versione 1.6.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stata introdotta una nuova API AnchoredDraggable in Foundation. Può essere utilizzato per creare componenti che possono essere trascinati tra stati discreti, come i riquadri inferiori modali. Questa API sostituisce l'API Swipeable di Material. (I4a2ed)

Modifiche all'API

  • Supporto InputConnection#requestCursorUpdates (I0c69b)
  • È stato introdotto scrollAnimationSpec per consentire specifiche di animazione personalizzate. Impostazione BringIntoViewCalculator aggiornata a BringIntoViewScroller. (Idb741)
  • Aggiungi il tipo ResourceResolutionException per avvolgere gli oggetti da lanciare lanciati durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset di cui non è stato possibile il caricamento. (I19f44, b/230166331, b/278424788)
  • Sono state aggiunte proprietà e azioni di semantica per supportare la traduzione del testo. (I4a6bc)
  • È stata introdotta un'API BringIntoViewCalculator che può essere utilizzata per personalizzare il modo in cui componenti come Scrollable rispondono alle richieste bringIntoView. È stata modificata l'overload di scrollable in modo che accetti facoltativamente un'istanza di BringIntoViewCalculator. (Iaf5af)

Correzioni di bug

  • È stato aggiunto un controllo lint per avvisare se stai creando un MutableInteractionSource nella composizione senza ricordarlo, in modo simile ai controlli lint per la creazione di stato mutabile / Animatable. (I5daae)
  • È stato aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271)
  • È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (I9790e)

Versione 1.5

Versione 1.5.4

18 ottobre 2023

androidx.compose.foundation:foundation-*:1.5.4 viene rilasciato. La versione 1.5.4 contiene questi commit.

Versione 1.5.3

4 ottobre 2023

androidx.compose.foundation:foundation-*:1.5.3 viene rilasciato. Questa versione non presenta modifiche.

Versione 1.5.2

27 settembre 2023

androidx.compose.foundation:foundation-*:1.5.2 viene rilasciato. La versione 1.5.2 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug nel testo che causava arresti anomali in determinate circostanze quando la semantica veniva invalidata.

Versione 1.5.1

6 settembre 2023

androidx.compose.foundation:foundation-*:1.5.1 viene rilasciato. La versione 1.5.1 contiene questi commit.

Correzioni di bug

  • È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando readOnly è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quando readOnly veniva modificato da true a false quando era attivo. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

androidx.compose.foundation:foundation-*:1.5.0 viene rilasciato. La versione 1.5.0 contiene questi commit.

Modifiche importanti dalla versione 1.4.0

  • È stata eseguita la migrazione di molti modificatori di base, tra cui Modifier.clickable, Modifier.draggable, Modifier.scrollable, il modificatore di layout e altri, all'API Modifier.Node, riducendo il sovraccarico nella composizione iniziale.
  • Miglioramenti alla stabilità dei pager. Sono stati risolti molti bug.
  • I parametri pageCount ora si trovano in PagerState anziché nel pager stesso

Versione 1.5.0-rc01

26 luglio 2023

androidx.compose.foundation:foundation-*:1.5.0-rc01 viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.

Correzioni di bug

  • È disponibile un'ispezione facoltativa per consigliare la migrazione delle chiamate mutableStateOf() ai tipi specializzati corrispondenti per le primitive. Il relativo ID lint è AutoboxingStateCreation. In precedenza, questa ispezione era attiva per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output di lint del progetto, modifica la gravità da informativa ad avviso (o superiore) dichiarando warning "AutoboxingStateCreation" all'interno della configurazione build.gradle o build.gradle.kts del modulo come mostrato (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Versione 1.5.0-beta03

28 giugno 2023

androidx.compose.foundation:foundation-*:1.5.0-beta03 viene rilasciato. La versione 1.5.0-beta03 contiene questi commit.

Versione 1.5.0-beta02

7 giugno 2023

androidx.compose.foundation:foundation-*:1.5.0-beta02 viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.

Versione 1.5.0-beta01

24 maggio 2023

androidx.compose.foundation:foundation-*:1.5.0-beta01 viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.

Modifiche all'API

  • Implementa PlatformDataProvider per fornire il battito cardiaco e i passi giornalieri. L'interfaccia SensorGateway viene rimossa dall'API pubblica. (I55b84)

Correzioni di bug

  • Riduci le allocazioni durante le misurazioni di liste/griglie/ecc. lazy (Iaf9e2)
  • Ridotte le allocazioni durante l'applicazione degli snapshot (I65c09)
  • Le allocazioni sono state rimosse dalle animazioni con effetto molla (Ie9431)
  • L'allocazione è stata rimossa da TextLayout (I0fd11)
  • Sono state rimosse più allocazioni nel monitoraggio della velocità del cursore (I26bae)

Versione 1.5.0-alpha04

10 maggio 2023

androidx.compose.foundation:foundation:1.5.0-alpha04 e androidx.compose.foundation:foundation-layout:1.5.0-alpha04 vengono rilasciati. La versione 1.5.0-alpha04 contiene questi commit.

Modifiche all'API

  • È stato aggiunto TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787)
  • Presenta un SnapLayoutInfoProvider che può essere utilizzato con LazyGridState. (I92134, b/269237141, b/260914964)
  • È stato aggiunto il valore sperimentale Modifier.animateItemPlacement() per l'ambito dell'elemento delle griglie sfalsate lazy. Puoi applicarlo agli articoli per ottenere le animazioni di riordino/modifica della posizione dell'automazione. (I4b62d, b/257034719)
  • Esegui la promozione di GridCells.FixedSize alla versione stabile. FixedSize definisce un LazyGrid in cui ogni cella assume dimensioni esatte sull'asse trasversale, con lo spazio rimanente distribuito dall'organizzazione dell'asse trasversale. (I8542f)
  • È stato introdotto l'ambito del ricevitore PagerScope per Pager e una funzione di utilità per il calcolo di un determinato offset di pagina. (If2577)
  • Inserisci snapPositionalThreshold quando crei un comportamento di scorrimento rapido di Snap. Utilizza questo parametro per specificare una soglia di posizione per lo scatto breve in Pager. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds sostituito con calculateSnappingOffset. In questo nuovo metodo, chiediamo semplicemente l'offset successivo a cui applicare lo snap. Il calcolo dei limiti deve essere eseguito a livello di implementazione, in quanto può variare a seconda di come deve avvenire l'aggancio. (I923a4)
  • Le API LazyStaggeredGrid sono state promosse a stabili. (I633a5)
  • Vuoi rimuovere pageCount da Horizontal/VerticalPager? Deve essere fornito al momento della creazione dello stato. PagerState e rememberPagerState sono stati aggiornati per accettare i pageCount. (Ieb52d, b/266965072)
  • Vuoi rimuovere pageCount da Horizontal/VerticalPager? Deve essere fornito al momento della creazione dello stato. PagerState e rememberPagerState sono stati aggiornati per accettare i pageCount. (Ifa3cb, b/266965072)
  • Inserisci shortSnapVelocityThreshold in SnapFlingBehavior del pager. (I7379e, b/275579012)
  • Aggiunge un FlowRowScope e un FlowColumnScope. (I54fe2)

Correzioni di bug

  • Le chiamate per ottenere la semantica del testo quando i vincoli hanno minWidth e minHeight non si arrestano più in modo anomalo. (Ibd072)
  • È stata corretta la regressione per cui la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal composable Dialog. (I82551, b/262140644)

Versione 1.5.0-alpha03

19 aprile 2023

androidx.compose.foundation:foundation:1.5.0-alpha03 e androidx.compose.foundation:foundation-layout:1.5.0-alpha03 vengono rilasciati. La versione 1.5.0-alpha03 contiene questi commit.

Questa release attiva il nuovo stack di rendering del testo per Scrivi. Il nuovo stack è ottimizzato per il rendimento e non dovresti notare modifiche visibili.

Se noti delle modifiche nel testo visualizzato, puoi eseguire il debug impostando NewTextRendering1_5 = false per confermare la differenza di comportamento. Se imposti questa opzione, la ricomposizione verrà forzata. Segnala eventuali differenze di comportamento come bug.

Il flag di debug verrà rimosso prima del rilascio della versione 1.5 beta01.(Iada23, b/246960758)

Modifiche all'API

  • Inserisci FlowColumn/FlowRow in linea. (Idab37)

Versione 1.5.0-alpha02

5 aprile 2023

androidx.compose.foundation:foundation:1.5.0-alpha02 e androidx.compose.foundation:foundation-layout:1.5.0-alpha02 vengono rilasciati. La versione 1.5.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stato aggiunto il supporto per le celle di dimensioni fisse in LazyGrid e per l'organizzazione con disposizione degli assi incrociati. (I83ed9, b/235121277, b/267942510)
  • È stato aggiunto il supporto per corsie di dimensioni fisse in LazyStaggeredGrid e per l'organizzazione con disposizione trasversale dell'asse. (I7d519)
  • Ora i UrlAnnotation in AnnotatedString possono essere aperti tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta l'azione di semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test relative al testo (ad es. performTextInput) ora richiederanno direttamente lo stato attivo, utilizzando l'azione di semantica, anziché fare clic sul campo. (I6ed05)
  • Aggiunge il supporto per la spaziatura/l'organizzazione sull'asse trasversale utilizzando verticalArrangement in FlowRow e horizontalArrangement in FlowColumn. Rimuoviamo anche verticalAlignment e horizontalAlignment di primo livello in FlowRow/FlowColumn. Gli sviluppatori possono utilizzare Modifier.align. In questo modo viene ridotta la confusione tra le convenzioni di denominazione di verticalAlignment e verticalArrangement. (I87b60, b/268365538)

Versione 1.5.0-alpha01

22 marzo 2023

androidx.compose.foundation:foundation:1.5.0-alpha01 e androidx.compose.foundation:foundation-layout:1.5.0-alpha01 vengono rilasciati. La versione 1.5.0-alpha01 contiene questi commit.

Modifiche all'API

  • Il testo e BasicText vengono sottoposti a refactoring per utilizzare il nuovo sistema di modificatori. In molti casi, questo porta a notevoli miglioramenti delle prestazioni. Non dovrebbero essere visibili modifiche. (If1d17, b/246961435)
  • È stata aggiunta l'azione di semantica PerformImeAction per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)

Correzioni di bug

  • Componenti interni di Modifier.hoverable aggiornati. Il modificatore hoverable verrà mostrato nell'inspector solo se è attivato. (I82103)

Versione 1.4

Versione 1.4.3

3 maggio 2023

androidx.compose.foundation:foundation:1.4.3 e androidx.compose.foundation:foundation-layout:1.4.3 vengono rilasciati senza modifiche (solo un aggiornamento della versione).

Versione 1.4.2

19 aprile 2023

androidx.compose.foundation:foundation:1.4.2 e androidx.compose.foundation:foundation-layout:1.4.2 vengono rilasciati. La versione 1.4.2 contiene questi commit.

Versione 1.4.1

5 aprile 2023

androidx.compose.foundation:foundation:1.4.1 e androidx.compose.foundation:foundation-layout:1.4.1 vengono rilasciati. La versione 1.4.1 contiene questi commit.

Versione 1.4.0

22 marzo 2023

androidx.compose.foundation:foundation:1.4.0 e androidx.compose.foundation:foundation-layout:1.4.0 vengono rilasciati. La versione 1.4.0 contiene questi commit.

Modifiche importanti dalla versione 1.3.0

  • È stata aggiunta l'integrazione di Emoji compat a Text e TextField, nonché al paragrafo di livello inferiore. È attiva per impostazione predefinita quando è configurato emojicompat.
  • EmojiCompat può essere configurato su un testo specifico utilizzando PlatformParagraphStyle.
  • È stato aggiunto il supporto per l'intervallo di riga completo a LazyStaggeredGrid(I28252)
  • Aggiunta di onHover sperimentale a ClickableText (I6938f)
  • Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni runComposeUiTest e create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() al suo interno. (I10614, b/265177763)
  • FlowRow e FlowColumn sono ora disponibili come @ExperimentalFoundationApi e consentono un layout più flessibile dei componenti in base a righe e colonne che si interromperanno in una nuova riga se non c'è spazio sufficiente sull'asse principale. (I3a7b2)
  • Modifier.basicMarquee() è disponibile in versione sperimentale per la visualizzazione dei contenuti con un effetto di scorrimento del carosello. (I2df44, b/139321650)

Versione 1.4.0-rc01

8 marzo 2023

androidx.compose.foundation:foundation:1.4.0-rc01 e androidx.compose.foundation:foundation-layout:1.4.0-rc01 vengono rilasciati. La versione 1.4.0-rc01 contiene questi commit.

Modifiche all'API

  • È stata introdotta una nuova API PlatformTextInputAdapter di basso livello per la creazione di implementazioni di input di testo personalizzati che comunicano direttamente con le API di piattaforma. (I58df4)
  • Aggiunta del supporto per il layout inverso a LazyStaggeredGrid. (I3ef4a)

Correzioni di bug

  • L'azione di semantica SetText di BasicTextField ora aggiorna il buffer di testo utilizzando lo stesso percorso del codice degli aggiornamenti dell'IME e delle funzioni di test (ad es. performTextReplacement).
  • Le funzioni di test del testo performTextClearance, performTextReplacement e performTextSelection ora utilizzano SemanticsActions. (I0807d, b/269633168, b/269624358)

Versione 1.4.0-beta02

22 febbraio 2023

androidx.compose.foundation:foundation:1.4.0-beta02 e androidx.compose.foundation:foundation-layout:1.4.0-beta02 vengono rilasciati. La versione 1.4.0-beta02 contiene questi commit.

Modifiche all'API

  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che consente di reimpostare alcuni stati locali per gestire correttamente la situazione quando Layout verrà riutilizzato (ad esempio come elemento di LazyColumn). È stato corretto FocusTargetModifierNode per reimpostare correttamente lo stato attivo. (I65495, b/265201972)
  • È stato aggiunto il parametro BlendMode ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508)
  • È stata rimossa l'API modifierElementOf(). Espandi direttamente da ModifierNodeElement. (Ie6d21)

Correzioni di bug

  • Non è più possibile selezionare un carattere parziale con i maniglie di selezione. (Idedd1)
  • Correzione dell'arresto anomalo quando si preme Ctrl+Backspace su TextField vuoto (I0427f, b/244185537)

Versione 1.4.0-beta01

8 febbraio 2023

androidx.compose.foundation:foundation:1.4.0-beta01 e androidx.compose.foundation:foundation-layout:1.4.0-beta01 vengono rilasciati. La versione 1.4.0-beta01 contiene questi commit.

Nuove funzionalità

  • Dalla versione 1.3, è stata aggiunta l'integrazione di Emoji compat a Text e TextField, nonché al paragrafo di livello inferiore. È attiva per impostazione predefinita quando è configurato emojicompat.
  • EmojiCompat può essere configurato su un testo specifico utilizzando PlatformParagraphStyle.

Modifiche all'API

  • È stata aggiunta l'implementazione comune dell'API PinnableContainer utilizzata in tutti i LazyLayouts per conservare gli elementi che escono dalla composizione, ma che devono comunque essere attivi. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() è stato rinominato in release() (I4667a)

Contributo esterno

  • È stata aggiunta la proprietà mainAxisItemSpacing a LazyListLayoutInfo, LazyGridLayoutInfo e LazyStaggeredGridItemInfo (I52fad)

Versione 1.4.0-alpha05

25 gennaio 2023

androidx.compose.foundation:foundation:1.4.0-alpha05 e androidx.compose.foundation:foundation-layout:1.4.0-alpha05 vengono rilasciati. La versione 1.4.0-alpha05 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il supporto dell'intervallo di riga completa a LazyStaggeredGrid (I28252)
  • Aggiunta di onHover sperimentale a ClickableText (I6938f)
  • Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni runComposeUiTest e create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() al suo interno. (I10614, b/265177763)

Modifiche all'API

  • Unisce le API pre/post di OverscrollEffect in funzioni "decoratore" combinate applyToScroll e applyToFling. Consulta gli esempi aggiornati nella documentazione per esempi di come implementare un effetto di scorrimento eccessivo con la nuova forma dell'API. (I8a9c4, b/255554340)
  • Più tipi/valori null delle funzioni in linea/nascoste ritirate (I24f91)
  • Le API LineBreak e Hyphens in TextStyle sono state rese stabili. (Ic1e1d)

Correzioni di bug

  • Ora il cursore nei campi di testo continuerà a lampeggiare anche quando le animazioni sono disattivate. (I95e70, b/265177763)
  • Modifier.basicMarquee ora si anima anche quando le animazioni sono disattivate nelle impostazioni di sistema. (I23389, b/262298306, b/265177763)

Contributo esterno

  • I metodi notifyFocusedRect in TextInputSession e TextInputService non vengono nuovamente deprecati. (I23a04, b/262648050)

Versione 1.4.0-alpha04

11 gennaio 2023

androidx.compose.foundation:foundation:1.4.0-alpha04 e androidx.compose.foundation:foundation-layout:1.4.0-alpha04 vengono rilasciati. La versione 1.4.0-alpha04 contiene questi commit.

Nuove funzionalità

  • FlowRow e FlowColumn sono ora disponibili come @ExperimentalFoundationApi e consentono un layout più flessibile dei componenti in base a righe e colonne che si interromperanno in una nuova riga se non c'è spazio sufficiente sull'asse principale. (I3a7b2)
  • Modifier.basicMarquee()è disponibile in versione sperimentale per la visualizzazione dei contenuti con un effetto di scorrimento del carosello. (I2df44, b/139321650)

Modifiche all'API

  • FocusRequesterModifier è deprecato a favore di FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Il costruttore AndroidFont con variationSettings è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807)
  • È stata introdotta l'API PinnableContainer propagata dagli elenchi lazy tramite una composizione locale che consente di bloccare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando viene visualizzato fuori dalla visualizzazione. Ad esempio, Modifier.focusable() blocca l'elemento corrente attivo tramite questo meccanismo. (Ib8881, b/259274257, b/195049010)
  • È stato riscritto il modo in cui gli elementi scorrevoli rispondono a bringIntoViewRequesters e agli elementi che possono essere attivati per gestire meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Maggiore nullabilità del tipo di ritorno delle funzioni nascoste ritirate (Ibf7b0)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7)
  • Aggiungi TextFieldFocusModifier per correggere il comportamento di navigazione con il fuoco per la piattaforma Android (I00303)
  • L'argomento maxSize: IntSize in drawText è stato sostituito con size: Size per essere in linea con le altre funzioni DrawScope. Per impostazione predefinita, size è impostato su Size.Unspecified, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)

Correzioni di bug

  • Modifiche alla fisica di aggancio in SnapFlingBehaviour per un'esperienza più naturale.

Problema noto

  • Quando esegui l'aggiornamento da androidx.compose.foundation:1.4.0-alpha03 a androidx.compose.foundation:1.4.0-alpha04, potresti riscontrare un errore java.lang.NoSuchFieldError. Qui è dove è stato segnalato il problema per la prima volta. È stata inviata una correzione che sarà disponibile nel prossimo aggiornamento di Scrivi. Come soluzione alternativa, aggiorna le librerie androidx.compose.material e androidx.compose.material3 all'ultima versione(1.1.0-alpha04) o esegui il downgrade di androidx.compose.foundation alla versione 1.4.0-alpha03.

Versione 1.4.0-alpha03

7 dicembre 2022

androidx.compose.foundation:foundation:1.4.0-alpha03 e androidx.compose.foundation:foundation-layout:1.4.0-alpha03 vengono rilasciati. La versione 1.4.0-alpha03 contiene questi commit.

Modifiche all'API

  • Nei test dell'interfaccia utente che utilizzano una regola di composizione, le interruzioni riprese durante i callback withFrameNanos non verranno inviate finché non sarà terminata l'esecuzione di tutti i callback del frame. Questo corrisponde al comportamento di composizione quando viene eseguito normalmente. Tuttavia, i test che si basano sul vecchio comportamento potrebbero non riuscire. Ciò dovrebbe interessare solo il codice che chiama direttamente withFrameNanos o withFrameMillis e ha una logica esterna al callback passata a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Consulta le modifiche al test di animazione in questo CL per esempi.
  • È stato aggiunto il parametro facoltativo onPerformTraversals: (Long) -> Unit al costruttore e alla funzione di fabbrica TestMonotonicFrameClock per eseguire il codice dopo i callback withFrameNanos, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670)
  • Introduci le azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che sono disponibili solo a partire dall'API 29. (Ida4ab)
  • Vengono introdotti HorizontalPager e VerticalPager, un modo per mostrare i composabili in un modo simile a Pager. È stato introdotto PagerState per controllare i pager ed eseguire query sulle informazioni relative allo stato corrente del pager. È stato introdotto PageSize, un modo per controllare le dimensioni della pagina di un carosello, che può essere utilizzato per creare un carosello come i caroselli. È stato introdotto PagerSnapDistance, un modo per controllare il funzionamento dell'aggancio nel comportamento di scorrimento di Pager. (I01120)
  • È stato introdotto un sovraccarico in SnapFlingBehavior.performFling per capire dove si stabilirà il lancio. (I569f6)
  • OverscrollEffect#isEnabled rimosso. Anziché dover ricordare e impostare questo flag, non inviare eventi all'effetto scorrimento eccessivo nei casi in cui non vuoi che venga visualizzato (ad esempio se ScrollableState#canScrollForward/backward restituisce entrambi false). (I1a4b0, b/255554340, b/255557085)
  • Sono stati aggiunti ScrollableState#canScrollForward e ScrollableState#canScrollBackward per verificare se un ScrollableState ha spazio per scorrere in entrambe le direzioni (se si trova al minimo / massimo del suo intervallo). Il valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni di ScrollableState. I consumatori possono utilizzarlo per indicare all'utente che c'è ancora spazio per scorrere e potrebbe essere utilizzato anche per evitare di inviare delta a ScrollableStates che non hanno spazio per scorrere in una determinata direzione, in modo da ridurre il lavoro non necessario. (Idf1a0, b/255557085)
  • È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli antenati. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni con i tasti, quando i gesti potrebbero diventare eventi di scorrimento.
  • È stato corretto il problema per cui Clickables non ritardava correttamente le increspature quando veniva utilizzato all'interno di un Scrollable ViewGroup.
  • È stato aggiornato il riquadro e i riquadri per posticipare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
  • Aggiorna la denominazione di snapStepSize in modo che sia coerente con gli altri metodi in SnapLayoutInfoProvider. (Ife67c)
  • EmojiCompat aggiunto a Compose (Ibf6f9, b/139326806)
  • Abbiamo rinominato consumedWindowInsets() in consumeWindowInsets() e withConsumedWindowInsets() in onConsumedWindowInsetsChanged() e abbiamo reso pubblici i modificatori. (Ie44e1)

Correzioni di bug

  • L'arresto anomalo con Modifier.animateItemPlacement() e le griglie lazy è stato risolto. Il problema si verificava in alcune condizioni quando il numero di nuovi elementi è inferiore a quello precedente. (I0bcac, b/253195989)

Versione 1.4.0-alpha02

9 novembre 2022

androidx.compose.foundation:foundation:1.4.0-alpha02 e androidx.compose.foundation:foundation-layout:1.4.0-alpha02 vengono rilasciati. La versione 1.4.0-alpha02 contiene questi commit.

Modifiche all'API

  • awaitFirstDown e waitForUpOrCancellation ora accettano un PointerEventPass per una maggiore flessibilità. (I7579a, b/212091796)
  • Ripristinare l'API beyondBoundCount dalle API Lazy* (I12197)
  • È stato introdotto un parametro nelle API Lazy per comporre e posizionare gli elementi fuori dal viewport (I69e89, b/172029355)
  • È stato aggiunto il parametro minLines a BasicText e BasicTextField. Consente di impostare l'altezza minima di questi composabili in termini di numero di righe (I24294, b/122476634)

Versione 1.4.0-alpha01

24 ottobre 2022

androidx.compose.foundation:foundation:1.4.0-alpha01 e androidx.compose.foundation:foundation-layout:1.4.0-alpha01 vengono rilasciati. La versione 1.4.0-alpha01 contiene questi commit.

Modifiche all'API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Funziona in modo simile a forEachGesture(), ma il ciclo dei gesti opera interamente all'interno di AwaitPointerEventScope, quindi gli eventi non possono essere persi tra le iterazioni.
  • forEachGesture() è stato ritirato a favore di awaitEachGesture() perché consente la perdita di eventi tra un gesto e l'altro. (Iffc3f, b/251260206)
  • Sono stati aggiunti WindowInsets.imeAnimationSource WindowInsets.imeAnimationTarget per determinare l'avanzamento dell'animazione e sapere dove si troverà l'IME al termine dell'animazione. (I356f1, b/217770337)

Versione 1.3

Versione 1.3.1

9 novembre 2022

androidx.compose.foundation:foundation:1.3.1 e androidx.compose.foundation:foundation-layout:1.3.1 vengono rilasciati. La versione 1.3.1 contiene questi commit.

Correzioni di bug

  • Risolvere il problema di prestazioni in BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier non legge le coordinate del layout se non è collegato (aosp/2241316)

Versione 1.3.0

24 ottobre 2022

androidx.compose.foundation:foundation:1.3.0 e androidx.compose.foundation:foundation-layout:1.3.0 vengono rilasciati. La versione 1.3.0 contiene questi commit.

Modifiche importanti dalla versione 1.2.0

  • Sono state introdotte le versioni sperimentali di LazyVerticalStaggeredGrid e LazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior e altre API corrispondenti sono state aggiunte come sperimentali.
  • Modifier.clickable, Modifier.toggleable e Modifier.selectable ora mostrano delle increspature se si fa clic con la tastiera o con il d-pad di un telecomando.

Versione 1.3.0-rc01

5 ottobre 2022

androidx.compose.foundation:foundation:1.3.0-rc01 e androidx.compose.foundation:foundation-layout:1.3.0-rc01 vengono rilasciati. La versione 1.3.0-rc01 contiene questi commit.

Modifiche all'API

  • È stato introdotto lowVelocityAnimationSpec, utilizzato dal passaggio di avvicinamento quando la velocità di lancio non è sufficiente per il decadimento. (Iaeb27)
  • È stata aggiunta una nuova API sperimentale Hyphens per supportare l'inserimento automatico di trattini nel testo (Iaa869)

Versione 1.3.0-beta03

21 settembre 2022

androidx.compose.foundation:foundation:1.3.0-beta03 e androidx.compose.foundation:foundation-layout:1.3.0-beta03 vengono rilasciati. La versione 1.3.0-beta03 contiene questi commit.

Modifiche all'API

  • Aggiungi opzioni per personalizzare il taglio a capo in Testo. (I86907)
  • BringIntoViewResponder ora sono in grado di ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211)
  • Introduzione del supporto delle spaziature tra gli elementi nella versione sperimentale Staggered Grid (I10b82)
  • Introduzione di spaziatura dei contenuti per Staggered Grid sperimentale (I342ea)
  • È stato modificato l'argomento size:IntSize con constraints: Constraints nel metodo TextMeasurer.measure per supportare i vincoli di larghezza minima. (I37530, b/242707525)
  • È stato aggiunto Modifier.withConsumedWindowInsets() per consumare WindowInsets per l'utilizzo al di fuori di windowInsetsPadding.
  • È stato aggiunto MutableWindowInsets per consentire di modificare facilmente WindowInsets senza ricomposizione. (I7fd28, b/237019262, b/243119659)

Versione 1.3.0-beta02

7 settembre 2022

androidx.compose.foundation:foundation:1.3.0-beta02 e androidx.compose.foundation:foundation-layout:1.3.0-beta02 vengono rilasciati. La versione 1.3.0-beta02 contiene questi commit.

Modifiche all'API

  • Versione iniziale di StaggeredGrid sperimentale (Ia48be)
  • FocusDirection.In e FocusDirection.Out sono stati rinominati in FocusDirection.Enter e FocusDirection.Exit (Ia4262, b/183746982)
  • È stata introdotta un'overload di rememberSnapFlingBehavior che fornisce un modo rapido per attivare l'aggancio in LazyLists. (Ifb48a)
  • La factory snapFlingBehavior è stata sostituita con una classe SnapFlingBehavior concreta. Sono stati applicati gli ambiti ai metodi SnapLayoutInfoProvider per la densità per semplificare le conversioni da dp a px per gli utenti dell'API. (I54a11)
  • Aggiorna LazyLayoutMeasureScope.measure in modo che restituisca un elenco di elementi inseribili, evidenziando l'immutabilità desiderata del valore restituito. (I48b7c)
  • È stato introdotto SnapLayoutInfoProvider che accetta un LazyListState per creare un'istanza di SnapLayoutInfoProvider che può essere utilizzata per attivare uno snap FlingBehavior per LazyLists. (I2dd10)

Correzioni di bug

  • Refactoring di AwaitPointerEventScope#awaitLongPressOrCancellation in modo che corrisponda ad altre funzioni await (I646e6)

Versione 1.3.0-beta01

24 agosto 2022

androidx.compose.foundation:foundation:1.3.0-beta01 e androidx.compose.foundation:foundation-layout:1.3.0-beta01 vengono rilasciati. La versione 1.3.0-beta01 contiene questi commit.

Modifiche all'API

  • pointerPosition è stato rimosso da OverscrollEffect: gli effetti che si basano sulla posizione del cursore possono utilizzare Modifier.pointerInput { } in effectModifier per ottenere la posizione corrente del cursore. (I9f606, b/241239306)
  • È stato esposto AwaitPointerEventScope#awaitLongPressOrCancellation come componente aggiuntivo per il rilevamento dei gesti più complessi (I04374, b/181577176)
  • È stato introdotto lazyListSnapLayoutInfoProvider per attivare l'aggancio in Elenchi lazy. (I3ecdf)
  • È stato introdotto SnapFlingBehavior, un comportamento di lancio che consente l'aggancio dell'elenco. Fornisci un'istanza di SnapLayoutInfoProvider con informazioni sul layout di agganci. (Ie754c)

Versione 1.3.0-alpha03

10 agosto 2022

androidx.compose.foundation:foundation:1.3.0-alpha03 e androidx.compose.foundation:foundation-layout:1.3.0-alpha03 vengono rilasciati. La versione 1.3.0-alpha03 contiene questi commit.

Modifiche all'API

  • I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26 e versioni successive). (I900dd, b/143703328)
  • Supporto dei caratteri variabili in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • È stata rimossa l'annotazione sperimentale da PlatformTextStyle e LineHeightStyle. (I64bef)
  • Ora i campi di testo generano eccezioni più dettagliate quando l'OffsetMapping fornito da un VisualTransformation restituisce indici non validi. (Ie73f9, b/229378536)
  • Introduzione di API sperimentali per condividere la logica del provider di elementi tra i layout lazy. (Ic891c)
  • ScrollableDefaults.reverseDirection() non è più sperimentale. (Iba646)
  • È stato ritirato SemanticsModifier.id e l'ID semantica è stato spostato in LayoutInfo.semanticsId. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() non è più sperimentale. (I2c290)
  • Modifier.clipScrollableContainer() non è più sperimentale. (Ia2b44)
  • Rifiuta TextInputService.show|hideSoftwareKeyboard. Utilizza SoftwareKeyboardController nel codice dell'app e TextInputSession nel codice di gestione dell'IME. (I14e4c, b/183448615)

Versione 1.3.0-alpha02

27 luglio 2022

androidx.compose.foundation:foundation:1.3.0-alpha02 e androidx.compose.foundation:foundation-layout:1.3.0-alpha02 vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stata aggiunta la funzione di estensione drawText in DrawScope per fornire un modo per disegnare testo con più stili su composabili e modificatori che operano su un DrawScope come Canvas e drawBehind. (I16a62, b/190787898)

Correzioni di bug

  • Ora la tastiera virtuale viene nascosta quando un campo di testo viene disattivato mentre è attivo. (I6e3e4, b/237308379)
  • Quando aggiungi gli eventi InputEventChange a Tracker della velocità, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803)
  • Quando un elemento scorrevole ha un elemento secondario attivo, ora scorrerà correttamente per mantenere visibile l'elemento secondario attivo quando le sue dimensioni diminuiscono, anche se le dimensioni sono animate. (I80867, b/230756508, b/220119990)
  • È stato corretto un arresto anomalo in cui TextField viene cancellato e riempito mentre la selezione è attiva. (I1235b, b/208655565, b/214253689)

Versione 1.3.0-alpha01

29 giugno 2022

androidx.compose.foundation:foundation:1.3.0-alpha01 e androidx.compose.foundation:foundation-layout:1.3.0-alpha01 vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.

Modifiche all'API

  • È stato introdotto il tipo di annotazione UrlAnnotation e i metodi associati per supportare il collegamento TalkBack in AnnotatedString. (I1c754, b/231495122)

Correzioni di bug

  • Ora BasicTextField cursorBrush può essere animato senza riavviare il timer del cursore. (I812e6, b/236383522)

Versione 1.2

Versione 1.2.1

10 agosto 2022

androidx.compose.foundation:foundation:1.2.1 e androidx.compose.foundation:foundation-layout:1.2.1 vengono rilasciati. La versione 1.2.1 contiene questi commit.

Versione 1.2.0

27 luglio 2022

androidx.compose.foundation:foundation:1.2.0 e androidx.compose.foundation:foundation-layout:1.2.0 vengono rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • LazyVerticalGrid e LazyHorizontalGrid ora sono stabili.
  • Ora puoi specificare un tipo di contenuti per gli elementi nelle griglie e negli elenchi lazy. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
  • Le griglie e gli elenchi lazy ora hanno il parametro userScrollEnabled che consente di disattivare lo scorrimento tramite i gesti dell'utente.
  • È stata aggiunta una nuova API sperimentale denominata LazyLayout. È l'API che utilizziamo internamente per supportare le griglie e gli elenchi lazy.
  • L'API OverscrollEffect è stata introdotta come sperimentale. Puoi definire effetti di scorrimento personalizzati, nonché aggiungere un effetto standard della piattaforma ai contenitori scorrevoli personalizzati.
  • Sono state introdotte le API di interoperabilità con scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e comporre gli attori di scorrimento.
  • Lo scorrimento del mouse e del trackpad è stato aggiunto a tutti i contenitori con scorrimento.

Versione 1.2.0-rc03

29 giugno 2022

androidx.compose.foundation:foundation:1.2.0-rc03 e androidx.compose.foundation:foundation-layout:1.2.0-rc03 vengono rilasciati. La versione 1.2.0-rc03 contiene questi commit.

  • Nessuna modifica dalla versione 1.2.0-rc02.

Versione 1.2.0-rc02

22 giugno 2022

androidx.compose.foundation:foundation:1.2.0-rc02 e androidx.compose.foundation:foundation-layout:1.2.0-rc02 vengono rilasciati. La versione 1.2.0-rc02 contiene questi commit.

Versione 1.2.0-rc01

15 giugno 2022

androidx.compose.foundation:foundation:1.2.0-rc01 e androidx.compose.foundation:foundation-layout:1.2.0-rc01 vengono rilasciati. La versione 1.2.0-rc01 contiene questi commit.

Modifiche all'API

  • È stato introdotto un OverscrollEffect sperimentale per consentire effetti di scorrimento personalizzati, oltre ai sovraccarichi di Modifier.scrollable che lo accettano.
  • La versione sperimentale LocalOverScrollConfiguration è stata spostata da foundation.gesture al pacchetto di base e rinominata in LocalOverscrollConfiguration (If19fb, b/204650733)
  • Le interfacce nelle librerie di composizione ora vengono create utilizzando i metodi di interfaccia predefiniti di JDK8 (I5bcf1)
  • È stata introdotta un'API sperimentale checkScrollableContainerConstraints() che consente di verificare che non vengano nidificati contenitori scorrevoli. Puoi utilizzarlo per creare layout lazy scorrevoli tramite LazyLayout. (Id6fab, b/233352497)
  • LazyVerticalGrid deprecato è stato rimosso dal pacchetto androidx.compose.foundation.lazy. La nuova API stabile si trova in androidx.compose.foundation.lazy.grid (I73c76, b/225192009)

Versione 1.2.0-beta03

1° giugno 2022

androidx.compose.foundation:foundation:1.2.0-beta03 e androidx.compose.foundation:foundation-layout:1.2.0-beta03 vengono rilasciati. La versione 1.2.0-beta03 contiene questi commit.

Modifiche all'API

  • Sono stati aggiunti nuovi IntervalList e MutableIntervalList sperimentali. Consente di rappresentare un elenco di valori tramite più intervalli. Sarà utile quando vuoi definire il tuo DSL simile a quello utilizzato da LazyColumn, in cui gli elementi dell'elenco possono essere definiti tramite più chiamate item/items. (I2d05e, b/228580728)

Correzioni di bug

  • È stata chiarita la documentazione relativa a WindowInsets.ime per indicare che gli inserti ime vengono segnalati fin dall'API 23, ma solo animati a partire dalla versione 30. (Ia7fc0, b/230756508)
  • La pressione del tasto Elimina avanti quando il cursore si trova alla fine di un campo di testo non causerà più arresti anomali.
  • Ora DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand richiedono che gli argomenti del costruttore siano non negativi. (Ica8e6, b/199919707)

Versione 1.2.0-beta02

18 maggio 2022

androidx.compose.foundation:foundation:1.2.0-beta02 e androidx.compose.foundation:foundation-layout:1.2.0-beta02 vengono rilasciati. La versione 1.2.0-beta02 contiene questi commit.

  • In precedenza, la risoluzione dei caratteri scaricabili che non modificava le dimensioni del layout del testo o di TextField non veniva ridisegnato, il che causava la visualizzazione obsoleta dei caratteri. Questa correzione di bug garantisce che il layout del testo attivi sempre il ricalcolo (b/229727404). (I1d49e, b/229727404)

Versione 1.2.0-beta01

11 maggio 2022

androidx.compose.foundation:foundation:1.2.0-beta01 e androidx.compose.foundation:foundation-layout:1.2.0-beta01 vengono rilasciati. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • Questa è la prima release beta di 1.2.

Modifiche all'API

  • È stato aggiunto BeyondBoundsInterval sperimentale che può essere utilizzato da implementazioni personalizzate di LazyList quando il layout degli elementi supera i limiti visibili (Ifabfb, b/184670295)
  • LineHeightBehavior è stato rinominato LineHeightStyle
  • LineVerticalAlignment è stato rinominato LineHeightStyle.Alignment
  • LineHeightTrim viene rinominato LineHeightStyle.Trim
  • I valori del costruttore predefinito di LineHeightStyle vengono rimossi (I582bf, b/181155707)
  • Sono stati aggiunti valori predefiniti per i membri facoltativi dell'interfaccia LazyLayoutItemProvider. (Iba8a0)
  • Nell'API LazyLayoutItemProvider, anziché una factory che restituisce la lambda componibile per indice, ora abbiamo una funzione componibile più semplice che accetta l'indice. (Id2196)
  • LazyLayoutItemsProvider viene rinominato in LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount viene rinominato in itemCount (Id409c)
  • È stato aggiunto il pennello a TextStyle e SpanStyle per fornire un modo per disegnare il testo con colorazione sfumata. (I53869, b/187839528)
  • Gli attributi trimFirstLineTop e trimLastLineBottom di LineHeightBehavior sono stati sostituiti da un'unica enumerazione: LineHeightTrim. LineHeightTrim ha valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)
  • È stato aggiunto LineHeightBehavior a TextStyle e ParagraphStyle. LineHeightBehavior per controllare se l'altezza della linea viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della riga nello spazio fornito da TextStyle(lineHeight).

    Ad esempio, è possibile ottenere un comportamento simile a quello definito da CSS tramite LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • trimFirstLineTop, le configurazioni trimLastLineBottom funzionano correttamente solo quando includeFontPadding è false. (I97332, b/181155707)

  • È stato aggiunto il modificatore sperimentale imeNestedScroll() per consentire agli sviluppatori di controllare l'IME tramite lo scorrimento. (I60759)

Correzioni di bug

  • È stata corretta la regressione per cui i campi di testo non nascondevano la tastiera quando venivano rimossi dalla composizione mentre erano attivi. (I7a410, b/230536793, b/225541817)
  • Supporto dei puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView verrà ora sempre sospesa fino al completamento della richiesta o all'interruzione da parte di una richiesta più recente non sovrapposta. Le richieste in sovrapposizione verranno messe in coda. (I43e7f, b/216790855)
  • Le chiamate BringIntoViewRequester.bringIntoView simultanee per rettangoli completamente sovrapposti ora rispetteranno solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918)
  • È stata attivata l'impostazione predefinita includeFontPadding. È possibile disattivare includeFontPadding utilizzando l'attributo TextStyle.platformTextStyle. In futuro cambieremo il comportamento predefinito, ma fino ad allora questa impostazione ci consente di integrare meglio i miglioramenti dell'altezza della riga (aosp/2058653) e risolvere i problemi di ritaglio TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester non utilizza più onGloballyPositioned. (I630f5)

Contributo esterno

  • MouseInjectionScope.scroll(delta = someDelta) ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, lo scorrimento avviene verso il basso) (Ifb697, b/224992993)

Versione 1.2.0-alpha08

20 aprile 2022

androidx.compose.foundation:foundation:1.2.0-alpha08 e androidx.compose.foundation:foundation-layout:1.2.0-alpha08 vengono rilasciati. La versione 1.2.0-alpha08 contiene questi commit.

Modifiche all'API

  • Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi FontFamily.SansSerif. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium nell'API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 nell'API 21-28. (I380fe, b/156048036, b/226441992)
  • Paragraph e MultiParagraph ora accettano il parametro Constraints. Al momento, il passaggio di Constraints.maxHeight non ha alcun effetto, ma in futuro consentirà di eseguire alcuni calcoli, ad esempio l'ellittica in base all'altezza. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ora accetta una classe personalizzata simile a MutableSet che non consente di aggiungere nuovi elementi. (Icd314)
  • Il consumo parziale (posizione OR verso il basso) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per consumare completamente la modifica. Puoi utilizzare isConsumed per determinare se qualcun altro ha già utilizzato la modifica.
  • PointerInputChange::copy() ora crea sempre una copia superficiale. Ciò significa che le copie di PointerInputChange verranno consumate una volta consumata una delle copie. Se vuoi creare un PointerInputChange non vincolato, utilizza il costruttore. (Ie6be4, b/225669674)
  • È stata introdotta la nuova API sperimentale LazyLayout. In questo modo puoi creare i tuoi componenti, ad esempio LazyColumn di LazyVerticalGrid. Tieni presente che l'API è nelle sue fasi iniziali e può essere modificata nelle release future. (Iba2bc, b/166591700)
  • AndroidFont ora accetta typefaceLoader come parametro del costruttore. (I2c971)
  • La funzionalità complementare WindowInsets ora mostra la visibilità (se sono sullo schermo, indipendentemente dal fatto che si intersechino con la finestra) e le dimensioni che potrebbero avere se sono disponibili sul dispositivo, ma non sono attualmente attive. (I65182, b/217770337)

Versione 1.2.0-alpha07

6 aprile 2022

androidx.compose.foundation:foundation:1.2.0-alpha07 e androidx.compose.foundation:foundation-layout:1.2.0-alpha07 vengono rilasciati. La versione 1.2.0-alpha07 contiene questi commit.

Modifiche all'API

  • È stata aggiunta un'API PinnableParent che consente ai componenti secondari dei layout lazy di impedire lo smaltimento degli elementi attualmente composti (Ibbdd0, b/184670295)
  • LazyListLayoutInfo e LazyGridLayoutInfo ora hanno i campi beforeContentPadding e afterContentPadding (I3b628, b/200920410)
  • È stato aggiunto KeyboardType.Decimal come alternativa a Keyboard.Number per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363)
  • Aggiungi un nuovo descrittore di caratteri Font(DeviceFontFamilyName) per eseguire la ricerca facoltativa dei caratteri installati nel sistema durante le catene di fallback dei caratteri. (I30468, b/219754572)
  • PointerEventType.Scroll e PointerEvent.scrollDelta sono ora API stabili (I574c5, b/225669674)
  • La configurazione di compatibilità temporanea aggiunta per includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding può essere modificata tramite TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Si tratta di un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808)
  • FontFamily.Resolver è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)
  • La proprietà di estensione consumeWindowInsets di ComposeView consente agli sviluppatori di disattivare il consumo di WindowInsets di Android. In questo modo, ogni ComposeViews separato nella gerarchia può applicare WindowInsets senza interferire con gli altri. (I0ef08, b/220943142)

Versione 1.2.0-alpha06

23 marzo 2022

androidx.compose.foundation:foundation:1.2.0-alpha06 e androidx.compose.foundation:foundation-layout:1.2.0-alpha06 vengono rilasciati. La versione 1.2.0-alpha06 contiene questi commit.

Modifiche all'API

  • È stata aggiunta l'azione di semantica RequestFocus per richiedere lo stato attivo sul target attivo. (I17b71)
  • FocusOrder è stato unito a FocusProperties e focusProperties() ora dispone di tutte le funzionalità di focusOrder(). FocusOrder e focusOrder() sono stati ritirati. focusOrder() che accetta un focusRequester deve essere sostituito con un modificatore focusRequester() in combinazione con focusProperties(). In questo modo, i modificatori hanno una separazione delle preoccupazioni più efficace. (I601b7)
  • WindowInsets.asPaddingValues(Density) è stato aggiunto per consentire agli sviluppatori di eseguire la conversione senza dover essere in modalità di composizione. (I94c35)
  • Analisi aggiornata degli elementi drawable vettoriali per supportare il mirroring automatico in modo da capovolgere i contenuti di un VectorPainter se l'orientamento del layout corrente è RTL. (I79cd9, b/185760237)

Correzioni di bug

  • Ora i modificatori di scorrimento (Modifier.verticalScroll(), Modifier.horizontalScroll() e Modifier.scrollable()) scorreranno per mantenere visibile il composable attivo se le dimensioni dell'area di scorrimento vengono modificate e il composable attivo era precedentemente visibile.
  • Ora i campi di testo verranno mantenuti sopra la tastiera quando sono attivi e la tastiera è visibile, quando si trovano all'interno di un elemento scorrevole non lazy e la modalità di immissione soft è ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Versione 1.2.0-alpha05

9 marzo 2022

androidx.compose.foundation:foundation:1.2.0-alpha05 e androidx.compose.foundation:foundation-layout:1.2.0-alpha05 vengono rilasciati. La versione 1.2.0-alpha05 contiene questi commit.

Modifiche all'API

  • LazyVerticalGrid e LazyHorizontalGrid ora sono stabili. (I307c0)
  • LazyGridItemInfo.Unknown è stato sostituito da LazyGridItemInfo.UnknownRow e LazyGridItemInfo.UnknownColumn separati (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid e tutte le API correlate sono state spostate nel sottopacchetto .grid. Aggiorna le importazioni da androidx.compose.foundation.lazy a androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Testo: includeFontPadding è ora disattivato per impostazione predefinita. I problemi di ritaglio dovuti a includeFontPadding=false vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808)
  • L'interfaccia misurata ora espone la proprietà parentData (I3313f)
  • È stato introdotto Modifier.onFocusedBoundsChanged sperimentale per consentire di osservare i limiti degli elementi figlio che possono essere attivati. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • È stata aggiunta la classe LazyHorizontalGrid. (I61ae7, b/191238807)
  • È stata aggiunta una nuova API LazyVerticalGrid per definire le dimensioni delle assi trasversali (I17723)
  • È stato aggiunto il modificatore FocusGroup (I64bc0, b/213508274, b/184670295)

Correzioni di bug

  • WindowInsets.toString() ora mostrerà i valori corretti. (I1585d)

Contributo esterno

  • Aggiornamento per l'utilizzo di Kotlinx coroutines 1.6.0 (I3366d)

Versione 1.2.0-alpha04

23 febbraio 2022

androidx.compose.foundation:foundation:1.2.0-alpha04 e androidx.compose.foundation:foundation-layout:1.2.0-alpha04 vengono rilasciati. La versione 1.2.0-alpha04 contiene questi commit.

Modifiche all'API

  • BringIntoViewResponders non è più necessario riemettere manualmente le richieste ai responsabili principali, ma deve restituire immediatamente il rettangolo che vuole che il responsabile principale mostri. (I8e66a)
  • Supporto del caricamento dei caratteri asincroni in Testo (I77057, b/214587005)
  • LazyVerticalGrid ora supporta line breaking prima degli elementi con un'ampiezza non adatta alla riga corrente. (I05c40, b/207462103)
  • excludeFromSystemGestures rinominato in systemGesturesExclusion (I19526)
  • LazyVerticalGrid ora supporta reverseLayout. (I6d7d7, b/215572963, b/211753558)
  • Aggiungi il metodo WindowInsets.only() per consentire agli sviluppatori di includere solo le dimensioni di WindowInsets. (I14c94, b/217768486)
  • Sono stati aggiunti ComposableTarget, ComposableTargetMarker e ComposableOpenTarget che consentono di generare report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per il quale non è stata progettata.

    Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore di compose, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni composable astratte (come metodi di interface), campi o variabili globali che sono lambda composable (le variabili e i parametri locali vengono dedotti), o quando si utilizza ComposeNode o una funzione composable correlata.

    Per gli applicatori personalizzati, le funzioni composable che chiamano ComposeNode o ReusableComposeNode devono aggiungere un'annotazione CompoableTarget per la funzione e per eventuali tipi di parametri lambda composable. Tuttavia, è consigliabile creare un'annotazione annotata con ComposableTargetMarker e poi utilizzare l'annotazione contrassegnata anziché ComposableTarget direttamente. Un'annotazione componibile contrassegnata con ComposableTargetMarker è equivalente a un ComposbleTarget con il nome completo della classe dell'attributo come parametro dell'applicatore. Per un esempio di utilizzo di ComposableTargetMarker, consulta anroidx.compose.ui.UiComposable. (I38f11)

Correzioni di bug

  • Ora è consentito passare offset di scorrimento negativi a LazyGridState.scrollToItem() e LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Supporta il caricamento dei caratteri asincroni per TextField. (Icc4bf, b/214587005)

Versione 1.2.0-alpha03

9 febbraio 2022

androidx.compose.foundation:foundation:1.2.0-alpha03 e androidx.compose.foundation:foundation-layout:1.2.0-alpha03 vengono rilasciati. La versione 1.2.0-alpha03 contiene questi commit.

Modifiche all'API

  • I metodi notifyFocusedRect in TextInputSession e TextInputService sono stati deprecati e non verranno chiamati. Utilizza invece BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Le animazioni sono state attivate per gli elementi delle griglie lazy con Modifier.animateItemPlacement(). (Ib6621, b/211753218)
  • BringIntoViewRequester ora propaga le richieste alla vista Android ospitante. (Ia7a51)
  • FontFamilyResolver è ora disponibile tramite LocalFontFamilyResolver.current
    • Sono stati aggiunti createFontFamilyResolver(context) e createFontFamilyResolver(context, coroutineScope) per creare nuovi resolver FontFamily al di fuori dell'utilizzo di compose.
    • Paragraph e MultiParagraph ora accettano FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver ora contiene il resolver utilizzato per questo layout, ritirato TextLayoutResult.layoutInput.resourceLoader perché non è più utilizzato. (Id5a45, b/174162090)
  • È stata aggiunta AndroidFont, una nuova API di basso livello per fornire nuovi tipi di descrittori di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico per l'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.
    • L'API Font.ResourceLoaded è stata ampliata per supportare il caricamento dei caratteri facoltativo e asincrono. Sconsigliamo agli sviluppatori di applicazioni di utilizzare direttamente questa API. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont.
    • La funzione di estensione Font.AndroidResourceLoader consente di creare un Font.ResourceLoader al di fuori della composizione.
    • È stato aggiunto il parametro loadingStrategy ai caratteri basati su risorse per consentire il caricamento asincrono quando il carattere della risorsa fa riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)
  • Il costruttore Typeface(FontFamily) è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che poteva richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza invece FontFamilyResolver.preload
    • fontResource(FontFamily): Typeface è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che può richiedere fino a 10 secondi per i caratteri scaricabili. Utilizza FontFamilyResolver.preload (If8e7c, b/174162090)
  • Ora puoi specificare il tipo di contenuti per gli elementi di LazyVerticalGrid. Le funzioni item/items in LazyGridScope ora accettano questo parametro. Fornendo queste informazioni, la logica di riutilizzo della composizione degli elementi viene semplificata e i contenuti vengono riutilizzati solo tra gli elementi di tipo simile. (I7b355, b/215372836)
  • LazyListLayoutInfo e LazyGridLayoutInfo ora hanno nuove proprietà: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Ora puoi specificare il tipo di contenuti per gli elementi di LazyColumn/LazyRow: le funzioni item/items su LazyListScope ora accettano questo parametro. Fornendo queste informazioni, la logica di riutilizzo della composizione degli elementi viene semplificata e i contenuti vengono riutilizzati solo tra gli elementi di tipo simile. (I26506)
  • Il costruttore SubcomposeLayoutState che accetta maxSlotsToRetainForReuse è stato ritirato. Esiste invece un nuovo costruttore che accetta SubcomposeSlotReusePolicy, una nuova interfaccia che consente un controllo più granulare sugli slot da conservare per il riutilizzo futuro. (I52c4d)
  • Aggiunge modificatori per WindowInsets, sia per i margini che per le dimensioni. In questo modo, alcuni contenuti possono estendersi nell'area incassata, mentre i contenuti principali rimangono al di fuori di quest'area. Ad esempio, windowInsetsPadding può essere utilizzato per aggiungere spazi all'area dei contenuti per evitare aree che potrebbero essere completamente o parzialmente coperte. (Id0395, b/213942085)

Correzioni di bug

  • Ora i campi di testo verranno mantenuti sopra la tastiera quando sono selezionati e la tastiera è visualizzata, quando la modalità di immissione soft è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Il computer utilizza la composizione locale per FontFamily.Resolver
    • FontLoader per computer è deprecato
    • Nuova versione di fabbrica di createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di immissione della tastiera virtuale non lampeggia più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
  • I campi di testo non richiedono più un'ulteriore pressione del tasto Indietro quando viene visualizzato il cursore. (Ideb4b, b/205726883)
  • Il comportamento della lente d'ingrandimento per la selezione del testo è stato perfezionato in modo da assomigliare a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)

Versione 1.2.0-alpha02

26 gennaio 2022

androidx.compose.foundation:foundation:1.2.0-alpha02 e androidx.compose.foundation:foundation-layout:1.2.0-alpha02 vengono rilasciati. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stato aggiunto NonRestartableComposable ai metodi che sono sovraccarichi di metodi esistenti senza logica complessa. In questo modo, vengono ridotti i controlli di memorizzazione (uguale) generati dal compilatore per tutti i parametri che vengono ripetuti nella funzione interna chiamata. (I90490)
  • Sono stati aggiunti i modificatori excludeFromSystemGesture per accedere facilmente a setSystemGestureExclusionRects di Android (I46f07)

Correzioni di bug

  • Il comportamento della lente d'ingrandimento per la selezione del testo è stato perfezionato in modo da assomigliare a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll e altri contenitori che utilizzano Modifier.scrollable ora supportano lo scorrimento della rotellina del mouse. (I2b5e1, b/198214718)

Versione 1.2.0-alpha01

12 gennaio 2022

androidx.compose.foundation:foundation:1.2.0-alpha01 e androidx.compose.foundation:foundation-layout:1.2.0-alpha01 vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.

Modifiche all'API

  • Il nuovo parametro userScrollEnabled è stato aggiunto a LazyColumn, LazyRow e LazyVerticalGrid per consentire agli utenti di disattivare temporaneamente o definitivamente lo scorrimento avviato dall'utente tramite gesti tocco o azioni di accessibilità. Lo scorrimento tramite programmazione tramite i metodi dello stato sarà comunque consentito. (I7eae9, b/201150093)
  • Aggiungi il callback onSizeChanged al modificatore della lente d'ingrandimento. (I6879f)
  • Il widget della lente d'ingrandimento viene ora visualizzato quando trascini i manici di selezione in un SelectionContainer. (I30b38, b/139320979)

Correzioni di bug

  • È stato corretto il problema relativo al punto di manipolazione del cursore TextField che non si nascondeva quando non era visibile. (I14552, b/208883748)

Aggiornamenti delle dipendenze

  • Ora dipende da Kotlin 1.6.10.

Versione 1.1

Versione 1.1.1

23 febbraio 2022

androidx.compose.foundation:foundation:1.1.1 e androidx.compose.foundation:foundation-layout:1.1.1 vengono rilasciati. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • Correggi NullPointerException il giorno androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • È stato corretto il problema relativo alla formattazione RTL in LazyVerticalGrid (aosp/1931080, b/207510535)

Versione 1.1.0

9 febbraio 2022

androidx.compose.foundation:foundation:1.1.0 e androidx.compose.foundation:foundation-layout:1.1.0 vengono rilasciati. La versione 1.1.0 contiene questi commit.

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto overscroll di Android 12
  • Miglioramenti alle dimensioni dei target di tocco
  • Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante verrà espanso fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, garantendo un comportamento coerente se combini le visualizzazioni e Compose. Questa modifica garantisce inoltre che, quando crei l'interfaccia utente utilizzando i componenti Material di Compose, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
  • Supporto stabile per la barra di navigazione laterale
  • Passa a una versione stabile un certo numero di API precedentemente sperimentali
  • Supporto per le versioni più recenti di Kotlin

Versione 1.1.0-rc03

26 gennaio 2022

androidx.compose.foundation:foundation:1.1.0-rc03 e androidx.compose.foundation:foundation-layout:1.1.0-rc03 vengono rilasciati. La versione 1.1.0-rc03 contiene questi commit.

Correzioni di bug

  • Aggiornamento per il supporto di Compose Material 1.1.0-rc03

Versione 1.1.0-rc01

15 dicembre 2021

androidx.compose.foundation:foundation:1.1.0-rc01 e androidx.compose.foundation:foundation-layout:1.1.0-rc01 vengono rilasciati. La versione 1.1.0-rc01 contiene questi commit.

Correzioni di bug

  • Ora è consentito passare offset di scorrimento negativi a LazyListState.scrollToItem() e LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Risolto un bug che causava la mancata visualizzazione delle azioni di scorrimento dell'accessibilità (I7cbfb)

Versione 1.1.0-beta04

1° dicembre 2021

androidx.compose.foundation:foundation:1.1.0-beta04 e androidx.compose.foundation:foundation-layout:1.1.0-beta04 vengono rilasciati. La versione 1.1.0-beta04 contiene questi commit.

Nuove funzionalità

  • Aggiornata per essere compatibile con Kotlin 1.6.0

Modifiche all'API

  • È stata corretta la presenza di valori null in androidx.core.view(I7078a, b/204917439)
  • Sono state aggiunte API sperimentali che consentono di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d)
  • Mostra un widget di lente d'ingrandimento quando trascini il cursore o i cursori di selezione all'interno dei campi di testo. (I5391e, b/203781358)

Correzioni di bug

  • È stato corretto il problema relativo alla mancata modifica dei cursori del testo quando la visibilità dell'IME cambia. (I25f2e)

Versione 1.1.0-beta03

17 novembre 2021

androidx.compose.foundation:foundation:1.1.0-beta03 e androidx.compose.foundation:foundation-layout:1.1.0-beta03 vengono rilasciati. La versione 1.1.0-beta03 contiene questi commit.

Modifiche all'API

  • È stato aggiunto il supporto degli intervalli orizzontali a LazyVerticalGrid. (I7e2fa, b/176758183)
  • È stata aggiunta la possibilità sperimentale di animare le posizioni degli elementi degli elenchi lazy. In LazyItemScope è disponibile un nuovo modificatore denominato Modifier.animateItemPlacement(). Esempio di utilizzo:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Quando fornisci una chiave tramite LazyListScope.item o LazyListScope.items, questo modificatore attiva le animazioni di ordinamento degli elementi. Oltre al riordino degli elementi, verranno animate anche tutte le altre modifiche di posizione causate da eventi come cambiamenti di organizzazione o allineamento. (I59e7b, b/150812265)

Versione 1.1.0-beta02

3 novembre 2021

androidx.compose.foundation:foundation:1.1.0-beta02 e androidx.compose.foundation:foundation-layout:1.1.0-beta02 vengono rilasciati. La versione 1.1.0-beta02 contiene questi commit.

Correzioni di bug

  • Le increspature e altre indicazioni ora verranno ritardate solo se si trovano all'interno di un contenitore Modifier.scrollable(), anziché essere sempre ritardate per un evento di interruzione. (Ibefe0, b/203141462)
  • È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)

Contributo esterno

  • Modifier.pointerHoverIcon aggiunto (I95f01)

Versione 1.1.0-beta01

27 ottobre 2021

androidx.compose.foundation:foundation:1.1.0-beta01 e androidx.compose.foundation:foundation-layout:1.1.0-beta01 vengono rilasciati. La versione 1.1.0-beta01 contiene questi commit.

Correzioni di bug

  • È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)

Versione 1.1.0-alpha06

13 ottobre 2021

androidx.compose.foundation:foundation:1.1.0-alpha06 e androidx.compose.foundation:foundation-layout:1.1.0-alpha06 vengono rilasciati. La versione 1.1.0-alpha06 contiene questi commit.

Modifiche all'API

  • È stata aggiunta un'overload senza elementi secondari per Layout, con un'efficienza migliorata (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce il valore SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db)
  • È stato aggiunto performScrollToNode(matcher: SemanticsMatcher) che consente di scorrere un contenitore scorrevole fino ai contenuti corrispondenti all'elemento di corrispondenza specificato. (Ic1cb8)

Versione 1.1.0-alpha05

29 settembre 2021

androidx.compose.foundation:foundation:1.1.0-alpha05 e androidx.compose.foundation:foundation-layout:1.1.0-alpha05 vengono rilasciati. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche all'API

Correzioni di bug

  • È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (lazy e non lazy) in relazione allo scorrimento (I6cdb0)

Versione 1.1.0-alpha04

15 settembre 2021

androidx.compose.foundation:foundation:1.1.0-alpha04 e androidx.compose.foundation:foundation-layout:1.1.0-alpha04 vengono rilasciati. La versione 1.1.0-alpha04 contiene questi commit.

Modifiche all'API

  • performGesture e GestureScope sono stati ritirati e sostituiti da performTouchInput e TouchInjectionScope. (Ia5f3f, b/190493367)
  • È stato aggiunto touchBoundsInRoot a SemanticsNode per includere le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214)

Correzioni di bug

  • Il supporto dell'overscroll elastico è stato aggiunto sui dispositivi Android 12. (Iccf3c, b/171682480)

Versione 1.1.0-alpha03

1° settembre 2021

androidx.compose.foundation:foundation:1.1.0-alpha03 e androidx.compose.foundation:foundation-layout:1.1.0-alpha03 vengono rilasciati. La versione 1.1.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Compose 1.1.0-alpha03 è stato aggiornato in modo da dipendere da Kotlin 1.5.30. (I74545)

Modifiche all'API

  • È stato aggiunto l'effetto bagliore per lo scorrimento. È stata aggiunta la nuova API OverScrollConfiguration sperimentale per consentire la configurazione dell'effetto visivo di scorrimento eccessivo. Specifica un valore null per disattivare l'effetto di scorrimento eccessivo. (I0c304, b/171682480)
  • AwaitPointerEventScope ora dispone di withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • È stato aggiunto il metodo di test per ottenere i limiti ritagliati. (I6b28e)
  • È stata aggiunta una dimensione minima del touch target a ViewConfiguration per l'utilizzo nella semantica e nell'input del cursore per garantire l'accessibilità. (Ie861c)

Versione 1.1.0-alpha02

18 agosto 2021

androidx.compose.foundation:foundation:1.1.0-alpha02 e androidx.compose.foundation:foundation-layout:1.1.0-alpha02 vengono rilasciati. La versione 1.1.0-alpha02 contiene questi commit.

Modifiche all'API

  • Sono state aggiunte le versioni DpSize per Modifier.size e requiredSize (I3fc7e, b/194219828)

Versione 1.1.0-alpha01

4 agosto 2021

androidx.compose.foundation:foundation:1.1.0-alpha01 e androidx.compose.foundation:foundation-layout:1.1.0-alpha01 vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.

Modifiche all'API

  • Metodo DrawScope#drawImage aggiornato che utilizza i rettangoli di origine e di destinazione per utilizzare un parametro facoltativo FilterQuality. Questa opzione è utile per l'arte pixel che deve essere pixelata quando viene aumentata di dimensioni per l'arte basata su pixel. È stato aggiornato il composable BitmapPainter + Image per utilizzare anche un parametro facoltativo FilterQuality (Ie4fb0, b/180311607)
  • Ora TextField cancella la selezione quando viene premuto il pulsante Indietro, in modo da corrispondere al comportamento di EditText di Android. (I3ca16, b/174173645)
  • Aggiungi il cursore. (I07a82, b/173016579)

Correzioni di bug

  • Lo scorrimento tramite azioni di semantica per gli elenchi lazy e i componenti con scorrimento regolare ora è animato (Id9066, b/190742024)

Contributo esterno

  • LazyVerticalGrid ora accetta i parametri di organizzazione sia orizzontale che verticale. (If9c92)

Versione 1.0

Versione 1.0.5

3 novembre 2021

androidx.compose.foundation:foundation:1.0.5 e androidx.compose.foundation:foundation-layout:1.0.5 vengono rilasciati. La versione 1.0.5 contiene questi commit.

Correzioni di bug

  • È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)

Versione 1.0.4

13 ottobre 2021

androidx.compose.foundation:foundation:1.0.4 e androidx.compose.foundation:foundation-layout:1.0.4 vengono rilasciati. La versione 1.0.4 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornata per dipendere da Kotlin 1.5.31

Versione 1.0.3

29 settembre 2021

androidx.compose.foundation:foundation:1.0.3 e androidx.compose.foundation:foundation-layout:1.0.3 vengono rilasciati. La versione 1.0.3 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornata per dipendere da Kotlin 1.5.30

Versione 1.0.2

1° settembre 2021

androidx.compose.foundation:foundation:1.0.2 e androidx.compose.foundation:foundation-layout:1.0.2 vengono rilasciati. La versione 1.0.2 contiene questi commit.

Aggiornamento per supportare la release di Compose 1.0.2. Compose 1.0.2 è ancora compatibile con Kotlin 1.5.21.

Versione 1.0.1

4 agosto 2021

androidx.compose.foundation:foundation:1.0.1 e androidx.compose.foundation:foundation-layout:1.0.1 vengono rilasciati. La versione 1.0.1 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornato in modo da dipendere da Kotlin 1.5.21.

Versione 1.0.0

28 luglio 2021

androidx.compose.foundation:foundation:1.0.0 e androidx.compose.foundation:foundation-layout:1.0.0 vengono rilasciati. La versione 1.0.0 contiene questi commit.

Funzionalità principali della versione 1.0.0

Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.

Problemi noti

  • Se utilizzi Android Studio Bumblebee Canary 4 o AGP 7.1.0-alpha04/7.1.0-alpha05, potresti riscontrare il seguente arresto anomalo:

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

    Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o versioni successive nel file build.gradle. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP 7.1. (b/194289155)

Versione 1.0.0-rc02

14 luglio 2021

androidx.compose.foundation:foundation:1.0.0-rc02 e androidx.compose.foundation:foundation-layout:1.0.0-rc02 vengono rilasciati. La versione 1.0.0-rc02 contiene questi commit.

  • Aggiornamento del rendering dei bordi per le forme generiche per risolvere i problemi relativi ai percorsi definiti con dimensioni fisse. (aosp/1748871, b/191817116)

Versione 1.0.0-rc01

1° luglio 2021

androidx.compose.foundation:foundation:1.0.0-rc01 e androidx.compose.foundation:foundation-layout:1.0.0-rc01 vengono rilasciati. La versione 1.0.0-rc01 contiene questi commit.

Modifiche all'API

  • Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)

Correzioni di bug

  • Se il pulsante, la scheda, le caselle di controllo e Modifier.clickable(enabled=false) in generale sono disattivati, i clic non verranno trasmessi all'elemento principale. (Ic2c3b, b/183908811)

Versione 1.0.0-beta09

16 giugno 2021

androidx.compose.foundation:foundation:1.0.0-beta09 e androidx.compose.foundation:foundation-layout:1.0.0-beta09 vengono rilasciati. La versione 1.0.0-beta09 contiene questi commit.

Modifiche all'API

  • ManualFrameClock rimosso. Se devi controllare le animazioni, utilizza composeTestRule.mainClock. (I3c3e8, b/189951065)
  • Modifica l'enum Role e LiveRegionMode in classi in linea con il costruttore privato (Id1890)
  • KeyboardCapitalization viene convertito in una classe in linea. (Id5a1c)
  • TextOverflow viene modificato in un'entità in linea. (I433af)

Correzioni di bug

  • Ora, quando specifichi le chiavi univoche per gli elementi LazyColumn/Row, la posizione di scorrimento verrà mantenuta in base alla chiave, il che significa che se aggiungi/rimuovi elementi prima dell'elemento visibile corrente, l'elemento con la chiave specificata verrà mantenuto come primo visibile. (Id263f, b/184257857)
  • Per il momento le costanti principali sono @ExperimentalComposeUiApi. Il codice di consumo può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
  • È stata aggiunta IdlingStrategy ad AndroidComposeTestRule, che può essere utilizzata dai framework di test per installare un meccanismo alternativo per await o per raggiungere la quiete. Utilizza AndroidComposeTestRule.setIdlingStrategyFactory() prima dell'inizio del test per installare la tua strategia. (I608fa)

Regole del profilo aggiunte

Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):

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

Che cosa sono le regole del profilo?

  • Le regole del profilo per una raccolta sono specificate in un file di testo baseline-prof.txt situato nella directory src/main o equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza a metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile da persone che viene utilizzato quando si utilizza adb shell profman --dump-classes-and-methods .... Queste regole possono assumere una di due forme per scegliere come target metodi o classi.

  • Una regola del metodo avrà il seguente pattern:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Una regola della classe avrà il seguente pattern:

    <CLASS_DESCRIPTOR>
    
  • Qui <FLAGS> è uno o più dei caratteri H, S e P per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".

  • <CLASS_DESCRIPTOR> è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classe androidx.compose.runtime.SlotTable avrà un descrittore Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> è la firma del metodo e include il nome, i tipi di parametro e i tipi di ritorno del metodo. Ad esempio, il metodo fun isPlaced(): Boolean in LayoutNode ha la firma isPlaced()Z.

  • Questi pattern possono contenere caratteri jolly (**, * e ?) per consentire a una singola regola di includere più metodi o classi.

A cosa servono le regole?

  • Un metodo con il flag H indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.

  • Un metodo che ha il flag S indica che si tratta di un metodo chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.

  • Un metodo con il flag P indica che si tratta di un metodo chiamato dopo l'avvio.

  • Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.

Come funziona?

  • Le librerie possono definire queste regole che verranno pacchettizzate negli elementi AAR. Quando viene compilata un'app che include questi elementi, le regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app è installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare il rendimento dell'applicazione, in particolare la prima esecuzione. Tieni presente che questo non avrà alcun effetto sulle applicazioni di debug.

Versione 1.0.0-beta08

2 giugno 2021

androidx.compose.foundation:foundation:1.0.0-beta08 e androidx.compose.foundation:foundation-layout:1.0.0-beta08 vengono rilasciati. La versione 1.0.0-beta08 contiene questi commit.

Modifiche all'API

  • L'enum NestedScrollSource è stato sostituito da una classe in linea. (Ie321b, b/187055290)
  • È stato eseguito il refactoring degli utilizzi degli enum nelle classi in linea per evitare problemi con le istruzioni when esaustive quando vengono aggiunti nuovi valori di enum. (I2b5eb)
  • Aggiunge un timeout per i tocchi agli elementi cliccabili/attivabili/disattivabili per impedire la visualizzazione di un'eco durante lo scorrimento/il trascinamento (Ia2704, b/168524931)
  • Le proprietà ContentDescription e Semantica testo non sono più valori singoli, ma elenchi. In questo modo è possibile unirli così come sono anziché concatenarli. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
  • Modifier.focusModifier() è deprecato e sostituito da Modifier.focusTarget() (I6c860)
  • L'enum KeyboardType è stato sostituito da una classe in linea. (I73045, b/187055290)
  • Enum FocusState sostituito con un'interfaccia FocusState (Iccc1a, b/187055290)
  • L'enum ImeAction è stato sostituito da una classe in linea. (I18be5, b/187055290)
  • Le funzioni AnnotatedString.withAnnotation ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)
    • Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.
  • PaddingValues ora è @Stable anziché @Immutable (I88c50)

Correzioni di bug

  • Correggere gli arresti anomali causati dalla pressione prolungata dell'area vuota in un testo non vuoto. (I33ab5, b/187437299)
  • Mostra barra degli strumenti dopo Seleziona tutto (I495d9, b/185919613)
  • Correzione per i contenitori scorrevoli che ritagliano gli elementi secondari sull'asse trasversale. Era facilmente riproducibile se avevi una LazyRow con elementi Card. Ora l'ombra non verrà ritagliata. (Icb635, b/186318448)
  • È stato risolto un problema per cui a volte le increspature o altre indicazioni si bloccavano su un clic prolungato quando si utilizzava Modifier.combinedClickable (I2298c, b/186223077)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica della posizione, non è necessario chiamare change.consumePositionChange nelle chiamate di callback onDrag (I42fc4, b/185096350, b/187320697)
  • Modifier.onGloballyPositioned() è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno registrate. (Ieb67d, b/177926591)

Versione 1.0.0-beta07

18 maggio 2021

androidx.compose.foundation:foundation:1.0.0-beta07 e androidx.compose.foundation:foundation-layout:1.0.0-beta07 vengono rilasciati. La versione 1.0.0-beta07 contiene questi commit.

Modifiche all'API

  • La logica di precaricamento dell'elemento visibile successivo è stata introdotta per LazyColumn/Row (I8a4bc, b/184940225)
  • È stato aggiunto il cursore di selezione dei clip (Iff80d, b/183408447)

Correzioni di bug

  • Ora LazyColumn/Row manterrà attivi (non eliminati) fino a due elementi precedentemente visibili anche quando non sono visibili. In questo modo, il componente può riutilizzare le sottocomposizioni attive quando dobbiamo comporre un nuovo elemento, il che migliora le prestazioni di scorrimento. (Ie5555)
  • Rimuovi paintBackground. (I38660)
  • Disegna lo sfondo della selezione utilizzando DrawScope. (I73c61, b/186674472)
  • È stata corretta una regressione della versione beta06 che interessava la riga/colonna che utilizzava gli arrangiamenti spacedBy per il layout dei figli ponderati. (Ifaf8c, b/187326588)

Versione 1.0.0-beta06

5 maggio 2021

androidx.compose.foundation:foundation:1.0.0-beta06 e androidx.compose.foundation:foundation-layout:1.0.0-beta06 vengono rilasciati. La versione 1.0.0-beta06 contiene questi commit.

Modifiche all'API

  • Risolvere il conflitto con il gesto di navigazione (I1145e)
  • Sono state aggiunte le API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017)
  • È stato aggiunto SemanticsActions.ScrollToIndex per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice e SemanticsProperties.IndexForKey per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni sono implementate da LazyList.
    • È stato aggiunto SemanticsNodeInteraction.performScrollToIndex che scorra un elenco fino all'indice specificato e SemanticsNodeInteraction.performScrollToKey che scorra un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
  • Supporto per il salvataggio di AnnotatedString in TextFieldValue.Saver. Aggiunta la funzione di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
  • I valori predefiniti dei parametri 0.dp sono stati aggiunti a PaddingValues(horizontal, vertical) (I05571, b/181336792)

Correzioni di bug

  • Le righe e le colonne secondarie con weight(fill = false) non fanno più in modo che la riga principale riempia l'intero spazio dell'asse principale disponibile. (Ied94d, b/186012444, b/184355105)

Versione 1.0.0-beta05

21 aprile 2021

androidx.compose.foundation:foundation:1.0.0-beta05 e androidx.compose.foundation:foundation-layout:1.0.0-beta05 vengono rilasciati. La versione 1.0.0-beta05 contiene questi commit.

Modifiche all'API

  • L'interfaccia FlingBehavior è ora contrassegnata come @Stable. Tutte le implementazioni devono essere conformi al contratto @Stable. (I93354, b/184830577)

Correzioni di bug

  • Sono state corrette le azioni di scorrimento dell'accessibilità per ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. Invece di scorrere fino alla fine della sezione scorrevole, ora verrà visualizzata una schermata nella direzione indicata. (Ieccb0)
  • I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)

Versione 1.0.0-beta04

7 aprile 2021

androidx.compose.foundation:foundation:1.0.0-beta04 e androidx.compose.foundation:foundation-layout:1.0.0-beta04 vengono rilasciati. La versione 1.0.0-beta04 contiene questi commit.

Modifiche all'API

  • Rinomina hideSoftwareKeyboard e showSoftwareKeyboard su SoftwareKeyboardController rispettivamente in hide() e show().
    • Fornisci l'interfaccia CompositionLocal completa per LocalSoftwareKeyboardController, consentendo di impostarla (particolarmente utile nei test) (I579a6)
  • Viene introdotto TextOverflow.Visible. (Ic8f89)
  • Le istanze pubbliche di RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope sono state rimosse. (I4e83e, b/181869067)

Correzioni di bug

  • È stato risolto il problema per cui gli elementi di LazyColumn/LazyRow situati sui bordi erano posizionati in modo errato dopo un movimento rapido (Ie4d13, b/183877420)
  • Prima di questa modifica, le funzioni composable locali erano ignorabili in base ai relativi parametri. Dopo questa modifica, nessuna funzione composable locale verrà saltata. Questa modifica viene apportata perché è normale e previsto che le funzioni locali acquisiscano i parametri dall'elemento principale e il loro salto è una fonte comune di bug.

    Per riepilogare, considera l'esempio:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Prima di questa modifica, la funzione composable ShowCount veniva sempre ignorata, anche dopo l'aggiornamento del parametro count. Abbiamo deciso, tuttavia, di non dare seguito a questa misura. (I5648a)

Versione 1.0.0-beta03

24 marzo 2021

androidx.compose.foundation:foundation:1.0.0-beta03 e androidx.compose.foundation:foundation-layout:1.0.0-beta03 vengono rilasciati. La versione 1.0.0-beta03 contiene questi commit.

Modifiche all'API

  • DefaultMonotonicFrameClock è deprecato. La chiamata a withFrameNanos o Recomposer.runRecomposeAndApplyChanges senza MonotonicFrameClock ora genera un errore IllegalStateException. (I4eb0d)

Correzioni di bug

  • Ora FlingBehavior.performFling() viene chiamato anche quando la velocità è 0 (I0b6e5, b/181237123)

Versione 1.0.0-beta02

10 marzo 2021

androidx.compose.foundation:foundation:1.0.0-beta02 e androidx.compose.foundation:foundation-layout:1.0.0-beta02 vengono rilasciati. La versione 1.0.0-beta02 contiene questi commit.

Modifiche all'API

  • Sono state aggiunte diverse piccole ottimizzazioni nella logica di misurazione di LazyColumn (Ic6889)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I5951e, b/168778053)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I84472, b/168778053)

Correzioni di bug

  • Applicare limitazioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)

Versione 1.0.0-beta01

24 febbraio 2021

androidx.compose.foundation:foundation:1.0.0-beta01 e androidx.compose.foundation:foundation-layout:1.0.0-beta01 vengono rilasciati. La versione 1.0.0-beta01 contiene questi commit.

Questa è la prima release di Compose 1.0.0 Beta.

Modifiche all'API

  • Il callback onStart è stato aggiunto a detectDragGestures (I67269, b/179995594)
  • I modificatori per le dimensioni in base ai valori intrinseci non sono più sperimentali. (I15744)
  • Affermazioni dp rimosse (I798d2)
  • È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per essere sostituito a breve da una nuova API. (Iae869, b/168778053)
  • MeasureBlocks è stato rinominato MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState è stato sostituito da [Mutable]InteractionSource
    • Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
    • Anziché passare interactionState = remember { InteractionState() } a componenti come Button e Modifier.clickable(), utilizza interactionSource = remember { MutableInteractionSource() }.
    • Anziché: Interaction.Pressed in interactionState, devi utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState().
    • Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare lo stream di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Sono stati rimossi i metodi LayoutCoordinates deprecati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
  • È stata creata una nuova TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
  • Ora Placeable espone measuredSize, che rappresenta le dimensioni effettive misurate del layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
  • Aggiunta del modificatore selectionGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
  • Aggiungi LazyListState.animateScrollToItem

    Questo metodo scorre in modo fluido fino a un elemento specifico dell'elenco. (I4bfd7)

  • ScrollableState.smoothScrollBy() è stato rinominato in animateScrollBy() LazyListState.snapToItemIndex() è stato rinominato in scrollToItem() ScrollState.smoothScrollTo() è stato rinominato in animateScrollTo() (I35ded)

  • Modifier.zoomable è stato sostituito da Modifier.transformable. smoothPanBy, smoothRotationBy sono stati aggiunti come funzionalità. (Ifc32b, b/175294473)

  • Il valore defaultFactory per compositionLocalOf e staticCompositionLocalOf ora è obbligatorio anziché facoltativo.

    Queste modifiche rimuovono un potenziale errore di tipo per i tipi non nulli in cui non è stata fornita una fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non null.

    Per i tipi nullable, ti consigliamo di fornire { null } come factory predefinita.

    Sconsigliamo di utilizzare variabili locali con tipi non null se non è possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la funzione lambda defaultFactory deve generare un'eccezione. Tuttavia, se viene lanciata un'eccezione, i consumatori della locale avranno una dipendenza implicita dalla sua indicazione che non viene applicata dal sistema di tipi. (Ifbd2a)

  • Indication#createIndication() è stato modificato in Indication#rememberUpdatedIndication(InteractionState) e il parametro InteractionState è stato rimosso da IndicationInstance#drawIndication(). IndicationInstance deve essere responsabile solo del disegno degli effetti visivi e non dell'avvio di animazioni / stato di scrittura in risposta alle modifiche di InteractionState. Queste animazioni e scritture dello stato devono invece avvenire entro rememberUpdatedIndication(). Anche il parametro indication in Modifier.indication è stato modificato in modo da essere obbligatorio. (Ic1764, b/152525426)

  • Ora le azioni di testo controllano automaticamente lo stato attivo (I13777, b/179648629)

  • runBlockingWithManualClock rimosso (I15cdc, b/179664814)

  • La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con interi (I81298)

  • I pacchetti dei metodi smoothScrollBy e scrollBy sono stati modificati in androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • FlingConfig è stato rinominato in FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché delle decelerazioni predefinite. (I02b86, b/175294473)

  • I modificatori delle taglie sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)

  • defaultMinSizeConstraints è stato rinominato in defaultMinSize. (I4eaae)

  • Modifier.tapGestureFilter è stato rimosso. Utilizza invece Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • Il consumo parziale è stato rimosso dal sistema di input del cursore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)

  • L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è passato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)

  • AnimationClockObservable e le sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)

  • drawerState.open() e drawerState.close() sono ora funzioni di sospensione. Utilizza rememberCoroutineScope() per ottenere l'ambito della composizione da chiamare (I16f60, b/175294473)

  • Providers è stato rinominato in CompositionLocalProvider

    • Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
    • currentCompositeKeyHash è stata trasformata in una proprietà di primo livello componibile anziché in una funzione di primo livello componibile.
    • CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
    • La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
    • Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
    • La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
    • Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
    • La funzione Composer.collectKeySourceInformation è stata rimossa. Non è più necessario.
    • I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
    • Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe file di Kotlin, la compatibilità binaria verrà interrotta, ma non la compatibilità con il codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
    • (I99b7d, b/177245490)
  • Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scrollable anziché la classe ScrollableController (I4f5a5, b/174485541, b/175294473)

  • Modifier.draggable ora accetta DraggableState anziché una semplice lambda. Puoi creare lo stato tramite rememberDraggableState { delta -> } per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)

  • I modificatori requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) sono stati aggiunti per le dimensioni richieste alle dimensioni intrinseche. (I0a6b4)

  • La risorsa deprecata emptyContent() è stata rimossa. Utilizza invece {}. (Idb33f, b/179432510)

  • Sono state eliminate alcune API precedentemente ritirate (Ice5da, b/178633932)

Correzioni di bug

  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I658b6, b/168778053)

Versione 1.0.0-alpha12

10 febbraio 2021

androidx.compose.foundation:foundation:1.0.0-alpha12 e androidx.compose.foundation:foundation-layout:1.0.0-alpha12 vengono rilasciati. La versione 1.0.0-alpha12 contiene questi commit.

Modifiche all'API

  • Modifier.pointerInput ora richiede chiavi di memorizzazione per indicare quando deve essere riavviata la coroutine di rilevamento dell'input del cursore per le nuove dipendenze. (I849cd)
  • Aggiornamento dei test: la funzione hasText() controllerà sia i testi di input che le etichette/suggerimenti/testo segnaposto nel campo di testo (Iab803)
  • È stato aggiunto PaddingValues.Absolute, che può essere utilizzato nelle API che accettano PaddingValues. (Ia5f30)
  • onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
  • Per una migliore corrispondenza delle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato in BitmapPainter per allinearsi a VectorPainter. (Iba381, b/174565889)
  • Miglioramento delle API di test delle sottostringhe con la sottostringa ora come argomento (Icbe78)
  • È stato introdotto un elemento di contesto della coroutine InfiniteAnimationPolicy che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando vengono eseguiti test con ComposeTestRule. (I50ec4, b/151940543)
  • Ora Animatable.snapTo e Animatable.stop sono funzioni di sospensione (If4288)
  • ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
  • I metodi di destrutturazione e copy() sono stati rimossi da diversi classi in cui venivano utilizzati raramente. (I26702, b/178659281)
  • È stato aggiunto il supporto delle chiavi personalizzate per LazyColumn/LazyRow. In questo modo possiamo gestire in modo più intelligente il riordino degli articoli. Pertanto, lo stato memorizzato nei blocchi remember {} si sposta insieme all'elemento quando riordini gli elementi o rimuovi l'elemento dal centro.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • È stato modificato Indication#createInstance in modo che sia @Composable e LocalIndication in modo che contenga un'indicazione, non () -> Indication. (I5eeea, b/157150564)

  • Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)

  • loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Utilizza invece painterResource. (I6b809)

  • Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta lambda che restituiscono valori Float anziché valori Float diretti. (If4a35, b/178657186)

  • Sono state aggiunte le semantiche di EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificarne la semantica (I8e07a)

  • Modifier.clickable ora non supporta i clic doppi e prolungati. Utilizza Modifier.combinedClickable per ottenere questa funzionalità. (Iafad1)

  • toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)

  • IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)

  • Modifier.dragGestureFilter è stato ritirato. Utilizza invece Modifier.pointerInput { detectDragGestures (...)}. In alternativa, utilizza Modifier.draggable per i trascinamenti su un asse (I0ba93, b/175294473)

  • Gli ambienti sono stati rinominati in modo che corrispondano alla ridenominazione di Ambient -> CompositionLocal. Gli ambienti in precedenza si chiamavano AmbientFoo, ora i CompositionLocals si chiamano LocalFoo. (I2d55d)

  • La selezione è stata spostata nella base. (I7892b)

  • Analogamente a come abbiamo rimosso in precedenza il composable state { 0 } e ora promuoviamo l'utilizzo di remember { mutableStateOf(0) }, rimuoveremo il composable savedInstanceState { 0 }. Dovresti utilizzare rememberSaveable { mutableStateOf(0) }, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno di MutableState può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo sovraccarico di rememberSaveable che ha il parametro stateSaver. L'utilizzo sarà simile al seguente: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • È stata aggiunta la semantica della password per l'accessibilità (I231ce)

  • È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)

  • Il tempo di riproduzione nell'animazione ora non è più limitato ai nanosecondi (If776a)

  • @ComposableContract è stato ritirato a favore di tre annotazioni più specifiche.

    @ComposableContract(restartable = false) è diventato @NonRestartableComposable @ComposableContract(readonly = true) è diventato @ReadOnlyComposable @ComposableContract(preventCapture = true) è diventato @DisallowComposableCalls @ComposableContract(tracked = true) è stato rimosso. (I60a9d)

  • Gli strumenti emptyContent() e (@Composable () -> Unit).orEmpty() sono stati ritirati perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d)

  • Ora i ricostruttori possono essere chiusi. I ricostruttori chiusi continueranno la ricostituzione fino al completamento delle coroutine secondarie di composizione. Recomposer.shutDown è stato rinominato in cancel per distinguerlo da close. (Ib6d76)

  • Le API relative a LazyVerticalGrid sono contrassegnate come sperimentali (Ia53e3, b/178519862)

  • rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • RestorableStateHolder è stato rinominato SaveableStateHolder e spostato nel pacchetto androidx.compose.runtime.saveable. Il metodo interno RestorableStateProvider è stato rinominato SaveableStateProvider. Il tipo generico è stato rimosso, quindi puoi semplicemente passare Qualsiasi come chiave. L'annotazione sperimentale non è più necessaria. (I0902e, b/174598702)

  • Saver, listSaver(), mapSaver(), autoSaver sono stati spostati da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)

  • L'elemento artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)

  • Molte API obsolete nel pacchetto ui sono state eliminate. (I2f2dc)

  • L'elemento compose:runtime-dispatch è stato ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher in compose:ui. (Ib5c36)

  • I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da left/right a start/end per supportare lo specchio automatico della forma nella direzione rtl. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato lo specchio automatico. (I61040, b/152756983)

  • La proprietà canDrag è stata rimossa da Modifier.scrollable. (Id66e7, b/175294473)

  • L'API di destinazione del plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.

    Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che comporta la rottura del codice binario. (I3b922, b/169406779)

  • Modifier.scaleGestureFilter è stato rimosso. Utilizza invece Modifier.zoomable. In alternativa, utilizza Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473)

  • AnimatedValue/Float è ora deprecato. Utilizza invece Animatable. (I71345, b/177457083)

    • Sono stati rimossi CoreText e CoreTextField dall'API pubblica
    • È stato rimosso il sovraccarico SelectionContainer obsoleto (I99c19)
  • Rimozione delle funzioni di scorrimento non in sospensione ritirate Proseguendo con le modifiche dell'ultima release, le funzioni di scorrimento non in sospensione sono state rimosse completamente. Converti le funzioni di sospensione con gli stessi nomi. Un ambito coroutine può essere ottenuto tramite rememberCoroutineScope(). (I3d39c, b/178169563)

  • androidx.compose.foundation.layout.ConstraintLayout è stato ritirato a favore di androidx.constraintlayout.compose.ConstraintLayout. Dovrai aggiungere una dipendenza da androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

  • I filtri tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)

  • Recomposer.current() rimosso. [Abstract]Per impostazione predefinita, ComposeView ora utilizza Recomposer con ambito finestra creati in modo lazy e gestiti da ViewTreeLifecycleOwner per la finestra. I tick di animazione basati su recomposition e withFrameNanos vengono messi in pausa quando il ciclo di vita dell'host è interrotto. (I38e11)

  • Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Utilizza questa API anziché Recomposer.current(), che ora è stata ritirata. (If8ebe)

Versione 1.0.0-alpha11

28 gennaio 2021

androidx.compose.foundation:foundation:1.0.0-alpha11 e androidx.compose.foundation:foundation-layout:1.0.0-alpha11 vengono rilasciati. La versione 1.0.0-alpha11 contiene questi commit.

Modifiche all'API

  • Ritirare scrollBy non in sospensione, rimuovere scrollTo non in sospensione

    Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere la fine dello scorrimento. Nell'ambito di questa transizione, stiamo ritirando e/o rimuovendo le versioni non sospese di queste funzioni. (Ie9ced)

  • Ritiro della funzionalità smoothScrollBy non in sospensione Ora consigliamo di utilizzare le funzioni in sospensione per controllare lo scorrimento e attendere il completamento dello scorrimento. Nell'ambito di questa transizione, stiamo ritirando le versioni non in sospensione di queste funzioni. (I12880)

  • Il parametro Descrizione dei contenuti è stato aggiunto a Immagine e Icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)

  • BasicTextField ha ricevuto un nuovo parametro denominato "decorationBox". Consente di aggiungere decorazioni come icone, segnaposto, etichette e simili al campo di testo e di aumentare l'area target di hit. (I16996)

  • Il parametro canDrag è stato rimosso da Modifier.draggable (Ic4bec, b/175294473)

  • AnimatedFloat.fling che accetta FlingConfig è stato rimosso. Utilizza invece suspend Animatable.animateDecay. (I4659b, b/177457083)

  • data class è stato rimosso dai seguenti corsi:

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • ora è possibile creare elementi cliccabili, attivabili/disattivabili e selezionabili al di fuori della composizione (I0a130, b/172938345, b/175294473)

  • Le colonne/le righe scorrevoli sono state ritirate. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai contenuti di scorrimento di grandi dimensioni, perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino un metodo inefficace, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e di promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non avere bisogno del comportamento lazy e utilizzare direttamente i modificatori come questo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Nuovo metodo di fabbrica items(count: Int) per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) e itemsIndexed(items: List) sono ora funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi sovraccarichi dell'estensione per gli array: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)

  • L'attributo deprecato AbsoluteArrangement è stato rimosso. (Iffa96, b/177641870)

  • Il parametro propagateMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere trasmessi o meno ai contenuti della casella. Il valore predefinito è false. (I0125b, b/152613457)

Correzioni di bug

  • onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
  • Con vincoli è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
  • Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface

    • Sono state aggiunte funzioni di fabbrica che iniziano con una lettera maiuscola
    • Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
    • Le nuove funzioni di fabbrica restituiscono la famiglia di caratteri anziché le sottoclassi
    • Sono stati nascosti i costruttori delle sottoclassi, in modo che possano essere costruiti solo tramite funzioni di fabbrica.
    • Rinominato Font.asFontFamily in Font.toFontFamily
    • (I42aa7)
  • È stato introdotto ComposeContentTestRule, che estende ComposeTestRule e definisce setContent, che è stato rimosso da ComposeTestRule. È stato aggiunto un metodo di fabbrica createEmptyComposeRule() che restituisce un ComposeTestRule e non avvia un'attività per lo sviluppatore. Da utilizzare quando vuoi avviare l'attività durante il test, ad esempio utilizzando ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState ora è animateFooAsState, dove Foo è il tipo della variabile da animare, ad esempio Float, Dp, Offset e così via (Ie7e25)

  • La densità ora è l'ambito del ricevitore per le interfacce di Arrangement. (I18aad)

  • TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata.

    • initial è stato rimosso dai parametri del costruttore EditingBuffer. (I326d5)
  • invalidate e compositionReference() sono ora deprecati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)

  • AnnotatedString viene modificato in modo da estendere kotlin.CharSequence. Pertanto, length e subSequence ora sono funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429)

  • La durata e il tempo di attività verranno sostituiti da Long millisecondi e questo passaggio rimuove la dipendenza dell'input del cursore da queste classi. (Ia33b2, b/175142755, b/177420019)

  • RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora deprecato.

    RememberObserver sostituisce CompositionLifecycleObserver con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, che è la prassi consigliata e continuerà a esserlo. Tuttavia, se un riferimento è stato memorizzato più volte in una composizione, onRemembered viene chiamato per ogni riferimento, mentre onEnter viene chiamato una sola volta. onEnter è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, come WithConstraints e Scaffold, rendendo inaffidabile la singola chiamata onEnter, che è stata rimossa per RememberObserver.

    RememberObserver aggiunge onAbandoned, che viene chiamato se l'istanza RememberObserver viene restituita dal callback passato a remember, ma non è stata memorizzata nello stato della composizione e, pertanto, non verrà mai chiamato onRemembered. Ciò può accadere se un'eccezione termina la composizione prima del completamento o se la composizione viene ignorata perché lo stato per cui è stata prodotta non è più attuale o non è più necessario. Se l'istanza di RememberObserver che segue il singolo consiglio di riferimento riportato sopra monitora una risorsa esterna, onForgotten e onAbandoned indicano entrambi che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro avviato o le risorse allocate in onRemembered, onAbandoned può essere ignorato perché non verrà chiamato se viene chiamato onRemembered. (I02c36)

  • Rinomina di TransformedText.transformedText in TransformedText.text

    • TransformedText non è più una classe di dati (Ie672a)
  • Le seguenti classi non sono più classi di dati:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Sono stati rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)

  • Sono stati ritirati i metodi di coordinate globali e sono stati creati nuovi metodi di coordinate basati su finestre. (Iee284)

  • Utilizza ImeAction.None anziché ImeAction.NoAction

    • Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
  • FocusRequester.createRefs è ora contrassegnato come sperimentale perché potrebbe cambiare. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)

  • È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)

  • Utilizza TestCoroutineDispatcher nei test (I532b6)

  • È stato rimosso PointerInputData e modificato PointerInputChange per assegnargli tutti i campi di PointerInputData. È stato reso interno PointerInputEvent e PointerInputEventData perché non vengono utilizzati in alcuna API pubblica. (Ifff97, b/175142755)

  • TextInputService.onStateUpdated è stato rinominato in updateState (Id4853)

  • Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o della finestra. (I62db4)

Versione 1.0.0-alpha10

13 gennaio 2021

androidx.compose.foundation:foundation:1.0.0-alpha10 e androidx.compose.foundation:foundation-layout:1.0.0-alpha10 vengono rilasciati. La versione 1.0.0-alpha10 contiene questi commit.

Modifiche all'API

  • ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
  • Modifiche all'API VisualTransformation
    • OffsetMap è stato rinominato in OffsetMapping
    • È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
    • PasswordTransformation non è più un data-class
    • OffsetMapping è stato spostato in un file dedicato
    • (I0bdf3)
  • Modifiche all'API EditOperations
    • La classe EditOperation è stata rinominata in EditCommand
    • È stato aggiunto il suffisso Command per le implementazioni concrete di EditOperation
    • I comandi di modifica non sono più classi di dati
    • La funzione EditOperation.process è stata rinominata in applyTo
    • Rinomina di InputEventListener in InputEventCallback
    • (I0a366)
  • Velocità modificata per includere componenti e operazioni matematiche. (Ib0447)
  • @ExperimentalTesting è stato rinominato in @ExperimentalTestApi per essere coerente con le annotazioni delle API sperimentali simili (Ia4502, b/171464963)
  • È stato aggiunto il metodo sperimentale stickyHeader per LazyColumn/LazyRow (I0a81d)
  • È stato rinominato Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher è stato ritirato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
  • Aggiungi il pulsante di attivazione/disattivazione a Strings.kt di base (I4a5b7, b/172366489)
  • nativeClass è stato spostato nel modulo UI e reso interno. Sono stati aggiornati gli utilizzi di nativeClass nelle implementazioni di equals in modo da utilizzare "è MyClass". (I4f734)
  • FlowRow e FlowColumn sono stati ritirati. Utilizza invece un layout personalizzato. (I09027)
  • Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • È stato introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
  • Modificata la richiesta da fun Dp.isFinite() a val Dp.isFinite (I50e00)
  • Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
  • Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi in linea con una costante Unspecified. (I93f7b, b/174310811)

Correzioni di bug

  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le animazioni. Nuovo DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale (I820f2, b/168014930)
  • È stato aggiunto il supporto per i campi di testo disattivati e di sola lettura (I35279, b/171040474, b/166478534)
  • animate() viene ora sostituito con animateAsState(), che restituisce un State<T> anziché T. Ciò consente un miglior rendimento, in quanto l'ambito dell'invalidazione può essere ridotto al punto in cui viene letto il valore di Stato. (Ib179e)
  • Aggiungi l'API di ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier, che è selezionabile, attivabile e disattivabile. È stato modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
  • Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)

Versione 1.0.0-alpha09

16 dicembre 2020

androidx.compose.foundation:foundation:1.0.0-alpha09 e androidx.compose.foundation:foundation-layout:1.0.0-alpha09 vengono rilasciati. La versione 1.0.0-alpha09 contiene questi commit.

Modifiche all'API

  • Aggiungere un'interfaccia scorrevole

    In questo modo, ScrollState e LazyListState possono essere trattati come un tipo comune, consentendo di implementare lo scorrimento personalizzato in entrambi i tipi.

    Inoltre, sposta smoothScrollBy in una funzione di estensione su Scrollable, sfruttando questa funzionalità. (I2153b)

  • È stato aggiunto LazyVerticalGrid. (I17267, b/162213211)

  • Ritiro di LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)

  • Per la sospensione delle API di input del cursore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)

  • È stato aggiunto LazyListState.layoutInfo, che espone l'elenco delle dimensioni e degli offset degli elementi attualmente visibili (If8678, b/170472532)

  • È stata rimossa l'annotazione ExperimentalPointerInput (Ia7a24)

  • È stato aggiunto il supporto di InteractionState per i campi di testo. (I61d91)

  • Aggiungi il parametro reverseLayout per LazyColumn/Row. Quando true gli elementi verranno composti dal basso verso l'alto e LazyListState.firstVisibleItemIndex == 0 significherà che il primo elemento si trova in basso. (I552ae, b/166589935)

  • Il parametro verticalArrangement è stato aggiunto per LazyColumn. È stato aggiunto il parametro orizzontalArrangement per LazyRow. La disposizione ci consente di aggiungere spaziatura tra gli elementi e di specificare la loro disposizione quando non ne abbiamo a sufficienza per riempire l'intera dimensione minima. (Icf79a, b/170394300)

  • Ora detectMultitouchGestures utilizza un callback con parametri combinati di centro, panoramica, zoom e rotazione. (Ie6e1c)

  • È stato spostato ContentDrawScope nel modulo ui-graphics per essere associato a DrawScope. (Iee043, b/173832789)

Correzioni di bug

  • Le lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
  • Sono stati rimossi SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza erano contrassegnati come InternalComposeAPI. Ora sono interne al modulo di composizione.

    CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Sono pubblici, ma non sono destinati all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c)

  • È stato eseguito il refactoring di ShaderBrush per creare in modo lazy un'istanza di shader quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Questo è utile per definire gradienti che occupano l'intero spazio di disegno di un composable al momento della composizione, senza dover implementare DrawModifier personalizzati.

    API del costruttore della funzione di gradiente ritirate in favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)

  • Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)

  • Aggiunta di dichiarazioni di scomposizione per creare istanze di FocusRequester (I35d84, b/174817008)

  • accessibilityLabel è stata rinominata contentDescription. accessibilityValue è stata rinominata stateDescription. (I250f2)

  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar e inoltre è stata rinominata la funzione onPositionChange in notifyPositionChange. (Ifbaf7)

  • AndroidOwner impostato come interno (Ibcad0, b/170296980)

  • Nuova funzione infiniteRepeatable per la creazione di un'istanza InfiniteRepeatableSpec (I668e5)

  • L'interfaccia Applier è cambiata per semplificare la creazione degli alberi dal basso verso l'alto anziché dal basso verso l'alto.

    Il metodo insert() è stato rinominato in insertTopDown().

    È stato aggiunto un nuovo metodo, insertBottomUp().

    Un applicatore inserisce i nodi nell'albero in modifica utilizzando insertTopDown() o insertBottomUp(), a seconda di quale ha un rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da creare dal basso verso l'alto rispetto a quelli dall'alto verso il basso. Prima di questa modifica, era necessario un insieme di inserimenti per implementare il metodo dal basso verso l'alto, che doveva essere copiato in ogni applicatore che aveva bisogno di una costruzione dal basso verso l'alto per le prestazioni. Con questa modifica, un Applier sostituisce insertBottomUp() per creare un albero dal basso verso l'alto e insertTopDown() per creare l'albero dall'alto verso il basso. (Icbdc2)

  • È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i file PNG) o da VectorDrawables. I consumatori non devono più determinare il tipo di asset in anticipo e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composabili di immagini o nei modificatori di pittura. (I2c703, b/173818471)

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare un oggetto AnnotatedString. Funzione di compilatore annotatedString ritirata. (Idfe0b)

Versione 1.0.0-alpha08

2 dicembre 2020

androidx.compose.foundation:foundation:1.0.0-alpha08 e androidx.compose.foundation:foundation-layout:1.0.0-alpha08 vengono rilasciati. La versione 1.0.0-alpha08 contiene questi commit.

Modifiche all'API

  • Parametro maxLines rimosso da CoreTextField. Se vuoi limitare l'altezza del campo di testo in base al numero di righe, utilizza BasicTextField. (Iec002)
  • I metodi await*TouchSlop() sono stati modificati in modo da non rilevare il cursore verso il basso e sono stati rinominati in *OrCancellation. Inoltre, non è più necessario il parametro orientationLock. (Ie96e1)
  • È stato aggiunto il controllo lint per il nome e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose. È stata eseguita la migrazione di alcune API che utilizzano children come nome per la funzione lambda finale a content, in base alle indicazioni e al controllo lint. (Iec48e)
  • Le API foundation:foundation-text sono state spostate in foundation:foundation. La struttura del pacchetto è rimasta invariata (Id3eb2)
  • Nuovo rilevatore di gesti multitouch, inclusi gli elementi di assistenza per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del cursore, incluso il blocco dell'orientamento. (Icef25)
  • È stato rinominato VectorAsset in ImageVector. È stato spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida del Consiglio API. È stato aggiunto un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
  • I metodi ImageAsset e correlati sono stati rinominati in ImageBitmap. (Ia2d99)
  • Le proprietà di semantica di base sono state spostate nella UI (I6f05c)
  • Aggiungi API di scorrimento basate su coroutine:

    Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il termine dello scorrimento prima di restituire. (Ie5642)

  • È stato aggiunto un parametro a riga singola in BasicTextField, TextField e OutlinedTextField. Imposta questo parametro su true per fare in modo che il campo di testo sia una singola riga scorrevole orizzontalmente. (I57004, b/168187755)

  • Il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione è stato aggiunto utilizzando il nuovo input del cursore in sospensione. Sono state aggiunte anche alcune utilità, che semplificano la scrittura di rilevatori di gesti da parte degli sviluppatori. (I00807)

  • Modifier.focusable deve essere aggiunto in Foundation. Utilizzalo per aggiungere un comportamento di attivazione a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)

  • Le API precedentemente ritirate sono state rimosse: Border è stato rimosso, utilizza invece BorderStroke. Modifier.drawBorder è stato rimosso. Utilizza Modifier.border. Modifier.gravity è stato rimosso. Utilizza invece Modifier.align. Lo stack è stato rimosso, utilizza invece la casella (I32c2b, b/172470874)

  • AbsoluteArrangement è stato rinominato in Arrangement.Absolute. (If26f2)

Correzioni di bug

  • Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere metodi di tipo/helper per facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
  • È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer. Inoltre, sono stati aggiornati i relativi classi a GraphicsLayer in base al feedback del Consiglio API. (I0bd29, b/173834241)
  • <T> è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)
  • I campi uptime e posizione di PointerInputData non sono più null. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i manici e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
  • Il parametro di allineamento della casella è stato rinominato in contentAlignment. (I2c957)
  • I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché stato. (Ic3021, b/173594846)
  • È stato aggiunto WindowManager.isWindowFocused per controllare se la finestra dell'host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
  • È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • API TextFieldValue aggiornata
    • è stato impostato TextFieldValue.composition come di sola lettura
    • Eccezione rimossa lanciata per intervallo di selezione non valido (I4a675, b/172239032)
  • Sono stati ritirati gli ambienti con il suffisso Ambient e sostituiti con nuove proprietà con prefisso Ambient, seguendo le linee guida per gli altri ambienti e l'API Compose. (I33440)
  • È stato aggiunto il wrapper Android Typeface. Puoi caricare un carattere Android tramite la funzione typeface, ad esempio typeface(Typeface.DEFAULT). Inoltre, ha rinominato typefaceFromFontFamily() in typeface() (I52ab7)
  • È stato aggiunto il controllo lint per verificare che le fabbriche di modificatori utilizzino androidx.compose.ui.composed {} internamente, anziché essere contrassegnate come @Composable. (I3c4bc)
  • È stato aggiunto il controllo lint per verificare che le funzioni di fabbrica del modificatore siano definite come estensioni su Modifier, in modo che possano essere collegate in modo fluido. (I07981)
  • L'argomento semantico mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
  • Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
  • Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
  • TextUnit.Inherit viene rinominato in TextUnit.Unspecified in modo coerente con le altre unità. (Ifce19)
  • L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
  • Il modulo foundation:foundation-text è stato unito a foundation:foundation (Idac0f)
  • Ritirare place(Offset) e placeRelative(Offset). Utilizza invece le sovraccaricamenti con offset int (I4c5e7)
  • id è stato rinominato layoutId per LayoutIdParentData. Measurable.id è stato rinominato Measurable.layoutId. (Iadbcb, b/172449643)

Versione 1.0.0-alpha07

11 novembre 2020

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 vengono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche all'API

  • Analogamente a Modifier.fillMaxSize[Width|Height], ora supportiamo le frazioni in Modifier.fillParentMaxSize[Width|Height] nell'ambito di LazyColumn/Row (I797e2, b/166586426)
  • KeyboardOptions.toImeOptions è stato rimosso dall'API pubblica. (Ic2e45)
  • Gli elementi di base AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono stati ritirati. Utilizza invece le nuove versioni disponibili nella libreria Material. Per le applicazioni non Material, devi invece creare ambienti di temi specifici del tuo sistema di design che possono essere utilizzati nei tuoi componenti. (I74acc, b/172067770)
  • foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base senza opinioni che non utilizza i valori di un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
  • È stato aggiunto maxLines ai campi di testo (Ib2a5b)
  • Aggiorna TextFields in modo che accetti KeyboardOptions (Ida7f3)
  • Sono stati aggiunti KeyboardOptions da utilizzare nei campi di testo (I9ca32)
  • Aggiunge BasicText come API per il testo senza opinioni sul design, parallela a BasicTextField. (I28268)
  • L'annotazione ExperimentalLazyDsl è stata rimossa. Ora è possibile utilizzare LazyColumn/LazyRow senza aggiungere @OptIn (Idab7a, b/166584730)
  • BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
  • BasicTextField è stato aggiunto come sostituto sia di CoreTextField che di BaseTextField (Id4cea)
  • Rimuovere gli elementi LazyColumnItems/LazyRowItems deprecati (I1d8a8)
  • I composabili obsoleti per le dimensioni in base alle misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
  • relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per specificare facilmente le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
  • Al modificatore aspectRatio è stato aggiunto il parametro matchHeightConstraintsFirst, che può essere utilizzato per specificare il modificatore per le dimensioni in base alle limitazioni di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593)
  • L'elemento DpConstraints deprecato è stato rimosso. (I87884, b/171702471)

Correzioni di bug

  • È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro al fine di supportare i casi d'uso di scala non uniforme.
    • È stato aggiunto il metodo computeScaleFactor a ContentScale
    • È stato aggiunto ContentScale.FillBounds per eseguire una scalatura non uniforme in modo da allungare i limiti di src in modo da occupare completamente la destinazione.
    • Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Size.
    • (Ic96a6, b/172291582)
  • captureToBitmap è stato spostato in captureToImage. (I86385)
  • Contrassegna CoreText come @InternalTextApi. Utilizza invece BasicText. (I6aaeb)
  • Rinomina KeyboardOptions in ImeOptions (I82f36)
  • KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
  • CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza invece BasicTextField (Ie2469)
  • L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
  • Introduzione del modulo ui-test-junit4 (Ib91f8)
  • L'API Icon è stata aggiornata in modo da accettare Color.Unspecified come possibile colore di tinta che disegnerà l'asset o il pittore fornito senza un ColorFilter. In precedenza, gli tentativi di ignorare la colorazione con Color.Unspecified coloravano con un colore trasparente, senza che venisse visualizzato nulla. (I049e2, b/171624632)
  • MeasureResult è stato spostato da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
  • androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
  • FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
  • È stato aggiunto SelectionContainer senza il callback (Ibfadb)
  • Aggiungi test per le posizioni degli handle di selezione in SelectionContainer. (Ie93db)
  • È stata aggiunta l'opzione di IME di correzione automatica della tastiera (I57b8d)

Versione 1.0.0-alpha06

28 ottobre 2020

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 vengono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche all'API

  • androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Se non vuoi utilizzare la libreria Material, puoi anche utilizzare il componente immagine / Modifier.paint() con un Painter. (I9f622)
  • È stato aggiunto interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805)
  • alignByBaseline è stato aggiunto a RowScope e alignWithSiblings è stato rinominato in alignBy (I06503, b/170628732)
  • La casella è stata creata come funzione in linea. (Ibce0c, b/155056091)
  • È stato aggiunto maxLines a CoreTextField (Ibee58, b/143687793)
  • È stato aggiunto il rientro morbido a CoreTextField. (I21a4b)

Correzioni di bug

  • Ritirare VectorPainter in favore di rememberVectorPainter per indicare meglio che l'API composable internamente sfrutta "remember" per mantenere i dati nelle composizioni. (Ifda43)
  • Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
  • È stata aggiunta l'opzione di tastiera a riga singola a CoreTextField (I72e6d)
  • L'API Radius è stata rinominata in CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. Documentazione aggiornata per indicare che i raggi di angolo negativi vengono bloccati a zero. (I130c7, b/168762961)
  • Aggiunta della possibilità di specificare le informazioni dell'ispettore nel modificatore composto (Idee08, b/163494569)
  • È stata aggiunta l'opzione IME Maiuscole tastiera (I8ac38)
  • Correggi la posizione dell'handle Rtl. (I6e1e0)
  • Modifica non compatibile: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che dovrebbe essere modificabile negli eventi del cursore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo degli eventi relativi al mouse passati. (I6acd0)
  • È stata aggiunta l'opzione Seleziona tutto al menu di selezione (Ief02b)

Versione 1.0.0-alpha05

14 ottobre 2020

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 vengono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Modifiche all'API

  • CoreTextField ora supporta la funzionalità del cursore (Id23aa)
  • Ritirare le API contentColor() e currentTextStyle() e sostituirle rispettivamente con gli ambienti AmbientContentColor e AmbientTextStyle. Puoi accedere al valore corrente utilizzando .current nella proprietà ambient, come per qualsiasi altro ambient. Questa modifica è stata apportata per garantire la coerenza e per evitare di avere più modi per ottenere lo stesso risultato. Inoltre, rinomina alcune proprietà dell'ambiente per descriverne meglio lo scopo, come segue:

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

Correzioni di bug

  • Nell'ambito della standardizzazione degli indicatori di valori per le classi in linea, rinomina Color.Unset in Color.Unspecified per garantire la coerenza con le altre classi in linea (I97611, b/169797763)
  • Sono state aggiunte le azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Viene introdotto TextOverflow.None. Quando overflow è None, Text non gestisce più l'overflow e segnala le sue dimensioni effettive a LayoutNode. (I175c9, b/158830170)
  • I parametri aggiornati di Dimensioni.Senza_specifiche sono ora Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per eseguire il controllo rispetto a Dimensioni.Senza specifica e a Dimensioni non finite. (I95a7e)
  • È stato aggiunto il modulo di composizione con paginazione e l'integrazione della paginazione (Ib85da)
  • Modificare LazyListScope per ricevere valori nullable (I1765b)
  • OnPositionedModifier viene rinominato in OnGloballyPositionedModifier e onPositioned() viene rinominato in onGloballyPositioned(). (I587e8, b/169083903)
  • Sono stati aggiunti esempi per LazyColumn/Row (Idc16d)
  • Correzione per i metodi items e itemsIndexed per consentire emptyList (I06647)
  • Aggiungi un DSL per specificare le informazioni dell'ispettore (Ic9a22)
  • Spostare il pulsante di pressione prolungata in Testo. (Iff2bc)
  • Disattivare la selezione nel testo e una demo. (Ie7e97)
  • Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
  • PointerInputFilter.onPointerInput(...) rimosso. Al suo posto devi utilizzare PointerInputFilter.onPointerEvent(...). (I6f04a)

Versione 1.0.0-alpha04

1° ottobre 2020

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 vengono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.

Modifiche all'API

  • La funzionalità Stack è stata rinominata in Box. La precedente funzionalità foundation.Box verrà ritirata a favore della nuova Box in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando sono presenti più elementi secondari. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
  • I parametri di decorazione delle caselle sono stati ritirati. Se vuoi aggiungere decorazioni/spaziatura alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Aggiungi una nuova classe LazyListState. In questo modo è possibile osservare e controllare la posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro stato del componente. Al momento, in questa versione iniziale è possibile osservare il primo elemento visibile e gli offset. (Ic7cb7, b/159307669)
  • La posizione dell'elenco lazy e l'offset di scorrimento vengono ora salvati e ripristinati durante la ricreazione dell'attività (Ie045f, b/166589058)
  • Aggiungere un'azione di semantica dei clic lunghi (I6281b, b/156468846)
  • È stata aggiunta l'utilità MutatorMutex per mantenere un singolo mutatore dello stato condiviso nel tempo e annullare i mutatori in conflitto in base alla priorità (I3f975)
  • Sono stati annotati rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendendoli API interne e nascondendo il relativo kdoc (I554eb, b/168308412)
  • Il parametro inlineContent è stato rimosso da Testo con input di stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
  • Le API di ordinamento personalizzate non più supportate sono state rimosse. (Ic576d, b/168297922, b/168297923)
  • Il parametro unbounded è stato aggiunto ai modificatori wrapContentSize, che consente di misurare l'elemento di layout con vincoli massimi infiniti. (I77951, b/158559319)
  • Abbiamo impedito le importazioni statiche dei contenuti degli ambiti di layout (ad es. alignWithSiblings in RowScope). Dovresti utilizzare l'alternativa di ambito esplicito: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Correzioni di bug

  • Sono state aggiornate molte API di grafica
    • API di trasformazione di scala e rotazione aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata pivot anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Sono stati rimossi i metodi Rect.expandToInclude e Rect.join
    • La documentazione di Raggio è stata aggiornata per indicare ovale oltre a ellittico
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico della classe Radius inline non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istigati tramite i costruttori delle funzioni.
    • Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
    • Ritiro di Rect.shift a favore di Rect.translate
    • Sono state rimosse le API RoundRect.grow e Rect.shrink
    • Rinominata RoundRect.outerRect in Rect.boundingRect
    • Sono stati rimossi i metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
    • RoundRect.latoPiùLungo è stato rinominato in RoundRect.maxDimension
    • Rinominata RoundRect.shortestSide in RoundRect.minDimension
    • È stata modificata la proprietà RoundRect.center in modo che sia una proprietà anziché una funzione
    • Il costruttore RoundRect è stato aggiornato in modo da utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
    • Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con inizio in 0,0
    • È stata aggiunta un'API di distruzione a Radius
    • È stata eseguita la migrazione di varie funzioni di estensione di RoundRect in modo che diventino proprietà
    • (I8f5c7, b/168762961)
  • Ottimizzazioni delle prestazioni per lo scorrimento di LazyColumnFor/LazyRowFor evitando ricostruzioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
  • È stato corretto un arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la modifica degli elementi ed è stato implementato lo scorrimento automatico verso l'alto quando l'elemento precedentemente visibile è stato rimosso, in modo da non visualizzare più spazi vuoti alla fine (I220ab, b/161480164, b/167855468)
  • Non è più consentito nidificare contenitori scorrevoli nella stessa direzione, come ScrollableContainer e LazyColumnFor. Non è mai stato supportato e stava rompendo il fling e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
  • Sono state aggiornate molte API di grafica
    • API DrawScope aggiornate con metodi di trasformazione basati su ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
    • Documentazione di clipPath aggiornata per fare riferimento a Path instead of rounded rectangle
    • Spaziatura fissa nella documentazione per il parametro giusto in clipPath
    • È stato rinominato DrawScope.drawCanvas in drawIntoCanvas e è stato rimosso il parametro size
    • I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
    • È stata aggiunta un'overload di inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
    • È stata rimossa la documentazione relativa al metodo di inset che indicava che l'inset verrebbe applicato a tutti e quattro i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri Rect in modo che corrispondano allo stile kdoc
    • Sono stati rimossi Rect.join e Rect.expandToInclude
    • È stata creata un'overload per Rect.translate(offset) e ritirato Rect.shift
    • (If086a, b/167737376)
  • Aggiungi AccessibilityScrollState alle proprietà di semantica. (Ifeda9)
  • Crea un TextRange in linea per evitare la creazione di oggetti. (Id034b)
  • ParagraphConstraints è stato rimosso. Ora la larghezza viene passata direttamente a Paragrafo. (Ica712)

Versione 1.0.0-alpha03

16 settembre 2020

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 vengono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche all'API

  • InnerPadding è stato rinominato in PaddingValues. (I195f1, b/167389171)
  • Gli utilizzi di gravity sono stati rinominati in modo coerente in allineamento o allineamento nelle API di layout. (I2421a, b/164077038)
  • A Stack è stato aggiunto un parametro di allineamento che consente di specificare l'allineamento predefinito per tutti gli elementi figlio di Stack. (Ie80ca, b/164085265)

Correzioni di bug

  • DpConstraints e le API che lo utilizzano sono stati ritirati. (I90cdb, b/167389835)
  • I parametri minWidth e maxWidth di widthIn sono stati rinominati in min e max. Analogamente per preferredWidthIn, heightIn e preferredHeightIn. (I0e5e1, b/167389544)
  • È stato aggiunto onNode e altri metodi globali a ComposeTestRule poiché quelli globali attuali verranno ritirati. (Ieae36)
  • Sono stati corretti i calcoli delle dimensioni e della posizione in GestureScope, che tra le altre cose causavano la generazione di gesti di scorrimento non validi (Iaf358, b/166589947)
  • createAndroidComposeRule e AndroidInputDispatcher spostati da androidx.ui.test.android a androidx.ui.test (Idef08, b/164060572)

Versione 1.0.0-alpha02

2 settembre 2020

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 vengono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.

Correzioni di bug

  • TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
  • È stato aggiunto ManualFrameClock.hasAwaiters per verificare se è presente qualche elemento in attesa di un frame da quell'orologio; runWithManualClock come sostituto di runBlocking quando esegui test che richiedono un ManualFrameClock;TestUiDispatcher.Main che consente di accedere facilmente all'intercettatore UI principale nei test.

    Ad esempio:

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

Versione 1.0.0-alpha01

26 agosto 2020

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 vengono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.

Versione 0.1.0-dev

Versione 0.1.0-dev17

19 agosto 2020

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 vengono rilasciati. La versione 0.1.0-dev17 contiene questi commit.

Modifiche all'API

  • L'ordinamento spacedBy è stato aggiunto per Riga e Colonna per consentire il posizionamento dei componenti secondari del layout con una spaziatura fissa. È stato aggiunto anche l'ordinamento allineato per consentire il posizionamento dei componenti secondari del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I metodi precedenti Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange sono stati ritirati e la scrittura di arrangiamenti personalizzati non sarà supportata in futuro. (I6733d, b/161985975)
  • L'offset è diventato una classe in linea (Iaec70)
  • Sono stati rimossi i callback onFocusChanged da TextField. Utilizza invece Modifier.focusObserver. (I51089, b/161297615)
  • Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
  • VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
  • Rimuovi i modificatori fillMax* contrassegnati come deprecati da LazyItemScope perché rendono più difficile aggiungerli correttamente per gli elementi che non sono elementi secondari diretti di LazyColumnFor (Ifa78d)
  • È stata aggiunta l'implementazione di LazyColumn/LazyRow come DSL (I93cc6)
  • Constraints ora è una classe in linea (I88736)
  • È stata aggiunta la possibilità di impostare le dimensioni di un layout su una frazione dello spazio disponibile utilizzando i modificatori fillMaxWidth, fillMaxHeight e fillMaxSize. (I945bb, b/161562591)

Correzioni di bug

  • È stato aggiunto un parametro modificatore a SelectionContainer (I4aada, b/161487952)
  • È stata aggiunta la funzione lambda mergePolicy a SemanticsPropertyKey. Questo può essere utilizzato per definire un criterio personalizzato per l'unione con la semantica di mergeAllDescendants. Il criterio predefinito è utilizzare il valore principale se già presente, altrimenti il valore secondario. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() è stato rinominato PlacementScope.place() e il precedente PlacementScope.place() è stato rinominato PlacementScope.placeRelative(). Di conseguenza, il metodo PlacementScope.place() non rispecchierà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza invece PlacementScope.placeRelative(). (I873ac, b/162916675)
  • È stato rimosso il componente FilledTextField deprecato. Utilizza invece TextField per ottenere l'implementazione di Material Design del campo di testo compilato. (I5e889)
  • È stato aggiunto il parametro backgroundColor a LinearProgressIndicator e la spaziatura interna è stata rimossa da CircularProgressIndicator. È stato aggiunto il nuovo ProgressIndicatorConstants.DefaultProgressAnimationSpec che può essere utilizzato come AnimationSpec predefinito per l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677)
  • Il composable state { ... } è stato ritirato a favore di chiamate esplicite a remember { mutableStateOf(...) } per maggiore chiarezza. Ciò riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e corrisponde al pattern by mutableStateOf() per la delega delle proprietà della classe. (Ia5727)
  • RRect è stato rinominato in RoundRect per adattarsi meglio ai pattern di denominazione di compose Sono stati creati costruttori di funzioni simili a RRect e sono stati ritirati i costruttori di funzioni RRect (I5d325)
  • Sono stati rimossi onChildPositioned e OnChildPositionedModifier. Gli sviluppatori devono utilizzare onPositioned e OnPositionedModifier sul layout secondario. (I4522e, b/162109766)
  • IntSize ora è una classe in linea (I2bf42)
  • Tieni premuta l'area vuota da modificare. (Ib1e5b)
  • Nascondere la barra degli strumenti fluttuante dopo aver toccato il testo. (If4525)
  • Nascondi barra degli strumenti fluttuante durante l'aggiornamento della selezione. (I8444c)
  • Deseleziona Quando sfocato. (I781a2)

Versione 0.1.0-dev16

5 agosto 2020

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 vengono rilasciati. La versione 0.1.0-dev16 contiene questi commit.

Modifiche all'API

  • È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi lazy. Fornisce modificatori per riempire la dimensione massima del contenitore principale, che risolve il caso d'uso in cui l'elemento deve riempire il viewport e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854)
  • Spostare la finestra di dialogo nell'interfaccia utente (I47fa6)
  • Sono stati aggiunti LazyColumnForIndexed/LazyRowForIndexed, versioni di LazyColumnFor/LazyRowFor che forniscono sia l'indice che l'elemento in itemCallback. È utile quando, oltre a un elemento corrente, devi conoscere un indice corrente. (I65ff3)
  • Modifier.deternimateProgress è stato rinominato in Modifier.progressSemantics (I9c0b4)
  • LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stato rinominato in LazyRowFor (I84f84)
  • Aggiungi alcuni segni/annotazioni per seguire le best practice. (I66b20)
  • Il pacchetto foundation.shape.corner è stato appiattito in foundation.share (I46491, b/161887429)
  • È stato aggiunto il parametro gravità asse trasversale per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supportano il comportamento di a capo dei contenuti. (Ib39fc)
  • ZoomableState è stato rinominato ZoomableController. È stato aggiunto il supporto delle curve personalizzate per smoothScale. È stata aggiunta la funzionalità enabled e onZoomStarted (If8b8f)
  • Material FilledTextField è stato rinominato in TextField e la funzionalità di base TextField è stata rinominata in BaseTextField per rendere più semplice la scoperta e l'utilizzo dell'API più semplice (Ia6242, b/155482676)
  • AdapterList, precedentemente deprecato, è stato rimosso. Utilizza LazyColumnItems (I12b9b)
  • Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
  • Il vecchio DSL ConstraintLayout è stato rimosso. ConstraintSet2 è stato rinominato in ConstraintSet. (If58d1, b/162450908)
  • Sono stati aggiunti Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). A differenza dei modificatori di offset, i modificatori di offset assoluto non eseguono lo specchio automatico nel contesto da destra a sinistra (I3aa21)
  • Row e Column ora sono funzioni in linea che riducono notevolmente il sovraccarico di utilizzo. (I75c10)

Correzioni di bug

  • Risolvere correzioni generali dell'API (I077bc)
    1. Rimuovere l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset per avere una piattaforma API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
    4. Il metodo nativeCanvas è stato spostato dall'interfaccia Canvas per consentire ai consumatori di creare le proprie istanze Canvas
    5. È stata creata la classe stub EmptyCanvas per eseguire il refactoring di DrawScope in modo che sia un parametro non nullo anziché lateinit e garantire la non nullità del campo
    6. I valori enumerati ClipOp sono stati rinominati in Pascal Case
    7. Le enum FilterQuality sono state rinominate in Pascal Case
    8. Gli enum StrokeJoin sono stati rinominati in Pascal Case
    9. Gli enum PointMode sono stati rinominati in Pascal Case
    10. Gli enum PaintingStyle sono stati rinominati in Pascal Case
    11. Gli enum PathFillType sono stati rinominati in Pascal Case
    12. I valori enumerati di StrokeCap sono stati rinominati in Pascal Case
    13. È stata aggiornata l'implementazione di DrawCache in modo che non utilizzi più i parametri lateinit
    14. È stato aggiornato DrawScope in modo che non utilizzi più la delega lazy per i parametri interni fillPaint e strokePaint
    15. Componibile immagine aggiornato per evitare l'utilizzo di Box per un overhead ridotto
    16. Aggiornamento della classe Outline per includere le annotazioni @Immutable
    17. PathNode è stato aggiornato in modo da avere annotazioni @Immutable per ogni istruzione del percorso
    18. È stata aggiornata la composizione secondaria di vettore per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi di costruttore complementari di Rect ritirati a favore di costruttori di funzioni
    20. Classi e costruttori di funzioni aggiornati di Brush con API @Immutable e @Stable
    21. È stato aggiornato l'enum VertexMode in modo che sia in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri di tratto sul colore se sono stati modificati
    23. È stata aggiornata la dimensione per aggiungere l'API di destrutturazione, rinominata UnspecifiedSize in Unspecified e sono stati rimossi i metodi inutilizzati
  • È stato aggiunto MonotonicFrameAnimationClock che ti consente di utilizzare un MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora i vecchi orologi basati su callback.

    L'equivalente di MonotonicFrameClock di ManualAnimationClock ora è ManualFrameClock. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture rimosso. Utilizza invece SemanticsNodeInteraction.performGesture. (Id9b62)

  • SemanticsNodeInteraction.getBoundsInRoot() rinominato in SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)

  • Le API per il supporto della scrittura da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)

  • Modifier.plus è deprecato. Utilizza Modifier.then. "Poi" indica più chiaramente l'ordine, ma impedisce anche di digitare Modifier.padding().background() + anotherModifier, che interrompe la catena ed è più difficile da leggere (Iedd58, b/161529964)

  • Aggiunto SemanticsMatcher per isFocused() e isNotFocused(). (I0b760)

  • È stato aggiunto RemeasurementModifier. Consente agli utenti di rimisurare il layout in modo sincrono. In genere, non è necessario perché la misurazione/il nuovo layout avvengono automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)

  • Ora isSystemInDarkTheme prende sempre in considerazione l'impostazione del tema scuro a livello di sistema e ignora lo stato di risparmio energetico prima di Q, in base alle ultime indicazioni. (I0c10c)

  • OnChildPositioned è stato deprecato. Utilizza invece OnPositioned sul componente figlio. (I87f95, b/162109766)

  • Il nome di AndroidComposeTestRule è stato rinominato in createAndroidComposeRule. (I70aaf)

  • Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)

Versione 0.1.0-dev15

22 luglio 2020

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 vengono rilasciati. La versione 0.1.0-dev15 contiene questi commit.

Per utilizzare la versione 0.1.0-dev15 di Compose, devi:

Aggiornamento delle dipendenze

  • Per utilizzare la versione 0.1.0-dev15 di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.

Modifiche all'API

  • Analogamente al nuovo parametro in ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems ora hanno anche il parametro contentPadding che consente di aggiungere un padding per i contenuti dopo che sono stati ritagliati, il che non è possibile solo tramite un parametro di modifica. Consente inoltre di aggiungere una spaziatura solo prima del primo elemento/dopo l'ultimo elemento. (Ibc24e)
  • Il callback onFocusChange nei campi di testo è stato rinominato in onFocusChanged (Ida4a1)
  • VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ColonnaScorrevole e RigaScorrevole per un'esperienza integrata con il comportamento e i parametri di Colonna/Riga oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
  • Le API Modifier.draggable e Modifier.scrollable sono state riscritte. DragDirection è stato rimosso in favore di Orientation. Lo stato richiesto per la funzionalità scorrevole è stato semplificato. ScrollableState è stato rinominato in ScrollableController (Iab63c, b/149460415)
  • Le proprietà di semantica a valore singolo ora utilizzano uno stile di chiamata. Ad esempio, "semantics { hidden = true }" ora viene scritto come: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Le dimensioni degli angoli utilizzati da RoundedCornerShape e CutCornerShape ora possono essere superiori al 50% (Id2340, b/160400213)
  • È stato modificato il parametro predefinito ContentScale per il composable Immagine da Interno a Adatta. Questo è stato fatto per ottenere un comportamento che aumenti le dimensioni del Painter sottostante se le dimensioni del layout sono maggiori di quelle intrinseche del Painter, mantenendo al contempo le proporzioni. Questo comportamento soddisfa meglio le aspettative per quanto riguarda la fornitura di dimensioni fisse all'immagine senza influire sul comportamento predefinito se viene utilizzata solo la dimensione intrinseca per calcolare le dimensioni del componibile. (I40ae3, b/159838006)
  • Utilizza AnimationSpec anziché AnimationBuilder nelle API di primo livello per chiarire il concetto di specifica di animazione statica - Migliora il DSL di transizione rimuovendo il requisito lambda per la creazione di AnimationSpec come tween, spring. ma accettano direttamente i parametri del costruttore. -Migliora la facilità d'uso complessiva di AnimationSpec aprendo i metodi di costruzione anziché fare affidamento sui costruttori -Modifica la durata e il ritardo per KeyFrames e Tween in Int. In questo modo vengono eliminati i tipi di conversione e il sovraccarico dei metodi non necessari (per supportare sia Long che Int). (Ica0b4)
  • La funzionalità Cliccabile è stata rimossa. Utilizza Modifier.clickable (I84bdf)
  • Aggiunto LazyRowItems, l'analogo di LazyColumnItems con scorrimento orizzontale (Ibbcf7)
  • Sono state introdotte API di animazione stateless di basso livello. Queste API (I63bf7)
  • androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i composabili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • È stato sostituito l'utilizzo di IntPx con Int. È stato sostituito IntPxPosition con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape rimosso; utilizza androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe Size anziché PxSize. Ciò offre i vantaggi di una classe in linea per sfruttare un valore lungo per imballare 2 valori float per rappresentare la larghezza e l'altezza rappresentate come valori float. (Ic0191)
  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. Ciò offre i vantaggi di una classe in linea per sfruttare un valore long per imballare 2 valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
  • È stato aggiunto Modifier.zoomable per la funzionalità di zoom con due dita (Id5d63)
  • Il componente attivabile/disattivabile è stato ritirato. Utilizza Modifier.toggleable (I35220, b/157642842)
  • MutuallyExclusiveSetItem è stato ritirato. Utilizza invece Modifier.selectable. (I02b47, b/157642842)
  • TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
  • Aggiunge il parametro fontWeight a Testo, che non è stato aggiunto per errore in precedenza (I56937)
  • È stato sostituito l'utilizzo della classe Px in vari classi di composizione nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
  • VerticalScroller ora fornisce la colonna out of the box. HorizontalScroller ora fornisce la riga out of the box. (Ieca5d, b/157020670)
  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Iede0b)
  • Modifier.indication è stato aggiunto al pacchetto di base. Utilizzalo per mostrare un'indicazione di pressione/trascinamento/altro sugli elementi interattivi personalizzati (I8425f, b/155287131)
  • VerticalScroller e HorizontalScroller ora supportano lo scorrimento inverso se isReversed è impostato su ScrollerPosition (I953bd)
  • Supporta l'aggiunta di composabili nel layout di testo. (I1373c)
  • Implementazioni CanvasScope consolidate ora esistono solo DrawScope e ContentDrawScope CanvasScope è stato rinominato in DrawScope. È stato aggiornato DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. È stato eliminato il sottotipo DrawScope in ContentDrawScope. Painter e PainterModifier sono stati aggiornati in modo da non gestire più autonomamente una proprietà RTL, poiché DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
  • È stata rimossa l'API DrawBackground ritirata a favore delle API di estensione drawBackground su Modifier. È stato eseguito il refactoring delle implementazioni di colore, pennello e drawBackground per ridurre i percorsi di codice e rimuovere il requisito di creazione di Modifier nell'ambito della composizione. (I0343a)
  • API compose di livello superiore aggiornate che espongono un Canvas per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che hanno ancora bisogno di accedere a un Canvas possono utilizzare il metodo drawCanvas dell'estensione, che fornisce un callback per emettere comandi di disegno con il Canvas di base. (I80afd)
  • HorizontalScroller e VerticalScroller non ripristinano la posizione di scorrimento utilizzando lo stato dell'istanza salvato. (Ia0fae, b/155075048)
  • FocusManagerAmbient è stato rimosso. Utilizza FocusModifier.requestFocus per ottenere lo stato attivo. (Ic4826)
  • Il layout della tabella è stato rimosso temporaneamente finché non lo renderemo di nuovo disponibile con un'API aggiornata. (Id88a7)
  • È stata creata l'API CanvasScope che avvolge un oggetto Canvas per esporre un'API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del ricevitore e le informazioni sulle dimensioni sono limitate anche ai limiti di inset corrispondenti. Non richiede all'utente di gestire un proprio oggetto stato di Paint per la configurazione delle operazioni di disegno.

    È stato aggiunto CanvasScopeSample e l'app di dimostrazione è stata aggiornata in modo da includere una dimostrazione di grafica dichiarativa (Ifd86d)

  • ColoredRect è stato rimosso. Utilizza invece User Box con il modificatore drawBackground (I983c7, b/152753731)

  • Aggiungere la personalizzazione del colore del cursore al TextField (I6e33f)

  • Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, che viene fornito dal callback onTextInputStarted (I8dc44, b/151860051)

  • TextFieldValue utilizzato con TextField ora può sopravvivere alla ricreazione dell'attività se utilizzato come segue: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Aggiunge i parametri di uso comune a Text(). Se stai creando uno stile di testo locale per trasmettere un numero limitato di questi parametri, ad esempio Text(style = TextStyle(textAlign = TextAlign.Center)), ora puoi semplicemente fornire i parametri direttamente: Text(textAlign = TextAlign.Center) (I82768)

  • È stato sostituito il parametro focusIdentifier di CoreTextField/TextField con FocusNode per l'integrazione con il sottosistema di messa a fuoco. (I7ea48)

  • Aggiornamento del campo di testo: nella dimensione orizzontale occuperà tutto lo spazio disponibile concesso (Ib08df, b/154638552)

  • Sono stati aggiunti InteractionState e Interaction, che semplificano la creazione di componenti che reagiscono alle modifiche dello stato dell'interfaccia utente, come pressione e trascinamento (Icfe25, b/152525426)

  • RectangleShape è passato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Sono stati sostituiti tutti gli utilizzi di Color nullable nell'API con valori non nullable e viene utilizzato Color.Unset anziché null (Iabaa7)

  • Aggiornamento dell'API TextField: i callback onFocus e onBlur sono stati uniti in un unico callback onFocusChange(Boolean) con parametro (I66cd3)

  • È stato rinominato ScaleFit in ContentScale È stato spostato ContentScale dal modulo ui-graphics al modulo ui-core perché si trovi nello stesso modulo dell'API Alignment. Rinominata FillMaxDimension in Crop Rinominata FillMinDimension in Adatta Rinominata Adatta in Interno per una corrispondenza migliore con gli equivalenti di ImageView.ScaleType È stata aggiunta la documentazione che indica che la combinazione di Crop e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER. Interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

  • Rimuove ProvideContentColor, ma utilizza direttamente ContentColorAmbient con Providers (Iee942)

  • Aggiunge il parametro di colore al testo, consentendo di ignorare il colore dello stile di testo senza dover unire manualmente lo stile fornito in un tema. (I41a66)

  • Migliorare l'API DrawModifier:

    • È stato creato l'ambito del ricevente per draw() ContentDrawScope
    • Sono stati rimossi tutti i parametri in draw()
    • DrawScope ha la stessa interfaccia dell'ex CanvasScope
    • ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
  • ColoredRect è stato deprecato. Utilizza invece Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Il sistema di temi delle forme viene aggiornato in base alle specifiche di Material Design. Ora puoi fornire forme piccole, medie e grandi da utilizzare per la maggior parte dei componenti (Ifb4d1)

  • Operatore Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)

  • La funzionalità Trascinabile è stata spostata nel modificatore (Id9b16, b/151959544)

  • Text è stato spostato nel pacchetto androidx.ui.foundation da androidx.ui.core. (I87ce5)

  • Aggiungi il parametro enabled a casella di controllo, pulsante di attivazione/disattivazione e pulsante di attivazione/disattivazione (I41c16)

  • L'effetto Ripple è ora un modificatore. Anche se lo stato Cliccabile non è ancora stato convertito, l'utilizzo consigliato è Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per le immagini vettoriali. Il risultato della composizione secondaria è un oggetto VectorPainter anziché DrawModifier. Sono stati ritirati i composabili DrawVector precedenti a favore di VectorPainter.

    L'API Image(Painter) è stata rinominata in PaintBox(Painter) È stato creato un componibile vettoriale che si comporta come il componibile Immagine, tranne per il fatto che utilizza un asset vettoriale anziché un asset immagine (I9af9a, b/149030271)

  • È stato creato un composable immagine per gestire le dimensioni/il layout, oltre a disegnare un determinato asset immagine sullo schermo. Questo composable supporta anche il disegno di qualsiasi istanza Painter arbitraria nel rispetto delle sue dimensioni intrinseche, nonché di una determinata dimensione fissa o minima (Ibcc8f).

  • Button, FloatingActionButton e Clickable ora hanno un parametro enabled separato. Alcuni parametri di Button sono stati rinominati o riordinati. (I54b5a)

  • L'elemento Image è stato rinominato in ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e il componente composable Immagine imminente utilizzato per partecipare al layout e disegnare i contenuti.

    È stato creato il metodo di estensione su android.graphics.Bitmap, Bitmap.asImageAsset(), per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework Compose. (Id5bbd)

  • Il composable DrawImage è stato rimosso. Utilizza ImagePainter per disegnare l'immagine sul layout esistente o SimpleImage per inserire un'immagine che occupa spazio (I595e1, b/149827027)

  • Il componente Stack supporta la direzione da destra a sinistra (Ic9e00)

  • Sono stati aggiunti Icon, IconButton e IconToggleButton e rimosso AppBarIcon. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, e ora avranno il target di tocco corretto. Consulta i Samples per informazioni sull'utilizzo e la sezione Icone per le icone Material fornite che puoi utilizzare direttamente con questi componenti. (I96849)

  • Il composable DrawShape è stato rimosso. Utilizza invece il modificatore DrawBackground. (I7ceb2)

  • È stato aggiunto AdapterList, un componente dell'elenco con scorrimento che compone e dispone solo gli elementi visibili. I problemi attualmente noti includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai suoi elementi secondari. (Ib351b)

  • È stato aggiunto il componente scorrevole, che consente la creazione di elenchi/barra scorrevoli personalizzati (I5fd37)

  • Lo sfondo è stato rinominato in DrawBackground e viene memorizzato per impostazione predefinita (Ia0bd3)

  • Aggiungi i parametri padding, border, shape e background a Box (I05027, b/148147281)

  • È stato aggiunto il componente Canvas. Questo composable occupa alcune dimensioni (fornite dall'utente) e ti consente di disegnare utilizzando CanvasScope (I0d622)

  • Rinomina il modificatore Border in DrawBorder (I8ffcc)

  • È stato aggiunto il componente Box per combinare il layout e le funzionalità di disegno comuni. (I6e2a7)

  • Ora i cursori mostrano il comportamento di movimento fling nativo di Android. (I922af, b/147493715)

  • DrawBorder è stato sostituito da Modificatore bordo (Id335a)

  • Modifier.tag è stato rinominato in Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)

  • Il parametro percentuale per la creazione delle linee guida di ConstraintLayout è stato rinominato in frazione. (Ida2db)

  • È stato aggiunto il supporto per i margini delle barriere ConstraintLayout. (I47ffe)

  • È stato corretto il supporto RTL in ConstraintLayout. Sono state aggiunte API non RTL aware. (I3b1c7)

  • È stato aggiunto un nuovo DSL per ConstraintLayout. Per maggiori dettagli, consulta i sample. (Icaa9a)

  • È stata aggiunta l'annotazione @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn sono ora contrassegnati per indicare che le relative API cambieranno. (I412a8)

  • È stato aggiunto Modifier.padding(InnerPadding) (I94985, b/157133803)

  • Sono stati rimossi i valori deprecati RowAlign e ColumnAlign in Riga e Colonna. (If60d4, b/155858731)

  • È stato rimosso LayoutTag(), che è deprecato. Utilizza Modifier.tag() al suo posto. È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)

  • È stato aggiunto il modificatore di layout offsetPx, che può essere utilizzato per definire offset (dinamici) in px. (I5af57)

  • Il composable AlignmentLineOffset è deprecato. Utilizza invece il modificatore relativePaddingFrom(). Il composable CenterAlignmentLine è stato rimosso. (I60107)

  • È stato aggiunto il modificatore di layout defaultMinSizeConstraints, che imposta i vincoli delle dimensioni sul layout con a capo solo quando i vincoli corrispondenti in entrata non sono specificati (0 per i vincoli minimi e infinito per i vincoli massimi). (I311ea, b/150460257)

  • Il contenitore è stato rimosso. Utilizza invece Box (Ibbc2b, b/151407926)

  • Sono stati rimossi i modificatori LayoutWidth/Height/Size obsoleti. (Ib0bc1)

  • Sono stati aggiunti valori predefiniti per il parametro di modifica dell'offset. (I37f06)

  • È stato aggiunto il modificatore di spaziatura simmetrica. (I39840)

  • È stato rimosso il modificatore LayoutAspectRatio deprecato. (I65a74)

  • Sono stati rimossi i modificatori LayoutAlign non più supportati. (I10877)

  • È stato corretto un bug nei modificatori di larghezza e altezza che causava la misurazione del layout a capo senza vincoli dell'asse opposto. (I210b8, b/154797971)

  • Sono stati aggiunti i parametri verticalGravity e horizontalGravity rispettivamente a Riga e Colonna. (I7dc5a)

  • Aggiornati wrapContentWidth e wrapContentHeight in modo che prevedano l'allineamento verticale o orizzontale anziché qualsiasi allineamento. Il modificatore di gravità è stato aggiornato in modo da accettare l'allineamento verticale o orizzontale. Le opzioni Riga, Colonna e Serie sono state aggiornate per supportare gli allineamenti continui personalizzati. (Ib0728)

  • È stato reso possibile creare istanze di Allineamento con valori arbitrari. Sono stati aggiunti gli allineamenti 1D. (Ia0c05)

  • EdgeInsets è stato rinominato in InnerPadding. Il parametro innerPadding dei pulsanti Material è stato rinominato in padding. (I66165)

  • alignToSiblings ora accetta un valore Measured anziché Placeable. (I5788d)

  • Sono stati aggiunti modificatori per le dimensioni alle misurazioni intrinseche e sono stati ritirati i componenti che hanno questo scopo. (I8295d)

  • È stato aggiunto il supporto per la personalizzazione delle dimensioni degli elementi secondari di ConstraintLayout (Idb1a5)

  • Sono stati rimossi i composabili Wrap e Center non più supportati. (I29e23)

  • È stata aggiunta LayoutModifier2, una nuova API per definire i modificatori di layout. È stato deprecato LayoutModifier (If32ac)

  • I membri RowScope e ColumnScope sono ora accessibili al di fuori di Riga e Colonna. (I3a641)

  • Container è deprecato. Utilizza Box. (I675ce, b/151407926)

  • È stato aggiunto il modificatore LayoutOffset per compensare la posizione del layout (I0b8a3)

  • Supporto iniziale per la scrittura da destra a sinistra nel layout di composizione (Ia5519)

  • LayoutAlign è stato aggiornato in modo da non riempire più lo spazio disponibile (I2b14f)

  • È stato rimosso il composable AspectRatio a favore del modificatore. È stato eliminato il composable obsoleto FlexColumn, FlexRow e il modificatore Spacing (Iec8a7)

  • È stato rimosso il modificatore LayoutInflexible per riga e colonna (I0d820)

  • Implementa i punti di manipolazione della selezione per modificare la selezione per TextField. (I27032)

  • Implementa LongPressAndDrag per la selezione del campo di testo. (I17919)

Correzioni di bug

  • FocusModifier è deprecato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState e FocusDetailedState sono stati ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
  • runOnIdleCompose è stato rinominato in runOnIdle (I83607)
  • Diverse API di test sono state rinominate per essere più intuitive. Tutte le API findXYZ sono state rinominate in onNodeXYZ. Tutte le API doXYZ sono state rinominate in performXYZ. (I7f164)
  • Rimuove Modifier.ripple, precedentemente deprecato. Ora clickable utilizza l'effetto ripple come indicazione predefinita (se hai impostato un MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare clickable e ottenere l'indicazione dell'effetto ripple senza costi. Se devi personalizzare il parametro colore / dimensioni / contenuto per l'eco, puoi creare manualmente un'indicazione di eco e passarla a selezionabile come parametro indicazione. (I663b2, b/155375067)
  • Sono state rimosse le API di test delle dimensioni obsolete. (Iba0a0)
  • È stata creata l'API sperimentale LayoutNode (I4f2e9)
  • La versione 1 del blocco dell'orientamento dello scorrimento è implementata in Compose. (I1ce7a, b/150289741)
  • I popup, le finestre di dialogo e i menu ora ereditano il MaterialTheme contestuale (Ia3665, b/156527485)
  • È stato rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). La direzione del layout è tuttavia disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d)
  • Aggiungi AbsoluteArrangement: consente di disporre gli elementi secondari all'interno della riga senza il mirroring automatico in RTL (I3a1df)
  • L'annotazione @Untracked è stata ritirata. Sostituire con @ComposableContract(tracked=false) (Id211e)
  • Prima di questa modifica, il plug-in del compilatore di Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
  • Aggiungi il composable viewModel() che consente di creare o recuperare un ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)
  • La classe Radius è stata sottoposta a refactoring per diventare una classe in linea. Sono stati rimossi i metodi di creazione di compagni in favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio lungo l'asse y corrisponda a quello del parametro obbligatorio del raggio dell'asse x.

    È stato aggiornato DrawScope.drawRoundRect in modo da utilizzare un singolo parametro Radius anziché due valori float distinti per il raggio lungo gli assi x e y (I46d1b)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Classe Px eliminata nella sua interezza (I3ff33)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su tipi di Dp e primitivi per i parametri dei pixel (Id3434)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)

  • Il cursore di TextField ha un'animazione lampeggiante (Id10a7)

  • I gesti parziali non richiedono più il passaggio di un GestureToken (Id7ae5)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)

  • Modifier.semantics non è più deprecato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)

  • Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)

  • Aggiornamento dell'API Alignment e aggiunta del supporto per l'allineamento assoluto (che non esegue la duplicazione automatica nel contesto Rtl) (I38cd3)

  • Gli elementi Layout e LayoutModifier possono essere misurati con una direzione del layout diversa. (Ibd731)

  • Introduzione di un parametro facoltativo aggiuntivo per il rettangolo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)

  • È stato corretto un arresto anomalo in AdapterList durante la rimozione di elementi (Ic64b0, b/153195921)

  • Abbiamo modificato il modo in cui misuriamo il primo layout inserito all'interno del blocco activity.setContent { }. In precedenza, era costretto a riempire l'intera schermata dell'attività, mentre ora si comporta come se avessi inserito il layout in una serie: può essere più piccolo di uno schermo e verrà posizionato nella schermata in alto a sinistra. Se vuoi il vecchio comportamento, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714)

  • Il modulo ui-text-compose è stato rinominato in ui-text. ui-text now contiene composabili CoreText e CoreTextField (Ib7d47)

  • Il modulo ui-text viene rinominato ui-text-core (I57dec)

  • Sono stati spostati i composabili ui-framework/CoreText, CoreTextField in ui-text-compose. Ti consigliamo di includere ui-text-compose nel tuo progetto. (I32042)

  • runOnIdleCompose e runOnUiThread ora sono funzioni globali invece di metodi su ComposeTestRule. (Icbe8f)

  • [Mutabile]Gli operatori di delega della proprietà stato sono stati spostati nelle estensioni per supportare le ottimizzazioni della delega della proprietà di Kotlin 1.4. Gli utenti che chiamano devono aggiungere importazioni per continuare a utilizzare by state { ... } o by mutableStateOf(...). (I5312c)

  • Ora, per DrawLayerModifier e drawLayer(), il valore predefinito di clipToBounds e clipToOutline è false. (I0eb8b, b/152810850)

  • LayoutResult è stato rinominato in MeasureResult. (Id8c68)

  • Componente componibile del Centro ritirato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAlign.Center o con uno dei composabili Box o Stack con modificatori appropriati applicati (Idf5e0)

  • LayoutFlexible è stato rinominato LayoutWeight. Il parametro tight è stato rinominato in fill. (If4738)

  • DrawVector è stata modificata da una funzione composable normale in modo da restituire un modificatore drawVector() che disegnerà il vettore come sfondo di un layout. (I7b8e0)

  • Sostituisci la funzione composable Clip con il modificatore drawClip(). DrawClipToBounds è un modificatore pratico da utilizzare quando devi solo ritagliare in base ai limiti del livello con una forma rettangolare. (If28eb)

  • La funzione composable DrawShadow è stata sostituita con il modificatore drawShadow(). Le ombre vengono ora disegnate all'interno di LayerModifier. (I0317a)

  • androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable è stato rimosso. Era ridondante con ComponentNode. androidx.compose.ViewAdapters è stato rimosso. Non sono più un caso d'uso supportato. Compose.composeInto è stato deprecato. Utilizza invece setContent o setViewContent. Compose.disposeComposition è stato ritirato. Utilizza invece il metodo dispose su Composition restituito da setContent. androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt è stato rinominato in ComponentNode#insertAt ComponentNode#emitRemoveAt è stato rinominato in ComponentNode#removeAt ComponentNode#emitMode è stato rinominato in ComponentNode#move (Idef00)

  • Componibile Wrap deprecato. Può essere sostituito con il modificatore LayoutAlign o con il composable Stack (Ib237f)

  • La direzione del layout è stata propagata dal nodo del layout principale ai figli. È stato aggiunto il modificatore dell'orientamento del layout. (I3d955)

  • Rinomina Painter.toModifier in Painter.asModifier perché il modificatore appena creato ha un riferimento al Painter originale che può essere condiviso tra più istanze di modificatore (I7195b)

  • Supporto della direzione da destra a sinistra nel modificatore LayoutPadding (I9e8da)

  • Density e DensityScope sono stati uniti in un'unica interfaccia. Ora puoi utilizzare DensityAmbient.current anziché ambientDensity(). Anziché withDensity(density), usa semplicemente with(density) (I11cb1)

  • È stata rimossa la classe ValueHolder. Le classi AnimatedValue e AnimatedFloat sono state ristrutturate per astrarre il campo del valore dell'animazione in modo che le sottoclassi possano monitorare l'aggiornamento del valore.

    • Sono state aggiunte classi di modelli per AnimatedValue, AnimatedFloat e così via.
    • È stato aggiunto un nuovo insieme di API @Composable leggere per l'animazione tra valori.
    • (I79530)
  • Modifiche non compatibili all'API Ambient. Per informazioni dettagliate, consulta il log e la documentazione di Ambient<T> (I4c7ee, b/143769776)

  • Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la riga di allineamento sottoposta a query non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)

  • È stato corretto un bug di ConstraintLayout che causava un arresto anomalo durante le ricostruzioni. (Ibee5a, b/158164341)

  • L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del ricevitore che, oltre a constraints e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)

  • LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)

  • Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 ora hanno un ricevitore IntrinsicMeasureScope che fornisce l'API di query intrinseca con la direzione del layout propagata implicitamente. (Id9945)

  • LayoutDirectionAmbient è deprecato. Per leggere l'orientamento del layout definito dalle impostazioni internazionali, utilizza localeLayoutDirection su ConfigurationAmbient (I851b1)

  • Aggiunti positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)

  • Il composable ParentData è deprecato. Devi creare un modificatore che implementi l'interfaccia ParentDataModifier o utilizzare il modificatore LayoutTag se devi semplicemente taggare gli elementi layout secondari per riconoscerli all'interno del blocco di misura. (I51368, b/150953183)

  • Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni composable OnPositioned e OnChildPositioned. (I2ec8f)

  • Non consentire spaziature negative in LayoutPadding. Per gli offset di posizione negativi, deve essere utilizzato LayoutOffset. (Ifb5b1)

  • WithConstraints ha ricevuto il parametro LayoutDirection (I6d6f7)

  • È stato aggiornato il flag ComposeFlags.COMPOSER_PARAM in true, il che comporterà la modifica della strategia di generazione del codice per il plug-in di composizione. A un livello alto, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene trasmesso alle chiamate @Composable successive affinché il runtime possa gestire correttamente l'esecuzione. Si tratta di una modifica significativa che comporta la rottura del codice binario, ma dovrebbe preservare la compatibilità a livello di codice sorgente in tutti gli utilizzi consentiti di compose. (I7971c)

  • È stato modificato LayoutCoordinates in modo che le linee di allineamento fornite siano un insieme anziché una mappa e che LayoutCoordinates implementi l'operatore get() per il recupero di un valore. In questo modo, è più facile per i modificatori modificare uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a)

  • LayoutCoordinates non ha più una proprietà position. La proprietà posizione non ha senso se si prendono in considerazione LayoutModifiers, la rotazione o il ridimensionamento. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da un LayoutCoordinate all'altro.

    LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, pertanto tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)

  • Miglioramenti all'interfaccia API di Constraints (I0fd15)

  • È stato aggiunto TextDirection.Content (I48f36)

  • Modifica il menu della barra degli strumenti in modo che mostri correttamente le opzioni di copia, taglio e incolla. (Id3955)

  • Aggiungi la barra degli strumenti fluttuante per la selezione del campo di testo. (Ie8b07)

  • TextDirectionAlgorithm viene rinominato TextDirection (I75ce8)

  • TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)

  • Aggiungi HapticFeedback alla selezione del campo di testo. (I58050)

  • Aggiungi i metodi Copia, Taglia e Incolla alla selezione del campo di testo. (Idb70b)

  • TestTag e Semantics sono stati eliminati. Utilizza Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)

  • Il nome del pacchetto di Locale e LocaleList è passato da androidx.ui.text ad androidx.ui.intl (I8132c)

  • Modifica all'API: AnnotatedString(builder: Builder) viene rinominato in annotatedString(builder: Builder). (Ia6377)

  • Modifica all'API: AnnotatedString.Item viene rinominato in AnnotatedString.Range. (I2d44d)

  • Aggiungi la barra degli strumenti per le operazioni relative al testo. (I49d53)

  • La nuova proprietà LifecycleOwnerAmbient è ora disponibile. Ora un'attività che utilizzi con l'interfaccia utente di Compose deve estendere androidx.activity.ComponentActivity (o AppCompatActivity). setContent su android.app.Activity è ora deprecato (Idb25a, b/153141084)

  • Il nome del pacchetto ui-android-text (androidx.text) è stato sostituito con androidx.ui.text.platform per allinearsi alle norme di androidx. (I42711)