Compose Foundation

Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le fondamenta per creare i tuoi elementi del sistema di progettazione.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Alpha Release
2 luglio 2025 1.8.3 - 1.9.0-beta02 -

Struttura

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

Questa tabella spiega i gruppi e fornisce i link a ogni insieme di note di rilascio.

GruppoDescrizione
compose.animationCreare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente.
compose.compilerTrasforma le funzioni @Composable e attiva le ottimizzazioni con un plug-in del compilatore Kotlin.
compose.foundationScrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le fondamenta per creare i tuoi elementi del sistema di progettazione.
compose.materialCrea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti che corrispondono a quelli descritti all'indirizzo www.material.io.
compose.material3Crea UI Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include componenti e temi aggiornati e funzionalità di personalizzazione Material You come il colore dinamico. È progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12.
compose.runtimeElementi costitutivi fondamentali del modello di programmazione e della gestione dello stato di Compose e runtime di base per il plug-in del compilatore Compose da utilizzare come target.
compose.uiComponenti fondamentali dell'interfaccia utente di Compose necessari per interagire con il dispositivo, inclusi layout, disegno e input.

Dichiarazione di dipendenze

Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle per la tua app o il tuo modulo:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. 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 di Issue Tracker.

Versione 1.9

Versione 1.9.0-beta02

2 luglio 2025

androidx.compose.foundation:foundation-*:1.9.0-beta02 viene ritirata. La versione 1.9.0-beta02 contiene questi commit.

Nuove funzionalità

  • Supporta gli elementi intelligenti nel menu contestuale e nella barra degli strumenti di selezione.

Modifiche alle API

  • È stato corretto un bug per cui alcune tastiere hardware o telecomandi TV non riescono a spostare il cursore nel nuovo TextFields utilizzando i tasti direzionali e passano invece a un altro componente. È stato aggiunto ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled per poter disattivare questa correzione per il momento se causa un comportamento indesiderato in modo irrecuperabile. (Ie1922)

Correzioni di bug

  • È stato risolto il problema a causa del quale le intestazioni fisse non rimanevano fisse se era presente un elemento bloccato. (I9198d, b/385006133)
  • TextObfuscationMode.RevealLastTyped ora segue l'impostazione di sistema "TEXT_SHOW_PASSWORD". (I41c0c)
  • È stato corretto un bug per cui BasicTextField mostra erroneamente un avviso "Incolla dagli appunti" quando la barra degli strumenti di testo si apre per la prima volta. (I5fda2)

Versione 1.9.0-beta01

18 giugno 2025

androidx.compose.foundation:foundation-*:1.9.0-beta01 viene ritirata. La versione 1.9.0-beta01 contiene questi commit.

Modifiche che provocano un errore

  • I nodi modificatori background e border ora implementano SemanticsModifierNode. Ciò può comportare l'aggiunta di nuovi SemanticsNodes all'albero semantico e, di conseguenza, errori nei test che fanno ipotesi sulla struttura dell'albero semantico. Ad esempio, i test che utilizzano onChild, onParent, onSibling e altri metodi simili per fare asserzioni possono non riuscire se viene aggiunto un nuovo nodo tra i nodi corrente e di destinazione. Il modo migliore per correggere questi errori è aggiungere un testTag direttamente al nodo di destinazione. Un altro approccio consiste nell'utilizzare un matcher meno restrittivo, ad esempio onNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”)). (I638b5)

Modifiche alle API

  • Rinomina Modifier.addTextContextMenuComponents in appendTextContextMenuComponents. (I4c43f)
  • Sono state rimosse le funzioni AnnotatedOutputTransformation e addStyle e sono state trasferite a TextFieldBuffer. addStyle può ancora essere chiamato solo da OutputTransformation. (I9930a, b/417991824)
  • Clickable is rewritten to not use suspend pointer input as an optimization. Questa funzionalità è attivata da un flag. Puoi disattivarla se riscontri un bug nella nuova implementazione: ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65)
  • È stato introdotto isFlingCancellationWithNestedScrollFixEnabled per risolvere un problema di propagazione dello scorrimento rapido nello scorrimento nidificato. In questa CL ripristiniamo il comportamento di continuazione dello scorrimento rimosso in aosp/3260391. Annulleremo comunque l'animazione di scorrimento nel caso in cui il bambino venga rimosso dalla composizione. (I467f4, b/405910180, b/419049142, b/416784125)
  • WindowInsetsRulers: rulersIgnoringVisibility impostato sul valore massimo. getDisplayCutoutBounds() è stata modificata in modo da essere una funzione di estensione di PlacementScope. WindowInsetsAnimationProperties è stato modificato in WindowInsetsAnimation e getAnimationProperties() è stato modificato in getAnimation(). (I3816f)
  • InsetsRulers è stato modificato per essere in un codice comune con il nome WindowInsetsRulers. L'API è stata semplificata in modo che tutti gli inserti siano WindowInsetsRulers. Le proprietà di animazione non righelli sono state estratte in una classe AnimationProperties. WindowInsetsRulers.innermostOf() può essere utilizzato per unire più WindowInsetsRulers. (I2f0c6, b/415012444)

Correzioni di bug

  • Aggiungi di nuovo l'utilizzo di scrollAnimationSpec in ContentInViewNode. Il comportamento è stato rimosso durante il ritiro di scrollAnimationSpec, il che ha causato l'interruzione dei casi d'uso. (I1436a, b/403301605)

Versione 1.9.0-alpha04

4 giugno 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha04 viene ritirata. La versione 1.9.0-alpha04 contiene questi commit.

Modifiche alle API

  • PrefetchScheduler e la personalizzazione sono stati ritirati a favore dell'implementazione interna che esegue tutto il lavoro automaticamente. (I3a9a6, b/420551535)
  • Scrollable2DState aggiornato per utilizzare un offset nel metodo canScroll anziché un angolo. (I28694, b/417268474)
  • addAnnotation in AnnotatedOutputTransformation sostituito con addStyle. (I91c6f, b/417991824)
  • Stabilizzato LazyLayout. (If5db4)
  • È stato stabilizzato un costruttore vuoto per LazyLayoutPrefetchState e il relativo metodo di pianificazione schedulePrecomposition e schedulePrecompositionAndPremeasure. (I4362f, b/252853717)
  • È stato introdotto ProcessTextKey su Android utilizzato per le voci del menu contestuale aggiunte per le azioni di intent PROCESS_TEXT. (If0ac4)
  • Rendere pubbliche le API del menu contestuale. Sono state esposte Modifier.addTextContextMenuComponents e Modifier.filterTextContextMenuComponents per aggiungere e rimuovere elementi nel menu contestuale. Inoltre, abbiamo reso pubbliche le seguenti API elementari in modo che sia possibile creare un menu contestuale personalizzato:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • Rendi stabile LazyLayoutItemProvider (Icce09, b/261565751)
  • Sono state introdotte le funzionalità di selezione intelligente di Android che possono essere attivate/disattivate tramite ComposeFoundationFlags.isSmartSelectionEnabled. Ha anche esposto un compositionLocal LocalTextClassifierCoroutineContext statico che può essere utilizzato per specificare il CoroutineContext in cui viene avviato il job TextClassification. (I1dbaa, b/139321320)

Versione 1.9.0-alpha03

20 maggio 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha03 viene ritirata. La versione 1.9.0-alpha03 contiene questi commit.

Modifiche alle API

  • È stato aggiunto AnnotatedOutputTransformation che consente di aggiungere annotazioni a TextField prima del rendering. (Ibc6f0, b/389978748)
  • Introduci LazyLayoutMeasurePolicy e rendi LazyLayoutMeasureScope stabile. (I8c5df, b/252853717)
  • BasicSecureTextField ora solleva ScrollState del suo BasicTextField interno. (I6e576)
  • Sono stati introdotti i modificatori Modifier.onFirstVisible e Modifier.onVisibilityChanged, che sono modificatori di alto livello basati su Modifier.onLayoutRectChanged. Questi modificatori sono creati appositamente per gestire molti requisiti comuni delle applicazioni, come la registrazione delle impressioni, la riproduzione automatica dei video e così via. Sono stati creati pensando alle prestazioni, in modo che possano essere utilizzati in scenari critici basati su elenchi senza rischiare di compromettere le prestazioni di scorrimento. Oltre a queste API di modifica, sono state aggiunte altre API per RelativeLayoutBounds per supportare questi casi d'uso, nonché per consentire agli sviluppatori di creare facilmente modificatori personalizzati simili adatti al loro caso d'uso. (I759b8)
  • È stato introdotto un detectDragGestures di sovraccarico con controllo della tolleranza al tocco e del blocco dell'orientamento. (Iadb0d)
  • Introduci Modifier.scrollable2D, Scrollable2DState e le API companion per la creazione di stati. Sono state introdotte anche funzioni di estensione di scorrimento comuni. (Ic61c8, b/214410040)
  • I valori di colore a 64 bit di Compose non sono direttamente confrontabili con Android ColorLongs perché gli ID dello spazio colore non sono in ordine per alcuni spazi colore. Per la conversione da e verso gli spazi colore Android, vengono aggiunte due nuove API: toColorLong() e fromColorLong(). (I36899)

Correzioni di bug

  • Il testo copiato da più composable Text in un SelectionContainer ora avrà un separatore di riga \n aggiunto tra il testo proveniente dai composable Text separati. (I25332, b/285036739)

Versione 1.9.0-alpha02

7 maggio 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha02 viene ritirata. La versione 1.9.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stato corretto il modo in cui le modifiche all'input del puntatore vengono aggiunte a VelocityTracker in DragGestureNode. Questa operazione può essere controllata con il nuovo flag isOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818)
  • Rendere await[Vertical/Horizontal]PointerSlopOrCancellation pubblico (I6968b, b/298903681)
  • AbstractComposeView.consumeWindowInsets ora è impostato su false per impostazione predefinita. WindowInsets verrà regolato automaticamente in base alle dimensioni e alla posizione del bambino se impostato su false, quindi non è più necessario impostarlo su true per impostazione predefinita. In questo modo viene risolto il problema per cui le visualizzazioni secondarie non ricevevano aggiornamenti WindowInsets per impostazione predefinita. Gli sviluppatori possono disattivare l'aggiornamento impostando ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled su true o, preferibilmente, impostando AbstractComposeView.consumeWindowInsets su true in tutte le istanze della visualizzazione Compose. (I6fa0a, b/411868840)

Contributo esterno

  • Correzione dell'arresto anomalo di Pager con valori beyondViewportPageCount estremamente grandi (Idb2db)

Versione 1.9.0-alpha01

23 aprile 2025

androidx.compose.foundation:foundation-*:1.9.0-alpha01 viene ritirata. La versione 1.9.0-alpha01 contiene questi commit.

Modifiche al comportamento

  • I controlli Lint forniti con Compose ora richiedono una versione minima di AGP 8.8.2. Se non riesci a eseguire l'upgrade di AGP, puoi eseguire l'upgrade di Lint separatamente utilizzando android.experimental.lint.version=8.8.2 (o una versione più recente) in gradle.properties. Per eseguire i controlli lint di Compose all'interno dell'IDE, è necessario Android Studio Ladybug o versioni successive.

  • Modifica che causa interruzione: gli overload clickable, combinedClickable, selectable, toggleable e triStateToggleable senza un parametro Indication ora supportano solo le istanze IndicationNodeFactory fornite utilizzando LocalIndication. Questa modifica verrà applicata quando ricompilerai gli utilizzi di questi modificatori utilizzando questa versione di Compose. Le dipendenze binarie / transitive non sono interessate. Se fornisci un'implementazione di Indicazione deprecata a LocalIndication e utilizzi queste API, si verificherà un arresto anomalo in fase di runtime. Questa modifica del comportamento è necessaria per migliorare il rendimento e consentire alle funzioni componibili che utilizzano questi modificatori di essere ignorate durante la ricomposizione. Puoi utilizzare ComposeFoundationFlags.isNonComposedClickableEnabled=false per disattivare temporaneamente questa modifica del comportamento, in modo da abilitare l'upgrade di Compose senza essere bloccato in questa migrazione. Questo flag verrà rimosso dopo una release stabile. Per risolvere il problema, esegui la migrazione di tutte le implementazioni di indicazioni deprecate in modo che utilizzino IndicationNodeFactory. Puoi anche utilizzare gli overload con un parametro Indication esplicito. Questi overload continueranno a supportare le istanze non IndicationNodeFactory di Indication, anche se non è consigliabile per motivi di rendimento. (I6bcdc, b/316914333)

Modifiche alle API

  • Introduzione dell'API per la creazione di elenchi puntati personalizzati tramite AnnotatedString (I1d066, b/383269496, b/139326648)
  • Consenti a Compose di attivare ViewTreeObserver.OnScrollChanged. Questo comportamento viene introdotto con il flag isOnScrollChangedCallbackEnabled. Abbiamo anche introdotto una funzione di estensione di DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
  • È stato aggiunto il supporto per il controllo lint per TextFieldState per assicurarsi che venga ricordato all'interno della composizione. Prendi in considerazione l'utilizzo di rememberTextFieldState. (I53d74)
  • Aggiunto il supporto del controllo lint per FocusRequester per assicurarsi che venga ricordato all'interno della composizione (I6bf91)
  • È stato aggiunto il supporto per il controllo lint per BringIntoViewRequester per assicurarsi che venga ricordato all'interno della composizione. (Ibfba6)
  • Sono stati introdotti ambiti per le chiamate schedulePrefetch nelle strategie di griglie ed elenchi per allinearli alle funzionalità LazyListPrefetchState di fornitura di informazioni su dimensioni e indice. (Iad80c)
  • Modifica che causa interruzione: gli overload clickable, combinedClickable, selectable, toggleable e triStateToggleable senza un parametro Indication ora supportano solo le istanze IndicationNodeFactory fornite utilizzando LocalIndication. Questa modifica verrà applicata quando ricompilerai gli utilizzi di questi modificatori utilizzando questa versione di Compose. Le dipendenze binarie / transitive non sono interessate. Se fornisci un'implementazione di Indicazione deprecata a LocalIndication e utilizzi queste API, si verificherà un arresto anomalo in fase di runtime. Questa modifica del comportamento è necessaria per migliorare il rendimento e consentire alle funzioni componibili che utilizzano questi modificatori di essere ignorate durante la ricomposizione. Puoi utilizzare ComposeFoundationFlags.isNonComposedClickableEnabled=false per disattivare temporaneamente questa modifica del comportamento, in modo da abilitare l'upgrade di Compose senza essere bloccato in questa migrazione. Questo flag verrà rimosso dopo una release stabile. Per risolvere il problema, esegui la migrazione di tutte le implementazioni di indicazioni deprecate in modo che utilizzino IndicationNodeFactory. Puoi anche utilizzare gli overload con un parametro Indication esplicito. Questi overload continueranno a supportare le istanze non IndicationNodeFactory di Indication, anche se non è consigliabile per motivi di rendimento. (I6bcdc, b/316914333)
  • Introduci un flag per controllare il comportamento di prefetch nidificato automatico: isAutomaticNestedPrefetchEnabled (I8d448)
  • Introduci un sovraccarico per LazyGridState e rememberLazyGridState che richiede un LazyLayoutCacheWindow. (I51151)
  • Aggiunge righelli per i margini interni della finestra. Aggiunge DerivedRuler per consentire il calcolo di un righello da un altro righello. Modifica PlacmentScope per implementare la densità. (I658bc, b/359260964)
  • È stata aggiunta una funzione di fabbrica WindowInsets() con zero argomenti per creare facilmente WindowInsets vuoti. (I65f62, b/395311689)
  • Aggiunto PaddingValues.Zero per un PaddingValues vuoto. (If193e, b/386255688)

Correzioni di bug

  • L'overflow state di BasicTextField mantiene il cursore visibile quando le sue dimensioni cambiano. (I0eb41, b/406187741)
  • API onVisibleItemsUpdated aggiornate in LazyListPrefetchStrategy e LazyGridPrefetchStrategy per fornire informazioni sullo stato iniziale. (If2cfa)

Versione 1.8

Versione 1.8.3

18 giugno 2025

androidx.compose.foundation:foundation-*:1.8.3 viene ritirata. La versione 1.8.3 contiene questi commit.

Versione 1.8.2

20 maggio 2025

androidx.compose.foundation:foundation-*:1.8.2 viene ritirata. La versione 1.8.2 contiene questi commit.

Correzioni di bug

  • È stata introdotta una correzione che impedisce il calcolo del numero di elementi da caricare per la ricerca mirata per causare una divisione per zero. È stato applicato il controllo a tutti i layout che utilizzano LazyLayoutBeyondBoundsState. (8e6dc8)

Versione 1.8.1

7 maggio 2025

androidx.compose.foundation:foundation-*:1.8.1 viene ritirata. La versione 1.8.1 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug in BasicText e TextAutoSize in cui l'utilizzo di TextOverflow.Ellipsize comportava un testo più piccolo del necessario. (I1e1d8, b/396582066)
  • È stato corretto un bug in BasicTextField che causava arresti anomali vari quando TextFieldDecorator non chiamava innerTextField. (I2638c), b/308398612
  • È stato corretto un bug in TextField che causava la scomparsa completa della barra degli strumenti di testo e dei punti di manipolazione di selezione quando veniva modificata l'istanza di TextFieldState. (I8068a), b/390477786
  • È stato corretto un bug in BasicText per cui la modifica del vincolo di larghezza minima non aggiornava il posizionamento del testo quando textAlign era impostato su un valore non predefinito. (I77a96), b/406305552

Versione 1.8.0

23 aprile 2025

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

Versione 1.8.0-rc03

9 aprile 2025

androidx.compose.foundation:foundation-*:1.8.0-rc03 viene ritirata. La versione 1.8.0-rc03 contiene questi commit.

Versione 1.8.0-rc02

26 marzo 2025

androidx.compose.foundation:foundation-*:1.8.0-rc02 viene ritirata. La versione 1.8.0-rc02 contiene questi commit.

Versione 1.8.0-rc01

12 marzo 2025

androidx.compose.foundation:foundation-*:1.8.0-rc01 viene ritirata. La versione 1.8.0-rc01 contiene questi commit.

Versione 1.8.0-beta03

26 febbraio 2025

androidx.compose.foundation:foundation-*:1.8.0-beta03 viene ritirata. La versione 1.8.0-beta03 contiene questi commit.

Correzioni di bug

  • È stata aggiunta una nuova proprietà semantica InputText che acquisisce il valore di un campo di testo prima che venga applicata la trasformazione dell'output. (Iae46a, b/395911609, b/176949051)
  • Rimossi gli overload AutoSize ritirati. Utilizza le API TextAutoSize che svolgono la stessa funzione. (I2c90f)
  • È stato risolto un problema di memorizzazione nella cache con TextAutoSize per cui un secondo passaggio di layout con gli stessi vincoli poteva comportare l'utilizzo della seconda dimensione del carattere più adatta anziché della più grande. (Id367f)

Versione 1.8.0-beta02

12 febbraio 2025

androidx.compose.foundation:foundation-*:1.8.0-beta02 viene ritirata. La versione 1.8.0-beta02 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui le implementazioni dell'overscroll che utilizzano LayoutModifierNode non funzionavano correttamente all'interno dei contenitori di scorrimento.

Versione 1.8.0-beta01

29 gennaio 2025

androidx.compose.foundation:foundation-*:1.8.0-beta01 viene ritirata. La versione 1.8.0-beta01 contiene questi commit.

Modifiche alle API

  • SemanticsNodeInteraction.semanticsId() è stato rimosso. Utilizza invece SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Riscrivi l'API requestAutofill in modo che esista al di fuori del gestore della compilazione automatica. (Id1929)
  • ContextualFlowRow e ContextualFlowColumn sono stati contrassegnati come deprecati. Questo componente sperimentale è stato introdotto nella versione 1.7 e non era ancora stato stabilizzato, pertanto l'implementazione è stata ritenuta indesiderabile. In futuro, potrebbe essere fornito un componente che risolve i casi d'uso che questo componente era destinato a risolvere.
    • FlowRow e FlowColumn hanno sovraccarichi sperimentali introdotti nella versione 1.7 che includono un parametro overflow. L'utilizzo di questo parametro è stato ritirato e al suo posto possono essere utilizzate le sovraccariche senza questo parametro. Il comportamento predefinito di "overflow" per questi sovraccarichi sarà "Clip", come fin dalla sua introduzione.
    • Molti casi d'uso per ContextualFlowRow possono essere realizzati utilizzando FlowRow, ma riconosciamo che non è vero in generale. ContextualFlowRow è completamente implementabile nello spazio utente ed è possibile tentare di copiarne l'implementazione e adattarla, se necessario. In futuro, speriamo di risolvere questi casi d'uso in modo diverso. (Ibafec)

Correzioni di bug

  • Correzione del layout del testo con i puntini di sospensione che a volte vengono tradotti in modo errato durante le animazioni. Per saperne di più, consulta b/389707025 (Ie55b1, b/389707025)
  • È stato corretto un bug in BasicText con TextAutoSize e maxLines impostati su 1. (Ic0450, b/376834366)
  • L'altezza intrinseca minima del testo ora tiene conto del parametro minLines. Ciò significa che l'altezza intrinseca minima segnalata non sarà inferiore all'altezza richiesta per soddisfare il parametro minLines (I225f9, b/388299762).

Versione 1.8.0-alpha08

15 gennaio 2025

androidx.compose.foundation:foundation-*:1.8.0-alpha08 viene ritirata. La versione 1.8.0-alpha08 contiene questi commit.

Modifiche alle API

  • AutoSize: è stato rinominato AutoSize in TextAutoSize e sono state pubblicate API che consentono di creare implementazioni TextAutoSize personalizzate. Per un esempio di implementazione della dimensione automatica del testo personalizzato, consulta TextAutoSizeSample. (I85756)
  • Lo strumento di controllo delle funzionalità DetectTapGesturesEnableNewDispatchingBehavior è stato spostato in ComposeFoundationFlags e rinominato in isDetectTapGesturesImmediateCoroutineDispatchEnabled. Il vecchio flag è deprecato e ora delegherà invece a ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)

Correzioni di bug

  • Attivato DetectTapGesturesEnableNewDispatchingBehavior per impostazione predefinita. Le API TapGestureDetector ora utilizzano per impostazione predefinita il nuovo comportamento di distribuzione (invio immediato). (I9f2bc, b/369648479)
  • Sono stati corretti i modificatori requiredWidth/Height/Size per gestire correttamente le dimensioni intrinseche. (Ie3d7d, b/368113212)

Contributo esterno

  • BasicTooltip è stato reso comune in foundation e BasicTooltip/Tooltip in Material 3. (Ifc2e6)
  • È stata aggiunta una nuova interfaccia degli appunti e una composizione locale. (I80809)

Versione 1.8.0-alpha07

11 dicembre 2024

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

Modifiche alle API

  • È stato eliminato il flag ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled che ha contribuito a ripristinare la rimozione di graphicsLayer interno da BasicText. Se utilizzavi questo flag, comunicaci i motivi segnalando un bug. Puoi anche 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)
  • Ha LocalAutofillHighlightColor composizione locale che utilizza un tipo di colore. (I0e05b)
  • OverscrollEffect#withoutDrawing rinominato in OverscrollEffect#withoutVisualEffect. (I1a154)

Correzioni di bug

  • Correzione successiva di un problema nel calcolo del target di AnchoredDraggable, che poteva stabilizzarsi sull'ancora errata per determinati scorrimenti. (I23b87, b/367660226)

Contributo esterno

  • Aggiungi BringIntoViewResponderModifierNode all'interfaccia utente, che offre un nuovo modo per implementare la funzionalità Porta in visualizzazione 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 ritirata. La versione 1.8.0-alpha06 contiene questi commit.

Modifiche alle API

  • Aggiunge il modificatore stylusHoverIcon. (Iff20a, b/331289114)
  • confirmValueChange di AnchoredDraggableState deprecato. Anziché bloccare le modifiche dello stato, gli ancoraggi non consentiti non devono essere inclusi nel set di ancoraggi attivi e deve essere utilizzato un OverscrollEffect per indicare l'indisponibilità dell'azione richiesta. (Ia717f)
  • Modifica la gestione della compilazione automatica in modo che diventi un'interfaccia. (I84914, b/376080755)
  • Aggiunge le API OverscrollEffect#withoutDrawing e OverscrollEffect#withoutEventHandling. Queste API creano un'istanza wrapper dell'effetto di overscroll fornito che non disegna / gestisce rispettivamente gli eventi, il che consente di eseguire il rendering dell'overscroll in un componente separato dal componente che distribuisce gli eventi. Ad esempio, disattivando il disegno dell'overscroll all'interno di un elenco pigro e disegnandolo separatamente in alto / altrove. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • Aggiunta del supporto del completamento automatico nella barra degli strumenti di testo. (Ie6a4c)
  • Depreca OverscrollConfiguration e LocalOverscrollConfiguration e aggiunge rememberPlatformOverscrollFactory per creare un'istanza di / personalizzare i parametri dell'implementazione predefinita dell'overscroll. Per disattivare l'overscroll, utilizza LocalOverscrollFactory provides null anziché LocalOverscrollConfiguration provides null. Per modificare il colore / il padding della luce, anziché LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), utilizza LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • È stata modificata la proprietà effectModifier in OverscrollEffect in modo che sia node: DelegatableNode, in linea con le altre API. (Ic0b46, b/255554340)
  • È stata rimossa l'API GlobalAssertions sperimentale. Il suo utilizzo previsto era quello di 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 ritirata. La versione 1.8.0-alpha05 contiene questi commit.

Nuove funzionalità

  • Supporto del ridimensionamento automatico del testo. Passa un'istanza AutoSize (ad es.AutoSize.StepBased) al tuo composable di testo preferito (come BasicText) e guarda le dimensioni del testo adattarsi allo spazio disponibile. (Ice7e0, b/139320827)
  • Aggiunge le API OverscrollFactory e LocalOverscrollFactory per consentire la configurazione dell'overscroll all'interno di una gerarchia. Il valore fornito tramite LocalOverscrollFactory verrà utilizzato per impostazione predefinita per creare un OverscrollEffect. Per creare e memorizzare un effetto dalla fabbrica corrente fornita, utilizza rememberOverscrollEffect(). (I51ca4, b/255554340)

Modifiche alle API

  • Introduci CompositionLocal che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione automatica riuscita. (I32092)
  • ScrollableDefaults.overscrollEffect rimosso. Utilizza invece rememberOverscrollEffect. Verrà creata un'istanza dell'implementazione corrente dell'overscroll fornita con LocalOverscrollFactory. (I1651a, b/255554340),(b/234451516)
  • Introduce 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 sulle prestazioni, ma non è più necessaria. Devi invece utilizzare direttamente Modifier.combinedClickable come per le altre API di modifica. (I4b658)
  • Aggiunge overload a horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager e VerticalPager con 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 disegnare lo stesso OverscrollEffect due volte non è supportato, quindi non puoi disegnare lo stesso OverscrollEffect fornito a uno di questi componenti separatamente con Modifier.overscroll. Il caso d'uso del disegno dell'overscroll al di fuori dei limiti di questi componenti verrà trattato 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 ritirata. La versione 1.8.0-alpha04 contiene questi commit.

Modifiche alle 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 a AnnotatedString, mentre in precedenza avevano 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 puntatore. (Iccf02, b/335339283)

Correzioni di bug

  • È stato corretto un bug per cui le soglie posizionali passate a AnchoredDraggableDefaults.flingBehavior non venivano prese in considerazione correttamente in alcuni scenari. (Ifdf0d, b/367660226)
  • È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante uno scorrimento in corso. Ora questi nodi annulleranno lo scorrimento e invieranno correttamente l'evento onPostFling con la velocità rimanente. Stiamo anche introducendo il flag NewNestedScrollFlingDispatchingEnabled per controllare il comportamento in caso di regressioni. Il flag verrà rimosso prima della 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 ritirata. La versione 1.8.0-alpha03 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • Implementa la selezione dei gesti in detectDragGestures, elementi trascinabili e scorrevoli. Ora, se un elemento trascinabile figlio abbandona un gesto, l'elemento padre ha l'opportunità di riprenderlo. Ciò consente una gestione dei gesti più continua e integrata. (Ic88fe)
  • Aggiorna il comportamento di annullamento dello scorrimento nei contenuti scorrevoli. Ora, se un elemento scorrevole viene lanciato e raggiunge i limiti, trasmetterà correttamente la velocità di lancio all'elemento scorrevole successivo della catena, anziché continuare a guidare il lancio. (I9326a)

Versione 1.8.0-alpha02

18 settembre 2024

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

Modifiche alle API

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

Versione 1.8.0-alpha01

4 settembre 2024

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

Versione 1.7

Versione 1.7.8

12 febbraio 2025

androidx.compose.foundation:foundation-*:1.7.8 viene ritirata. La versione 1.7.8 contiene questi commit.

Correzioni di bug

  • È stato corretto l'arresto anomalo in BasicTextField con la trasformazione dell'input durante la sostituzione di parte del testo incollato. (I73702)

Versione 1.7.7

29 gennaio 2025

androidx.compose.foundation:foundation-*:1.7.7 viene ritirata. La versione 1.7.7 contiene questi commit.

Correzioni di bug

  • È stato risolto l'arresto anomalo di IndexOutOfBound con l'annotazione del link. (Ic96d2)
  • È stata corretta la ricomposizione infinita in alcuni casi limite con i link. (I04a03)

Bug noti

  • È stato identificato un bug che può causare il ritorno a capo del testo in modo imprevisto in rari scenari sul livello API Android 35. Non può essere risolto nella versione 1.7, quindi verrà risolto nella versione 1.8. (b/391378120)

Versione 1.7.6

11 dicembre 2024

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

Correzioni di bug

  • È stato risolto il problema relativo alla mancata visibilità dei contenuti in linea del testo per i servizi di accessibilità.
  • Risolto un problema per cui AndroidEmbeddedExternalSurface non veniva reimpostato correttamente e rimaneva bloccato quando veniva riutilizzato in un elenco pigro.

Versione 1.7.5

30 ottobre 2024

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

Correzioni di bug

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

Versione 1.7.4

16 ottobre 2024

androidx.compose.foundation:foundation-*:1.7.4 viene ritirata. 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)
  • Rimossa ReusableContentHost alla radice degli elementi del layout pigro. Questa era 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 ritirata. 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 non predefinito.

Versione 1.7.2

18 settembre 2024

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

Correzioni di bug

  • È stato risolto il problema relativo all'elemento trascinabile a cui mancavano eventi di discesa, il che causava un aspetto più lento del normale.

Versione 1.7.1

10 settembre 2024

  • Nessuna modifica agli artefatti Android. Sono stati rimossi -desktop artefatti e sono stati aggiunti -jvmStubs e -linuxx64Stubs artefatti. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose.

Versione 1.7.0

4 settembre 2024

androidx.compose.foundation:foundation-*:1.7.0 viene ritirata. 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 di indicazione, IndicationNodeFactory. Ciò porta a implementazioni di indicazioni più efficienti rispetto alla precedente API rememberUpdatedInstance (ora obsoleta). Per informazioni sulla migrazione, visita il sito developer.android.com.
    • clickable / combinedClickable / selectable / toggleable ora accetta un parametro MutableInteractionSource che ammette valori nulli. Se è null e l'indicazione fornita è un IndicationNodeFactory, l'indicazione può essere creata in modo differito solo quando necessario, il che migliora le prestazioni. Se non esegui l'hosting e non utilizzi MutableInteractionSource, ti consigliamo di passare null anziché remember { MutableInteractionSource() }.
    • Indication#rememberUpdatedInstance è stato ritirato. Comporta una penalità di rendimento elevata e inevitabile e impedisce altre ottimizzazioni. Al suo posto, devi utilizzare la nuova API IndicationNodeFactory.
  • BasicTextField che utilizza un TextFieldState è ora stabile e consigliamo a tutti i siti di chiamata di iniziare la migrazione da BasicTextField(value, onValueChange) a BasicTextField(TextFieldState).
  • ClickableText è stato deprecato. Per aggiungere link selezionabili al testo, utilizza BasicText con la nuova annotazione LinkAnnotation nel AnnotatedString. LinkAnnotation consente uno stile personalizzato in base allo stato del link (ad es. attivo, al passaggio del mouse).
  • Ti presentiamo ContextualFlowRow e Enhanced FlowRow/Column con MaxLines e Overflow. Siamo felici di annunciare i miglioramenti apportati alle funzionalità sperimentali FlowRow e FlowColumn, che ora includono il supporto di maxLines e dell'overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cui ContextualFlow* è perfetto per un numero elevato di elementi che utilizzano una piccola configurazione maxLines e pulsanti dinamici +N Mostra altro, 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 rientrino nel valore massimo dell'asse trasversale, imposta l'overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Esplora ContextualFlowRowSample e FlowRowSample per vedere esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
  • Il supporto dell'animazione di comparsa e scomparsa degli elementi è stato aggiunto a LazyColumn e LazyRow. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (I2d7f7, b/150812265)
  • È stata implementata la compatibilità sperimentale con gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (ScrollCaptureCallback).
  • Le origini NestedScroll Drag and Fling vengono sostituite da UserInput e SideEffect per tenere conto della definizione estesa di queste origini che ora includono animazioni (Side Effect) e rotellina del mouse e tastiera (UserInput).
  • Le richieste di prefetch LazyLayout possono ora 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 (ID 513f).
  • Supportare la funzionalità di scrittura a mano libera con lo stilo sui dispositivi dopo Android U. (I002e4)
  • Varie API sono state promosse a stabili
    • Pager, snapping, rientri delle finestre

Versione 1.7.0-rc01

21 agosto 2024

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

Correzioni di bug

  • È stato corretto un problema di regressione in cui l'arresto anomalo si verificava quando un elemento era selezionato all'interno di un elemento principale selezionabile (o cliccabile) e disattivato. (b/317561689)

Versione 1.7.0-beta07

7 agosto 2024

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

Correzioni di bug

  • L'input di testo relativo alle funzioni SemanticsNodeInteraction performTextReplacement, performTextInput e performTextClearance ora genererà errori di asserzione quando vengono chiamate su TextFields di sola lettura. (I4ae8f)
  • È stato risolto un problema di visualizzazione nei link ipertestuali. (I23311)
  • È stato risolto il problema relativo al modificatore contentReceiver che non funzionava con alcuni IME.
  • Generazione della velocità: impedisci la propagazione dei valori NaN in Compose UI e Foundation.

Versione 1.7.0-beta06

24 luglio 2024

androidx.compose.foundation:foundation-*:1.7.0-beta06 viene ritirata. 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 ritirata. 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 ritirata. La versione 1.7.0-beta04 contiene questi commit.

Correzioni di bug

  • Evita arresti anomali durante la misurazione di righe di testo molto lunghe (ad es.10. 000 caratteri) (8157ab)
  • Corregge la misurazione di testi molto grandi che causano arresti anomali nella nuova 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 ritirata. 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 ritirata. La versione 1.7.0-beta02 contiene questi commit.

Modifiche alle API

  • Aggiunge un'API sperimentale per configurare il comportamento di prefetch di LazyGrids in modo simile all'API sperimentale esistente per LazyLists. Ciò include il supporto per il recupero preventivo degli elementi in LazyGrids nidificati. Analogamente a LazyListPrefetchStrategy, l'implementazione predefinita prevede il precaricamento dei primi due elementi nidificati di ogni griglia, ma questa operazione può essere configurata dalle nuove API LazyGridPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • SemanticsProperties.Editable è stato rinominato in IsEditable e SemanticsPropertyReceiver.editable è stato modificato in isEditable. La proprietà ora è booleana e viene sempre specificata dai 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: è stato spostato TextLinkStyles in TextStyle ed è stato rimosso TextDefaults da Material (I5477b)

Correzioni di bug

  • LayoutCoordinates.introducesFrameOfReference è stato rinominato in LayoutCoordinates.introducesMotionFrameOfReference per riflettere meglio il suo scopo. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)
  • È stato rimosso "Predefinito" dalle proprietà MarqueeDefaults. (I1d8a0)
  • È stato rimosso "Marquee" 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 il pager si blocca quando viene lanciato verso un limite, dopo essersi già stabilizzato al limite. (I9f373, b/339171222)
  • BTF2 ora ha i gesti di selezione del mouse corretti. (Ibe8c6)

Contributo esterno

  • Invia di nuovo "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622)
  • Rendi il tipo di contenuti basato sul calcolo del tempo di composizione/misurazione nel prefetch per migliorare la precisione (Ibccb1)
  • Rendere disponibili i modificatori WindowInsetsPadding dal set di origini comuni (I070b2)

Versione 1.7.0-beta01

14 maggio 2024

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

Modifiche alle API

  • È stata riaggiunta la proprietà KeyboardOptions.shouldShowKeyboardOnFocus 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 da destra a sinistra. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations è ora hasEqualAnnotations. (I685c0)
  • È stata aggiornata l'API per ottenere link con tema Material nel testo. In particolare, sono stati rimossi i metodi da TextDefaults per costruire LinkAnnotations a tema e analizzare l'HTML con link a tema. È stata invece aggiunta una classe TextLinkStyles che consente di applicare uno stile ai link come parametro del composable Text. (I31b93)
  • onDragStarted e onDragStopped sono stati sostituiti con callback non sospesi. (I59de8)

Correzioni di bug

  • È stato corretto un bug per cui Pager si arrestava in modo anomalo quando contentPadding era maggiore dei vincoli in entrata. Il pager ora 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 ritirata. La versione 1.7.0-alpha08 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto un menu contestuale con il tasto destro del mouse a BasicTextField e SelectionContainer con voci per le azioni taglia, copia, incolla e seleziona tutto. (If8c93, Ia2b49, I6f268)

Modifiche alle API

  • Le richieste di prefetch LazyLayout possono ora 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 (ID 513f).
  • isPositionedByParentWithDirectManipulation rinominato in introducesFrameOfReference. Tieni presente che ora ha l'effetto contrario, il che significa che per impostazione predefinita la maggior parte degli elementi LayoutCoordinates introduce un frame di riferimento e solo quando viene posizionata sotto manipolazione diretta la proprietà sarà false. Per eseguire query sulla posizione solo con quelle che introducono un frame di riferimento, utilizza positionInLocalFrameOfReference(...). Oppure positionInLocalLookaheadFrameOfReference da un LookaheadScope. (Ifc5f7)
  • onClicked rinominato in onClick all'interno di LinkInteractionListener (Iaa35c)
  • Modifica della lambda di azione per getScrollViewportLength in base al feedback del consiglio API. (Ibc74a)
  • Sono state rinominate le API di delega della scrittura a mano libera con stilo. (Ica45f, b/327271923)
  • Rinomina TextInclusionStrategy.isInside in isIncluded. Rendi il tipo restituito Paragraph/MultiParagraph#getRangeForRect() non annullabile. (I51f26)

Correzioni di bug

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

Contributo esterno

  • PrefetchExecutor -> PrefetchScheduler rinominato per riflettere meglio le sue responsabilità. (Ib9154)
  • È stato aggiunto il supporto per il recupero preventivo 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 di questi LazyLists. L'implementazione predefinita prevede il recupero anticipato dei primi due 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 ritirata. La versione 1.7.0-alpha07 contiene questi commit.

Nuove funzionalità

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

Modifiche alle API

  • Aggiunge ContextMenuColors e il relativo LocalContextMenuTheme ProvidableCompositionLocal. I colori del menu contestuale nei campi di testo e nel testo selezionabile possono essere modificati fornendo la composizione locale. (Ifa154)
  • I link di testo hanno ricevuto l'opzione di stile dello stato premuto, oltre allo stile normale, al passaggio del mouse e alla messa a fuoco. (I5f864, b/139312671)
  • Introduci ViewConfiguration.HandwritingGestureLineMargin per i gesti di scrittura a mano libera. Supporta il gesto di scrittura a mano libera per BasicTextField. (Ie6e13, b/325660505)
  • Abbiamo rimosso DelegatableNode.scrollIntoView per la release 1.7 perché non abbiamo avuto il tempo di completare la stabilizzazione del resto della superficie API correlata. Questa funzione verrà reintrodotta nella versione 1.8 (I6cf61, b/333421581, b/332900232)
  • Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento excludeDirectManipulationOffset per escludere l'offset impostato dai layout principali che hanno posizionato i relativi elementi secondari utilizzando Placeable.PlacementScope.withDirectManipulationPlacement. Allo stesso modo, un layout che cambia spesso la posizione dei relativi elementi secondari ora può posizionarli utilizzando withDirectManipulationPlacement (ad esempio lo scorrimento, implementato per impostazione predefinita). In questo modo, le animazioni basate su approachLayout sono più intuitive, in quanto ora è possibile differenziare l'offset da animare e quello da applicare direttamente quando si decide di animare l'approccio. (I60ec7)
  • Presenta requestScrollToItem per LazyStaggeredGrid. Per ogni misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numero requestScrollToItem. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamato requestScrollToItem. (I63983)
  • Introduci requestScrollToPage in Pager. Per ogni misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numero 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 misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numero requestScrollToItem. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamato requestScrollToItem. (I0a7a0)
  • ClickableText è contrassegnato come deprecato. Per aggiungere link al testo, crea un AnnotatedString con un LinkAnnotation corrispondente al tuo link e passa questo AnnotatedString al composable Text (I34d4b, b/323346994).
  • UrlAnnotation è deprecato, utilizza LinkAnnotation.Url. Se utilizzi i temi Material, usa l'oggetto TextDefaults per creare l'annotazione con i temi Material applicati (I8d180, b/323346545).
  • String.parseAsHtml rinominato in AnnotatedString.Companion.fromHtml (I43dcd)
  • Sono stati aggiunti argomenti di stile (linkStyle, focusedLinkStyle, hoveredLinkStyle) e un listener di interazione con i link al metodo parseAsHtml. Quando analizza la stringa con tag HTML con tag <a>, il metodo costruisce un LinkAnnotation.Url per ogni tag e passa gli oggetti di stile e il listener di interazione con i link a ogni annotazione. (I7c977)
  • Ora LinkAnnotation accetta gli argomenti di stile basati sullo stato e un LinkInteractionListener. Aggiungi questa annotazione a AnnotatedString per ottenere un link ipertestuale. Passando focusedState e/o hoveredState puoi definire la configurazione visiva dei link quando sono selezionati e/o quando il cursore li sorvola. (I81ce4, b/139312671)
  • Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
  • LazyColumn ora esegue il rendering corretto delle 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 quale carattere utilizzare durante l'offuscamento dei contenuti. (I0588b)
  • Le origini NestedScroll Drag and Fling vengono sostituite da UserInput e SideEffect per tenere conto della definizione estesa di queste origini, che ora includono animazioni (Side Effect) e rotellina del mouse e tastiera (UserInput). (I40579)
  • Ti presentiamo LocalBringIntoViewSpec, un comportamento di scorrimento dello stato attivo dipendente dalla piattaforma che viene applicato al livello del modificatore Scrollable. (I27aa5, b/317453911)
  • TextFieldCharSequence rimosso. TextFieldBuffer.originalValues viene sostituito da TextFieldBuffer.originalText e TextFieldBuffer.originalSelection. (I2c7d6)
  • ImeOptions.hintLocales non è più annullabile. Se vuoi trasmettere un elenco di impostazioni internazionali 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 considera più le soglie di posizione. Ora ha una soglia implicita del 50%, il che significa che targetValue cambia a metà strada tra due punti di ancoraggio. (I82c2c)

Contributo esterno

  • Ridenominazione di due API di scorrimento (I56a75)

Versione 1.7.0-alpha06

3 aprile 2024

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

Nuove funzionalità

  • Il supporto dell'animazione di comparsa e scomparsa degli elementi è stato aggiunto a LazyColumn e LazyRow. In precedenza era possibile aggiungere il modificatore Modifier.animateItemPlacement() per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamato Modifier.animateItem() che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (I2d7f7, b/150812265)
  • I clienti di LazyColumn/LazyRowora possono disattivare la gestione di un indice basato sulla chiave per l'imminente misurazione chiamando un LazyListState.requestToScroll non sospeso. (I98036, b/209652366)
  • 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 gli 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 è disattivato per impostazione predefinita. Per attivare la funzionalità, imposta il flag ComposeFeatureFlag_LongScreenshotsEnabled su true. Questo flag verrà rimosso prima della beta 1.7. (I2b055, b/329296471)
  • Introduci una nuova API GraphicsLayer per offrire maggiore flessibilità nel posizionamento e nel rendering delle istanze GraphicsLayer e supportare le funzionalità di rendering intrinseco senza dover coordinarsi con le implementazioni componibili per specificare le istanze del modificatore GraphicsLayer.

Modifiche alle API

  • Per impostazione predefinita, tutti i parametri KeyboardOptions ora hanno un valore non specificato. Metodo KeyboardOptions.merge aggiunto.
  • KeyboardOptions.autoCorrect è stato rinominato in autoCorrectEnabled ed è stato reso annullabile, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492)
  • outOfBoundsPageCount rinominato in beyondViewportPageCount. (I129c6)
  • fun ClipEntry.getMetadata() è stato modificato in val ClipEntry.clipMetadata. (I50155)
  • TextFieldState.valueAsFlow() rimosso. Preferisci utilizzare snapshotFlow { state.text } o snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • Parametri InputTransformation.transformInput riorganizzati. originalValue: TextFieldCharSequence rimosso. Ora TextFieldBuffer riporta questo valore con lo stesso nome. È stato rimosso anche il parametro valueWithChanges: TextFieldBuffer. TextFieldBuffer ora è l'ambito del ricevitore nella funzione. (I919cc)
  • Le varianti 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 nei campi di input di testo "fittizi". (I9c09c, b/327271923)
  • KeyboardOptions.shouldShowKeyboardOnFocus rinominato in showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Rimosso il parametro hintMediaTypes da Modifier.contentReceiver. Gli sviluppatori erano già invitati a controllare il tipo di contenuti multimediali di TransferableContent ricevuto, in quanto potrebbe essere incompatibile con hintMediaTypes configurato. (I82f99)
  • Sono stati riordinati i parametri di BasicSecureTextField. Sono stati rimossi i parametri keyboardType e imeAction 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. Pertanto, sono stati aggiunti TextFieldState.selection: TextRange e TextFieldState.composition: TextRange? per leggere i valori di selezione e composizione correnti 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 attuale. Controlla anche il risultato di ClipboardManager.getClip per capire se negli appunti è presente un clip corrente. (I50498)
  • ClipboardManager.setClip ora accetta il valore null per poter cancellare gli appunti. (I7d2e9)
  • ReceiveContentListener viene convertito in un'interfaccia di funzione. Viene rimosso anche l'overload di Modifier.receiveContent che accetta una lambda, poiché ReceiveContentListener ora è un'interfaccia di funzione.
  • Modifier.receiveContent è stato rinominato in Modifier.contentReceiver. (I1e6af)
  • TransferableContent.consumeEach rinominato in TransferableContent.consume. (I1e462)
  • L'API rememberTextFieldState è diventata un'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 obsoleti in determinati scenari con il riutilizzo di Modifier.Node. (I05bb1)
  • È stato eseguito il rollback di 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 ritirata. La versione 1.7.0-alpha05 contiene questi commit.

Modifiche alle API

  • Rimossa la composizione locale sperimentale LocalTextLinkStyle per lo stile dei link ipertestuali. (Iebfa7)
  • È stato rimosso l'override sperimentale di BasicText con l'argomento onLinkClicked. In futuro verrà implementata un'API sostitutiva per il supporto degli hyperlink. (I107d5)
  • Sono stati rimossi metodi e proprietà correlati 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)
  • AnchoredDraggable's currentValue ora si aggiornerà quando passa attraverso un punto di ancoraggio. Utilizza settledValue per ricevere la semantica precedente di currentValue, aggiornando solo quando si stabilizza su un ancoraggio. Ora lo stato di avanzamento è esposto come funzione (che richiede un punto iniziale e un punto finale) anziché come proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits e TextFieldDecorator sono stati promossi alla versione stabile. (I9582b)
  • È stato introdotto InterceptPlatformTextInput per facilitare la scrittura di test di basso livello relativi agli IME e di altri casi d'uso di basso livello degli IME. PlatformTextInputTestOverride è stato ritirato. (I862ed, b/322680547)
  • Suddivisione di 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 è ancora stata eseguita alcuna azione di scorrimento. (I63a0e)

Versione 1.7.0-alpha04

6 marzo 2024

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

Modifiche alle API

  • Supportare la funzionalità di scrittura a mano libera con lo stilo sui dispositivi dopo Android U. (I002e4)
  • È stato aggiunto hintLocales a KeyboardOptions per consentire a TextFields di suggerire IME con impostazioni internazionali specifiche per preimpostare una lingua preferita. (Id18c2)
  • Sono stati rimossi gli overload 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 di BasicTextField2 a cui viene applicata. (I74a2f, b/170648072)
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength in modo da poter inviare informazioni sui componenti di cui viene eseguito lo scorrimento in Compose al sistema di accessibilità. Questa CL applica anche l'utilizzo della proprietà negli elenchi scorrevoli di base. (Ic5fa2)
  • BasicTextField2 è stato rinominato in 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 modificatori di ottenere l'attuale View di Android senza leggere una composizione locale. (I40768)
  • Sono state introdotte informazioni sul layout contestuale all'interno di Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice di riga, posizione e vincoli su larghezza e altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/altezza massima possono passare alla riga successiva o essere omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)

Correzioni di bug

  • È stato corretto un bug per cui, in determinate condizioni, l'attivazione/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 ritirata. La versione 1.7.0-alpha03 contiene questi commit.

Modifiche alle API

  • È stato introdotto DelegatableNode.requireLayoutCoordinates() come modo per ottenere l'Modifier.Node attuale di un LayoutCoordinates senza dover eseguire l'override di onPlaced e memorizzare le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere l'Modifier.Node attuale di un LayoutCoordinates senza dover eseguire l'override di onPlaced e memorizzare 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 spostati 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 avanzato con MaxLines e Overflow. Siamo felici di annunciare i miglioramenti apportati alle funzionalità sperimentali FlowRow e FlowColumn, che ora includono il supporto di maxLines e dell'overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cui ContextualFlow* è perfetto per un numero elevato di elementi che utilizzano una piccola configurazione maxLines e pulsanti dinamici +N Mostra altro, 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 rientrino nel valore massimo dell'asse trasversale, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Esplora ContextualFlowRowSample e FlowRowSample per vedere esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)

Correzioni di bug

  • L'animazione del cursore non richiede più frame tra gli stati attivo e disattivo. (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 ritirata. La versione 1.7.0-alpha02 contiene questi commit.

Modifiche alle API

  • HorizontalPager, VerticalPager e PagerState vengono promossi alla versione stabile. (I67660, b/316966909)
  • È stata aggiunta la composizione locale LocalTextLinkStyle che consente di modificare lo stile dei link nel testo in tutta l'app. Se utilizzi un tema personalizzato nell'app, devi impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, il colore del link viene 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 di incolla dagli appunti. (I81b72)
  • Con questa modifica, sostituiamo SnapFlingBehavior con TargetedFlingBehavior nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea)
  • Con questa modifica, le API Snapping diventano stabili. Stiamo anche ripulendo parte del codice di test e aggiungendo altri esempi a Snap. (Id8da9)
  • Ti presentiamo TargetedFlingBehavior, un FlingBehavior che consente di propagare informazioni sullo stato dell'animazione in corso e sul relativo offset di scorrimento di destinazione. (I6a207)

Correzioni di bug

  • BasicTextField2 ora mantiene il cursore in visualizzazione durante la digitazione quando è stato spostato fuori dalla visualizzazione o si sposterebbe fuori dalla visualizzazione a causa dell'input. (Ieb856, b/237190748)

Contributo esterno

  • Aggiunge un'API sperimentale per configurare il comportamento di precaricamento di LazyList. (I022a4)

Versione 1.7.0-alpha01

24 gennaio 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha01 viene ritirata. 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ù efficienti rispetto alla precedente API rememberUpdatedInstance (ora obsoleta). Per informazioni sulla migrazione, visita il sito developer.android.com.
  • clickable / combinedClickable / selectable / toggleable ora accetta un parametro MutableInteractionSource che ammette valori nulli. Se è null e il Indication fornito è un IndicationNodeFactory, il Indication può essere creato in modo differito solo quando necessario, il che migliora il rendimento. Se non esegui l'hosting e non utilizzi MutableInteractionSource, ti consigliamo di passare null.

Modifiche alle API

  • Introduci DecayAnimation in AnchoredDraggable. Questa modifica aggiunge un parametro decayAnimationSpec a AnchoredDraggable, consentendo di utilizzare l'animazione di decadimento quando si passa a uno degli ancoraggi. La modifica include anche la ridenominazione di animationSpec in snapAnimationSpec per facilitare la comprensione del caso d'uso di ogni specifica.
  • BasicTextField2 è disponibile per l'uso sperimentale. Dovrebbe essere più o meno alla pari con BasicTextField e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, per il momento l'API rimane sperimentale. 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 vecchia BasicTextField. Tuttavia, non è ancora completa e alcune cose non funzioneranno correttamente, ma apprezzeremmo 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 nel testo. La funzionalità dei link non è ancora completa e sono in arrivo 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 consente di disattivare il comportamento predefinito di BasicTextField di richiedere una tastiera software quando l'elemento riceve lo stato attivo.
  • TextInputService e LocalTextInputService sono ora deprecati. Utilizza PlatformTextInputModifierNode per l'integrazione diretta con le API IME della piattaforma. (aosp/2862698)
  • Indication#rememberUpdatedInstance è stato ritirato. Comporta una penalità di rendimento elevata e inevitabile e impedisce altre ottimizzazioni. Al suo posto, devi utilizzare la nuova API IndicationNodeFactory.

Correzioni di bug

  • BasicTextField ora pre-convalida una piccola selezione di mapping degli offset quando viene passato VisualTransformation. In questo modo, vengono rilevati errori di codifica comuni che portano a eccezioni non recuperabili nei passaggi di misurazione o disegno successivi. Se si verifica un errore durante la composizione, è più probabile che gli sviluppatori lo vedano durante lo sviluppo, evitando così arresti anomali in produzione. (I0fd42)
  • VisualTransformation non genererà un errore 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 ritirata. La versione 1.6.8 contiene questi commit.

Versione 1.6.7

1° maggio 2024

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

Versione 1.6.6

17 aprile 2024

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

Correzioni di bug

  • È stato corretto un bug per cui, in determinate condizioni, l'attivazione/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 ritirata. 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 ritirata. La versione 1.6.4 contiene questi commit.

Correzioni di bug

  • Un 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 ritirata. La versione 1.6.3 contiene questi commit.

Versione 1.6.2

21 febbraio 2024

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

Correzioni di bug

  • Correggere il problema di mancato ripristino corretto di AnimateContentSize. (I07051)
  • Risolto un 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 ritirata. La versione 1.6.1 contiene questi commit.

Correzioni di bug

  • Correzione della misura della griglia sfalsata quando viene superato il limite. (bffc39)
  • Aggiungi il controllo del layout con dimensioni grandi. (e74af5)
  • Correggi il posizionamento degli elementi di dimensioni 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 ritirata. 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 un insieme predefinito di punti di ancoraggio. Questo modificatore è inteso come sostituzione di Modifier.swipeable. Scopri come utilizzarlo ed eseguire 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 un facile supporto del trascinamento 2D. Vedi Esempio.
  • AndroidExternalSurface e AndroidEmbeddedExternalSurface sono stati aggiunti per semplificare l'aggiunta di componenti basati sulla superficie in Compose
  • Varie modifiche e miglioramenti alle API in Pager e snapFlingBehaviour
  • Varie API per messa a fuoco, testo e inserti sono state promosse ad API stabili

Versione 1.6.0-rc01

10 gennaio 2024

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

Modifiche alle API

  • Il costruttore di estensioni 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 ritirata. La versione 1.6.0-beta03 contiene questi commit.

Correzioni di bug

  • Correzione dell'arresto anomalo che interessava testi molto grandi misurati 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 ritirata. La versione 1.6.0-beta02 contiene questi commit.

Correzioni di bug

  • Correzione del problema per cui canScroll non viene aggiornato dopo lo scorrimento solo del 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 ritirata. La versione 1.6.0-beta01 contiene questi commit.

Modifiche alle API

  • Il modificatore DragAndDropTarget ora accetta esplicitamente DragAndDropTarget e ha una 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 per essere rappresentato come Float. Documentazione aggiornata per maggiore chiarezza sull'unità maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart nello stabilimento DragAndDropModifierNode è stato rinominato in acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer è stato aggiunto a dragAndDropTarget Modifier per l'accettazione da una sessione di trascinamento. Questa lambda restituisce un DragAndDropTarget valido se ti interessa una sessione di trascinamento. Altre lambda per l'elaborazione degli eventi di trascinamento sono state sostituite da questa.

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

  • L'esposizione di startDragImmediately in AnchoredDraggable consente di controllare il rilevamento dei gesti di trascinamento durante l'utilizzo. È utile impostarlo quando il widget viene animato in un ancoraggio di destinazione. Vedi Esempio. (Ie6d13, b/285139987)

  • Le API Foundation Tooltip sono ora @ExperimentalFoundationApi (I30b0b)

  • Rimossa DragAndDropInfo come tipo DragAndDropModifierNode.drag ora accetta parametri per transferData, dimensione della decorazione e lambda di trascinamento della decorazione DrawScope

    DragAndDropTarget ha metodi per particolari eventi di trascinamento della selezione 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 i layout come LazyColumn basati su di esso) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di test assertIsDeactivated() per testare questi nodi. Le altre API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)

  • Il parametro clippingEnabled di Modifier.magnifier è stato rinominato in clip.

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

  • Le API Material SwipeToReveal (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 causa interruzioni. Consulta la demo e il codice campione 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 impediva al layout BasicText di ridursi quando minWidth cambiava e minWidth era inferiore ai vincoli di misurazione iniziali maxWidth (Idb19c)
  • Aggiungi il supporto del renderer per il gradiente radiale in ArcLine. (I4d5bb)
  • Risolvi il problema di compatibilità binaria con la modifica dell'inserimento della finestra (Iee695)
  • Rimuovi il livello principale del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza. (I55555)

Versione 1.6.0-alpha08

18 ottobre 2023

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

Nuove funzionalità

  • Modifier.draggable2D è il nuovo modificatore che consente un facile supporto del trascinamento 2D. Vedi Esempio (Id95f5, b/214412658)

Modifiche alle API

  • La funzione Modifier.dragAndDrawSource ha rinominato la lambda onDrawDragShadow in drawDragDecoration e la funzione DragAndDropInfo ha rinominato il parametro size in dragDecorationSize. (Id0e30, b/303904810)
  • Il parametro decorationBox di BasicTextField2 viene rinominato in decorator. Anche il tipo viene modificato in un'interfaccia divertente 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 ritirata. La versione 1.6.0-alpha07 contiene questi commit.

Modifiche alle 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 non lineare dei caratteri. Imposta DisableNonLinearFontScalingInCompose = true nei test se hai bisogno di tempo per pulirli. 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 è diventato un dettaglio di implementazione delle implementazioni di SnapLayoutInfoProvider. (I65f6d)
  • Aggiunge il modificatore dragAndDropSource per l'avvio delle 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. Introduci i padding dei contenuti nel metodo di posizionamento in SnapPositionInLayout. (Id7938, b/300116110)
  • È stato aggiunto UndoState a TextFieldState, che consente di annullare/ripetere le modifiche apportate dall'utente. (Icc024)

Correzioni di bug

  • È stato risolto il problema relativo all'animazione di basicMarquee 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 ritirata. La versione 1.6.0-alpha06 contiene questi commit.

Nuove funzionalità

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

Modifiche alle API

  • Introdotti updateCurrentPage e updateTargetPage in ScrollScope, questi 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. Tutte le implementazioni di SnapLayoutInfoProvider hanno già un modo per accedere alla densità, l'ambito del ricevitore potrebbe essere rimosso, il che porterà a un'implementazione meno complessa di SnapFlingBehavior e SnapLayoutInfoProviders. (I153c3)
  • Altri modificatori contrassegnati come stabili. (I56af1, b/298046462)
  • SnapStepSize rimosso da SnapLayoutInfoProvider. Il calcolo deve essere eseguito utilizzando le informazioni sul layout e fornito tramite l'approccio o gli offset di snapping. (If320c)

Modifiche al comportamento

  • Ora la composizione utilizza il ridimensionamento non lineare dei caratteri per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumenteranno normalmente, mentre quelle del testo già grande aumenteranno solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente per rimanere proporzionali all'altezza prevista della scala al 100%. Per saperne di più, consulta le best practice per il ridimensionamento 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 ritirata. La versione 1.6.0-alpha05 contiene questi commit.

Modifiche alle API

  • Aggiungi overload per BasicSecureTextField che accettano un valore immutabile e un callback per modificare quel valore, proprio come l'API BasicTextField attuale. (Ia4882)
  • Aggiungi Modifier.preferKeepClear() per contrassegnare come componibile la preferenza di evitare finestre mobili su API 33 e versioni successive. (Ib51d5, b/297260115)
  • Le velocità di scorrimento rapido 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 gli overload deprecati Pager e PagerState. (Iea07e)
  • È stato aggiunto BasicTooltipBox a compose.foundation e sono stati aggiornati PlainTooltipBox e RichTooltipBox per utilizzare TooltipBox con i nuovi composable PlainTooltip e RichTooltip. (I79e1d)

Versione 1.6.0-alpha04

23 agosto 2023

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

Modifiche alle API

  • Aggiungi l'interfaccia ReusableComposition per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
  • Modifier.focusGroup è stata promossa ad API stabili. (I7ffa3)
  • Aggiungi overload per BasicTextField2 che accettano un valore immutabile e un callback per modificare quel valore, proprio come l'API BasicTextField attuale. (I3f2b8)
  • GridItemSpan::currentLineSpan è ora un'API stabile. (Icc29c)
  • La tela 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 recupero preliminare in Pager non corrispondeva al comportamento in Views. (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 ritirata. La versione 1.6.0-alpha03 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando readOnly è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quando readOnly viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)

Versione 1.6.0-alpha02

26 luglio 2023

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

Modifiche alle API

  • È stato introdotto PagerLayoutInfo con le informazioni raccolte dopo un passaggio della misurazione 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 composable (I51109)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più comodo e facile da scoprire per richiedere la messa a fuoco nei test. (Ie8722)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. LocalSoftwareKeyboardController ora è anche un CompositionLocal vero e proprio. (I4c364)
  • Modifier.transformable ora fornisce il delta della panoramica nel parametro canPan per determinare la direzione della panoramica e consentirla 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 ritirata. 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 fogli modali. Questa API sostituisce l'API Swipeable di Material. (I4a2ed)

Modifiche alle 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 eseguire il wrapping delle eccezioni generate durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset che non è stato caricato. (I19f44, b/230166331, b/278424788)
  • Sono state aggiunte proprietà e azioni semantiche 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. È stato modificato l'overload di scorribile per accettare 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 uno stato modificabile / Animatable. (I5daae)
  • Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande di una parola e si riduce di un carattere. (Ic0c6c, b/180639271)
  • È stata aggiunta un'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 ritirata. La versione 1.5.4 contiene questi commit.

Versione 1.5.3

4 ottobre 2023

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

Versione 1.5.2

27 settembre 2023

androidx.compose.foundation:foundation-*:1.5.2 viene ritirata. 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 ritirata. La versione 1.5.1 contiene questi commit.

Correzioni di bug

  • Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando readOnly è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quando readOnly viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

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

Modifiche importanti dalla versione 1.4.0

  • Molti modificatori di base, tra cui Modifier.clickable,Modifier.draggable, Modifier.scrollable, il modificatore di layout e altri, sono stati migrati all'API Modifier.Node, riducendo il sovraccarico della composizione iniziale.
  • Miglioramenti alla stabilità dei cercapersone. 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 ritirata. 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 suo ID lint è AutoboxingStateCreation. In precedenza, questo controllo era abilitato 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 ritirata. 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 ritirata. 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 ritirata. La versione 1.5.0-beta01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • Ridurre le allocazioni durante le misurazioni di elenchi/griglie pigri e così via (Iaf9e2)
  • Allocazioni ridotte durante l'applicazione degli snapshot (I65c09)
  • Rimozione delle allocazioni dalle animazioni con effetto molla (Ie9431)
  • Allocazione rimossa da TextLayout (I0fd11)
  • Rimozione di più allocazioni nel monitoraggio della velocità del puntatore (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 sono stati rilasciati. La versione 1.5.0-alpha04 contiene questi commit.

Modifiche alle 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 Modifier.animateItemPlacement() sperimentale per l'ambito dell'elemento delle griglie sfalsate pigre. Puoi applicarlo agli elementi per ottenere le animazioni di modifica/riordino della posizione dell'automazione. (I4b62d, b/257034719)
  • Promuovi GridCells.FixedSize alla versione stabile. FixedSize definisce un LazyGrid in cui ogni cella occupa una dimensione esatta sull'asse trasversale, mentre lo spazio rimanente viene distribuito in base alla disposizione 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)
  • Introduci snapPositionalThreshold quando crei un comportamento di lancio rapido. Utilizza questo parametro per specificare una soglia posizionale per lo snapping breve in Pager. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds sostituito con calculateSnappingOffset. In questo nuovo metodo, richiediamo semplicemente l'offset successivo a cui agganciarsi. Il calcolo dei limiti deve essere eseguito a livello di implementazione, in quanto può variare a seconda di come deve avvenire lo snapping. (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 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 aggiornati per accettare i pageCount. (Ifa3cb, b/266965072)
  • Presenta shortSnapVelocityThreshold nel pager SnapFlingBehavior. (I7379e, b/275579012)
  • Aggiunge un FlowRowScope e un FlowColumnScope. (I54fe2)

Correzioni di bug

  • Le chiamate per ottenere la semantica sul testo quando i vincoli non vanno più in crash minWidth e minHeight. (Ibd072)
  • È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile 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 sono stati rilasciati. La versione 1.5.0-alpha03 contiene questi commit.

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

Se noti modifiche nel testo sottoposto a rendering, puoi eseguire il debug impostando NewTextRendering1_5 = false per confermare la differenza di comportamento. L'impostazione di questo valore forzerà la ricomposizione. Segnala eventuali differenze di comportamento come bug.

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

Modifiche alle API

  • Rendi 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 sono stati rilasciati. La versione 1.5.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stato aggiunto il supporto per le celle di dimensioni fisse in LazyGrid e la loro disposizione con la disposizione dell'asse trasversale. (I83ed9, b/235121277, b/267942510)
  • È stato aggiunto il supporto per le corsie di dimensioni fisse in LazyStaggeredGrid e la loro disposizione con la disposizione dell'asse trasversale. (I7d519)
  • Ora è possibile aprire i UrlAnnotation nei AnnotatedString tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta l'azione semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test correlate al testo (ad es. performTextInput) ora richiedono direttamente lo stato attivo, utilizzando l'azione semantica, anziché fare clic sul campo. (I6ed05)
  • Aggiunge il supporto per la spaziatura/disposizione degli assi incrociati 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 si riduce 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 sono stati rilasciati. La versione 1.5.0-alpha01 contiene questi commit.

Modifiche alle API

  • Il testo e BasicText sono stati refattorizzati per utilizzare il nuovo sistema di modificatori. Ciò comporta miglioramenti sostanziali delle prestazioni in molti casi. Non dovrebbero essere visibili modifiche. (If1d17, b/246961435)
  • È stata aggiunta l'azione semantica PerformImeAction per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)

Correzioni di bug

  • Aggiornamento degli elementi interni di Modifier.hoverable. Il modificatore hoverable viene visualizzato 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 aumento di versione).

Versione 1.4.2

19 aprile 2023

androidx.compose.foundation:foundation:1.4.2 e androidx.compose.foundation:foundation-layout:1.4.2 sono stati 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 sono stati 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 sono stati rilasciati. La versione 1.4.0 contiene questi commit.

Modifiche importanti dalla versione 1.3.0

  • È stata aggiunta l'integrazione della compatibilità con le emoji a Text e TextField, nonché al paragrafo di livello inferiore. È abilitato per impostazione predefinita quando viene configurato emojicompat.
  • EmojiCompat può essere configurato su un testo specifico utilizzando PlatformParagraphStyle.
  • Aggiunta del supporto dell'intervallo di riga completo a LazyStaggeredGrid(I28252)
  • Aggiunta di onHover sperimentale a ClickableText (I6938f)
  • Sono stati introdotti nuovi overload sperimentali per la funzione runComposeUiTest e le funzioni create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione del test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() nella composizione. (I10614, b/265177763)
  • FlowRow e FlowColumn sono ora disponibili come @ExperimentalFoundationApi che consentono un layout più flessibile basato su righe e colonne dei componenti, che andranno a capo se non c'è spazio sufficiente sull'asse principale. (I3a7b2)
  • Modifier.basicMarquee() è disponibile in versione sperimentale per la visualizzazione di contenuti con effetto scorrimento. (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 sono stati rilasciati. La versione 1.4.0-rc01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • L'azione semantica SetText di BasicTextField ora aggiornerà il buffer di testo utilizzando lo stesso percorso di codice degli aggiornamenti 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 sono stati rilasciati. La versione 1.4.0-beta02 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che consente di reimpostare alcuni stati locali per gestire correttamente il caso in cui 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)
  • Rimozione dell'API modifierElementOf(). Estendi direttamente da ModifierNodeElement. (Ie6d21)

Correzioni di bug

  • La regolazione dei punti di manipolazione della selezione non consente più di selezionare un carattere parziale. (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 sono stati rilasciati. La versione 1.4.0-beta01 contiene questi commit.

Nuove funzionalità

  • Dalla versione 1.3, è stata aggiunta l'integrazione della compatibilità con le emoji a Text e TextField, nonché al livello inferiore del paragrafo. È abilitato per impostazione predefinita quando viene configurato emojicompat.
  • EmojiCompat può essere configurato su un testo specifico utilizzando PlatformParagraphStyle.

Modifiche alle API

  • È stata aggiunta l'implementazione comune dell'API PinnableContainer utilizzata in tutti i LazyLayouts per conservare gli elementi che escono dalla composizione, ma devono comunque rimanere 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 sono stati rilasciati. La versione 1.4.0-alpha05 contiene questi commit.

Nuove funzionalità

  • Aggiunta del supporto dell'intervallo di riga completo a LazyStaggeredGrid (I28252)
  • Aggiunta di onHover sperimentale a ClickableText (I6938f)
  • Sono stati introdotti nuovi overload sperimentali per la funzione runComposeUiTest e le funzioni create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione del test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() nella composizione. (I10614, b/265177763)

Modifiche alle API

  • Unisce le API pre/post di OverscrollEffect in funzioni combinate di "decoratore" applyToScroll e applyToFling. Consulta gli esempi aggiornati nella documentazione per scoprire come implementare un effetto di overscroll con la nuova forma dell'API. (I8a9c4, b/255554340)
  • Più tipi/nullabilità di funzioni inline/deprecate-nascoste (I24f91)
  • Le API LineBreak e Hyphens in TextStyle sono state promosse alla versione stabile. (Ic1e1d)

Correzioni di bug

  • Il cursore nei campi di testo continuerà a lampeggiare anche quando le animazioni sono disattivate. (I95e70, b/265177763)
  • Modifier.basicMarquee ora è animato 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 sono di nuovo 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 sono stati rilasciati. La versione 1.4.0-alpha04 contiene questi commit.

Nuove funzionalità

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

Modifiche alle 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 di caratteri. (I5adcc, b/261565807)
  • È stata introdotta l'API PinnableContainer propagata da elenchi pigri tramite un composizione locale che consente di bloccare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando viene spostato fuori dalla visualizzazione. Ad esempio, Modifier.focusable() bloccherà l'elemento attivo corrente tramite questo meccanismo. (Ib8881, b/259274257, b/195049010)
  • È stato riscritto il modo in cui gli elementi scorrevoli rispondono a bringIntoViewRequesters e gli elementi selezionabili per modellare meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Maggiore annullabilità del tipo restituito delle funzioni ritirate e nascoste (Ibf7b0)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7)
  • Aggiungi TextFieldFocusModifier per correggere il comportamento di navigazione con la messa a 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. size è impostato su Size.Unspecified per impostazione predefinita, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)

Correzioni di bug

  • Modifiche alla fisica dello snapping in SnapFlingBehaviour per una sensazione 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 è stato segnalato il problema originariamente. È stata inviata una correzione, che sarà disponibile nel prossimo aggiornamento di Compose. 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 sono stati rilasciati. La versione 1.4.0-alpha03 contiene questi commit.

Modifiche alle API

  • Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni riprese durante i callback withFrameNanos non verranno inviate finché non saranno terminati tutti i callback dei frame. Questo comportamento corrisponde a quello della composizione in esecuzione normale. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Ciò dovrebbe influire solo sul codice che chiama direttamente withFrameNanos o withFrameMillis e che ha una logica al di fuori del callback passato a queste funzioni che potrebbe dover essere spostata all'interno dei callback. Per esempi, consulta le modifiche al test dell'animazione in questo CL.
  • È 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)
  • Introduzione delle azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che queste sono disponibili solo a partire dall'API 29. (Ida4ab)
  • Introduci HorizontalPager e VerticalPager, un modo per mostrare i componenti componibili in un pager. È stato introdotto PagerState per controllare i pager e per eseguire query sulle informazioni sullo stato attuale del pager. È stato introdotto PageSize, un modo per controllare le dimensioni della pagina di un paginatore, che può essere utilizzato per creare paginatori simili a caroselli. È stato introdotto PagerSnapDistance, un modo per controllare il funzionamento dello snapping nel comportamento di scorrimento del pager. (I01120)
  • È stato introdotto un sovraccarico in SnapFlingBehavior.performFling per aiutare a capire dove si stabilizzerà il movimento. (I569f6)
  • OverscrollEffect#isEnabled rimosso. Invece di dover ricordare e impostare questo flag, non inviare eventi all'effetto overscroll nei casi in cui non vuoi che venga visualizzato (ad esempio se ScrollableState#canScrollForward/backward restituisce false). (I1a4b0, b/255554340, b/255557085)
  • Sono stati aggiunti ScrollableState#canScrollForward e ScrollableState#canScrollBackward per verificare se un ScrollableState ha spazio per scorrere in una direzione (se si trova al minimo / massimo del suo intervallo). Il valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni esistenti 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 elementi principali. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni di pressione, quando i gesti potrebbero diventare eventi di scorrimento.
  • È stato corretto il problema per cui Clickables non ritardava correttamente gli effetti ripple quando veniva utilizzato all'interno di un Scrollable ViewGroup.
  • Aggiornamento di riquadri e fogli per ritardare 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)
  • Aggiunta di EmojiCompat a Compose (Ibf6f9, b/139326806)
  • È stato rinominato consumedWindowInsets() in consumeWindowInsets() e withConsumedWindowInsets() in onConsumedWindowInsetsChanged() e sono stati resi pubblici i modificatori. (Ie44e1)

Correzioni di bug

  • È stato risolto l'arresto anomalo con Modifier.animateItemPlacement() e le griglie pigre. Si verificava in alcune condizioni quando il conteggio dei 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 sono stati rilasciati. La versione 1.4.0-alpha02 contiene questi commit.

Modifiche alle API

  • awaitFirstDown e waitForUpOrCancellation ora accettano un PointerEventPass per una maggiore flessibilità. (I7579a, b/212091796)
  • Ripristina l'API beyondBoundCount dalle API Lazy* (I12197)
  • È stato introdotto un parametro nelle API Lazy per comporre e posizionare gli elementi fuori dalla visualizzazione (I69e89, b/172029355)
  • È stato aggiunto il parametro minLines a BasicText e BasicTextField. Consente di impostare l'altezza minima di questi composable 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 sono stati rilasciati. La versione 1.4.0-alpha01 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Funziona in modo simile a forEachGesture(), ma il ciclo sui 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 di perdere eventi tra i gesti. (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 sono stati rilasciati. La versione 1.3.1 contiene questi commit.

Correzioni di bug

  • Risolvi il problema di prestazioni in BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier non leggerà 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 sono stati 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 increspature se vengono selezionati con la tastiera o 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 sono stati rilasciati. La versione 1.3.0-rc01 contiene questi commit.

Modifiche alle API

  • È stato introdotto lowVelocityAnimationSpec utilizzato dal passaggio di avvicinamento quando non c'è abbastanza velocità di lancio per il decadimento. (Iaeb27)
  • È stata aggiunta una nuova API sperimentale, Hyphens, per supportare la sillabazione automatica in Text (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 sono stati rilasciati. La versione 1.3.0-beta03 contiene questi commit.

Modifiche alle API

  • Aggiungi opzioni per personalizzare l'interruzione di riga in Testo. (I86907)
  • BringIntoViewResponder ora possono ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211)
  • Introduzione del supporto degli spazi tra gli elementi nella funzionalità sperimentale Staggered Grid (I10b82)
  • Introduzione del padding dei contenuti per l'esperimento Staggered Grid (I342ea)
  • 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() da utilizzare WindowInsets per l'utilizzo al di fuori di windowInsetsPadding.
  • È stato aggiunto MutableWindowInsets per consentire la modifica semplice di 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 sono stati rilasciati. La versione 1.3.0-beta02 contiene questi commit.

Modifiche alle API

  • Versione iniziale dell'esperimento StaggeredGrid (Ia48be)
  • FocusDirection.In e FocusDirection.Out sono stati rinominati in FocusDirection.Enter e FocusDirection.Exit (Ia4262, b/183746982)
  • È stata introdotta una scorciatoia per rememberSnapFlingBehavior che consente di attivare rapidamente lo snapping in LazyLists. (Ifb48a)
  • Sostituita la fabbrica snapFlingBehavior con una classe SnapFlingBehavior concreta. Metodi SnapLayoutInfoProvider con ambito per la densità per semplificare le conversioni da dp a px per gli utenti dell'API. (I54a11)
  • Aggiorna LazyLayoutMeasureScope.measure per restituire l'elenco dei valori sostituibili, 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 per corrispondere ad altre funzioni di attesa (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 sono stati rilasciati. La versione 1.3.0-beta01 contiene questi commit.

Modifiche alle API

  • Rimozione di pointerPosition da OverscrollEffect: gli effetti che tengono conto della posizione del puntatore possono utilizzare Modifier.pointerInput { } in effectModifier per ottenere la posizione attuale del puntatore. (I9f606, b/241239306)
  • AwaitPointerEventScope#awaitLongPressOrCancellation esposto come componente di base aggiuntivo per il rilevamento di gesti più complessi (I04374, b/181577176)
  • È stato introdotto lazyListSnapLayoutInfoProvider per attivare lo snapping negli elenchi pigri. (I3ecdf)
  • È stato introdotto SnapFlingBehavior, un comportamento di scorrimento che consente l'allineamento degli elenchi. Fornisci un'istanza di SnapLayoutInfoProvider con informazioni sul layout di snapping. (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 sono stati rilasciati. La versione 1.3.0-alpha03 contiene questi commit.

Modifiche alle API

  • I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26+). (I900dd, b/143703328)
  • Supporto dei caratteri variabili in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Annotazione sperimentale rimossa da PlatformTextStyle e LineHeightStyle. (I64bef)
  • I campi di testo ora generano eccezioni più dettagliate quando OffsetMapping fornito da un VisualTransformation restituisce indici non validi. (Ie73f9, b/229378536)
  • Introduci API sperimentali per condividere la logica del fornitore di elementi tra i layout pigri. (Ic891c)
  • ScrollableDefaults.reverseDirection() non è più sperimentale. (Iba646)
  • SemanticsModifier.id è stato ritirato e l'ID semantica è stato spostato in LayoutInfo.semanticsId. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() non è più sperimentale. (I2c290)
  • Modifier.clipScrollableContainer() non è più sperimentale. (Ia2b44)
  • Depreca TextInputService.show|hideSoftwareKeyboard. Utilizza invece SoftwareKeyboardController nel codice dell'app e TextInputSession nel codice di gestione 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 sono stati rilasciati. La versione 1.3.0-alpha02 contiene questi commit.

Modifiche alle API

  • Aggiunta della funzione di estensione drawText su DrawScope per fornire un modo per disegnare testo con più stili su composable e modificatori che operano su un DrawScope come Canvas e drawBehind. (I16a62, b/190787898)

Correzioni di bug

  • La tastiera virtuale ora verrà nascosta quando un campo di testo è disattivato mentre è attivo. (I6e3e4, b/237308379)
  • Quando aggiungiamo eventi InputEventChange a Velocity Tracker, ora prendiamo in considerazione i delta anziché le posizioni. In questo modo, la velocità viene calcolata correttamente in tutti i casi, anche se l'elemento di destinazione si sposta (Icea9d, b/216582726, b/223440806, b/227709803).
  • Quando un elemento scorrevole ha un elemento secondario attivo, ora scorre correttamente per mantenere l'elemento secondario attivo in visualizzazione quando le sue dimensioni vengono ridotte, anche quando le dimensioni sono animate. (I80867, b/230756508, b/220119990)
  • È stato risolto un arresto anomalo in cui TextField viene cancellato e riempito nuovamente 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 sono stati rilasciati. La versione 1.3.0-alpha01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • BasicTextField cursorBrush ora 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 sono stati 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 sono stati rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • LazyVerticalGrid e LazyHorizontalGrid sono ora stabili.
  • Ora puoi specificare un tipo di contenuti per gli elementi negli elenchi e nelle griglie pigri. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
  • Le liste e le griglie pigre ora hanno il parametro userScrollEnabled che consente di disattivare lo scorrimento tramite i gesti dell'utente.
  • È stata aggiunta una nuova API sperimentale chiamata LazyLayout. È l'API che utilizziamo internamente per gestire elenchi e griglie pigri.
  • L'API OverscrollEffect è stata introdotta come sperimentale. Puoi definire effetti di overscroll personalizzati e aggiungere un effetto della piattaforma standard a contenitori scorrevoli personalizzati.
  • Sono state introdotte le API di interoperabilità dello scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e comporre gli attori dello scorrimento.
  • Lo scorrimento con mouse e trackpad è stato aggiunto a tutti i contenitori di 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 sono stati 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 sono stati 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 sono stati rilasciati. La versione 1.2.0-rc01 contiene questi commit.

Modifiche alle API

  • È stato introdotto un OverscrollEffect sperimentale per consentire effetti di overscroll personalizzati, insieme agli overload Modifier.scrollable che lo accettano.
  • LocalOverScrollConfiguration sperimentale è stato spostato da foundation.gesture al pacchetto di base e rinominato in LocalOverscrollConfiguration (If19fb, b/204650733)
  • Le interfacce nelle librerie Compose ora sono create utilizzando i metodi di interfaccia predefiniti di jdk8 (I5bcf1)
  • È stata introdotta un'API sperimentale checkScrollableContainerConstraints() che consente di verificare che non nidifichiamo contenitori scorrevoli. Puoi utilizzarlo quando crei i tuoi layout pigri scorrevoli tramite LazyLayout. (Id6fab, b/233352497)
  • Rimozione di LazyVerticalGrid deprecato 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 sono stati rilasciati. La versione 1.2.0-beta03 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • È stata chiarita la documentazione per WindowInsets.ime per indicare che i rientri ime vengono segnalati a partire dall'API 23, ma solo animati sulla 30+. (Ia7fc0, b/230756508)
  • Se premi il tasto di eliminazione in avanti quando il cursore si trova alla fine di un campo di testo, non si verifica più un arresto anomalo.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand ora richiedono che gli argomenti del costruttore non siano 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 sono stati rilasciati. La versione 1.2.0-beta02 contiene questi commit.

  • La risoluzione dei caratteri scaricabili che non modifica le dimensioni del layout di Testo o TextField in precedenza non veniva ridisegnata, il che comportava la visualizzazione di caratteri obsoleti. Questa correzione di bug garantisce che il layout del testo attivi sempre il ridisegno (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 sono stati rilasciati. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • Questa è la prima release beta della versione 1.2.

Modifiche alle API

  • È stato aggiunto BeyondBoundsInterval sperimentale che può essere utilizzato da implementazioni personalizzate di LazyList quando dispongono gli elementi oltre i limiti visibili (Ifabfb, b/184670295)
  • LineHeightBehavior è stato rinominato in LineHeightStyle
  • LineVerticalAlignment è stato rinominato in LineHeightStyle.Alignment
  • Il nome di LineHeightTrim è stato cambiato in LineHeightStyle.Trim
  • I valori del costruttore predefinito di LineHeightStyle sono stati 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 Item che accetta l'indice. (Id2196)
  • LazyLayoutItemsProvider è stato rinominato in LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount è stato rinominato in itemCount (Id409c)
  • È stato aggiunto Pennello a TextStyle e SpanStyle per consentire di disegnare testo con colorazione sfumata. (I53869, b/187839528)
  • Gli attributi trimFirstLineTop e trimLastLineBottom di LineHeightBehavior sono stati modificati in un unico enum: LineHeightTrim. LineHeightTrim hanno valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)
  • È stato aggiunto LineHeightBehavior ai controlli TextStyle e ParagraphStyle. LineHeightBehavior per stabilire 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 linea 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).

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

  • È stato aggiunto il modificatore sperimentale imeNestedScroll() in modo che gli sviluppatori possano controllare l'IME tramite lo scorrimento. (I60759)

Correzioni di bug

  • È stato corretto un problema di regressione per cui i campi di testo non nascondevano la tastiera quando venivano rimossi dalla composizione mentre erano attivi. (I7a410, b/230536793, b/225541817)
  • Supporta i puntini di sospensione quando l'altezza è limitata e non contiene tutte le righe di testo (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView ora verrà sempre sospeso finché la richiesta non viene completata o interrotta da una richiesta più recente e non sovrapposta. Le richieste sovrapposte verranno messe in coda. (I43e7f, b/216790855)
  • Le chiamate simultanee BringIntoViewRequester.bringIntoView per i rettangoli completamente sovrapposti ora prendono in considerazione solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918)
  • Attivato per impostazione predefinita includeFontPadding. È possibile disattivare includeFontPadding utilizzando l'attributo TextStyle.platformTextStyle. Nel prossimo futuro cambieremo il comportamento predefinito, ma fino ad allora questo ci consente di integrare meglio i miglioramenti dell'altezza della linea (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, scorrerà 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 sono stati rilasciati. La versione 1.2.0-alpha08 contiene questi commit.

Modifiche alle 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 sulle API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 sulle API 21-28. (I380fe, b/156048036, b/226441992)
  • Paragraph e MultiParagraph ora accettano il parametro Constraints. Il passaggio di Constraints.maxHeight è un'operazione no-op al momento, ma consentirà di eseguire alcuni calcoli in futuro, ad esempio l'ellissi in base all'altezza. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi. (Icd314)
  • Il consumo parziale (in basso O posizione) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per utilizzare 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 che una delle copie sarà stata consumata. Se vuoi creare un PointerInputChange non associato, utilizza il costruttore. (Ie6be4, b/225669674)
  • Viene introdotta una nuova API LazyLayout sperimentale. 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 versioni future. (Iba2bc, b/166591700)
  • Ora AndroidFont accetta typefaceLoader come parametro del costruttore. (I2c971)
  • L'app complementare WindowInsets ora mostra la visibilità (se è sullo schermo, indipendentemente dal fatto che si intersechi con la finestra) e le dimensioni che potrebbe avere se è disponibile sul dispositivo, ma non è attualmente attiva. (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 sono stati rilasciati. La versione 1.2.0-alpha07 contiene questi commit.

Modifiche alle API

  • È stata aggiunta un'API PinnableParent che consente agli elementi secondari dei layout pigri di impedire l'eliminazione 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 in modo specifico il separatore decimale nell'IME. (Iec4c8, b/209835363)
  • Aggiungi il nuovo descrittore di caratteri Font(DeviceFontFamilyName) per cercare facoltativamente i 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 l'utilizzo di WindowInsets di Android. In questo modo, i diversi ComposeViews nella gerarchia possono applicare WindowInsets senza interferire tra loro. (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 sono stati rilasciati. La versione 1.2.0-alpha06 contiene questi commit.

Modifiche alle API

  • Aggiunta dell'azione semantica RequestFocus per richiedere la messa a fuoco del target selezionabile. (I17b71)
  • FocusOrder è stato unito a FocusProperties e focusProperties() ora ha tutte le funzionalità di focusOrder(). FocusOrder e focusOrder() sono stati ritirati. focusOrder() che accetta un focusRequester deve essere sostituito da un modificatore focusRequester() in combinazione con focusProperties(). In questo modo, i modificatori possono avere una separazione più netta delle responsabilità. (I601b7)
  • WindowInsets.asPaddingValues(Density) è stato aggiunto per consentire agli sviluppatori di eseguire la conversione senza dover essere in composizione. (I94c35)
  • È stata aggiornata l'analisi dei drawables vettoriali per supportare il mirroring automatico e invertire i contenuti di un VectorPainter se la direzione del layout corrente è da destra a sinistra. (I79cd9, b/185760237)

Correzioni di bug

  • I modificatori di scorrimento (Modifier.verticalScroll(),Modifier.horizontalScroll() e Modifier.scrollable()) ora scorreranno per mantenere visibile il composable attivo se l'area di scorrimento viene ridimensionata e il composable attivo era precedentemente visibile.
  • I campi di testo ora vengono mantenuti sopra la tastiera quando sono selezionati e la tastiera viene mostrata, quando si trovano all'interno di un elemento scorrevole non pigro e la modalità di inserimento 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 sono stati rilasciati. La versione 1.2.0-alpha05 contiene questi commit.

Modifiche alle 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 stati spostati 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 l'osservazione dei limiti degli elementi selezionabili secondari. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • È stato aggiunto LazyHorizontalGrid. (I61ae7, b/191238807)
  • È stata aggiunta una nuova API LazyVerticalGrid per definire le dimensioni dell'asse trasversale (I17723)
  • 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 delle coroutine Kotlinx 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 sono stati rilasciati. La versione 1.2.0-alpha04 contiene questi commit.

Modifiche alle API

  • BringIntoViewResponders non devono più inoltrare manualmente le richieste ai risponditori principali, ma devono restituire immediatamente il rettangolo che vogliono che il risponditore principale porti in visualizzazione. (I8e66a)
  • Supporto del caricamento asincrono dei caratteri in Text (I77057, b/214587005)
  • LazyVerticalGrid ora supporta line breaking prima degli elementi con intervallo che non rientrano nella 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 la generazione di report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per cui non è stata progettata.

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

    Per gli applicatori personalizzati, le funzioni componibili che chiamano ComposeNode o ReusableComposeNode devono aggiungere un'annotazione CompoableTarget per la funzione e per tutti i tipi di parametri lambda componibili. Tuttavia, ti consigliamo di creare un'annotazione contrassegnata con ComposableTargetMarker e di utilizzare l'annotazione contrassegnata anziché ComposableTarget direttamente. Un'annotazione componibile contrassegnata con ComposableTargetMarker equivale a un ComposbleTarget con il nome completo della classe dell'attributo come parametro di applicazione. Per un esempio di utilizzo di ComposableTargetMarker, vedi anroidx.compose.ui.UiComposable. (I38f11)

Correzioni di bug

  • Ora è consentito passare offset di scorrimento negativi in LazyGridState.scrollToItem() e LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Supporta il caricamento asincrono dei caratteri 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 sono stati rilasciati. La versione 1.2.0-alpha03 contiene questi commit.

Modifiche alle API

  • I metodi notifyFocusedRect in TextInputSession e TextInputService sono ora deprecati e non verranno chiamati. Utilizza BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Sono state attivate le animazioni per gli elementi delle griglie pigre con Modifier.animateItemPlacement(). (Ib6621, b/211753218)
  • BringIntoViewRequester ora propaga le richieste alla visualizzazione Android di hosting. (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.
    • Paragrafo e MultiParagrafo ora accettano FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver ora contiene il resolver utilizzato per questo layout, deprecato TextLayoutResult.layoutInput.resourceLoader in quanto non viene 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 dell'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.
    • API Font.ResourceLoaded estesa per supportare il caricamento dei caratteri facoltativo e asincrono. Non è consigliabile che gli sviluppatori di applicazioni utilizzino questa API direttamente. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont.
    • La funzione di estensione Font.AndroidResourceLoader consente la costruzione di un Font.ResourceLoader al di fuori della composizione.
    • È stato aggiunto il parametro loadingStrategy ai caratteri basati su risorse per consentire il caricamento asincrono quando i riferimenti ai caratteri delle risorse fanno 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 potrebbe 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 potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Utilizza invece FontFamilyResolver.preload (If8e7c, b/174162090)
  • Ora puoi specificare il tipo di contenuti per gli elementi delle funzioni LazyVerticalGrid - item/items su LazyGridScope, che ora accettano questo parametro. Fornire queste informazioni aiuta la logica di riutilizzo della composizione degli elementi a renderla più efficiente e a riutilizzare solo i contenuti 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 delle funzioni item/items di LazyColumn/LazyRow. LazyListScope ora accetta questo parametro. Fornire queste informazioni aiuta la logica di riutilizzo della composizione degli elementi a renderla più efficiente e a riutilizzare solo i contenuti tra gli elementi di tipo simile. (I26506)
  • Il costruttore SubcomposeLayoutState che accetta maxSlotsToRetainForReuse è ora deprecato. 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 il padding che per il dimensionamento. In questo modo, alcuni contenuti possono estendersi nell'area di rientro, mentre i contenuti principali rimangono fuori dall'area di rientro. Ad esempio, windowInsetsPadding può essere utilizzato per aggiungere spazio interno all'area dei contenuti per evitare aree che potrebbero essere coperte completamente o parzialmente. (Id0395, b/213942085)

Correzioni di bug

  • I campi di testo ora vengono mantenuti sopra la tastiera quando sono selezionati e la tastiera viene mostrata, quando la modalità di inserimento soft è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Il computer utilizza la composizione locale per FontFamily.Resolver
    • FontLoader per computer è deprecato
    • Nuova fabbrica createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di input della tastiera virtuale non sfarfalla più quando si sposta lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
  • I campi di testo non richiedono più una pressione aggiuntiva del tasto Indietro quando viene visualizzata la maniglia del cursore. (Ideb4b, b/205726883)
  • Il comportamento della lente d'ingrandimento per la selezione del testo è stato migliorato per corrispondere 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 sono stati rilasciati. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • Aggiunta di NonRestartableComposable ai metodi che sono sovraccarichi di metodi esistenti senza logica complessa. In questo modo, si riducono i controlli di memorizzazione (equals) generati dal compilatore per tutti i parametri ripetuti nella funzione interna chiamata. (I90490)
  • Sono stati aggiunti 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 migliorato per corrispondere 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 con la 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 sono stati rilasciati. La versione 1.2.0-alpha01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • È stato risolto il problema relativo alla mancata scomparsa del punto di manipolazione del cursore TextField quando si scorre fino a non visualizzarlo più. (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 sono stati rilasciati. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • Correzione NullPointerException alle ore androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • RTL corretto 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 sono stati rilasciati. La versione 1.1.0 contiene questi commit.

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto di overscroll di Android 12
  • Miglioramenti alle dimensioni del target 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 target di tocco. Ad esempio, il touch target del pulsante si espanderà fino a raggiungere una dimensione minima di 48 x 48 dp, anche se imposti dimensioni più piccole per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, fornendo un comportamento coerente se combini Views e Compose. Questa modifica garantisce inoltre che, quando crei la tua UI utilizzando i componenti di Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
  • Supporto stabile per la modalità di navigazione laterale
  • Viene eseguito l'upgrade di una serie di API sperimentali precedenti alla versione stabile
  • 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 sono stati rilasciati. La versione 1.1.0-rc03 contiene questi commit.

Correzioni di bug

  • Aggiornato per supportare 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 sono stati rilasciati. La versione 1.1.0-rc01 contiene questi commit.

Correzioni di bug

  • Ora è consentito passare offset di scorrimento negativi in LazyListState.scrollToItem() e LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Correzione di un bug che causava la scomparsa delle azioni di scorrimento per l'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 sono stati rilasciati. La versione 1.1.0-beta04 contiene questi commit.

Nuove funzionalità

  • Aggiornato per essere compatibile con Kotlin 1.6.0

Modifiche alle API

  • È stata pulita la nullabilità 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 ingrandimento quando trascini il cursore o i punti di manipolazione di selezione all'interno dei campi di testo. (I5391e, b/203781358)

Correzioni di bug

  • È stato risolto il problema a causa del quale i punti di manipolazione del testo non si spostavano quando cambiava la visibilità dell'IME. (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 sono stati rilasciati. La versione 1.1.0-beta03 contiene questi commit.

Modifiche alle API

  • È stato aggiunto il supporto per gli intervalli orizzontali a LazyVerticalGrid. (I7e2fa, b/176758183)
  • È stata aggiunta la funzionalità sperimentale per animare le posizioni degli elementi degli elenchi pigri. È disponibile un nuovo modificatore all'interno di LazyItemScope chiamato 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 riordinamento degli elementi. Oltre al riordino degli elementi, verranno animate anche tutte le altre modifiche alla posizione causate da eventi come modifiche alla disposizione o all'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 sono stati rilasciati. La versione 1.1.0-beta02 contiene questi commit.

Correzioni di bug

  • Le increspature e le altre indicazioni verranno ora 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

  • Aggiunto Modifier.pointerHoverIcon (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 sono stati 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 sono stati rilasciati. La versione 1.1.0-alpha06 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un sovraccarico senza figli per Layout, con una maggiore efficienza (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce il SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db)
  • È stato aggiunto performScrollToNode(matcher: SemanticsMatcher) che scorrono un contenitore scorrevole fino ai contenuti corrispondenti al matcher 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 sono stati rilasciati. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche alle API

Correzioni di bug

  • È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lazy che non lazy) rispetto 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 sono stati rilasciati. La versione 1.1.0-alpha04 contiene questi commit.

Modifiche alle API

  • performGesture e GestureScope sono stati ritirati e sostituiti da performTouchInput e TouchInjectionScope. (Ia5f3f, b/190493367)
  • È stato aggiunto touchBoundsInRoot a SemanticsNode che include 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

  • È stato aggiunto il supporto per lo scorrimento eccessivo 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 sono stati rilasciati. La versione 1.1.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Aggiornamento di Compose 1.1.0-alpha03 in modo che dipenda da Kotlin 1.5.30. (I74545)

Modifiche alle API

  • È stato aggiunto l'effetto bagliore per lo scorrimento. È stata aggiunta una nuova API OverScrollConfiguration sperimentale per consentire la configurazione dell'effetto visivo di overscroll. Fornisci null per disattivare l'effetto di overscroll. (I0c304, b/171682480)
  • AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • È stato aggiunto un metodo di test per ottenere i limiti ritagliati. (I6b28e)
  • È stata aggiunta la dimensione minima del touch target a ViewConfiguration per l'utilizzo nell'input semantico e del puntatore 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 sono stati rilasciati. La versione 1.1.0-alpha02 contiene questi commit.

Modifiche alle API

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 sono stati rilasciati. La versione 1.1.0-alpha01 contiene questi commit.

Modifiche alle API

  • Aggiornamento del metodo DrawScope#drawImage che utilizza i rettangoli di origine e destinazione per utilizzare un parametro FilterQuality facoltativo. Questa opzione è utile per la pixel art che deve essere pixelata quando viene ingrandita. Aggiornamento di BitmapPainter e del composable Image per utilizzare anche un parametro FilterQuality facoltativo (Ie4fb0, b/180311607)
  • TextField ora cancella la selezione quando viene premuto il pulsante Indietro, in linea con il comportamento di EditText di Android. (I3ca16, b/174173645)
  • Aggiungi il cursore. (I07a82, b/173016579)

Correzioni di bug

  • Lo scorrimento tramite azioni semantiche per elenchi pigri e componenti di scorrimento regolari ora è animato (Id9066, b/190742024)

Contributo esterno

  • LazyVerticalGrid ora accetta parametri di disposizione 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 sono stati 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 sono stati rilasciati. La versione 1.0.4 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipenda 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 sono stati rilasciati. La versione 1.0.3 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipenda 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 sono stati rilasciati. La versione 1.0.2 contiene questi commit.

Aggiornato 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 sono stati 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 sono stati 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 superiore 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 sono stati rilasciati. La versione 1.0.0-rc02 contiene questi commit.

  • È stato aggiornato il 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 sono stati rilasciati. La versione 1.0.0-rc01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • Il pulsante, la scheda, le caselle di controllo e il Modifier.clickable(enabled=false) disabilitati bloccheranno i clic che vengono inviati 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 sono stati rilasciati. La versione 1.0.0-beta09 contiene questi commit.

Modifiche alle API

  • ManualFrameClock rimosso. Se devi controllare le animazioni, utilizza composeTestRule.mainClock. (I3c3e8, b/189951065)
  • modifica dell'enumerazione Role e LiveRegionMode in classi inline con costruttore privato (Id1890)
  • KeyboardCapitalization viene convertito in una classe in linea. (Id5a1c)
  • TextOverflow viene modificato in una classe in linea. (I433af)

Correzioni di bug

  • Ora, quando specifichi le chiavi univoche per gli elementi LazyColumn/Row, la posizione di scorrimento viene 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 elemento visibile. (Id263f, b/184257857)
  • Per ora, le costanti chiave sono @ExperimentalComposeUiApi. Il codice che utilizza l'API 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 attendere o raggiungere la quiescenza. 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 che si trova nella directory src/main o in una directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile, utilizzato quando si utilizza adb shell profman --dump-classes-and-methods .... Queste regole assumono una delle 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 di destinazione. Ad esempio, la classe androidx.compose.runtime.SlotTable avrebbe un descrittore Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> è la firma del metodo e include il nome, i tipi di parametri e i tipi restituiti del metodo. Ad esempio, il metodo fun isPlaced(): Boolean su 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 con il flag S indica che viene 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 viene 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 incluse nei file AAR. Quando viene creata un'app che include questi artefatti, queste 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 viene installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione per migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che questa operazione non avrà alcun effetto sulle applicazioni sottoposte a 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 sono stati rilasciati. La versione 1.0.0-beta08 contiene questi commit.

Modifiche alle API

  • L'enum NestedScrollSource viene sostituito da una classe inline. (Ie321b, b/187055290)
  • È stato eseguito il refactoring degli utilizzi di enum per le classi inline per evitare problemi con le istruzioni esaustive quando vengono aggiunti nuovi valori enum. (I2b5eb)
  • Aggiunge un timeout di tocco agli elementi selezionabili / attivabili per evitare di mostrare un'increspatura durante lo scorrimento / trascinamento (Ia2704, b/168524931)
  • Le proprietà semantiche ContentDescription e Text non sono più valori singoli, ma elenchi. In questo modo, possono essere uniti così come sono anziché concatenati. 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'enumerazione KeyboardType viene sostituita da una classe inline. (I73045, b/187055290)
  • Sostituito l'enum FocusState con un'interfaccia FocusState (Iccc1a, b/187055290)
  • L'enum ImeAction viene sostituito da una classe inline. (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

  • Correzione dei blocchi della pressione prolungata dell'area vuota in un testo non vuoto. (I33ab5, b/187437299)
  • Mostra la barra degli strumenti dopo SelectAll (I495d9, b/185919613)
  • Correzione del ritaglio dei contenitori scorrevoli dei relativi 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 le increspature o altre indicazioni a volte si bloccavano su un clic lungo quando si utilizzava Modifier.combinedClickable (I2298c, b/186223077)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica della posizione, senza dover chiamare change.consumePositionChange nei 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 riportate. (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 sono stati rilasciati. La versione 1.0.0-beta07 contiene questi commit.

Modifiche alle API

  • È stata introdotta la logica di precaricamento dell'elemento visibile successivo per LazyColumn/Row (I8a4bc, b/184940225)
  • Aggiunta maniglia di selezione dei clip (Iff80d, b/183408447)

Correzioni di bug

  • LazyColumn/Row ora mantiene attivi (non eliminati) fino a due elementi precedentemente visibili anche quando sono già stati scorri. Ciò consente al componente di riutilizzare le composizioni secondarie attive quando sarà necessario comporre un nuovo elemento, migliorando le prestazioni di scorrimento. (Ie5555)
  • Rimuovi paintBackground. (I38660)
  • Draw Selection Background using DrawScope. (I73c61, b/186674472)
  • È stata corretta una regressione beta06 che interessava la riga/colonna utilizzando le disposizioni spacedBy per disporre gli elementi secondari 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 sono stati rilasciati. La versione 1.0.0-beta06 contiene questi commit.

Modifiche alle API

  • Risolvi il conflitto con il gesto di navigazione (I1145e)
  • Sono state aggiunte 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 vengono implementate da LazyList.
    • Aggiunta di SemanticsNodeInteraction.performScrollToIndex che scorrono un elenco fino all'indice specificato e SemanticsNodeInteraction.performScrollToKey che scorrono un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
  • Supporto del salvataggio di AnnotatedString in TextFieldValue.Saver. Aggiunte le funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
  • Sono stati aggiunti i valori predefiniti del parametro 0.dp a PaddingValues(horizontal, vertical) (I05571, b/181336792)

Correzioni di bug

  • Gli elementi secondari di riga e colonna con weight(fill = false) non fanno più in modo che l'elemento principale riempia l'intero spazio disponibile dell'asse principale. (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 sono stati rilasciati. La versione 1.0.0-beta05 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • Correzione delle azioni di scorrimento per l'accessibilità ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. Anziché scorrere fino alla fine dell'area scorrevole, ora scorrerà di 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 sono stati rilasciati. La versione 1.0.0-beta04 contiene questi commit.

Modifiche alle API

  • Rinomina hideSoftwareKeyboard e showSoftwareKeyboard in 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)
  • Sono state rimosse le istanze pubbliche di RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope. (I4e83e, b/181869067)

Correzioni di bug

  • Risolto il problema per cui gli elementi di LazyColumn/LazyRow posizionati sui bordi venivano posizionati in modo errato dopo lo scorrimento rapido (Ie4d13, b/183877420)
  • Prima di questa modifica, le funzioni componibili locali potevano essere ignorate in base ai loro parametri. Dopo questa modifica, nessuna funzione componibile locale verrà ignorata. Questa modifica viene apportata perché è comune e previsto che le funzioni locali acquisiscano parametri dal genitore e il loro salto è una fonte comune di bug.

    Per riassumere, 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 componibile 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 sono stati rilasciati. La versione 1.0.0-beta03 contiene questi commit.

Modifiche alle API

  • DefaultMonotonicFrameClock è deprecato. La chiamata withFrameNanos o Recomposer.runRecomposeAndApplyChanges senza MonotonicFrameClock ora genererà IllegalStateException. (I4eb0d)

Correzioni di bug

  • FlingBehavior.performFling() viene ora 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 sono stati rilasciati. La versione 1.0.0-beta02 contiene questi commit.

Modifiche alle 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 in TextField. (I5951e, b/168778053)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I84472, b/168778053)

Correzioni di bug

  • Applica restrizioni 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 sono stati rilasciati. La versione 1.0.0-beta01 contiene questi commit.

Questa è la prima release di Compose 1.0.0 Beta.

Modifiche alle API

  • È stato aggiunto il callback onStart a detectDragGestures (I67269, b/179995594)
  • I modificatori per il dimensionamento in base alle dimensioni intrinseche non sono più sperimentali. (I15744)
  • Rimozione delle asserzioni dp (I798d2)
  • Callback SoftwareKeyboardController rimosso da tutti i campi di testo da sostituire a breve con una nuova API. (Iae869, b/168778053)
  • MeasureBlocks è stato rinominato MeasurePolicy, che è 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() }.
    • Invece di: Interaction.Pressed in interactionState, dovresti utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState().
    • Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso 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 ritirati. 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)
  • Placeable ora espone measuredSize, che rappresenta le dimensioni effettive misurate dal layout secondario. Queste dimensioni potrebbero non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
  • Aggiungi il modificatore selectionGroup che consente di contrassegnare la raccolta di schede o pulsanti di opzione per scopi 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 e smoothRotationBy sono stati aggiunti come funzionalità. (Ifc32b, b/175294473)

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

    Questa modifica rimuove un potenziale errore di tipo per i tipi non nullabili per i quali non è stata fornita alcuna fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non annullabile.

    Per i tipi che accettano valori Null, valuta la possibilità di fornire { null } come factory predefinita.

    Sconsigliamo di utilizzare le impostazioni internazionali con tipi non annullabili, a meno che non sia possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda defaultFactory deve generare un'eccezione. Tuttavia, generare un'eccezione significa che i consumer del locale avranno una dipendenza implicita dalla sua fornitura che non viene applicata dal sistema di tipi. (Ifbd2a)

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

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

  • Rimozione di runBlockingWithManualClock (I15cdc, b/179664814)

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

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

  • FlingConfig è stato rinominato FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché i decadimenti predefiniti. (I02b86, b/175294473)

  • I modificatori di dimensioni 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 defaultMinSize. (I4eaae)

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

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

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

  • AnimationClockObservable e le relative 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 per chiamarli (I16f60, b/175294473)

  • Providers è stato rinominato in CompositionLocalProvider

    • Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
    • currentCompositeKeyHash è diventata una proprietà componibile di primo livello anziché una funzione componibile di primo livello.
    • CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è diventata un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata resa un'interfaccia anziché una 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 @TestOnly clearRoots di primo livello è stata rimossa. Non è più necessario.
    • Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
    • Composer.collectKeySourceInformation è stato rimosso. 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 di file di Kotlin, la compatibilità binaria verrà interrotta, ma non quella del 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 espressione lambda. Puoi creare lo stato tramite rememberDraggableState { delta -> } per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)

  • Sono stati aggiunti i modificatori requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) per il dimensionamento obbligatorio alle dimensioni intrinseche. (I0a6b4)

  • L'API emptyContent() deprecata è stata rimossa. Utilizza invece {}. (Idb33f, b/179432510)

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

Correzioni di bug

  • È stata aggiunta una nuova API LocalSoftwareKeyboardController di composizione locale per sostituire la precedente interfaccia SoftwareKeyboardController in 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 sono stati rilasciati. La versione 1.0.0-alpha12 contiene questi commit.

Modifiche alle API

  • Modifier.pointerInput ora richiede chiavi remember per indicare quando la coroutine di rilevamento dell'input del puntatore deve essere riavviata per nuove dipendenze. (I849cd)
  • Aggiornamento dei test: hasText() controllerà sia il testo di input sia il testo dell'etichetta/suggerimento/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 adattarsi meglio alle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato BitmapPainter per essere parallelo a VectorPainter. (Iba381, b/174565889)
  • API di test delle sottostringhe migliori 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 alcun criterio, tranne quando vengono eseguiti test con ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo e Animatable.stop sono ora 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 diverse 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 elementi. Pertanto, lo stato memorizzato nei blocchi remember {} si sposterà 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 ed è stato modificato LocalIndication in modo che contenga un'indicazione, non () -> Indication. (I5eeea, b/157150564)

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

  • loadFontResource è deprecato. Utilizza fontResource. Le API imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecate. Usa painterResource. (I6b809)

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

  • Aggiunta la semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per controllare la semantica (I8e07a)

  • Modifier.clickable ora non supporta il doppio clic e il clic lungo. 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 solo asse (I0ba93, b/175294473)

  • Rinominate le impostazioni di Ambienti in modo che corrispondano al nuovo nome Ambient -> CompositionLocal. Gli ambienti venivano denominati AmbientFoo, ora le variabili locali di composizione vengono denominate 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 }. Devi utilizzare rememberSaveable { mutableStateOf(0) }, che salverà e ripristinerà automaticamente il tipo utilizzato all'interno di MutableState se può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo overload di rememberSaveable che ha il parametro stateSaver. L'utilizzo sarà simile al seguente: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Aggiunta della semantica delle 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 unificato in 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)

  • Le utilità emptyContent() e (@Composable () -> Unit).orEmpty() sono state ritirate perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d)

  • Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno la ricomposizione finché le coroutine secondarie di composizione non saranno completate. Recomposer.shutDown rinominato in cancel per contrastare close. (Ib6d76)

  • Le API correlate 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 passare Any come chiave. L'annotazione sperimentale non è più necessaria. (I0902e, b/174598702)

  • Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)

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

  • Molte API obsolete da tempo nel pacchetto ui vengono eliminate. (I2f2dc)

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

  • I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione da destra a sinistra. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato il mirroring automatico. (I61040, b/152756983)

  • canDrag è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)

  • L'API a cui fa riferimento il 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 binaria che causa interruzioni. (I3b922, b/169406779)

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

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

    • Rimozione di CoreText e CoreTextField dall'API pubblica
    • Rimozione dell'overload di SelectionContainer deprecato (I99c19)
  • Rimozione delle funzioni di scorrimento senza sospensione deprecate In linea con le modifiche dell'ultima release, le funzioni di scorrimento senza sospensione sono state rimosse completamente. Esegui la conversione alle funzioni di sospensione con gli stessi nomi. Un ambito di 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)

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

  • Recomposer.current() rimosso. [Abstract]ComposeView ora per impostazione predefinita crea in modo differito Recomposer con ambito finestra basati su ViewTreeLifecycleOwner per la finestra. La ricomposizione e i tick di animazione basati su withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host è interrotto. (I38e11)

  • Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato di composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è 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 sono stati rilasciati. La versione 1.0.0-alpha11 contiene questi commit.

Modifiche alle API

  • Deprecate non-suspend scrollBy, remove non-suspend scrollTo

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

  • Ritiro di smoothScrollBy non sospeso Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere che lo scorrimento termini. Nell'ambito di questa transizione, stiamo ritirando le versioni non sospese di queste funzioni. (I12880)

  • Al parametro Descrizione contenuti sono state aggiunte le immagini e le icone. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c).

  • BasicTextField ha ricevuto un nuovo parametro chiamato "decorationBox". Consente di aggiungere decorazioni come icone, segnaposto, etichette e simili al campo di testo e di aumentare l'area target di tocco. (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)
  • Gli elementi selezionabili, attivabili/disattivabili e su cui è possibile fare clic ora possono essere creati al di fuori della composizione (I0a130, b/172938345, b/175294473)

  • ScrollableColumn/Row sono stati ritirati. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai un grande contenuto scorrevole perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino un metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non utilizzare il comportamento pigro e utilizzare i modificatori direttamente in questo modo: 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) ora sono funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi overload di estensione per gli array: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)

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

  • Il parametro propagateMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere passati o meno al contenuto di Box. 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)
  • WithConstraints è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
  • Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface

    • Aggiunta di funzioni di fabbrica che iniziano con una lettera maiuscola
    • Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
    • Le nuove funzioni di fabbrica restituiscono FontFamily anziché sottoclassi
    • Ha nascosto i costruttori delle sottoclassi, in modo che possano essere costruite 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 te. Utilizza questo intent quando vuoi avviare l'attività durante il test, ad esempio utilizzando ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState ora è animateFooAsState, dove Foo è il tipo di variabile animata. Ad esempio, Float, Dp, Offset e così via (Ie7e25)

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

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

    • Rimozione di initial dai parametri del costruttore EditingBuffer. (I326d5)
  • invalidate e compositionReference() sono ora ritirati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)

  • AnnotatedString viene modificata per estendersi da kotlin.CharSequence. Pertanto, length e subSequence sono ora funzioni di istanza e le funzioni di estensione sono state rimosse. (Iaf429)

  • Durata e Uptime verranno sostituiti da Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore da queste classi. (Ia33b2, b/175142755, b/177420019)

  • RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora ritirato.

    RememberObserver è un sostituto di CompositionLifecycleObserver con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati una sola volta, il che è e continua a essere la prassi consigliata. Tuttavia, se un riferimento è stato memorizzato più di una volta 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 di composizione e, pertanto, non verrà mai chiamato onRemembered. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o la composizione viene eliminata perché lo stato per cui stava producendo una composizione non è più attuale o non è più necessario. Se l'istanza di RememberObserver che segue il singolo suggerimento di riferimento riportato sopra monitora una risorsa esterna, sia onForgotten che onAbandoned indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro iniziato o le risorse allocate in onRemembered, onAbandoned può essere ignorato perché non verrà chiamato se viene chiamato onRemembered. (I02c36)

  • Rinomina 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)
  • 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, in quanto potrebbe cambiare. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato con @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)

  • Rimozione di PointerInputData e modifica di PointerInputChange per fornire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData sono stati resi interni perché non vengono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)

  • Ridenominato TextInputService.onStateUpdated come 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 sono stati rilasciati. La versione 1.0.0-alpha10 contiene questi commit.

Modifiche alle API

  • ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
  • Modifiche all'API VisualTransformation
    • OffsetMap è stato rinominato OffsetMapping
    • È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
    • PasswordTransformation non è più una classe di dati
    • OffsetMapping è stato spostato in un file separato
    • (I0bdf3)
  • Modifiche all'API EditOperations
    • EditOperation rinominato in EditCommand
    • Aggiunto il suffisso Command per le implementazioni concrete di EditOperation
    • EditCommand non sono più classi di dati
    • È stata rinominata la funzione EditOperation.process in applyTo
    • Rinomina InputEventListener in InputEventCallback
    • (I0a366)
  • Modifica di Velocity per includere componenti e operazioni matematiche. (Ib0447)
  • È stata rinominata l'annotazione @ExperimentalTesting in @ExperimentalTestApi per coerenza con annotazioni API sperimentali simili (Ia4502, b/171464963)
  • È stato aggiunto il metodo sperimentale stickyHeader per LazyColumn/LazyRow (I0a81d)
  • Rinomina Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher deprecato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
  • Aggiungi l'opzione di attivazione/disattivazione a foundation Strings.kt (I4a5b7, b/172366489)
  • nativeClass è stato spostato nel modulo ui ed è stato reso interno. Utilizzi aggiornati di nativeClass nelle implementazioni di equals per utilizzare 'is MyClass' invece. (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 comunicare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
  • Modificato fun Dp.isFinite() in val Dp.isFinite (I50e00)
  • Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
  • Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi inline con una costante Unspecified. (I93f7b, b/174310811)

Correzioni di bug

  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le animazioni. Nuova 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() è ora sostituito da animateAsState(), che restituisce un State<T> anziché un T. Ciò consente prestazioni migliori, in quanto l'ambito di invalidazione può essere ristretto al punto in cui viene letto il valore State. (Ib179e)
  • Aggiungi l'API del ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier selezionabile, attivabile e disattivabile. 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 sono stati rilasciati. La versione 1.0.0-alpha09 contiene questi commit.

Modifiche alle API

  • Aggiungi interfaccia scorrevole

    In questo modo ScrollState e LazyListState possono essere trattati come un tipo comune, consentendo l'implementazione dello scorrimento personalizzato in entrambi i tipi.

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

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

  • Ritira LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza invece LazyColumn e LazyRow (I5b48c)

  • Per la sospensione delle API di input del puntatore, è 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)

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

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

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

  • Spostato ContentDrawScope nel modulo ui-graphics per essere con DrawScope. (Iee043, b/173832789)

Correzioni di bug

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

    CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Queste sono pubbliche, ma non sono destinate all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c).

  • È stato eseguito il refactoring di ShaderBrush per creare in modo differito un'istanza dello shader quando sono disponibili le informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire gradienti che occupano i limiti di disegno completi di un elemento componibile al momento della composizione, senza dover implementare implementazioni personalizzate di DrawModifier.

    API costruttori di funzioni di sfumatura deprecate a favore dei metodi di fabbrica su un oggetto sfumatura. (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 destrutturazione per creare istanze FocusRequester (I35d84, b/174817008)

  • accessibilityLabel è stato rinominato in contentDescription. accessibilityValue è stato rinominato in stateDescription. (I250f2)

  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar ed è stato rinominato onPositionChange in notifyPositionChange. (Ifbaf7)

  • AndroidOwner made internal (Ibcad0, b/170296980)

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

  • L'interfaccia di Applier è stata modificata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.

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

    È stato aggiunto un nuovo metodo, insertBottomUp().

    Un'applicazione inserisce i nodi nell'albero che sta modificando utilizzando insertTopDown() o insertBottomUp() a seconda di quale ha un rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da costruire dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserti per implementare la costruzione bottom-up, che doveva essere copiato in ogni applicatore che richiedeva la costruzione bottom-up per le prestazioni. Con questa modifica, un Applier sostituisce insertBottomUp() per creare una struttura ad albero dal basso verso l'alto e insertTopDown() per creare la struttura ad 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 PNG) o VectorDrawable. I consumatori non devono più determinare in anticipo il tipo di asset e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composable Image o nei modificatori di Painter. (I2c703, b/173818471)

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una AnnotatedString. Funzione di creazione di 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 sono stati rilasciati. La versione 1.0.0-alpha08 contiene questi commit.

Modifiche alle API

  • Rimosso il parametro maxLines da CoreTextField. Se vuoi vincolare l'altezza del campo di testo in base al numero di righe, utilizza BasicTextField. (Iec002)
  • Modificati i metodi await*TouchSlop() per non rilevare il puntatore verso il basso e rinominati in *OrCancellation. È stata rimossa anche la necessità del parametro orientationLock. (Ie96e1)
  • È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose. Inoltre, sono state migrate alcune API utilizzando children come nome per la lambda finale in content, in base al controllo lint e alle indicazioni. (Iec48e)
  • Le API foundation:foundation-text sono state spostate in foundation:foundation. La struttura del pacchetto è rimasta invariata (Id3eb2)
  • Nuovo rilevatore di gesti multitocco, inclusi helper per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25)
  • VectorAsset è stato rinominato ImageVector VectorAsset è stato spostato e rinominato Builder per essere una classe interna di ImageVector in conformità con le linee guida del consiglio API. Aggiunta di un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
  • ImageAsset e i metodi correlati sono stati rinominati ImageBitmap. (Ia2d99)
  • Proprietà semantiche di base spostate nell'interfaccia utente (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 completamento dello scorrimento prima di restituire un valore. (Ie5642)

  • È stato aggiunto un parametro singeLine a 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)

  • Sono stati aggiunti il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere più facilmente i propri rilevatori di gesti. (I00807)

  • Modifier.focusable ha aggiunto il requisito in foundation. Utilizzalo per aggiungere un comportamento selezionabile a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)

  • Le API precedentemente deprecate sono state rimosse: il bordo è stato rimosso, utilizza invece BorderStroke. Modifier.drawBorder è stato rimosso, usa invece Modifier.border. Modifier.gravity è stato rimosso, utilizza invece Modifier.align. Lo stack è stato rimosso, utilizza invece Box (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 alias di tipo/metodi helper per facilitare la migrazione dalle API deprecate a quelle attuali. (Id6044, b/173834241)
  • È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer. Sono state aggiornate anche le classi correlate 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ù nullabili. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i punti di manipolazione della selezione 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 di Box è stato rinominato contentAlignment. (I2c957)
  • I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché State. (Ic3021, b/173594846)
  • È stato aggiunto WindowManager.isWindowFocused per verificare se la finestra 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
    • TextFieldValue.composition è ora di sola lettura
    • rimossa l'eccezione generata per l'intervallo di selezione non valido (I4a675, b/172239032)
  • Gli Ambients ritirati denominati con Ambient come suffisso sono stati sostituiti con nuove proprietà con il prefisso Ambient, seguendo le altre linee guida per Ambients e API Compose. (I33440)
  • Aggiunto wrapper Android Typeface. Puoi caricare un carattere Android tramite la funzione typeface, ad esempio typeface(Typeface.DEFAULT). Ha anche rinominato typefaceFromFontFamily() in typeface() (I52ab7)
  • È stato aggiunto un controllo lint per verificare che le fabbriche di modificatori utilizzino internamente androidx.compose.ui.composed {}, anziché essere contrassegnate come @Composable. (I3c4bc)
  • È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica dei modificatori siano definite come estensioni del modificatore, in modo che possano essere concatenate in modo fluido. (I07981)
  • L'argomento Semantica 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 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)
  • Deprecare place(Offset) e placeRelative(Offset). Utilizza invece gli overload con offset interi (I4c5e7)
  • id è stato rinominato in layoutId per LayoutIdParentData. Measurable.id è stato rinominato in 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 sono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche alle 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)
  • Le classi AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono state ritirate. Utilizza invece le nuove versioni disponibili nella libreria di Material. Per le applicazioni non Material, devi invece creare un tuo sistema di progettazione con ambienti di temi specifici 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 e non soggettiva che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
  • Aggiunta di maxLines ai campi di testo (Ib2a5b)
  • Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
  • Aggiunta di KeyboardOptions per l'utilizzo in TextField (I9ca32)
  • Aggiunge BasicText come API per il testo senza opinioni di progettazione, parallelamente a BasicTextField. (I28268)
  • L'annotazione ExperimentalLazyDsl è stata rimossa. LazyColumn/LazyRow ora può essere utilizzato senza aggiungere @OptIn (Idab7a, b/166584730)
  • BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
  • BasicTextField è stato aggiunto in sostituzione di CoreTextField e BaseTextField (Id4cea)
  • Rimuovi LazyColumnItems/LazyRowItems ritirati (I1d8a8)
  • I composable obsoleti per il dimensionamento in base alle misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
  • relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline, per specificare più facilmente le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
  • Il parametro matchHeightConstraintsFirst è stato aggiunto al modificatore aspectRatio, che può essere utilizzato per specificare il modificatore per dimensionare in base ai vincoli di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593)
  • 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 indipendenti l'uno dall'altro per supportare i casi d'uso di scalabilità non uniforme.
    • Aggiunto il metodo computeScaleFactor a ContentScale
    • È stato aggiunto ContentScale.FillBounds per eseguire il ridimensionamento non uniforme per estendere i limiti dell'origine 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 come ImeOptions (I82f36)
  • KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
  • CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza BasicTextField (Ie2469)
  • L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
  • Introduzione del modulo ui-test-junit4 (Ib91f8)
  • API Icon aggiornata per accettare Color.Unspecified come possibile colore di tinta che disegnerà l'asset o il pittore fornito senza un ColorFilter. In precedenza, i tentativi di ignorare la colorazione con Color.Unspecified avrebbero colorato con un colore trasparente, con il risultato di non visualizzare nulla. (I049e2, b/171624632)
  • MeasureResult è stato spostato fuori da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli correlati 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)
  • Aggiunta di SelectionContainer senza il callback (Ibfadb)
  • Aggiungi test per le posizioni di SelectionHandles in SelectionContainer. (Ie93db)
  • Aggiunta dell'opzione 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 sono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche alle API

  • androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Se non vuoi utilizzare la libreria Material, puoi anche utilizzare il componente / modificatore Image.paint() con un Painter. (I9f622)
  • Aggiunta di interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805)
  • alignByBaseline è stato aggiunto a RowScope e alignWithSiblings è stato rinominato in alignBy (I06503, b/170628732)
  • Box è stato reso una funzione in linea. (Ibce0c, b/155056091)
  • Aggiunta di maxLines a CoreTextField (Ibee58, b/143687793)
  • È stato aggiunto il soft wrap a CoreTextField. (I21a4b)

Correzioni di bug

  • VectorPainter è stato ritirato a favore di rememberVectorPainter per indicare meglio che l'API componibile sfrutta internamente "remember" per rendere persistenti i dati tra le composizioni. (Ifda43)
  • Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
  • È stata aggiunta l'opzione della tastiera a una sola riga a CoreTextField (I72e6d)
  • È stata rinominata l'API Radius in CornerRadius per esprimere meglio il modo in cui viene utilizzata in tutto Compose. Documentazione aggiornata per indicare che i raggi d'angolo negativi sono bloccati a zero. (I130c7, b/168762961)
  • Aggiunta della possibilità di specificare le informazioni dello strumento di controllo nel modificatore composto (Idee08, b/163494569)
  • Aggiunta dell'opzione IME KeyboardCapitalization (I8ac38)
  • Fix Rtl Handle Position. (I6e1e0)
  • Modifica che causa interruzione: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che dovrebbe poter essere modificato negli eventi puntatore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo dei PointerEvent passati. (I6acd0)
  • Aggiunta dell'opzione Seleziona tutto nel 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 sono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Modifiche alle API

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

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

Correzioni di bug

  • Nell'ambito della standardizzazione dei valori sentinella per le classi inline, rinomina Color.Unset in Color.Unspecified per coerenza con altre classi inline (I97611, b/169797763)
  • Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Viene introdotto TextOverflow.None. Quando l'overflow è None, Text non gestirà più l'overflow e segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170)
  • Parametri Size.Unspecified aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Implementazioni di Painter aggiornate per il controllo rispetto a Size.Unspecified e alle dimensioni non finite. (I95a7e)
  • Aggiunti il modulo di composizione della paginazione e l'integrazione della paginazione (Ib85da)
  • Modificare LazyListScope per ricevere valori nullabili (I1765b)
  • OnPositionedModifier è stato rinominato in OnGloballyPositionedModifier e onPositioned() è stato rinominato in onGloballyPositioned(). (I587e8, b/169083903)
  • Aggiunti esempi per LazyColumn/Row (Idc16d)
  • Correzione dei metodi items e itemsIndexed per consentire emptyList (I06647)
  • Aggiungi un DSL per specificare le informazioni dello strumento di controllo (Ic9a22)
  • Sposta LongPress in Text. (Iff2bc)
  • Disattiva Selezione nel testo e una demo. (Ie7e97)
  • Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
  • PointerInputFilter.onPointerInput(...) rimosso. PointerInputFilter.onPointerEvent(...) deve essere utilizzato al suo posto. (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 sono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.

Modifiche alle API

  • L'elenco filtri è stato rinominato in Box. La classe foundation.Box esistente verrà ritirata a favore della nuova classe Box in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando ne ha più di uno. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
  • I parametri di decorazione del riquadro sono stati ritirati. Se vuoi aggiungere decorazioni/spazi interni alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Aggiungi una nuova classe LazyListState. Ciò consente l'osservazione e il controllo della posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro state del componente. Attualmente, in questa versione iniziale è possibile osservare il primo elemento visibile e gli offset. (Ic7cb7, b/159307669)
  • La posizione dell'elenco pigro e l'offset di scorrimento vengono ora salvati e ripristinati durante la ricreazione dell'attività (Ie045f, b/166589058)
  • Aggiungi l'azione semantica di clic lungo (I6281b, b/156468846)
  • Utilità MutatorMutex aggiunta per mantenere un singolo mutatore di stato condiviso nel tempo e annullare i mutatori in conflitto in base alla priorità (I3f975)
  • Annota rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendili API interne e nascondi la relativa documentazione (I554eb, b/168308412)
  • Rimosso il parametro inlineContent dall'input di testo con stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
  • Le API di disposizione personalizzata ritirate sono state rimosse. (Ic576d, b/168297922, b/168297923)
  • Il parametro unbounded è stato aggiunto ai modificatori wrapContentSize, il che consente di misurare l'elemento di layout con vincoli massimi infiniti. (I77951, b/158559319)
  • Abbiamo impedito le importazioni statiche dei contenuti degli ambiti del layout (ad es. alignWithSiblings in RowScope). Deve essere utilizzata l'alternativa di ambito esplicito: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Correzioni di bug

  • Aggiornamento di molte API grafiche
    • API di trasformazione di rotazione e scalabilità aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata del punto di rotazione anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Rimossi i metodi Rect.expandToInclude e Rect.join
    • Aggiornamento della documentazione sul raggio per indicare ovale oltre a ellittico
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius incorporata non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istanziati tramite i relativi costruttori di funzioni
    • Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
    • Rect.shift ritirato a favore di Rect.translate
    • Sono state rimosse le API RoundRect.grow e Rect.shrink
    • È stato rinominato RoundRect.outerRect in Rect.boundingRect
    • Rimozione dei metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
    • Rinominato RoundRect.longestSide in RoundRect.maxDimension
    • È stato rinominato RoundRect.shortestSide in RoundRect.minDimension
    • Modifica di RoundRect.center in modo che sia una proprietà anziché una funzione
    • Aggiornamento del costruttore RoundRect per 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 origine in 0,0
    • È stata aggiunta un'API di eliminazione a Radius
    • È stata eseguita la migrazione di varie funzioni di estensione RoundRect in modo che siano invece proprietà
    • (I8f5c7, b/168762961)
  • Ottimizzazioni delle prestazioni per lo scorrimento di LazyColumnFor/LazyRowFor evitando ricomposizioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
  • È stato corretto l'arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la successiva 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)
  • L'annidamento di contenitori scorrevoli nella stessa direzione come ScrollableContainer e LazyColumnFor non è più consentito. Non è mai stato supportato e interrompeva lo scorrimento e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
  • Aggiornamento di molte API grafiche
    • API DrawScope aggiornate con metodi di trasformazione con ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
    • È stata aggiornata la documentazione di clipPath in modo che faccia riferimento a Path anziché al rettangolo arrotondato
    • Spaziatura fissa nella documentazione per il parametro right in clipPath
    • Rinominate DrawScope.drawCanvas in drawIntoCanvas e rimosso il parametro size
    • I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
    • È stato aggiunto l'override dell'inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
    • È stata rimossa la documentazione sul metodo di inserimento che indicava che l'inserimento sarebbe stato applicato a tutti e quattro i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri Rect per corrispondere allo stile kdoc
    • Rimossi Rect.join e Rect.expandToInclude
    • È stato creato l'overload per Rect.translate(offset) e Rect.shift è stato ritirato
    • (If086a, b/167737376)
  • aggiungi AccessibilityScrollState alle proprietà semantiche. (Ifeda9)
  • Rendi TextRange inline per evitare la creazione di oggetti. (Id034b)
  • ParagraphConstraints è stato rimosso. La larghezza viene ora passata direttamente al 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 sono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • DpConstraints e le API che lo utilizzano sono state ritirate. (I90cdb, b/167389835)
  • I parametri minWidth e maxWidth di widthIn sono stati rinominati in min e max. Allo stesso modo per preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • Sono stati aggiunti onNode e altri metodi globali a ComposeTestRule, in quanto quelli globali attuali verranno ritirati. (Ieae36)
  • Sono stati corretti i calcoli delle dimensioni e della posizione in GestureScope, che causavano, tra le altre cose, 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 sono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.

Correzioni di bug

  • TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
  • Aggiunta di ManualFrameClock.hasAwaiters per verificare se qualcosa è in attesa di un frame da quell'orologio; runWithManualClock in sostituzione di runBlocking durante l'esecuzione di test che richiedono un ManualFrameClock; TestUiDispatcher.Main che consente di accedere facilmente al dispatcher dell'interfaccia utente 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 sono 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 sono rilasciati. La versione 0.1.0-dev17 contiene questi commit.

Modifiche alle API

  • È stato aggiunto l'allineamento spacedBy per riga e colonna, per consentire il posizionamento dei figli del layout con una spaziatura fissa. È stato aggiunto anche l'allineamento, per consentire di posizionare i figli del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I metodi Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange precedenti sono stati ritirati e la scrittura di disposizioni personalizzate 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 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, in quanto rendono più difficile aggiungere correttamente questi modificatori per gli elementi che non sono figli diretti di LazyColumnFor (Ifa78d)
  • È stata aggiunta l'implementazione di LazyColumn/LazyRow come DSL (I93cc6)
  • Constraints è ora una classe inline (I88736)
  • È stata aggiunta la possibilità di dimensionare un layout in base a 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)
  • Aggiunta della lambda mergePolicy a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per la semantica di mergeAllDescendants unione. Il criterio predefinito prevede l'utilizzo del valore principale se già presente, altrimenti del valore secondario. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() è stato rinominato in PlacementScope.place() e il precedente PlacementScope.place() è stato rinominato in PlacementScope.placeRelative(). Di conseguenza, il metodo PlacementScope.place() non rifletterà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza PlacementScope.placeRelative(). (I873ac, b/162916675)
  • È stato rimosso il componente FilledTextField deprecato. Utilizza invece TextField per ottenere l'implementazione Material Design del campo di testo compilato. (I5e889)
  • È stato aggiunto il parametro backgroundColor a LinearProgressIndicator ed è stato rimosso il padding interno da CircularProgressIndicator. È stata aggiunta la nuova costante ProgressIndicatorConstants.DefaultProgressAnimationSpec, che può essere utilizzata come AnimationSpec predefinita per l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677).
  • Il composable state { ... } è ora ritirato a favore di chiamate esplicite a remember { mutableStateOf(...) } per maggiore chiarezza. In questo modo si riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e si adatta al pattern by mutableStateOf() per la delega delle proprietà della classe. (Ia5727)
  • RRect è stato rinominato 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 inline (I2bf42)
  • Tieni premuta l'area vuota per modificare. (Ib1e5b)
  • Nascondi la barra degli strumenti mobile dopo aver toccato il testo. (If4525)
  • Nascondi la barra degli strumenti mobile durante l'aggiornamento della selezione. (I8444c)
  • Deseleziona Quando sfocare. (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 sono rilasciati. La versione 0.1.0-dev16 contiene questi commit.

Modifiche alle API

  • È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima del contenitore, il che risolve il caso d'uso in cui l'elemento deve riempire la finestra e il modificatore normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli infiniti. (Ibd3b2, b/162248854)
  • Sposta la finestra di dialogo nell'interfaccia utente (I47fa6)
  • Aggiunta di 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 LazyRowFor (I84f84)
  • Aggiungi alcuni segni/annotazioni per motivi di best practice. (I66b20)
  • Il pacchetto foundation.shape.corner è stato compresso in foundation.share (I46491, b/161887429)
  • È stato aggiunto il parametro di gravità dell'asse trasversale per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supportano il comportamento di wrapping dei contenuti. (Ib39fc)
  • ZoomableState è stato rinominato in ZoomableController. È stato aggiunto il supporto della curva personalizzata per smoothScale. Sono state aggiunte le funzionalità enabled e onZoomStarted (If8b8f)
  • Material FilledTextField è stato rinominato TextField e TextField di base è stato rinominato BaseTextField per rendere l'API più semplice da scoprire e utilizzare (Ia6242, b/155482676)
  • AdapterList, precedentemente ritirato, è stato rimosso. Utilizza invece 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 vengono rispecchiati automaticamente nel contesto da destra a sinistra (I3aa21).
  • Row e Column sono ora funzioni inline che riducono significativamente l'overhead del loro utilizzo. (I75c10)

Correzioni di bug

  • Correzioni generali dell'API Address (I077bc)
    1. Rimuovi l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset in modo da avere una superficie API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per coerenza 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 nullabilità del campo
    6. Rinominate le enumerazioni ClipOp in Pascal Case
    7. Rinominate le enumerazioni FilterQuality in Pascal Case
    8. Rinominate le enumerazioni StrokeJoin in Pascal Case
    9. Rinominate le enumerazioni PointMode in Pascal Case
    10. Rinominate le enumerazioni PaintingStyle in Pascal Case
    11. Rinomina le enumerazioni PathFillType in Pascal Case
    12. Rinomina gli enum StrokeCap in Pascal Case
    13. Implementazione di DrawCache aggiornata per non utilizzare più i parametri lateinit
    14. Aggiornamento di DrawScope per non utilizzare più la delega pigra per i parametri interni fillPaint e strokePaint
    15. Aggiornamento del composable Image per evitare l'utilizzo di Box per un overhead inferiore
    16. Aggiornamento della classe Outline per includere annotazioni @Immutable
    17. Aggiornamento di PathNode per includere annotazioni @Immutable per ogni istruzione del percorso
    18. Aggiornamento della composizione secondaria Vector per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi costruttori del componente complementare rettangolare ritirati a favore dei costruttori di funzioni
    20. Classi Brush e costruttori di funzioni aggiornati con le API @Immutable e @Stable
    21. Aggiornamento dell'enumerazione VertexMode in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto sulla pittura se sono cambiati
    23. Aggiornamento di Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
  • È stato aggiunto MonotonicFrameAnimationClock, che 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 ManualAnimationClock in MonotonicFrameClock è ora ManualFrameClock. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture rimosso. Utilizza 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 è stato ritirato, utilizza invece Modifier.then. "Poi" ha un segnale di ordinamento più forte e impedisce anche di digitare Modifier.padding().background() + anotherModifier, che interrompe la catena e rende più difficile la lettura (Iedd58, b/161529964)

  • Aggiunta di isFocused() e isNotFocused() SemanticsMatcher. (I0b760)

  • È stato aggiunto RemeasurementModifier. Consente agli utenti di misurare nuovamente il layout in modo sincrono. In generale, non ne hai mai bisogno perché la misurazione/il layout vengono eseguiti automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)

  • isSystemInDarkTheme ora considera sempre l'impostazione del tema scuro a livello di sistema e ignora lo stato di risparmio energetico prima di Q, seguendo le ultime indicazioni. (I0c10c)

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

  • È stato rinominato AndroidComposeTestRule in createAndroidComposeRule. (I70aaf)

  • Aggiungi l'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 sono 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 nella sezione Dichiarazione delle dipendenze.

Modifiche alle API

  • Analogamente al nuovo parametro in ScrollableColumn/ScrollableRow, anche LazyColumnItems/LazyRowItems ora hanno il parametro contentPadding, che consente di aggiungere un padding per i contenuti dopo che sono stati ritagliati, il che non è possibile tramite un semplice parametro modificatore. Consente inoltre di aggiungere una spaziatura solo prima del primo elemento/dopo l'ultimo elemento. (Ibc24e)
  • Callback onFocusChange nei campi di testo rinominato in onFocusChanged (Ida4a1)
  • VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ScrollableColumn e ScrollableRow per un'esperienza integrata con il comportamento e i parametri di Column/Row 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 rielaborate. DragDirection è stato rimosso a favore di Orientation. Lo stato richiesto per lo scorrimento è stato semplificato. ScrollableState è stato rinominato in ScrollableController (Iab63c, b/149460415)
  • Le proprietà semantiche 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 utilizzate da RoundedCornerShape e CutCornerShape ora possono essere superiori al 50% (Id2340, b/160400213)
  • È stato modificato il parametro ContentScale predefinito per il composable Image da Inside a Fit. Questa operazione è stata eseguita per scalare il comportamento del pittore sottostante se le dimensioni del layout sono maggiori di quelle intrinseche del pittore, mantenendo le proporzioni. Questo comportamento corrisponde meglio alle aspettative di fornire dimensioni fisse all'immagine senza influire sul comportamento predefinito se per calcolare le dimensioni del componente componibile viene utilizzata solo la dimensione intrinseca. (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 creare AnimationSpec come tween e spring. ma accettano direttamente i parametri del costruttore. - Migliorare la facilità d'uso complessiva di AnimationSpec aprendo i costruttori anziché affidarsi ai builder - Modificare la durata e il ritardo per KeyFrames e Tween in Int. In questo modo si eliminano i cast di tipo e l'overload dei metodi non necessari (per supportare sia Long che Int). (Ica0b4)
  • Clickable è stato rimosso. Utilizza Modifier.clickable (I84bdf)
  • Aggiunta di LazyRowItems: analogo a scorrimento orizzontale di LazyColumnItems (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. TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono anch'essi deprecati. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Sostituito l'utilizzo di IntPx con Int. Sostituito IntPxPosition con IntOffset. IntPxSize è stato 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. In questo modo si ottengono i vantaggi di una classe inline per sfruttare un valore long per comprimere due valori float per rappresentare larghezza e altezza rappresentate come valori float. (Ic0191)
  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sul posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. In questo modo, puoi sfruttare i vantaggi di una classe inline per utilizzare un valore long per comprimere due valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
  • Aggiunto Modifier.zoomable per la funzionalità di pizzico per zoomare (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 Text, che non era stato aggiunto in precedenza per errore (I56937)
  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
  • VerticalScroller ora fornisce Column out of the box. HorizontalScroller ora fornisce Row out of the box. (Ieca5d, b/157020670)
  • È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e sui tipi primitivi per i parametri dei pixel (Iede0b).
  • Modifier.indication è stato aggiunto al pacchetto di base. Utilizzalo per mostrare la pressione, il trascinamento o altre indicazioni 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 composable nel layout di testo. (I1373c)
  • Implementazioni consolidate di CanvasScope Ora sono disponibili solo DrawScope e ContentDrawScope CanvasScope è stato rinominato DrawScope. DrawScope è stato aggiornato per implementare l'interfaccia Density e fornire LayoutDirection La sottoclasse DrawScope è stata eliminata in ContentDrawScope Painter e PainterModifier sono stati aggiornati per non mantenere più una proprietà RTL in quanto DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
  • Rimosse le API DrawBackground deprecate a favore delle API di estensione drawBackground su Modifier. È stato eseguito il refactoring delle implementazioni di colore, pennello e paint drawBackground per ridurre anche i percorsi del codice e rimuovere il requisito di creazione di Modifier come parte della composizione. (I0343a)
  • API Compose di livello superiore aggiornate che espongono una tela per esporre invece CanvasScope. In questo modo i consumatori non devono più gestire i propri oggetti Paint. Per 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 sottostante. (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 e sarà nuovamente disponibile con un'API aggiornata. (Id88a7)
  • È stata creata l'API CanvasScope che racchiude un oggetto Canvas per esporre una superficie API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del destinatario e le informazioni sulle dimensioni sono anche limitate ai limiti dell'inserto corrispondente. Non richiede a un consumatore di mantenere il proprio oggetto stato Paint per configurare le operazioni di disegno.

    È stato aggiunto CanvasScopeSample ed è stata aggiornata l'app demo per includere una demo di grafica dichiarativa (Ifd86d).

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

  • Aggiungi la personalizzazione del colore del cursore al campo di testo (I6e33f)

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

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

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

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

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

  • Sono stati aggiunti InteractionState e Interaction, semplificando la creazione di componenti che reagiscono alle modifiche dello stato della UI, ad esempio pressione e trascinamento (Icfe25, b/152525426)

  • RectangleShape è stato spostato da androidx.ui.foundation.shape.* a androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Sono stati sostituiti tutti gli utilizzi di Color che accettano valori null nell'API con valori non nulli e viene utilizzato Color.Unset al posto di null (Iabaa7)

  • Aggiornamento dell'API TextField: unione dei callback onFocus e onBlur in un unico callback onFocusChange(Boolean) con parametro (I66cd3)

  • È stato rinominato ScaleFit in ContentScale ContentScale è stato spostato dal modulo ui-graphics a ui-core per trovarsi nello stesso modulo dell'API Alignment. Rinomina FillMaxDimension in Ritaglia Rinomina FillMinDimension in Adatta Rinomina Adatta all'interno in modo che corrisponda meglio agli equivalenti di ImageView.ScaleType Aggiunta della documentazione che indica che la combinazione di Ritaglia 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 All'interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)

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

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

  • Migliora l'API DrawModifier:

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

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

  • Sostituito l'operatore Modifier plus con le funzioni di estensione della fabbrica (I225e4)

  • Draggable è stato spostato 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, Interruttore e Attivabile/disattivabile (I41c16)

  • Ripple è ora un modificatore. Sebbene Clickable non sia 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 la grafica vettoriale. Il risultato della composizione secondaria è un oggetto VectorPainter anziché un DrawModifier. Sono stati ritirati i composable DrawVector precedenti a favore di VectorPainter.

    È stata rinominata l'API Image(Painter) in PaintBox(Painter) È stato creato un elemento componibile Vector che si comporta come l'elemento componibile Image, ma con un VectorAsset anziché un ImageAsset (I9af9a, b/149030271)

  • Componente componibile Created Image per gestire il dimensionamento/layout, oltre a disegnare un determinato ImageAsset sullo schermo. Questo elemento componibile supporta anche il disegno di qualsiasi istanza di Painter rispettando le sue dimensioni intrinseche, nonché il supporto di una dimensione fissa o minima (Ibcc8f).

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

  • È stato rinominato Image in ImageAsset per distinguere meglio la differenza tra i dati Image e il componente componibile Image in arrivo, utilizzato per partecipare al layout e disegnare i contenuti.

    È stato creato un 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 un'immagine sul layout esistente o SimpleImage per inserire un'immagine che occupa spazio (I595e1, b/149827027).

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

  • Sono stati aggiunti Icon, IconButton e IconToggleButton, mentre AppBarIcon è stato rimosso. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, e ora avranno il touch target corretto. Consulta gli esempi per informazioni sull'utilizzo e le 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 di elenco scorrevole che compone e dispone solo gli elementi visibili. I problemi noti al momento includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai relativi elementi secondari. (Ib351b)

  • È stato aggiunto un componente scorrevole che consente la creazione di elenchi/scorrimento personalizzati (I5fd37)

  • Rinomina lo sfondo in DrawBackground e impostalo come memorizzato per impostazione predefinita (Ia0bd3)

  • Aggiungi parametri di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)

  • È stato aggiunto il componente Canvas. Questo elemento componibile occupa una parte dello spazio (fornito 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 disegnare funzionalità comuni. (I6e2a7)

  • Gli scorrimenti ora mostrano il comportamento di movimento di scorrimento nativo di Android. (I922af, b/147493715)

  • Sostituito DrawBorder con Border Modifier (Id335a)

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

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

  • Aggiunto il supporto per i margini delle barriere ConstraintLayout. (I47ffe)

  • È stato corretto il supporto RTL in ConstraintLayout. Sono state aggiunte API che non supportano la direzione da destra a sinistra. (I3b1c7)

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

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

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

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

  • È stato rimosso LayoutTag(), utilizza invece Modifier.tag(). È 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 pixel. (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 di dimensione sul layout di wrapping 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 Box (Ibbc2b, b/151407926)

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

  • Sono stati aggiunti valori predefiniti dei parametri per il modificatore di offset. (I37f06)

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

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

  • Sono stati rimossi i modificatori LayoutAlign ritirati. (I10877)

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

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

  • Sono stati aggiornati wrapContentWidth e wrapContentHeight in modo che prevedano l'allineamento verticale o orizzontale anziché un allineamento qualsiasi. Il modificatore di gravità è stato aggiornato per accettare l'allineamento verticale o orizzontale. Riga, Colonna e Stack sono stati aggiornati per supportare gli allineamenti continui personalizzati. (Ib0728)

  • È stato reso possibile creare istanze di Alignment con valori arbitrari. Aggiunta di allineamenti 1D. (Ia0c05)

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

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

  • Sono stati aggiunti modificatori per il dimensionamento alle misurazioni intrinseche e sono stati ritirati i componenti che svolgono questa funzione. (I8295d)

  • È stato aggiunto il supporto per la personalizzazione delle dimensioni dei figli di ConstraintLayout (Idb1a5)

  • Sono stati rimossi i composable Wrap e Center ritirati. (I29e23)

  • Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecazione di LayoutModifier (If32ac)

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

  • Il container è stato ritirato. Usa Box. (I675ce, b/151407926)

  • È stato aggiunto il modificatore LayoutOffset per l'offset della posizione del layout (I0b8a3)

  • Supporto iniziale per la direzione da destra a sinistra nel layout di Compose (Ia5519)

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

  • Rimosso il composable AspectRatio a favore del modificatore. Eliminati i composable FlexColumn, FlexRow e il modificatore Spacing obsoleti (Iec8a7)

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

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

  • Implementa LongPressAndDrag per la selezione di TextField. (I17919)

Correzioni di bug

  • FocusModifier è obsoleto a favore di Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. FocusState e FocusDetailedState sono ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
  • runOnIdleCompose 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 ritirato. Ora Clickable utilizza l'effetto increspatura come indicatore predefinito (se hai impostato MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare Clickable e ottenere l'effetto increspatura senza costi. Se devi personalizzare il parametro colore / dimensione / delimitato per l'increspatura, puoi creare manualmente un RippleIndication e passarlo a clickable come parametro di indicazione. (I663b2, b/155375067)
  • Sono state rimosse le API di test delle dimensioni obsolete. (Iba0a0)
  • API sperimentale LayoutNode (I4f2e9)
  • La versione 1 del blocco dell'orientamento dello scorrimento è implementata in Compose. (I1ce7a, b/150289741)
  • Popup, finestre di dialogo e menu ora ereditano il tema Material contestuale (Ia3665, b/156527485)
  • Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è 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 mirroring automatico in RTL (I3a1df)
  • L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
  • Prima di questa modifica, il plug-in del compilatore 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 componente componibile viewModel() che consente di creare o ottenere ViewModel già creati in modo simile a come funziona in Activity o Fragment (I5fdd1).
  • È stato eseguito il refactoring della classe Radius per renderla una classe inline. Sono stati rimossi i metodi di creazione del componente aggiuntivo a favore del costruttore di funzioni con il parametro predefinito per fare in modo che il raggio lungo l'asse y corrisponda a quello del parametro del raggio dell'asse x obbligatorio.

    Aggiornamento di DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori float separati 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 refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Eliminazione dell'intera classe Px (I3ff33)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Id3434)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande 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)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)

  • Modifier.semantics è stato ripristinato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)

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

  • API Alignment aggiornata e aggiunto il supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto da destra a sinistra) (I38cd3)

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

  • Introduci un parametro rect facoltativo aggiuntivo 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 nel blocco activity.setContent { }. In precedenza era costretto a riempire l'intero schermo dell'attività, mentre ora si comporta come se avessi inserito il layout in uno Stack: può essere più piccolo di uno schermo e verrà posizionato nella parte superiore sinistra dello schermo. Se vuoi il comportamento precedente, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714)

  • Il modulo ui-text-compose è stato rinominato in ui-text. ui-text ora contiene i composable CoreText e CoreTextField (Ib7d47)

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

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

  • runOnIdleCompose e runOnUiThread sono ora funzioni globali anziché metodi di ComposeTestRule. (Icbe8f)

  • Gli operatori delegati della proprietà [Mutable]State sono stati spostati nelle estensioni per supportare le ottimizzazioni dei delegati della proprietà di Kotlin 1.4. I chiamanti devono aggiungere le importazioni per continuare a utilizzare by state { ... } o by mutableStateOf(...). (I5312c)

  • DrawLayerModifier e drawLayer() ora impostano clipToBounds e clipToOutline su false per impostazione predefinita. (I0eb8b, b/152810850)

  • LayoutResult è stato rinominato in MeasureResult. (Id8c68)

  • Composable Center deprecato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAlign.Center oppure con uno dei composable Box o Stack a cui sono stati applicati modificatori adatti (Idf5e0).

  • LayoutFlexible è stato rinominato LayoutWeight. Il parametro stretto è stato rinominato in riempimento. (If4738)

  • DrawVector è stata modificata da una normale funzione componibile per restituire un Modifier drawVector() che disegnerà il vettore come sfondo di un layout. (I7b8e0)

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

  • La funzione composable DrawShadow è stata sostituita con il modificatore drawShadow(). Ora le ombre vengono disegnate come parte 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 ritirato. 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)

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

  • È stata propagata la direzione del layout dal nodo del layout principale ai nodi secondari. È stato aggiunto il modificatore della direzione del layout. (I3d955)

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

  • Supportare la direzione da destra a sinistra nel modificatore LayoutPadding (I9e8da)

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

  • Rimossa la classe ValueHolder. Ristrutturate le classi AnimatedValue e AnimatedFloat per rendere astratto il campo del valore dell'animazione in modo che le sottoclassi possano osservare l'aggiornamento del valore.

    • Sono state aggiunte classi di modelli per AnimatedValue, AnimatedFloat e così via.
    • È stato aggiunto un nuovo set di API @Composable leggere per l'animazione tra i valori.
    • (I79530)
  • Modifiche che causano interruzioni all'API ambients. Per maggiori dettagli, consulta la documentazione relativa ai log e a Ambient<T> (I4c7ee, b/143769776)

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

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

  • L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del destinatario che, oltre a vincoli 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 la direzione del layout definita dalle impostazioni internazionali, utilizza localeLayoutDirection su ConfigurationAmbient (I851b1)

  • Aggiunta di 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 i figli del layout per riconoscerli all'interno del blocco di misurazione. (I51368, b/150953183)

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

  • Non consentire il padding negativo in LayoutPadding. LayoutOffset deve essere utilizzato invece per gli offset di posizione negativi. (Ifb5b1)

  • WithConstraints ha ricevuto il parametro LayoutDirection (I6d6f7)

  • È stato aggiornato il flag ComposeFlags.COMPOSER_PARAM in modo che sia true, il che modificherà la strategia di generazione del codice per il plug-in di composizione. A livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene passato alle chiamate @Composable successive affinché il runtime gestisca correttamente l'esecuzione. Si tratta di una modifica binaria significativa, ma dovrebbe preservare la compatibilità a livello di codice sorgente in tutti gli utilizzi approvati di Compose. (I7971c)

  • È stato modificato LayoutCoordinates per fare in modo che providedAlignmentLines sia un set anziché una mappa e che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, è più facile per i modificatori modificare uno o più valori del set senza creare una nuova raccolta per ogni modificatore. (I0245a)

  • LayoutCoordinates non ha più una proprietà position. La proprietà position non ha senso se si considerano LayoutModifiers, rotazione o scalabilità. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da una LayoutCoordinate a un'altra.

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

  • Miglioramenti alla superficie API dei vincoli (I0fd15)

  • Aggiunta di TextDirection.Content (I48f36)

  • Regola il menu della barra degli strumenti per mostrare correttamente copia, taglia e incolla. (Id3955)

  • Aggiungi FloatingToolbar per la selezione di TextField. (Ie8b07)

  • TextDirectionAlgorithm è stato rinominato TextDirection (I75ce8)

  • TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)

  • Aggiungi HapticFeedback alla selezione di TextField. (I58050)

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

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

  • Modificato il nome del pacchetto per Locale e LocaleList da androidx.ui.text a androidx.ui.intl (I8132c)

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

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

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

  • È ora disponibile il nuovo LifecycleOwnerAmbient. Ora un'attività che utilizzi con la UI 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 essere in linea con le norme androidx. (I42711)