Componi gli elementi di base

Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le basi per creare i componenti del tuo sistema di progettazione.
Aggiornamento più recente Release stabile Candidato per la release Versione beta Release alpha
20 marzo 2024 1.6.4 - - 1.7.0-alpha05

Struttura

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

Questa tabella illustra i gruppi e fornisce i link a ciascun insieme di note di rilascio.

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

Dichiarazione delle dipendenze

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

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per l'app o il modulo:

Trendy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per ulteriori informazioni sulle dipendenze, vedi Aggiungere dipendenze build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.7

Versione 1.7.0-alpha05

20 marzo 2024

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

Modifiche alle API

  • Rimossa composizione sperimentale LocalTextLinkStyle locale per l'applicazione di stili ai link ipertestuali. (Iebfa7).
  • Rimozione dell'override sperimentale di BasicText con argomento onLinkClicked. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)
  • Rimossi i metodi e le proprietà correlati ai punti di codice in TextFieldState e TextFieldBuffer. Sono stati rimossi anche i suffissi inChars dalle restanti API correlate alla selezione e alla composizione. (Ief7ce)
  • Il valore currentValue di AnchoredDraggable verrà aggiornato quando passi attraverso un punto di ancoraggio. Usa settledValue per ricevere la semantica del currentValue precedente, aggiornandola solo quando ti affidi a un ancoraggio. L'avanzamento è ora esposto come funzione (che richiede un punto iniziale e un punto di arrivo) anziché una proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954).
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits e TextFieldDecorator sono certificati come stabili. (I9582b)
  • È stato introdotto InterceptPlatformTextInput per facilitare la scrittura di test relativi all'IME di basso livello e altri casi d'uso di IME di basso livello. L'API PlatformTextInputTestOverride è stata ritirata. (I862ed, b/322680547)
  • Suddividi restrictedConstraints() in due metodi: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd)

Contributi esterni

  • Sono state aggiunte 2 nuove API isLastScrollForward/isLastScrollBackward per controllare la direzione di scorrimento per l'ultima azione di scorrimento. Restituisci "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 rilasciato. La versione 1.7.0-alpha04 contiene questi commit.

Modifiche alle API

  • Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi con versioni successive ad Android U. (I002e4).
  • È stato aggiunto hintLocales a KeyboardOptions per consentire a TextFields di suggerire una lingua preferita agli IME con impostazioni internazionali specifiche. (Id18c2)
  • Sono stati rimossi i sovraccarichi sperimentali BasicTextField2 e BasicSecureTextField che richiedevano i parametri value: String e onValueChange: () -> String. (I568b4).
  • Aggiungi una funzione applySemantics facoltativa a InputTransformation per influenzare la semantica dell'elemento BasicTextField2 a cui viene applicata. (I74a2f, b/170648072).
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength in modo da poter reindirizzare le informazioni sui componenti di cui viene fatto scorrere lo scorrimento nella scrittura al sistema dell'a11y. Questo CL applica anche l'utilizzo di tale proprietà negli elenchi Scorribili 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)
  • Informazioni sul layout contestuale in Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice di linea, posizione e vincoli relativi alla larghezza e all'altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/altezza massima potrebbero passare alla riga successiva oppure essere omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)

Correzioni di bug

  • Risolto 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 rilasciato. La versione 1.7.0-alpha03 contiene questi commit.

Modifiche alle API

  • È stato introdotto DelegatableNode.requireLayoutCoordinates() come modo per ottenere l'attuale LayoutCoordinates di Modifier.Node senza dover sostituire onPlaced e memorizzare le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere l'attuale LayoutCoordinates di Modifier.Node senza dover sostituire 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 spostate in androidx.compose.foundation.text. (I9f635).
  • BasicTextField2 non accetta più un parametro CodepointTransformation. Usa BasicSecureTextField o OutputTransformation. (Id34ff)
  • Metodo aggiunto per confrontare solo le annotazioni di due AnnotatedStrings. (I32659)
  • Presentazione di ContextualFlowRow e del FlowRow/Column avanzato con MaxLines e Overflow. Siamo lieti di annunciare miglioramenti alle versioni sperimentali FlowRow e FlowColumn, che ora prevedono il supporto maxLines e extra, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cui ContextualFlow* è ideale per un numero elevato di elementi che utilizzano una configurazione maxLines di dimensioni ridotte e pulsanti +N dinamici per vedere più elementi, mentre FlowRow e FlowColumn sono perfetti per un numero limitato di elementi, con meno di 100 elementi. Importante: per mantenere il comportamento esistente in FlowRow o FlowColumn, dove sono composti tutti gli elementi 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 alcuni esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)

Correzioni di bug

  • L'animazione del cursore non richiede più frame tra lo stato attivo e quello disattivato. (Ia2253)
  • I costruttori di copia ritirati di KeyboardOptions ora copieranno correttamente tutte le proprietà. (If12de)

Versione 1.7.0-alpha02

7 febbraio 2024

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

Modifiche alle API

  • HorizontalPager, VerticalPager e PagerState vengono promossi alla versione stabile. (I67660, b/316966909)
  • È stata aggiunta la composizione locale di LocalTextLinkStyle che consente di modificare lo stile dei link nel testo in tutta l'app. Se nell'app utilizzi un tuo tema personale, dovresti impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, per impostazione predefinita il colore del link viene impostato sul colore principale 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 incollaggio negli appunti. (I81b72)
  • In questa modifica, sostituiremo SnapFlingBehavior con TargetedFlingBehavior nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea)
  • Con questa modifica stiamo rendendo stabili le API Snapping. Stiamo anche ripulindo parte del codice di test e aggiungendo altri esempi ad Snapping. (Id8da9)
  • Presenta TargetedFlingBehavior, un FlingBehavior che consente di propagare le informazioni sullo stato dell'animazione in corso e sull'offset di scorrimento target. (I6a207).

Correzioni di bug

  • BasicTextField2 ora mantiene il cursore visualizzato durante la digitazione quando viene fatto scorrere la pagina fuori dalla visualizzazione o se viene spostato fuori dalla visualizzazione a causa dell'input. (Ieb856, b/237190748).

Contributi esterni

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

Versione 1.7.0-alpha01

24 gennaio 2024

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

Nuove funzionalità

  • Nuovo elemento Indication API, IndicationNodeFactory. Questo porta a implementazioni Indication più performanti rispetto alla precedente API rememberUpdatedInstance (ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com.
  • clickable / combinedClickable / selectable / toggleable ora accetta un parametro MutableInteractionSource con valore null. Se null e il valore Indication fornito è IndicationNodeFactory, è possibile creare Indication in modo lento solo quando necessario, il che migliora le prestazioni. Se non stai sollevando e utilizzando MutableInteractionSource, si consiglia di passare null.

Modifiche alle API

  • Con l'introduzione di DecayAnimation in AnchoredDraggable, questa modifica aggiunge un parametro decayAnimationSpec a AnchoredDraggable che consente di utilizzare l'animazione di decadimento durante l'impostazione di uno degli ancoraggi. La modifica include anche la ridenominazione di animationSpec in snapAnimationSpec per aiutare a comprendere il caso d'uso di ogni specifica.
  • BasicTextField2 è disponibile per l'uso sperimentale. Dovrebbe avere approssimativamente le stesse funzionalità di BasicTextField e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, per il momento l'API rimane sperimentale. Prima della stabilizzazione, il nome verrà rinominato BasicTextField e spostato nello stesso pacchetto.
  • Presentata la prima bozza dell'API OutputTransformation per BasicTextField2. Questa API sostituisce la maggior parte dei casi d'uso di VisualTransformation nella versione precedente di BasicTextField. Tuttavia, non è ancora completo e alcune cose non funzioneranno correttamente, ma saremmo lieti di ricevere il tuo feedback sull'usabilità dell'API per i tuoi casi d'uso. (aosp/2708848)
  • È stata introdotta la LinkAnnotation che consente di aggiungere link e elementi cliccabili nel testo. La funzionalità 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 incollati dagli appunti.
  • KeyboardOptions.shouldShowKeyboardOnFocus consente di disattivare il comportamento predefinito di BasicTextField che prevede la richiesta di una tastiera software attiva.
  • TextInputService e LocalTextInputService sono ora deprecati. Usa PlatformTextInputModifierNode per l'integrazione diretta con le API IME della piattaforma. (aosp/2862698)
  • L'API Indication#rememberUpdatedInstance è stata ritirata. Ha un'alta inevitabile penalizzazione del rendimento e impedisce altre ottimizzazioni. Dovresti usare invece la nuova API IndicationNodeFactory.

Correzioni di bug

  • Ora BasicTextField preconvaliderà una piccola selezione di mappature di offset quando viene passato VisualTransformation. Ciò aiuta a individuare errori di codifica comuni che generano eccezioni non recuperabili nelle operazioni di misurazione o disegno successive. Se vengono visualizzati durante la composizione, è più probabile che gli sviluppatori notino questi errori durante lo sviluppo, contribuendo a evitare arresti anomali di produzione. (I0fd42)
  • VisualTransformation non verrà generato se restituisci un indice non valido per un indice non valido (b/316401857 )

Versione 1.6

Versione 1.6.4

20 marzo 2024

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

Correzioni di bug

  • Un gesto di selezione a lungo e poi a trascinamento che si sposta fuori dai limiti del layout del testo nel primo frame del trascinamento non si arresta più in modo anomalo. (Icdf90, b/325307463).

Versione 1.6.3

6 marzo 2024

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

Versione 1.6.2

21 febbraio 2024

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

Correzioni di bug

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

Versione 1.6.1

7 febbraio 2024

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

Correzioni di bug

  • Correggi la misura della griglia sfalsata quando viene eseguito lo scorrimento oltre il limite. (bffc39)
  • Aggiungi un controllo per il layout con dimensioni grandi. (e74af5).
  • Correggi il posizionamento degli elementi di dimensioni pari a 0 all'inizio della griglia scaglionata. (785f94)
  • Call onRelease, il callback nello stesso ordine di onforgotten. (31ce3b)

Versione 1.6.0

24 gennaio 2024

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

Modifiche importanti dalla versione 1.5.0

  • Nuovo modificatore Modifier.anchoredDraggable che sblocca la possibilità di trascinare e animare tra un insieme predefinito di ancoraggi. Questo modificatore sostituisce 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.
  • Sono stati aggiunti AndroidExternalSurface e AndroidEmbeddedExternalSurface per semplificare l'aggiunta di componenti basati sulla superficie nella scrittura
  • Varie modifiche e miglioramenti all'API in Pager e snapFlingBehaviour
  • Varie API di focus, testo e inset sono state promosse ad API stabili

Versione 1.6.0-rc01

10 gennaio 2024

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

Modifiche alle API

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

Versione 1.6.0-beta03

13 dicembre 2023

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

Correzioni di bug

  • Correggi l'arresto anomalo che ha interessato un testo di grandi dimensioni misurato con vincoli infiniti. (I1a7df, b/312294386).
  • PlatformImeOptions ora è una classe concreta anziché un'interfaccia. (If40a4)

Versione 1.6.0-beta02

29 novembre 2023

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

Correzioni di bug

  • Correzione del mancato aggiornamento di canScroll dopo lo scorrimento solo per il relayout. (I60a86)
  • Correzione per Modifier.animateItemPlacement() e LookaheadScope dopo scorrimenti di piccole dimensioni. (I3a2b7).

Versione 1.6.0-beta01

15 novembre 2023

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

Modifiche alle API

  • Il modificatore DragAndDropTarget ora accetta esplicitamente DragAndDropTarget di ricevere e ha una funzione lambda per attivare una sessione di trascinamento. Ora sono disponibili due funzioni di fabbrica per un DragAndDropModifierNode. Uno per la ricezione dei trasferimenti e uno per il trasferimento dei dati (I69481)
  • Il campo maximumFlingVelocity è stato aggiornato per essere rappresentato come float. Documentazione aggiornata per essere più chiara sull'unità maximumFlingVelocity. (I8adc7).
  • Il valore di onDragAndDropStart nella fabbrica di DragAndDropModifierNode è stato rinominato acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer è stato aggiunto a dragAndDropTarget Modifier per accettare da una sessione di trascinamento. Questa funzione lambda restituisce un DragAndDropTarget utilizzabile se è interessato a una sessione di trascinamento. Altri lambda per l'elaborazione di eventi di trascinamento sono stati sostituiti da questi valori.

    è stata aggiunta una funzione di fabbrica DragAndDropTarget per ricevere da sessioni di trascinamento (Iebf3a)

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

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

  • DragAndDropInfo rimosso come tipo DragAndDropModifierNode.drag ora accetta parametri per lambda transferData, dimensioni della decorazione e decorazione a trascinamento DrawScope

    DragAndDropTarget prevede metodi per particolari eventi di trascinamento anziché un unico metodo astratto

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

    Il campo DragAndDropEventType è stato rimosso (I645b1)

  • Rinominato PlatformTextInputModifierNode.runTextInputSession in establishTextInputSession. (I03cd0)

  • Sostituisci OriginalText con TextSubstitution. (Ifa5a8).

  • Rinominato PlatformTextInputModifierNode.textInputSession in runTextInputSession. (Ie9c6b).

  • Le entità secondarie di SubcomposeLayout (e i layout come LazyColumn che si basano su questo elemento) 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 è stato reso nullo mantenendo lo stesso comportamento predefinito. (I6aa66).

  • Per creare questi slot, le API Material SwipeToReveal (per schede e chip) ora si basano su un'API basata su slot (come consigliata da Compose) anziché su istanze basate sulla classe di dati. Si tratta di una modifica che provoca un errore. Consulta la demo e il codice di esempio per trovare esempi su come utilizzare la nuova API. (Ia8943)

Correzioni di bug

  • Implementa gli attributi uguali e il codice hash per PageSize.Fixed. (Ie3ede, b/300134276).
  • Risolto un bug per cui il layout BasicText non veniva ridotto quando minWidth viene modificato e minWidth in meno rispetto ai vincoli di misura iniziali maxWidth (Idb19c)
  • È stato aggiunto il supporto del renderer per la funzione Sposta gradiente in ArcLine. (I4d5bb).
  • Risolvi il problema di compatibilità binaria con la modifica di Window Inset (Iee695)
  • Rimuovi lo strato centrale del materiale per il chip/pulsante Material3 perché i microbenchmark mostrano prestazioni migliori senza questo chip. (I55555)

Versione 1.6.0-alpha08

18 ottobre 2023

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

Nuove funzionalità

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

Modifiche alle API

  • La funzione lambda onDrawDragShadow è stata rinominata in drawDragDecoration per Modifier.dragAndDrawSource, mentre il parametro di dimensione per DragAndDropInfo è stato rinominato dragDecorationSize. (Id0e30, b/303904810).
  • Il parametro decorationBox di BasicTextField2 è stato rinominato in decorator. Anche il tipo è stato modificato in un'interfaccia divertente equivalente TextFieldDecorator. (I23c1c).

Correzioni di bug

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

Versione 1.6.0-alpha07

4 ottobre 2023

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

Modifiche alle API

  • È stato introdotto PlatformTextInputMethodTestOverride per scrivere test per gli editor di testo personalizzati. (Id159b)
  • Rinominato GraphicsSurface in AndroidExternalSurface (I11680)
  • È stato aggiunto il flag temporaneo DisableNonLinearFontScalingInCompose per disattivare il ridimensionamento dei caratteri non lineari. Imposta DisableNonLinearFontScalingInCompose = true nei test se hai bisogno di tempo per 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 è stato trasformato in un dettaglio di implementazione delle implementazioni di SnapLayoutInfoProvider. (I65f6d).
  • Aggiunge un modificatore dragAndDropSource per avviare le sessioni di trascinamento e un modificatore dragAndDropTarget per ricevere da sessioni di trascinamento (Ib7828, b/286038936)
  • Aggiorna la documentazione e il metodo di posizione relativi a SnapPositionInLayout. Introduci le spaziatura interna 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

  • Risolto il problema di basicMarquee che non animava dopo la modifica della velocità. (Id2e77, b/297974036)

Versione 1.6.0-alpha06

20 settembre 2023

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

Nuove funzionalità

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

Modifiche alle API

  • Hai introdotto updateCurrentPage e updateTargetPage in ScrollScope, questi sono gli ultimi pezzi necessari per consentire la personalizzazione dello scorrimento animato su PagerState.scroll. (I9cad5, b/267744105, b/243786897).
  • Rimuovi densità da SnapFlingBehavior. Tutte le implementazioni di SnapLayoutInfoProvider hanno già un modo di accedere alla densità. L'ambito del ricevitore potrebbe essere rimosso. Questa operazione comporterà 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 fornite tramite l'approccio o l'agganciamento degli offset. (If320c)

Modifiche del comportamento

  • Compose ora utilizza il ridimensionamento dei caratteri non lineare per una migliore leggibilità e accessibilità. Se la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, mentre quelle già grandi aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno automaticamente regolate in modo da rimanere proporzionali all'altezza prevista della scala al 100%. Per ulteriori informazioni, consulta le best practice per la scalabilità dei caratteri (I11518).

Correzioni di bug

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

Versione 1.6.0-alpha05

6 settembre 2023

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

Modifiche alle API

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

Versione 1.6.0-alpha04

23 agosto 2023

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

Modifiche alle API

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

Versione 1.6.0-alpha03

9 agosto 2023

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

Modifiche alle API

  • Sovraccarico di LazyLayout aggiunto, accetta un lambda di LazyLayoutItemProvider, non un oggetto semplice come prima. L'overload precedente è deprecato. (I42a5a).
  • Aggiunto il supporto per la configurazione di privateImeOptions (Idb772)

Correzioni di bug

  • Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando readOnly è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore di readOnly era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)

Versione 1.6.0-alpha02

26 luglio 2023

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

Modifiche alle API

  • È stata introdotta la PagerLayoutInfo con informazioni raccolte dopo il superamento di una misura in Pager. Sono state introdotte anche le informazioni su una singola pagina misurata in Pager, PageInfo. (Iad003, b/283098900).
  • Annotazioni aggiuntive per specificare gli input consentiti per i componibili (I51109)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più comodo e rilevabile per richiedere l'attenzione ai test. (Ie8722)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808).
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. Ora anche LocalSoftwareKeyboardController è un CompositionLocal corretto. (I4c364).
  • Modifier.transformable ora fornisce il parametro delta della panoramica nel parametro canPan per aiutare a determinare la direzione della panoramica da consentire o non consentire. (I692aa, b/266829800).
  • Aggiorna il modificatore consumeWindowInsets per estendere la superclasse AbstractComposeView (Iacd74, b/269479941)

Versione 1.6.0-alpha01

21 giu 2023

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

Nuove funzionalità

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

Modifiche alle API

  • Assistenza per InputConnection#requestCursorUpdates (I0c69b)
  • È stato introdotto scrollAnimationSpec per consentire le specifiche delle animazioni personalizzate. BringIntoViewCalculator aggiornato a BringIntoViewScroller. (Idb741)
  • Aggiungi il tipo ResourceResolutionException ai contenuti lanciabili a capo generati durante il caricamento di asset bitmap con una descrizione del percorso dell'asset che non è stato possibile caricare. (I19f44, b/230166331, b/278424788).
  • Sono state aggiunte azioni e proprietà 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 il sovraccarico di contenuti scorrevoli in modo da 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 memorizzarlo, 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 per parola e si riduce per carattere. (Ic0c6c, b/180639271).
  • È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (I9790e)

Versione 1.5

Versione 1.5.4

18 ottobre 2023

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

Versione 1.5.3

4 ottobre 2023

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

Versione 1.5.2

27 settembre 2023

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

Correzioni di bug

  • Risolto un bug nel testo che causava arresti anomali in determinate circostanze in cui la semantica veniva invalidata.

Versione 1.5.1

6 settembre 2023

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

Correzioni di bug

  • Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando readOnly è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore di readOnly era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

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

Modifiche importanti dalla versione 1.4.0

  • Molti modificatori di base, tra cui Modifier.clickable,Modifier.draggable, Modifier.scrollable, modificatore di layout e altri ancora, sono stati migrati all'API Modifier.Node, riducendo l'overhead sulla composizione iniziale.
  • Miglioramenti della stabilità dei cercapersone. Molti bug sono stati risolti.
  • I parametri pageCount ora si trovano in PagerState anziché nel Pager stesso

Versione 1.5.0-rc01

26 luglio 2023

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

Correzioni di bug

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

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

Versione 1.5.0-beta03

28 giugno 2023

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

Versione 1.5.0-beta02

7 giugno 2023

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

Versione 1.5.0-beta01

24 maggio 2023

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

Modifiche alle API

  • Implementa PlatformDataProvider per fornire rilevazione del battito cardiaco e passi giornalieri. L'interfaccia SensorGateway è stata rimossa dall'API pubblica. (I55b84)

Correzioni di bug

  • Ridurre le allocazioni durante le misurazioni relative a elenchi, reti e così via (Iaf9e2)
  • Allocazioni ridotte durante l'applicazione degli snapshot (I65c09)
  • Allocazioni rimosse dalle animazioni primaverili (Ie9431)
  • Allocazione rimossa da TextLayout (I0fd11)
  • Rimosse 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 vengono rilasciati. La versione 1.5.0-alpha04 contiene questi commit.

Modifiche alle API

  • È stato aggiunto l'elemento TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787).
  • Presenta un SnapLayoutInfoProvider che può essere utilizzato con LazyGridState. (I92134, b/269237141, b/260914964)
  • È stato aggiunto il metodo sperimentale Modifier.animateItemPlacement() per l'ambito degli elementi delle griglie sfalsate. Puoi applicarlo agli elementi per ottenere le animazioni di modifica/riordinamento della posizione dell'automazione. (I4b62d, b/257034719).
  • Promuovi GridCells.FixedSize a stabile. FixedSize definisce un valore LazyGrid in cui ogni cella assume dimensioni esatte su un asse trasversale, con lo spazio rimanente distribuito secondo la disposizione degli assi trasversali. (I8542f)
  • Sono stati introdotti l'ambito del ricevitore PagerScope per il Pager e una funzione di utilità per calcolare un determinato offset di pagina. (If2577)
  • Presenta il snapPositionalThreshold durante la creazione di un comportamento che si avvicini. Utilizza questo parametro per specificare una soglia di posizionamento per l'agganciamento breve nel pager. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds sostituito con calculateSnappingOffset. In questo nuovo metodo, richiediamo semplicemente l'offset successivo a cui agganciarti. Il calcolo dei limiti deve essere eseguito a livello di implementazione, poiché può variare a seconda di come deve avvenire l'agganciamento. (I923a4)
  • LazyStaggeredGrid API è stata promossa alla versione stabile. (I633a5)
  • Rimuovi pageCount da Horizontal/VerticalPager. Deve essere specificato al momento della creazione dello stato. Sono stati aggiornati PagerState e rememberPagerState per accettare i pageCount. (Ieb52d, b/266965072).
  • Rimuovi pageCount da Horizontal/VerticalPager. Deve essere specificato al momento della creazione dello stato. Sono stati aggiornati PagerState e rememberPagerState per accettare i pageCount. (Ifa3cb, b/266965072).
  • Presenta shortSnapVelocityThreshold nel cercapersone SnapFlingBehavior. (I7379e, b/275579012)
  • Aggiunge FlowRowScope e FlowColumnScope. (I54fe2).

Correzioni di bug

  • Chiamate per ottenere la semantica sul testo quando i vincoli hanno minWidth e minHeight non hanno più arresti anomali. (Ibd072)
  • È stata corretta la regressione in cui la tastiera non veniva visualizzata per i campi di testo all'interno di finestre di dialogo non create dall'elemento 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 vengono 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 le prestazioni, pertanto non dovresti notare modifiche visibili.

Se noti cambiamenti nel testo visualizzato, puoi eseguire il debug impostando NewTextRendering1_5 = false per confermare la differenza di comportamento. L'impostazione di questa opzione 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 vengono rilasciati. La versione 1.5.0-alpha02 contiene questi commit.

Modifiche alle API

  • Aggiunto il supporto per le celle a dimensioni fisse in LazyGrid e la loro disposizione su assi trasversali. (I83ed9, b/235121277, b/267942510)
  • Aggiunto il supporto per le corsie con dimensioni fisse in LazyStaggeredGrid e la loro disposizione incrociata. (I7d519)
  • Ora è possibile aprire UrlAnnotation in AnnotatedString tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081).
  • È stata aggiunta l'azione di semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test relative al testo (ad es. performTextInput) ora richiederanno lo stato attivo direttamente, utilizzando l'azione della semantica, invece di fare clic sul campo. (I6ed05).
  • Aggiunge il supporto della spaziatura/della disposizione tra gli assi utilizzando verticalArrangement in FlowRow e horizontalArrangement in FlowColumn. Rimuoviamo anche verticalAlignment e horizontalAlignment di primo livello in FlowRow/FlowColumn. Gli sviluppatori possono utilizzare invece Modifier.align. In questo modo ridurrai la confusione tra le convenzioni di denominazione di verticalAlignment e verticalArrangement. (I87b60, b/268365538)

Versione 1.5.0-alpha01

22 marzo 2023

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

Modifiche alle API

  • Testo e BasicText sono stati sottoposti a refactoring per utilizzare il nuovo sistema di modificatori. Questo porta in molti casi a miglioramenti sostanziali del rendimento. Nessuna modifica deve essere visibile. (If1d17, b/246961435)
  • È stata aggiunta l'azione della semantica PerformImeAction per richiamare l'azione dell'IME sui nodi dell'editor di testo. (Ic606f, b/269633506).

Correzioni di bug

  • Elementi interni aggiornati di Modifier.hoverable. Il modificatore hoverable viene mostrato nello strumento di controllo 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 picco 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 vengono rilasciati. La versione 1.4.2 contiene questi commit.

Versione 1.4.1

5 aprile 2023

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

Versione 1.4.0

22 marzo 2023

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

Modifiche importanti dalla versione 1.3.0

  • È stata aggiunta l'integrazione delle emoji per le emoji in Text e TextField, nonché nel paragrafo di livello inferiore. È attivata per impostazione predefinita quando è configurato emojicompat.
  • EmojiCompat può essere configurata su un testo specifico utilizzando PlatformParagraphStyle.
  • Aggiunto il supporto dell'intervallo di linea completo a LazyStaggeredGrid(I28252)
  • Aggiunta dell'esperimento onHover sperimentale a ClickableText (I6938f)
  • Sono stati introdotti nuovi sovraccarichi sperimentali per la funzione runComposeUiTest e le funzioni create*ComposeRule che accettano i parametri CoroutineContext. Il contesto verrà utilizzato per la composizione di prova ed 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 verranno interrotti su una nuova riga se non c'è abbastanza spazio sull'asse principale. (I3a7b2).
  • Modifier.basicMarquee() è disponibile in modalità sperimentale per la visualizzazione di contenuti con un effetto testo scorrevole a 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 vengono rilasciati. La versione 1.4.0-rc01 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

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

Modifiche alle API

  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che ti consente di reimpostare lo stato locale 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)
  • Il parametro BlendMode è stato aggiunto ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione quando si disegna testo su Canvas. (I57508)
  • API modifierElementOf() rimossa. Estendi direttamente da ModifierNodeElement. (Ie6d21).

Correzioni di bug

  • Se modifichi i punti di manipolazione di selezione, non potrai più selezionare un carattere parziale. (Idedd1)
  • Correggi l'arresto anomalo quando premi Ctrl+backspace nello spazio vuoto TextField (I0427f, b/244185537)

Versione 1.4.0-beta01

8 febbraio 2023

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

Nuove funzionalità

  • Dalla versione 1.3, è stata aggiunta l'integrazione delle emoji per le emoji in Text e TextField, oltre al paragrafo di livello inferiore. È attivata per impostazione predefinita quando è configurato emojicompat.
  • EmojiCompat può essere configurata 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 che devono essere ancora attivi. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() è stato rinominato in release() (I4667a)

Contributi esterni

  • Proprietà mainAxisItemSpacing aggiunta a LazyListLayoutInfo, LazyGridLayoutInfo e LazyStaggeredGridItemInfo (I52fad)

Versione 1.4.0-alpha05

25 gennaio 2023

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

Nuove funzionalità

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

Modifiche alle API

  • Unisce le API precedenti/successive di OverscrollEffect nelle funzioni combinate "decorator" applyToScroll e applyToFling. Consulta gli esempi aggiornati nella documentazione per alcuni esempi su come implementare un effetto overscroll con la nuova forma dell'API. (I8a9c4, b/255554340).
  • Più tipo/nullabilità delle funzioni incorporate/deprecateed-hidden (I24f91)
  • Le API LineBreak e Hyphens in TextStyle sono classificate come stabili. (Ic1e1d)

Correzioni di bug

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

Contributi esterni

  • I metodi notifyFocusedRect in TextInputSession e TextInputService non sono stati nuovamente ritirati. (I23a04, b/262648050).

Versione 1.4.0-alpha04

11 gennaio 2023

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

Nuove funzionalità

  • FlowRow e FlowColumn sono ora disponibili come @ExperimentalFoundationApi che consentono un layout più flessibile basato su righe e colonne dei componenti che verranno interrotti su una nuova riga se non c'è abbastanza spazio sull'asse principale. (I3a7b2).
  • Modifier.basicMarquee() è disponibile in modalità sperimentale per la visualizzazione di contenuti con l'effetto testo scorrevole. (I2df44, b/139321650).

Modifiche alle API

  • L'app FocusRequesterModifier viene ritirata a favore di FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529/5,8b/254529934b/254529934
  • Il costruttore AndroidFont con variationSettings è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807).
  • È stata introdotta l'API PinnableContainer propagata da elenchi lenti tramite una composizione locale che consente di fissare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando lo fai scorrere fuori dalla visualizzazione. Ad esempio, Modifier.focusable() bloccherà l'elemento attualmente attivo tramite questo meccanismo. (Ib8881, b/259274257, b/195049010).
  • È stato riscritto il modo in cui gli elementi scorrevoli rispondono a bringIntoViewRequesters e agli elementi attivabili per modellare meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114).
  • Altro tipo di restituzione nulla delle funzioni deprecate nascoste (Ibf7b0)
  • È stata aggiunta l'opzione TextMotion sperimentale a TextStyle per definire il testo come Static(default) o Animato. Utilizza TextMotion.Animated se il testo verrà ridimensionato, tradotto o ruotato tramite animazione. (I24dd7).
  • Aggiungi TextFieldFocusModifier per correggere il comportamento di navigazione dello stato attivo per la piattaforma Android (I00303)
  • Argomento maxSize: IntSize sostituito in drawText con size: Size per l'allineamento con altre funzioni di DrawScope. Il valore predefinito di size è Size.Unspecified, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)

Correzioni di bug

  • Regolazioni nella fisica dell'agganciamento 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 è dove in origine era stato segnalato il problema. Una correzione è stata inviata e sarà disponibile nel prossimo aggiornamento di Compose. Per risolvere il problema, aggiorna le librerie androidx.compose.material e androidx.compose.material3 all'ultima versione(1.1.0-alpha04) oppure esegui il downgrade di androidx.compose.foundation alla versione 1.4.0-alpha03.

Versione 1.4.0-alpha03

7 dicembre 2022

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

Modifiche alle API

  • Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni ripristinate durante i callback withFrameNanos non verranno inviate fino al termine dell'esecuzione di tutti i callback dei frame. Questo corrisponde al comportamento di Scrivi quando viene eseguito normalmente. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Questo dovrebbe influire solo sul codice che chiama direttamente withFrameNanos o withFrameMillis e la logica al di fuori del callback passa a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Consulta le modifiche al test dell'animazione in questo elenco di controllo per alcuni esempi.
  • È stato aggiunto il parametro onPerformTraversals: (Long) -> Unit facoltativo al costruttore TestMonotonicFrameClock e alla funzione di fabbrica per eseguire il codice dopo withFrameNanos callback, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670).
  • Inserisci le azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che queste funzionalità sono disponibili solo dall'API 29. (Ida4ab)
  • Introduci HorizontalPager e VerticalPager, un modo per mostrare elementi componibili sotto forma di cercapersone. È stato introdotto PagerState per controllare i cercapersone e per eseguire query sulle informazioni relative allo stato attuale dei cercapersone. È stato introdotto PageSize, un modo per controllare le dimensioni della pagina di un cercapersone e consentire così di creare un carosello come i cercapersone. È stato introdotto PagerSnapDistance, un modo per controllare il funzionamento dell'agganciamento nel comportamento di scorrimento del cercapersone. (I01120)
  • È stato introdotto un sovraccarico in SnapFlingBehavior.performFling per aiutare a capire dove si stabilirà l'inversione. (I569f6)
  • OverscrollEffect#isEnabled rimosso. Anziché dover ricordare e impostare questo flag, non inviare eventi all'effetto overscroll nei casi in cui non vuoi che venga visualizzato l'overscroll (ad esempio, se ScrollableState#canScrollForward/backward restituisce entrambi false). (I1a4b0, b/255554340, b/255557085).
  • Sono stati aggiunti ScrollableState#canScrollForward e ScrollableState#canScrollBackward per chiedere se un ScrollableState ha spazio per scorrere in entrambe le direzioni (se si trova al minimo / massimo dell'intervallo). Questo valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni esistenti di ScrollableState. I consumatori possono usare questa funzionalità per mostrare all'utente indicazioni che c'è ancora spazio per scorrere. È possibile utilizzarlo anche per evitare di inviare delta a ScrollableStates che non hanno spazio per scorrere in una determinata direzione, in modo da ridurre il lavoro superfluo. (Idf1a0, b/255557085).
  • È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento dei predecessori. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni con la pressione, quando i gesti potrebbero diventare eventi di scorrimento.
  • Risolto il problema di Clickables che non ritardava correttamente gli echi, se utilizzato all'interno di un Scrollable ViewGroup.
  • I cassetti e i fogli sono stati aggiornati per ritardare correttamente la pressione nel caso in cui i gesti possano diventare eventi di scorrimento.
  • Aggiorna la denominazione snapStepSize in modo che sia coerente con gli altri metodi di SnapLayoutInfoProvider. (Ife67c).
  • Aggiunto EmojiCompat a Compose (Ibf6f9, b/139326806)
  • consumedWindowInsets() è stato rinominato in consumeWindowInsets() e withConsumedWindowInsets() in onConsumedWindowInsetsChanged() e i modificatori sono stati resi pubblici. (Ie44e1).

Correzioni di bug

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

Versione 1.4.0-alpha02

9 novembre 2022

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

Modifiche alle API

  • awaitFirstDown e waitForUpOrCancellation ora accettano PointerEventPass per una maggiore flessibilità. (I7579a, b/212091796)
  • Ripristina l'API beyondBoundCount dalle API Lazy* (I12197)
  • Parametro introdotto nelle API lazy per scrivere e posizionare gli elementi all'esterno dell'area visibile (I69e89, b/172029355)
  • Parametro minLines aggiunto a BasicText e BasicTextField. Consente di impostare l'altezza minima di questi componenti componibili in termini di numero di righe (I24294, b/122476634)

Versione 1.4.0-alpha01

24 ottobre 2022

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

Modifiche alle API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Il funzionamento è simile a forEachGesture(), ma i gesti Loop sui gesti operano interamente all'interno di AwaitPointerEventScope, in modo che gli eventi non vadano persi tra una iterazione e l'altra.
  • forEachGesture() è stato ritirato a favore di awaitEachGesture() perché consente la perdita di eventi tra gesti. (Iffc3f, b/251260206).
  • Sono stati aggiunti WindowInsets.imeAnimationSource e WindowInsets.imeAnimationTarget per determinare l'avanzamento dell'animazione e sapere dove si troverà l'IME al termine dell'animazione. (I356f1, b/217770337)

Versione 1.3

Versione 1.3.1

9 novembre 2022

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

Correzioni di bug

  • Risolvi il problema di prestazioni in BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier non leggerà le coordinate di layout se non viene allegato (aosp/2241316)

Versione 1.3.0

24 ottobre 2022

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

Modifiche importanti dalla versione 1.2.0

  • Sono state introdotte le versioni sperimentali di LazyVerticalStaggeredGrid e LazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior e altre API corrispondenti sono state aggiunte come sperimentali.
  • Modifier.clickable, Modifier.toggleable e Modifier.selectable ora mostrano un'eco quando l'utente fa clic con la tastiera o il D-pad su un telecomando.

Versione 1.3.0-rc01

5 ottobre 2022

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

Modifiche alle API

  • È stato introdotto lowVelocityAnimationSpec utilizzato nella fase di approccio quando la velocità di lancio non è sufficiente per decadere. (Iaeb27).
  • Sono stati aggiunti nuovi trattini API sperimentali per supportare la sillabazione automatica nel testo (Iaa869)

Versione 1.3.0-beta03

21 settembre 2022

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

Modifiche alle API

  • Aggiungi opzioni per personalizzare l'interruzione di riga nel testo. (I86907)
  • Gli BringIntoViewResponder ora sono in grado di ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211).
  • Introduzione del supporto delle spaziature tra gli elementi nel modello sperimentale Staggered Grid (I10b82)
  • Introduzione della spaziatura interna dei contenuti nella versione sperimentale Staggered Grid (I342ea)
  • Argomento size:IntSize modificato con constraints: Constraints nel metodo TextMeasurer.measure per supportare i vincoli di larghezza minima. (I37530, b/242707525)
  • È stato aggiunto Modifier.withConsumedWindowInsets() per consumare WindowInsets 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 vengono rilasciati. La versione 1.3.0-beta02 contiene questi commit.

Modifiche alle API

  • Versione iniziale dell'esperimento StaggeredGrid (Ia48be)
  • FocusDirection.In e FocusDirection.Out rinominati in FocusDirection.Enter e FocusDirection.Exit (Ia4262, b/183746982)
  • È stato introdotto un sovraccarico di rememberSnapFlingBehavior che fornisce un modo rapido per attivare l'agganciamento in LazyLists. (Ifb48a).
  • È stata sostituita la fabbrica snapFlingBehavior con una classe SnapFlingBehavior in cemento. Metodi SnapLayoutInfoProvider applicati alla densità per semplificare le conversioni Dp<->Px per gli utenti dell'API. (I54a11)
  • Aggiorna LazyLayoutMeasureScope.measure per restituire un elenco di elementi posizionabili, evidenziando l'immutabilità desiderata del valore restituito. (I48b7c).
  • È stata introdotta SnapLayoutInfoProvider, che richiede un LazyListState per creare un'istanza di SnapLayoutInfoProvider che può essere utilizzata per abilitare uno snapshot FlingBehavior per LazyLists. (I2dd10).

Correzioni di bug

  • Esegue il refactoring di AwaitPointerEventScope#awaitLongPressOrCancellation in modo che corrisponda 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 vengono rilasciati. La versione 1.3.0-beta01 contiene questi commit.

Modifiche alle API

  • pointerPosition rimosso da OverscrollEffect. Per gli effetti che interessano la posizione del puntatore, è possibile utilizzare Modifier.pointerInput { } in effectModifier per ottenere la posizione attuale del puntatore. (I9f606, b/241239306).
  • AwaitPointerEventScope#awaitLongPressOrCancellation esposto come componente di base aggiuntivo per un rilevamento dei gesti più complesso (I04374, b/181577176)
  • È stato introdotto lazyListSnapLayoutInfoProvider per attivare l'agganciamento negli elenchi lenti. (I3ecdf)
  • È stato introdotto SnapFlingBehavior, un comportamento scorrevole che consente l'agganciamento degli elenchi. Fornisci un'istanza di SnapLayoutInfoProvider con informazioni sul layout di agganciamento. (Ie754c)

Versione 1.3.0-alpha03

10 agosto 2022

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

Modifiche alle API

  • I caratteri delle risorse ora supportano l'impostazione di impostazioni di variazione dei caratteri (API 26 e versioni successive). (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 genereranno eccezioni più dettagliate quando il 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 lenti. (Ic891c)
  • ScrollableDefaults.reverseDirection() non è più sperimentale. (Iba646).
  • È stato deprecato SemanticsModifier.id e l'ID semantica è stato spostato in LayoutInfo.semanticsId. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() non è più sperimentale. (I2c290).
  • Modifier.clipScrollableContainer() non è più sperimentale. (Ia2b44).
  • Ritira TextInputService.show|hideSoftwareKeyboard. Usa 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 vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.

Modifiche alle API

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

Correzioni di bug

  • La tastiera software viene ora nascosta quando un campo di testo viene disattivato durante lo stato attivo. (I6e3e4, b/237308379).
  • Quando aggiungi eventi InputEventChange a Velocity Tracker considereremo ora i delta anziché le posizioni, ciò garantirà che la velocità venga calcolata correttamente in tutti i casi, anche se l'elemento target si muove (Icea9d, b/216582726, b/223440806, b/227709803)
  • Quando un elemento scorrevole ha un bambino attivo, ora scorrerà correttamente per mantenere visibile quello attivo quando le sue dimensioni diminuiscono, anche quando le dimensioni sono animate. (I80867, b/230756508, b/220119990)
  • È stato risolto un arresto anomalo in cui TextField viene cancellato e ricaricato mentre la selezione è attiva. (I1235b, b/208655565, b/214253689).

Versione 1.3.0-alpha01

29 giugno 2022

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

Modifiche alle API

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

Correzioni di bug

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

Versione 1.2

Versione 1.2.1

10 agosto 2022

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

Versione 1.2.0

27 luglio 2022

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

Modifiche importanti dalla versione 1.1.0

  • LazyVerticalGrid e LazyHorizontalGrid ora sono stabili.
  • Ora puoi specificare un tipo di contenuti per gli elementi negli elenchi e nelle griglie Lazy. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
  • Elenchi e griglie lenti ora hanno userScrollEnabled parametro che consente di disattivare lo scorrimento tramite i gesti degli utenti.
  • È stata aggiunta una nuova API sperimentale denominata LazyLayout. È l'API che usiamo internamente per alimentare elenchi e griglie Lazy.
  • L'API OverscrollEffect è stata introdotta come sperimentale. Puoi definire effetti di scorrimento personalizzato personalizzati e aggiungere una piattaforma standard ai contenitori scorrevoli personalizzati.
  • Sono state introdotte le API di interoperabilità a scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e gli autori che eseguono lo scorrimento della scrittura.
  • Lo scorrimento con il mouse e il trackpad è stato aggiunto a tutti i contenitori a scorrimento.

Versione 1.2.0-rc03

29 giugno 2022

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

  • Nessuna modifica dalla versione 1.2.0-rc02.

Versione 1.2.0-rc02

22 giugno 2022

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

Versione 1.2.0-rc01

15 giugno 2022

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

Modifiche alle API

  • È stato introdotto un OverscrollEffect sperimentale per consentire l'utilizzo di effetti di scorrimento personalizzato, oltre ai sovraccarichi Modifier.scrollable che lo accettano.
  • La versione sperimentale LocalOverScrollConfiguration è stata spostata da foundation.gesture al pacchetto di base e rinominato in LocalOverscrollConfiguration (If19fb, b/204650733)
  • Le interfacce nelle librerie di scrittura ora vengono create utilizzando i metodi di interfaccia predefinita jdk8 (I5bcf1)
  • È stata introdotta un'API sperimentale checkScrollableContainerConstraints() che consente di verificare che non nidifichiamo i container scorrevoli. Puoi usarla per creare i tuoi layout pigri a scorrimento tramite LazyLayout. (Id6fab, b/233352497)
  • Rimozione di LazyVerticalGrid deprecata dal pacchetto androidx.compose.foundation.lazy. La nuova API stabile si trova in androidx.compose.foundation.lazy.grid (I73c76, b/225192009)

Versione 1.2.0-beta03

1° giugno 2022

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

Modifiche alle API

  • Sono state aggiunte le nuove versioni sperimentali IntervalList e MutableIntervalList. Consente di rappresentare alcuni elenchi di valori tramite intervalli multipli. Questo sarà utile quando vuoi definire un file DSL personalizzato simile a quello utilizzato da LazyColumn, in cui gli elementi dell'elenco possono essere definiti tramite più chiamate di elementi/elementi. (I2d05e, b/228580728).

Correzioni di bug

  • È stata chiarita la documentazione per WindowInsets.ime per affermare che gli insiemi di ime vengono riportati nel passato fino all'API 23, ma solo animati per le versioni superiori a 30. (Ia7fc0, b/230756508)
  • Se premi il tasto Canc in avanti quando il cursore si trova alla fine di un campo di testo, non si verificherà più un arresto anomalo.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand ora richiedono che i loro argomenti del costruttore siano non negativi. (Ica8e6, b/199919707).

Versione 1.2.0-beta02

18 maggio 2022

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

  • La risoluzione dei caratteri scaricabili che non cambia le dimensioni del layout di Text o TextField in precedenza non verrà ridisegnata, causando la visualizzazione dei caratteri non aggiornati. Questa correzione di bug garantisce che il layout di testo attivi sempre la riscrittura (b/229727404). (I1d49e, b/229727404).

Versione 1.2.0-beta01

11 maggio 2022

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

Nuove funzionalità

  • Questa è la prima versione beta 1.2.

Modifiche alle API

  • Aggiunta dell'elemento BeyondBoundsInterval sperimentale che può essere utilizzato con implementazioni personalizzate di LazyList quando posizionano gli elementi oltre i limiti visibili (Ifabfb, b/184670295)
  • Il nome di LineHeightBehavior è stato rinominato LineHeightStyle
  • Il nome di LineVerticalAlignment è stato rinominato LineHeightStyle.Alignment
  • La ridenominazione di LineHeightTrim è rinominata come LineHeightStyle.Trim
  • I valori predefiniti del costruttore di LineHeightStyle sono stati rimossi (I582bf, b/181155707)
  • Sono stati aggiunti valori predefiniti per i membri facoltativi dell'interfaccia LazyLayoutItemProvider. (Iba8a0).
  • Nell'API LazyLayoutItemProvider, invece di un fabbrica che restituisce il codice lambda componibile per indice, ora abbiamo una funzione componibile più semplice che accetta l'indice. (Id2196)
  • LazyLayoutItemsProvider è stato rinominato in LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount è stato rinominato in itemCount (Id409c)
  • È stato aggiunto il Pennello a TextStyle e SpanStyle per fornire un modo per disegnare il testo con colorazione a gradiente. (I53869, b/187839528)
  • trimFirstLineTop, trimLastLineBottom attributi di LineHeightBehavior modificati in una singola enum: LineHeightTrim. LineHeightTrim ha valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)
  • Se viene aggiunto LineHeightBehavior ai TextStyle e ParagraphStyle. LineHeightBehavior controlli se l'altezza della riga viene applicata all'inizio della prima e alla fine dell'ultima riga. Definisce anche l'allineamento della linea nello spazio fornito da TextStyle(lineHeight).

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

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

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

Correzioni di bug

  • Correzione della regressione in cui i campi di testo non nascondevano la tastiera se rimossi dalla composizione durante lo stato attivo. (I7a410, b/230536793, b/225541817)
  • Supporta i puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
  • Ora BringIntoViewRequester.bringIntoView verrà sempre sospeso finché la richiesta non viene completata o interrotta da una nuova richiesta non sovrapposta. Le richieste sovrapposte verranno messe in coda. (I43e7f, b/216790855).
  • Le chiamate BringIntoViewRequester.bringIntoView simultanee per rettangoli completamente sovrapposti d'ora in poi verranno rispettate solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918).
  • includeFontPadding attivata per impostazione predefinita. È possibile disattivare includeFontPadding utilizzando l'attributo TextStyle.platformTextStyle. Nel prossimo futuro modificheremo il comportamento predefinito, tuttavia fino a quel momento ci consentirà di integrare meglio i miglioramenti dell'altezza delle righe (aosp/2058653) e di risolvere i problemi di ritaglio di TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester non utilizza più onGloballyPositioned. (I630f5).

Contributi esterni

  • MouseInjectionScope.scroll(delta = someDelta) ora è invertita su Android se scorriamo in verticale (se qualche Delta è 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 vengono rilasciati. La versione 1.2.0-alpha08 contiene questi commit.

Modifiche alle API

  • Visualizza tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi FontFamily.SansSerif. Nell'API 21-28 verranno utilizzati i nomi dei caratteri di riserva come senza grazie. Si tratta di una modifica del comportamento perché in precedenza solo le ponderazioni 400 e 700 erano supportate nell'API 21-28. (I380fe, b/156048036, b/226441992).
  • Ora è possibile usare il parametro Vincoli per Paragrafo e MultiParagrafo. Superare Constraints.maxHeight al momento non è una cosa da fare, ma in futuro potrai eseguire alcuni calcoli, come i puntini di sospensione 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 al suo interno. (Icd314)
  • Il consumo parziale (posizione abbassata OR) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per completare la modifica. Puoi utilizzare isConsumed per stabilire se qualcun altro ha già utilizzato la modifica.
  • Ora PointerInputChange::copy() crea sempre una copia superficiale. Significa che le copie di PointerInputChange verranno consumate una volta esaurita una delle copie. Se vuoi creare un elemento PointerInputChange non associato, utilizza invece il costruttore. (Ie6be4, b/225669674).
  • Viene introdotta la nuova API sperimentale LazyLayout. In questo modo puoi creare componenti personalizzati come LazyColumn di LazyVerticalGrid. Tieni presente che l'API è nelle fasi iniziali e può essere modificata nelle versioni future. (Iba2bc, b/166591700).
  • AndroidFont ora richiede typefaceLoader come parametro del costruttore. (I2c971)
  • L'annuncio companion WindowInsets ora mostra la visibilità (se sullo schermo, indipendentemente dal fatto che si intersechino con la finestra) e le dimensioni che potrebbero avere se sono disponibili sul dispositivo, ma non attualmente attive. (I65182, b/217770337)

Versione 1.2.0-alpha07

6 aprile 2022

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

Modifiche alle API

  • È stata aggiunta un'API PinnableParent che consente agli elementi secondari di layout pigri per impedire che gli elementi attualmente composti vengano smaltiti (Ibbdd0, b/184670295)
  • LazyListLayoutInfo e LazyGridLayoutInfo ora hanno i campi beforeContentPadding e afterContentPadding (I3b628, b/200920410)
  • È stato aggiunto KeyboardType.Decimal come alternativa a Keyboard.Number per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363)
  • Aggiungi il nuovo descrittore di carattere Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati dal sistema durante le catene di riserva 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)). Questa è un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808)
  • Aggiornamento di FontFamily.Resolver per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)
  • La proprietà dell'estensione consumeWindowInsets di ComposeView consente agli sviluppatori di disattivare l'utilizzo di Android WindowInset. In questo modo, ComposeViews separati 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 vengono rilasciati. La versione 1.2.0-alpha06 contiene questi commit.

Modifiche alle API

  • È stata aggiunta un'azione della semantica RequestFocus per richiedere lo stato attivo sul target attivabile. (I17b71)
  • FocusOrder è stato unito a FocusProperties e focusProperties() ora ha tutte le funzionalità di focusOrder(). FocusOrder e focusOrder() sono stati deprecati. Il valore focusOrder() che accetta un focusRequester deve essere sostituito con un modificatore focusRequester() in combinazione con focusProperties(). In questo modo i modificatori possono avere una maggiore separazione dei problemi. (I601b7)
  • WindowInsets.asPaddingValues(Density) è stato aggiunto per consentire agli sviluppatori di effettuare la conversione senza dover essere nella composizione. (I94c35).
  • È stata aggiornata l'analisi delle bozze di vettori per supportare il mirroring automatico in modo da capovolgere i contenuti di un elemento VectorPainter se la direzione corrente del layout è RTL. (I79cd9, b/185760237)

Correzioni di bug

  • I modificatori di scorrimento (Modifier.verticalScroll(), Modifier.horizontalScroll() e Modifier.scrollable()) scorrono ora per mantenere visibile il componibile attivo se l'area di scorrimento viene ridimensionata e il componibile attivo era precedentemente visibile.
  • I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivi e la tastiera è visualizzata, quando all'interno di un elemento a scorrimento non lento e la modalità di immissione temporanea è ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Versione 1.2.0-alpha05

9 marzo 2022

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

Modifiche alle API

  • LazyVerticalGrid e LazyHorizontalGrid sono ora stabili. (I307c0)
  • Il campo LazyGridItemInfo.Unknown è stato sostituito con LazyGridItemInfo.UnknownRow e LazyGridItemInfo.UnknownColumn separati (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid e tutte le API correlate sono state spostate nel sottopacchetto .grid. Aggiorna le importazioni da androidx.compose.foundation.lazy a androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Testo: includeFontPadding è ora disattivato per impostazione predefinita. Vengono gestiti i problemi di ritaglio dovuti a includeFontPadding=false e non dovrebbero verificarsi interruzioni per gli script lunghi. (I31c84, b/171394808)
  • L'interfaccia misurata ora espone la proprietà parentData (I3313f)
  • È stata introdotto l'esperimento Modifier.onFocusedBoundsChanged per consentire l'osservazione dei limiti degli elementi incentrati sui bambini. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • LazyHorizontalGrid è stato aggiunto. (I61ae7, b/191238807).
  • È stata aggiunta una nuova API LazyVerticalGrid per definire le dimensioni dell'asse trasversale (I17723)
  • Aggiunto modificatore di FocusGroup (I64bc0, b/213508274, b/184670295)

Correzioni di bug

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

Contributi esterni

  • Aggiornato per utilizzare Kotlinx coroutines 1.6.0 (I3366d)

Versione 1.2.0-alpha04

23 febbraio 2022

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

Modifiche alle API

  • BringIntoViewResponders non deve più passare manualmente le richieste agli utenti che possono rispondere a un genitore e deve invece restituire immediatamente il rettangolo che vuole che venga visualizzato dal padre. (I8e66a).
  • Supporta il caricamento asincrono dei caratteri nel testo (I77057, b/214587005)
  • LazyVerticalGrid ora supporta line breaking prima degli elementi con intervallo non adatto all'interno della riga corrente. (I05c40, b/207462103).
  • Rinominato excludeFromSystemGestures in systemGesturesExclusion (I19526)
  • LazyVerticalGrid ora supporta il layout reverseLayout. (I6d7d7, b/215572963, b/211753558).
  • Aggiungi il metodo WindowInsets.only() per consentire agli sviluppatori di includere solo le dimensioni di WindowInset. (I14c94, b/217768486).
  • Sono stati aggiunti i criteri ComposableTarget, ComposableTargetMarker e ComposableOpenTarget che consentono di generare report in fase di compilazione per capire quando una funzione componibile viene chiamata come target di un'applicazione che non era stata progettata.

    Nella maggior parte dei casi le annotazioni possono essere dedotte dal plug-in di Composer, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni componibili astratte (ad esempio i metodi di interfaccia), campi o variabili globali che sono lambda componibili (vengono dedotte variabili e parametri locali) o l'utilizzo di ComposeNode o di funzioni componibili correlate.

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

Correzioni di bug

  • Ora è possibile 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 vengono 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. Usa invece BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874).
  • Le animazioni sono state attivate per gli elementi delle griglie lente con Modifier.animateItemPosition(). (Ib6621, b/211753218)
  • BringIntoViewRequester ora propaga le richieste alla vista 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 Scrivi.
    • Le funzionalità Paragrafo e MultiParagrafo ora richiedono FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver ora contiene il resolver utilizzato per questo layout, deprecato TextLayoutResult.layoutInput.resourceLoader perché non viene più utilizzato. (Id5a45, b/174162090)
  • È stata aggiunta AndroidFont, una nuova API di basso livello per fornire nuovi tipi di descrittori delle risorse carattere su Android. Ad esempio, il caricamento dei caratteri da un backend specifico per l'app, l'individuazione facoltativamente dei caratteri preinstallati sul dispositivo o il caricamento di un carattere da una risorsa non fornita dall'attuale stabilimento di produzione di caratteri.
    • È stata espansa l'API Font.ResourceLoaded per supportare il caricamento dei caratteri facoltativo e asincrono. È sconsigliato usare questa API direttamente dagli sviluppatori. Per aggiungere nuovi tipi di caratteri, vedi AndroidFont.
    • La funzione di estensione Font.AndroidResourceLoader consente la creazione di un elemento Font.ResourceLoader al di fuori della composizione.
    • È stato aggiunto il parametro loadingStrategy ai caratteri basati sulle risorse per consentire il caricamento asincrono quando il carattere delle risorse fa riferimento ai caratteri XML scaricabili. (Ie5aea, b/174162090).
  • Il costruttore Typeface(FontFamily) è deprecato. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza invece FontFamilyResolver.preload
    • L'API fontResource(FontFamily): Typeface è deprecata. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Usa invece FontFamilyResolver.preload (If8e7c, b/174162090)
  • Ora puoi specificare il tipo di contenuti per gli elementi di LazyVerticalGrid. Le funzioni elemento/elementi su LazyGridScope ora accettano questo parametro. Queste informazioni aiutano a riutilizzare la logica di riutilizzo della composizione degli articoli per renderla più efficiente e riutilizzare solo i contenuti tra articoli di tipo simile. (I7b355, b/215372836)
  • LazyListLayoutInfo e LazyGridLayoutInfo ora hanno nuove proprietà: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Ora puoi specificare il tipo di contenuti per gli elementi di LazyColumn/LazyRow. Le funzioni elemento/elementi in LazyListScope ora accettano questo parametro. Queste informazioni aiutano a riutilizzare la logica di riutilizzo della composizione degli articoli per renderla più efficiente e riutilizzare solo i contenuti tra articoli 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 su quali aree devono essere conservate per il riutilizzo futuro. (I52c4d).
  • Aggiunge modificatori per WindowInset, sia per la spaziatura interna che per le dimensioni. In questo modo alcuni contenuti si estendono nell'area del riquadro, mantenendo i contenuti principali fuori da questa area. Ad esempio, è possibile utilizzare windowInsetsPadding per riempire l'area dei contenuti, in modo da evitare aree che potrebbero essere completamente o parzialmente coperte. (Id0395, b/213942085)

Correzioni di bug

  • I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivati e la tastiera viene visualizzata, quando la modalità di immissione flessibile è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120).
  • Il desktop utilizza la composizione locale per FontFamily.Resolver
    • L'app FontLoader per computer è deprecata
    • Nuovo fabbricante createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di input da tastiera software non sfarfalla più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
  • I campi di testo non richiedono più una pressione extra a ritroso quando viene visualizzato l'handle del cursore. (Ideb4b, b/205726883).
  • Il comportamento della lente d'ingrandimento per la selezione del testo è stato rifinito per corrispondere alla lente d'ingrandimento della piattaforma. (Idd918, b/206833278)

Versione 1.2.0-alpha02

26 gennaio 2022

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

Modifiche alle API

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

Correzioni di bug

  • Il comportamento della lente d'ingrandimento per la selezione del testo è stato rifinito per corrispondere alla lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll e altri container che usano 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 vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.

Modifiche alle API

  • Il nuovo parametro userScrollEnabled è stato aggiunto a LazyColumn, LazyRow e LazyVerticalGrid per consentire agli utenti di disattivare temporaneamente o definitivamente lo scorrimento avviato tramite gesti tattili o azioni di accessibilità. Sarà ancora possibile scorrere in modo programmatico tramite i metodi nello stato. (I7eae9, b/201150093).
  • Aggiungi il callback onSizeChanged al modificatore di ingrandimento. (I6879f)
  • Il widget Lente d'ingrandimento ora viene visualizzato quando trascini i punti di manipolazione di selezione in un SelectionContainer. (I30b38, b/139320979)

Correzioni di bug

  • Consente di correggere il punto di manipolazione del cursore TextField non nascosto quando viene fatto scorrere fuori dalla visualizzazione. (I14552, b/208883748)

Aggiornamenti delle dipendenze

  • Ora dipende da Kotlin 1.6.10.

Versione 1.1

Versione 1.1.1

23 febbraio 2022

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

Correzioni di bug

  • Correggi NullPointerException all'indirizzo androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • 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 vengono rilasciati. La versione 1.1.0 contiene questi commit.

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto scorrimento orizzontale di Android 12
  • Miglioramenti alle dimensioni del touch target
  • Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio di layout in modo da rispettare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante si espanderà fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo Compose Material allo stesso comportamento dei componenti di Material Design, offrendo un comportamento coerente se combini le visualizzazioni e Compose. Inoltre, questa modifica garantisce che quando crei la tua UI utilizzando i componenti di Compose Material, verranno soddisfatti i requisiti minimi per l'accessibilità del touch target.
  • Supporto stabile per Navigazione
  • Assegna una serie di API precedentemente sperimentali alla versione stabile
  • Supporto per versioni più recenti di Kotlin

Versione 1.1.0-rc03

26 gennaio 2022

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

Correzioni di bug

  • 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 vengono rilasciati. La versione 1.1.0-rc01 contiene questi commit.

Correzioni di bug

  • Ora è possibile passare offset di scorrimento negativi in LazyListState.scrollToItem() e LazyListState.animateScrollToItem(). (Iceb90, b/184252837).
  • Risolto un bug che causava la mancanza di azioni di scorrimento di accessibilità (I7cbfb)

Versione 1.1.0-beta04

1° dicembre 2021

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

Nuove funzionalità

  • Aggiornato per essere compatibile con Kotlin 1.6.0

Modifiche alle API

  • È stata eseguita la pulizia di nulla 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 consumato o meno. (I2e59d).
  • Mostra un widget ingrandimento quando trascini il cursore o i punti di manipolazione di selezione all'interno dei campi di testo. (I5391e, b/203781358)

Correzioni di bug

  • Correggi i punti di manipolazione del testo che non si spostano quando la visibilità dell'IME cambia. (I25f2e).

Versione 1.1.0-beta03

17 novembre 2021

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

Modifiche alle API

  • In LazyVerticalGrid è stato aggiunto il supporto delle sezioni orizzontali. (I7e2fa, b/176758183).
  • È stata aggiunta la funzionalità sperimentale per animare le posizioni degli elementi degli elenchi lenti. In LazyItemScope è disponibile un nuovo modificatore 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 un tasto tramite LazyListScope.item o LazyListScope.items, questo modificatore attiva le animazioni di riordinamento degli elementi. Oltre al riordinamento degli elementi, vengono animate anche tutte le altre modifiche di posizione causate da eventi quali modifiche della disposizione o dell'allineamento. (I59e7b, b/150812265).

Versione 1.1.0-beta02

3 novembre 2021

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

Correzioni di bug

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

Contributi esterni

  • 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 vengono rilasciati. La versione 1.1.0-beta01 contiene questi commit.

Correzioni di bug

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

Versione 1.1.0-alpha06

13 ottobre 2021

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

Modifiche alle API

  • È stato aggiunto un sovraccarico senza figli per Layout, con maggiore efficienza (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce lo SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db).
  • È stato aggiunto un elemento performScrollToNode(matcher: SemanticsMatcher) che fa scorrere un container 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 vengono rilasciati. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche alle API

Correzioni di bug

  • Corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lenti che non lenti) in relazione allo scorrimento (I6cdb0)

Versione 1.1.0-alpha04

15 settembre 2021

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

Modifiche alle API

  • performGesture e GestureScope deprecati, che sono stati 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 garantire che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214).

Correzioni di bug

  • Sui dispositivi Android 12 è stato aggiunto il supporto dell'overscroll per la funzionalità stretching. (Iccf3c, b/171682480).

Versione 1.1.0-alpha03

1° settembre 2021

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

Nuove funzionalità

  • Scrittura 1.1.0-alpha03 aggiornata in modo che dipendesse da Kotlin 1.5.30. (I74545)

Modifiche alle API

  • È stato aggiunto l'effetto incandescenza per lo scorrimento. È stata aggiunta la nuova API sperimentale OverScorriConfiguration per consentire la configurazione dell'effetto visivo overscroll. Specifica un valore null per disattivare l'effetto di scorrimento orizzontale. (I0c304, b/171682480).
  • AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • È stato aggiunto un metodo di test per ottenere i limiti tagliati. (I6b28e).
  • Aggiunta la dimensione minima del touch target a ViewConfiguration per l'uso nella semantica e nell'input 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 vengono 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 vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.

Modifiche alle API

  • È stato aggiornato il metodo DrawScope#drawImage che utilizza i registri di origine e di destinazione per utilizzare un parametro FilterQualità facoltativo. Questo è utile per la Pixel Art, che deve essere pixelata quando viene ridimensionata per la grafica basata su pixel. Aggiornamento di BitmapPainter + Immagine componibile per utilizzare anche un parametro facoltativo tipoFilterQualità (Ie4fb0, b/180311607)
  • TextField ora cancella la selezione quando viene premuto il pulsante Indietro, in base al comportamento di Android EditText. (I3ca16, b/174173645).
  • Aggiungi punto di manipolazione del cursore. (I07a82, b/173016579).

Correzioni di bug

  • Lo scorrimento tramite azioni di semantica per elenchi lenti e componenti a scorrimento regolare ora è animato (Id9066, b/190742024)

Contributi esterni

  • LazyVerticalGrid ora accetta i parametri di disposizione orizzontale e verticale. (If9c92).

Versione 1.0

Versione 1.0.5

3 novembre 2021

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

Correzioni di bug

  • Risolto il problema di monitoraggio degli arresti anomali delle istanze derivateStateOf. (aosp/1792247)

Versione 1.0.4

13 ottobre 2021

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo da dipendere da Kotlin 1.5.31

Versione 1.0.3

29 settembre 2021

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo da dipendere da Kotlin 1.5.30

Versione 1.0.2

1° settembre 2021

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

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipende da Kotlin 1.5.21.

Versione 1.0.0

28 luglio 2021

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

Funzionalità principali della versione 1.0.0

Questa è la prima release stabile di Compose. Consulta il blog ufficiale di Compose Release per ulteriori dettagli.

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+ nel file build.gradle. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP 7.1. (b/194289155)

Versione 1.0.0-rc02

14 luglio 2021

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

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

Versione 1.0.0-rc01

1° luglio 2021

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

Modifiche alle API

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

Correzioni di bug

  • Pulsante, scheda, caselle di controllo e Modifier.clickable(enabled=false) complessivi disattivati impediranno ai clic di arrivare all'elemento principale. (Ic2c3b, b/183908811).

Versione 1.0.0-beta09

16 giugno 2021

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

Modifiche alle API

  • ManualFrameClock rimosso. Se devi controllare le animazioni, usa invece composeTestRule.mainClock. (I3c3e8, b/189951065).
  • cambia enum Role e LiveRegionMode in classi incorporate con costruttore privato (Id1890)
  • L'uso delle maiuscole della tastiera viene convertito in una classe incorporata. (Id5a1c)
  • TextOverflow viene modificato in una classe incorporata. (I433af)

Correzioni di bug

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

Regole del profilo aggiunte

In questa release sono state aggiunte 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.materiale
  • androidx.compose.materiale-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 libreria sono specificate in un file di testo baseline-prof.txt che si trova in src/main o nella directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi della libreria. La sintassi di queste regole è un soprainsieme del formato del profilo ART leggibile che viene utilizzato quando si utilizza adb shell profman --dump-classes-and-methods .... Queste regole assumono una delle due forme per il targeting di metodi o classi.

  • Una regola del metodo avrà il seguente pattern:

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

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

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

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

  • Questi pattern possono includere caratteri jolly (**, * e ?) in modo che una singola regola includa più metodi o classi.

A cosa servono le regole?

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

  • Un metodo con il flag S indica che si tratta di un metodo che viene richiamato all'avvio e deve essere compilato in anticipo per evitare i costi di compilazione e interpretazione del metodo all'avvio.

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

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

Come funziona?

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

Versione 1.0.0-beta08

2 giugno 2021

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

Modifiche alle API

  • L'enumerazione NestedscrollSource è sostituita da una classe in linea. (Ie321b, b/187055290).
  • È stato eseguito il refactoring degli utilizzi delle enum in classi in linea per evitare problemi con l'enumerazione esaustiva di istruzioni quando vengono aggiunti nuovi valori di enumerazione. (I2b5eb)
  • Aggiunge un timeout del tocco a cliccabile/attivabile per impedire la visualizzazione di un'onde durante lo scorrimento o il trascinamento (Ia2704, b/168524931)
  • Le proprietà della semantica del testo e ContentDescription non sono più valori singoli, ma elenchi. Ciò consente di unirli in quanto si tratta di una concatenazione. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
  • L'istruzione Modifier.focusModifier() è deprecata e sostituita da Modifier.focusTarget() (I6c860)
  • L'enumerazione KeyboardType è sostituita da una classe incorporata. (I73045, b/187055290)
  • Enum FocusState sostituita con interfaccia FocusState (ICC1a, b/187055290)
  • L'enumerazione ImeAction è sostituita da una classe in linea. (I18be5, b/187055290).
  • Le funzioni AnnotatedString.withAnnotation ora sono SperimentaliTextApi anziché ExperimentalComposeApi. (I0cd0a)
    • Il costruttore TextUnit con TextUnitType è ora ExampleTextAPI anziché ExperimentalComposeApi.
  • PaddingValues ora è @Stable anziché @Immutable (I88c50)

Correzioni di bug

  • Sono stati corretti gli arresti anomali dovuti alla pressione prolungata nell'area vuota nel testo non vuoto. (I33ab5, b/187437299)
  • Mostra barra degli strumenti dopo Seleziona tutto (I495d9, b/185919613)
  • Correzione per i container scorrevoli che tagliavano gli elementi secondari sull'asse trasversale. Era facilmente riproducibile se hai un elemento LazyRow with Card, ora l'ombra non verrà tagliata. (Icb635, b/186318448)
  • Risolto il problema per cui a volte echi / altre indicazioni rimanevano bloccati su un clic lungo quando si utilizza Modifier.combinedClickable (I2298c, b/186223077)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica di posizione. Non è necessario chiamare change.consumePositionChange nei callback onTrascina (I42fc4, b/185096350, b/187320697)
  • Modifier.onGloballyPositioned() è stato modificato per indicare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo aver applicato tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verrebbero 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 vengono rilasciati. La versione 1.0.0-beta07 contiene questi commit.

Modifiche alle API

  • Viene introdotta la logica di precaricamento degli elementi visibili successiva per LazyColumn/Row (I8a4bc, b/184940225)
  • Aggiunto il punto di manipolazione per la selezione dei clip (Iff80d, b/183408447)

Correzioni di bug

  • LazyColumn/Row ora manterrà attivi fino a 2 elementi precedentemente visibili (non eliminati) anche quando l'elemento viene già fatto scorrere. In questo modo il componente può riutilizzare le sottocomposizioni attive quando dovremo comporre un nuovo elemento per migliorare le prestazioni dello scorrimento. (Ie5555)
  • Rimuovi paintBackground. (I38660)
  • Disegna lo sfondo della selezione con DrawScope. (I73c61, b/186674472)
  • È stata corretta una regressione beta06 che interessava riga/colonna utilizzando le disposizioni SpacedBy per gli elementi secondari ponderati del layout. (Ifaf8c, b/187326588).

Versione 1.0.0-beta06

5 maggio 2021

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

Modifiche alle API

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

Correzioni di bug

  • Le righe e le colonne secondarie con weight(fill = false) non fanno più in modo che 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 vengono 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

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

Versione 1.0.0-beta04

7 aprile 2021

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

Modifiche alle API

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

Correzioni di bug

  • Risolto il problema per cui gli elementi di LazyColumn/LazyRow situati sui bordi venivano posizionati in modo errato dopo l'avvio rapido (Ie4d13, b/183877420)
  • Prima di questa modifica, le funzioni componibili locali erano ignorabili in base ai relativi parametri. Dopo questa modifica, le funzioni componibili locali non verranno ignorate. Questa modifica è stata apportata perché è normale che le funzioni locali acquisiscano i parametri dall'elemento padre, il che causa un numero maggiore 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 vengono rilasciati. La versione 1.0.0-beta03 contiene questi commit.

Modifiche alle API

  • L'API DefaultMonotonicFrameClock è deprecata. La chiamata a withFrameNanos o Recomposer.runRecomposeAndApplyChanges senza MonotonicFrameClock ora genererà IllegalStateException. (I4eb0d).

Correzioni di bug

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

Versione 1.0.0-beta02

10 marzo 2021

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

Modifiche alle API

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

Correzioni di bug

  • Applicare restrizioni all'uso pubblico delle API sperimentali (I6aa29, b/174531520)

Versione 1.0.0-beta01

24 febbraio 2021

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

Questa è la prima release di Compose 1.0.0 beta.

Modifiche alle API

  • Il callback onStart è stato aggiunto a detectDragGestures (I67269, b/179995594)
  • I modificatori per le dimensioni intrinseche non sono più sperimentali. (I15744)
  • Asserzioni DP rimosse (I798d2)
  • È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per sostituirlo a breve con una nuova API. (Iae869, b/168778053).
  • MeasureBlocks è stato rinominato in MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState è stato sostituito con [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 usare le funzioni di estensione su InteractionSource, come InteractionSource.collectIsPressedAsState().
    • Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per saperne di più, consulta la documentazione e gli esempi di InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Rimossi i metodi LayoutCoordinates ritirati, usa la funzione invece della proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
  • È stato creato un nuovo TextInputSession per le sessioni di input da componenti di testo di basso livello, come CoreTextField. (I8817f, b/177662148)
  • Placeable ora mostra MeasurementSize, che rappresenta le dimensioni effettivamente misurate dal layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608).
  • Aggiungi il modificatore selectGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
  • Aggiungi LazyListState.animateScorriToItem

    Questo metodo consente di scorrere facilmente fino a un elemento specifico dell'elenco. (I4bfd7)

  • scrollableState.smoothScorriBy() è stato rinominato in animatescrollBy() LazyListState.snapToItemIndex() è stato rinominato in scrollToItem() ScorriState.smoothscrollTo() è stato rinominato in animatescrollTo() (I35ded)

  • Modifier.zoomable è stato sostituito da Modifier.Transformable. smoothPanBy, "Liscia rotazioneBy" è stata aggiunta come funzionalità. (Ifc32b, b/175294473).

  • I defaultFactory per compositionLocalOf e staticCompositionLocalOf sono ora obbligatori anziché facoltativi.

    Questa modifica rimuove un potenziale errore di tipo per i tipi non null in cui non è stato fornito alcun valore di fabbrica predefinito. In precedenza, veniva fornito un riferimento nullo per un tipo non nullo.

    Per i tipi di valori null, ti consigliamo di fornire { null } come valore di fabbrica predefinito.

    Non è consigliabile utilizzare locali con tipi non null, a meno che non sia possibile specificare un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda defaultFactory dovrebbe generare un'eccezione. Tuttavia, la generazione di un'eccezione significa che i consumatori locali avranno una dipendenza implicita dal fatto che l'eccezione non è applicata dal sistema dei tipi. (Ifbd2a).

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

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

  • runBlockingWithManualClock rimosso (I15cdc, b/179664814)

  • La posizione di scorrimento in Modifier.verticalScorri()/HorizontalSlide() è rappresentata ora con Ints (I81298)

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

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

  • I modificatori di dimensione sono stati rinominati. Modifier.width/height/size sono stati rinominati come requiredwidth/requiredHeight/requiredSize. Modifier.preferredwidth/preferredHeight/preferredSize da è stato rinominato in larghezza/altezza/size. (I5b414)

  • defaultMinSizeConstraints è stato rinominato in defaultMinSize. (I4eaae).

  • L'elemento Modifier.tapGeFilter è stato rimosso. Usa invece il criterio 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.nestedScorri. (Ie9c9b).

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

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

  • frameState.open() e frameState.close() ora sospendeno le funzioni. Utilizza keepCoroutineScope() per ottenere l'ambito della composizione per chiamarli (I16f60, b/175294473)

  • I fornitori sono stati rinominati in ComposeLocalProvider

    • Il costruttore Composizione non accetta più un parametro chiave ed è stato ritirato.
    • currentCompositeKeyHash è stata trasformata in una proprietà componibile di primo livello invece che in una funzione componibile di primo livello.
    • ComposeData e ResolutionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è stata trasformata in un'interfaccia anziché in una classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata trasformata in un'interfaccia anziché in 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 ClearRoots di primo livello @TestOnly è 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.
    • Varie API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe dei file di Kotlin, questo compromette la compatibilità binaria, ma non la compatibilità delle origini, 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 invece di un semplice lambda. Puoi creare lo stato tramite rememberDraggableState { delta -> } per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)

  • Per il dimensionamento richiesto alle dimensioni intrinseche, sono stati aggiunti i modificatori requiredLarghezza(DimensioneIntrinseca) e Altezza richiesta(Dimensione intrinseca). (I0a6b4).

  • L'elemento emptyContent() deprecato è stato rimosso. Usa invece il criterio {}. (Idb33f, b/179432510).

  • Eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)

Correzioni di bug

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

Versione 1.0.0-alpha12

10 febbraio 2021

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

Modifiche alle API

  • Modifier.pointerInput ora richiede di ricordare i tasti per indicare quando la coroutine di rilevamento dell'input del puntatore deve riavviarsi per nuove dipendenze. (I849cd)
  • Test dell'aggiornamento: hasText() controllerà sia i testi di input che di etichetta/suggerimento/placeholder nel campo di testo (Iab803)
  • PaddingValues.Unique è stato aggiunto e può essere utilizzato nelle API che accettano PaddingValues. (Ia5f30).
  • L'API onImeActionPerformed è deprecata. Usa invece KeyboardActions (If0bbd, b/179071523)
  • Per abbinare meglio le convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stata rinominata in BitmapPainter in VectorPainter parallelo. (Iba381, b/174565889).
  • Migliori API per il test delle sottostringhe ora come argomento (Icbe78)
  • È stato introdotto un elemento di contesto coroutine InfiniteAnimationPolicy che verrà applicato in animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando si eseguono test con ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo e Animatable.stop sono ora funzioni di sospensione (If4288)
  • ComponenteActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
  • I metodi di distruzione e copy() sono stati rimossi da diverse classi in cui erano usati raramente. (I26702, b/178659281)
  • È stato aggiunto il supporto delle chiavi personalizzate per LazyColumn/LazyRow. In questo modo possiamo gestire in modo più intelligente il riordinamento degli articoli. Quindi lo stato memorizzato nei blocchi {} si sposterà insieme all'elemento quando riordini gli elementi o rimuovi l'elemento dal centro.

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

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

  • L'elemento loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Usa pittoreResource. (I6b809)

  • Per motivi di prestazioni, la semantica di scrollAxisRange ora utilizza lambda che restituiscono valori in virgola mobile anziché valori Float diretti. (If4a35, b/178657186).

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

  • Ora Modifier.clickable non supporta più il doppio clic lungo. Per ottenere questa funzionalità, utilizza Modifier.combinedClickable. (Iafad1).

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

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

  • L'API Modifier.dragGeFilter è stata ritirata. Usa invece il criterio Modifier.pointerInput { detectDragGestures (...)}. In alternativa, utilizza Modifier.draggable per i trascinamento su un asse (I0ba93, b/175294473)

  • La ridenominazione degli ambienti Ambient è stata rinominata -> ComposeLocal. Gli ambienti un tempo si chiamavano AmbientFoo, ora i ComposeLocals si chiamavano LocalFoo. (I2d55d).

  • La selezione è stata spostata negli elementi di base. (I7892b)

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

  • Aggiunta della semantica delle password per l'accessibilità (I231ce)

  • Aggiunta ProgressBarRangeInfo.Indeterminata per contrassegnare barre di avanzamento indeterminate per l'accessibilità (I6fe05)

  • Il tempo di riproduzione nell'animazione è ora disponibile in nanosecondi (If776a)

  • @ComposableContract è stato ritirato e sostituito con 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 in quanto non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d)

  • Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno a ricomporre fino al completamento delle coroutine secondarie della composizione. Recomposer.shutDown è stato rinominato per annullare il contrasto con la chiusura. (Ib6d76).

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

  • Il servizio ricordo di istanzaState() è stato rinominato in "RicordaSaveable()" e il nome è stato spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004).

  • RestorableStateholder è stato rinominato in SaveableStateholder e spostato nel pacchetto androidx.compose.runtime.saveable. Il metodo interno RestorableStateProvider è stato rinominato in SaveableStateProvider. Il tipo generico è stato rimosso, quindi puoi passare semplicemente "Qualsiasi" 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'elemento androidx:compose:runtime:runtime-saving-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)

  • Molte API ritirate da tempo nel pacchetto UI vengono eliminate. (I2f2dc).

  • L'artefatto composito:runtime-dispatch è ora deprecato. MonotonicFrameClock è ora disponibile in Composer:runtime e AndroidUiDispatcher in Composer: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 rtl. UniqueRounderCornerShape e UniqueCutCornerShape sono stati introdotti per i casi in cui il mirroring automatico non è desiderato. (I61040, b/152756983)

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

  • L'API target del plug-in di compilazione Compose è stata modificata in modo da utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non usa più un parametro di tipo.

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

  • Il filtro Modifier.scaleGeFilter è stato rimosso. Usa invece Modifier.zoomable. In alternativa, utilizza Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473)

  • LivelyValue/Float è ora deprecata. Usa invece Animabili. (I71345, b/177457083)

    • CoreText e CoreTextField rimossi dall'API pubblica
    • Rimosso l'overload SelectionContainer deprecato (I99c19)
  • Rimuovi le funzioni di scorrimento deprecate e non sospese Per continuare con le modifiche apportate dall'ultima release, quelle non sospese vengono rimosse completamente. Converti alle funzioni di sospensione con gli stessi nomi. Un ambito coroutine può essere ottenuto tramite rememberCoroutineScope(). (I3d39c, b/178169563)

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

  • TapGeFilter, doubleTapgestFilter, longPress tredescherFilter e pressIndicaiton praticheFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTaparmas. (I6baf9, b/175294473).

  • Recomposer.current() rimosso. [Abstract]ComposeView ora utilizza per impostazione predefinita ricompositori con ambito a finestre creati in modo lento e gestiti dal ViewTreeLifecycleOwner per la finestra. I segni di graduazione dell'animazione basati su Ricomposizione e conFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host viene interrotto. (I38e11).

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

Versione 1.0.0-alpha11

28 gennaio 2021

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

Modifiche alle API

  • Depreca scrollBy non sospesi, rimuovi scrollTo non sospesi

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

  • Ritiro di smoothScorriBy non sospesi Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere il termine dello scorrimento. Nell'ambito di questa transizione, ritireremo le versioni non sospese di queste funzioni. (I12880)

  • Il parametro per la descrizione dei contenuti è stato aggiunto all'immagine e all'icona. 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, etichetta e simili al campo di testo, aumentandone l'area di destinazione. (I16996)

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

  • È stato rimosso AnimatedFloat.fling che accetta FlingConfig. Usa invece sospendi Animatable.animateDecay. (I4659b, b/177457083)

  • data class rimosso dai seguenti corsi:

    • ContenutiTestoInline
    • Elenco impostazioni internazionali
    • (I605c7)
  • Cliccabile, attivabile e selezionabile può essere creato al di fuori della composizione ora (I0a130, b/172938345, b/175294473)

  • ScorribiliColumn/Riga sono stati deprecati. L'utilizzo di scrollableColumn è meno efficiente rispetto a LazyColumn quando hai molti contenuti a scorrimento perché con LazyColumn possiamo solo comporre/misurare/disegnare elementi visibili. Per evitare che gli utenti vadano in modo inefficiente, abbiamo deciso di ritirare scrollableColumn e scrollableRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere che non hanno bisogno di un comportamento lento e usare 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) sono ora funzioni di estensione, quindi devi importarle manualmente quando vengono utilizzate. Nuovi sovraccarichi di estensione per Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)

  • L'oggetto TotalArrangement ritirato è stato rimosso. (Iffa96, b/177641870).

  • Il parametro propagaMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere trasferiti o meno al contenuto di Box. Il valore predefinito è false. (I0125b, b/152613457)

Correzioni di bug

  • onCommit, onDispose e onActive sono stati deprecati 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

    • Funzioni di fabbrica aggiunte che iniziano con una lettera maiuscola
    • Funzioni di fabbrica precedenti deprecate con prime lettere minuscole
    • Le nuove funzioni di fabbrica restituiscono la proprietà FontFamily anziché le sottoclassi
    • ha nascosto i costruttori delle sottoclassi, in modo che possano essere create solo tramite funzioni di fabbrica.
    • Font.asFontFamily rinominato in Font.toFontFamily
    • (I42aa7).
  • È stato introdotto ComposeContentTestRule, che si estende ComposeTestRule e definisce setContent, che è stato rimosso da ComposeTestRule. È stato aggiunto un metodo di fabbrica createEmptyComposeRule() che restituisce ComposeTestRule e non avvia un'attività per te. Usa questa opzione quando vuoi avviare l'attività durante il test, ad esempio utilizzando ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState ora è animatoFooAsState, dove Foo è il tipo di variabile in fase di animazione, ad es. Float, Dp, Offset e così via (Ie7e25)

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

  • TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo per l'API e la modifica di testo multistile non è ancora implementata.

    • initial rimosso dai parametri del costruttore di EditingBuffer. (I326d5).
  • invalidate e comScoreReference() ora sono deprecati a favore di currentRecomposeScope e promemoriaComposeReference. (I583a8)

  • AnnotatedString modificata per estendersi da kotlin.CharSequence. Di conseguenza, lunghezza e sottosequenza sono ora funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429).

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

  • RicordaOsservatore sostituisce ComposeLifecycleObservationr e ResolutionLifecycleEventsr che ora sono deprecati.

    RememberObserver sostituisce CompositionLifecycleObserver con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, cosa che è e continua a essere la pratica consigliata. Tuttavia, se un riferimento è stato ricordato più di una volta in una composizione, onRemembered viene chiamato per ogni riferimento dove onEnter viene chiamato una sola volta. onEnter è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, ad esempio WithConstraints e Scaffold, rendendo la singola chiamata onEnter garantita inaffidabile ed è stato rimosso per RememberObserver.

    RememberObserver aggiunge onAbandoned che viene chiamato se l'istanza RememberObserver viene restituita dal callback passato a remember ma non è stato memorizzato nello stato di composizione e, di conseguenza, non riceverà mai la chiamata onRemembered. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o se la composizione viene eliminata perché lo stato sta producendo una composizione non è più attuale o non è più necessaria. Se l'istanza di RememberObserver che segue il suggerimento di riferimento singolo riportato sopra monitora una risorsa esterna, onForgotten e onAbandoned indicano entrambi che la risorsa non è più necessaria. Se l'oggetto sta monitorando i lavori avviati o le risorse allocate in onRemembered, onAbandoned può essere ignorato in quanto non verrà chiamato con la chiamata di onRemembered. (I02c36).

  • TransformedText.TransformedText rinominato in TransformedText.text

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

    • AnnotatedString
    • Stile paragrafo
    • Stile intervallo
    • Stile testo
    • Spessore carattere
    • Decorazione Testo
    • TrasformazioneGeometrica
    • Indice di testo
    • Risultato layout testo
    • InputLayoutTesto (Iaff99)
  • Metodi sperimentali monotonicFrameAnimationClockOf rimossi (Ib753f, b/170708374)

  • Deprecati metodi di coordinate globali e creati nuovi metodi di coordinate basati su finestre. (Iee284).

  • Utilizza ImeAction.None anziché ImeAction.NoAction.

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

  • SemanticsPropertyRicevir.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stata rinominata ProgressBarRangeInfo. stateDescriptionRange è stata rinominata progressBarRangeInfo. AccessibilityScorriState è stata rinominata in scrollAxisRange. HorizontalAccessibilityscrollState è stato rinominato in HorizontalscrollAxisRange. verticalAccessibilityScorriState è stato rinominato in verticalscrollAxisRange. (Id3148)

  • Modifica di VisualTransformation in un'interfaccia funzionale (I3bba4)

  • Utilizza TestCoroutineDispatcher nei test (I532b6)

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

  • Rinominato TextInputService.onStateUpdated come updateState (Id4853)

  • Rimuovi displaySize come da evitare. In genere, è meglio utilizzare almeno la dimensione onRoot() o la dimensione della finestra. (I62db4)

Versione 1.0.0-alpha10

13 gennaio 2021

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

Modifiche alle API

  • ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
  • Modifiche all'API VisualTransformation
    • OffsetMap rinominato in OffsetMapping
    • OffsetMapping.identityOffsetMap rinominato in OffsetMapping.Identity
    • PasswordTransformation non è più una classe dati
    • OffsetMapping spostato nel proprio file
    • (I0bdf3)
  • Modifiche all'API EditOperations
    • Il nome EditOperation è stato rinominato EditCommand
    • Aggiunto suffisso del comando per le implementazioni concrete di EditOperation
    • Gli elementi EditCommand non sono più classi di dati
    • Funzione EditOperation.process rinominata per applyTo
    • InputEventListener rinominato in InputEventCallback
    • (I0a366)
  • Velocità modificata per includere parti dei componenti e operazioni matematiche. (Ib0447)
  • Rinominato @SperimentaleTesting in @SperimentaleTestApi per essere coerente con annotazioni simili di API sperimentali (Ia4502, b/171464963)
  • Aggiunto il metodo persistente sperimentale per LazyColumn/LazyRow (I0a81d)
  • Ranamed Color.useOrElse() a Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher obsoleto. Utilizza Dispatchers.Main (Ic171f, b/175385255)
  • Aggiungi Pulsante a Strings.kt di base (I4a5b7, b/172366489)
  • L'elemento nativeClass è stato spostato nel modulo dell'interfaccia utente e lo ha reso interno. Sono stati aggiornati gli utilizzi di nativeClass in modo uguale a implementazioni e usare invece "is MyClass". (I4f734)
  • FlowRow e FlowColumn sono state deprecate. Utilizza invece un layout personalizzato. (I09027)
  • Modifier.focus() e Modifier.focusRequester() sono deprecati. Usa invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • È stato introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti Selectable a SelectionManager. (I6ff30, b/173215242).
  • fun Dp.isFinite() modificato in val Dp.isFinite (I50e00)
  • Constraints#formatBy è stato rinominato in isSatisfiedBy. (I9cf5c).
  • È stato aggiunto isspecified, isUnspecified e useOrElse per le classi incorporate con una costante non specificata. (I93f7b, b/174310811).

Correzioni di bug

  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le sue animazioni. Nuova DecayAnimationSpec per supportare le animazioni di decadimento multidimensionali (I820f2, b/168014930)
  • Aggiunto il supporto per i campi di testo disattivati e di sola lettura (I35279, b/171040474, b/166478534)
  • animate() è ora sostituito con animateAsState(), che restituisce State<T> anziché T. Ciò consente prestazioni migliori, poiché l'ambito di annullamento della convalida può essere limitato al punto in cui viene letto il valore State. (Ib179e)
  • Aggiungi l'API del ruolo Semantics e aggiungi Role come parametro per SemanticsModifier cliccabile, selezionabile e attivabile. È stato modificato Modifier.progressSemantics in modo che anche Slider possa utilizzarlo. (I216cd)
  • È ora possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)

Versione 1.0.0-alpha09

16 dicembre 2020

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

Modifiche alle API

  • Aggiungi interfaccia scorrevole

    In questo modo scrollState e LazyListState vengono considerati come un tipo comune, consentendo l'implementazione dello scorrimento personalizzato in entrambi i tipi.

    Questa operazione sposta anche smoothScorriBy in una funzione di estensione su scrollable, usufruendo di questa funzionalità. (I2153b)

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

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

  • Per sospendere le API di input del puntatore, rinominati HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() a awaitPointerEventScope(). (Idf0a1, b/175142755)

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

  • Rimossa annotazione SperimentalePointerInput (Ia7a24)

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

  • Aggiungi il parametro reverseLayout per LazyColumn/Riga. quando true elementi saranno composti dal basso verso l'alto e LazyListState.firstVisibleItemIndex == 0 il primo elemento si troverà 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 uno spazio tra gli elementi e di specificare la disposizione degli elementi quando non ne abbiamo abbastanza per riempire l'intera dimensione minima. (Icf79a, b/170394300).

  • L'opzione DetectMultitouchTouchs ora usa un callback con parametri combinati di centroid, panoramica, zoom e rotazione. (Ie6e1c).

  • Abbiamo spostato ContentDrawScope nel modulo UI-Graphic per usare DrawScope. (Iee043, b/173832789).

Correzioni di bug

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

    ComposeData e ResolutionGroup sono stati aggiunti come sostituzione dell'API ui-toolsing da utilizzare per estrarre le informazioni di composizione. Questi sono pubblici, ma non sono destinati a essere utilizzati 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 lentamente un'istanza dello ShaderBrush quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire i gradienti che occupano tutti i limiti di disegno di un componibile al momento della composizione, senza dover implementare implementazioni di DrawModifier personalizzate.

    API del costruttore di funzioni gradiente deprecate a favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)

  • Modifier.focusHighlightr è deprecato. Usa invece 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 distruzione per creare istanze FocusRequester (I35d84, b/174817008)

  • AccessibilityLabel è stata rinominata in contentDescription. accessibilityValue è stata rinominata in stateDescription. (I250f2)

  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar e si è anche rinominato onPositionChange per notificationPositionChange. (Ifbaf7)

  • AndroidProprietario inviato come interno (Ibcad0, b/170296980)

  • Nuova funzione infiniteRipetiable per la creazione di una InfiniterepeatableSpec (I668e5)

  • L'interfaccia di Applier è cambiata 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 applicatore inserisce nodi nella struttura ad albero modificata utilizzando insertTopDown() o insertBottomUp() a seconda di quale ha il rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da costruire dal basso verso l'alto. Prima di questa modifica, era necessario uno stack di inserti per implementare il modello dal basso verso l'alto, che doveva essere copiato in ogni applicatore che richiedeva una costruzione dal basso verso l'alto per migliorare le prestazioni. Con questa modifica, un Applier esegue l'override di insertBottomUp() per creare un albero dal basso verso l'alto e insertTopDown() per creare l'albero dall'alto verso il basso. (Icbdc2)

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

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una stringa AnnotatedString. Funzione del generatore annotatedString deprecata. (Idfe0b)

Versione 1.0.0-alpha08

2 dicembre 2020

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

Modifiche alle API

  • Parametro maxLines rimosso da CoreTextField. Se vuoi limitare l'altezza del campo di testo al numero di righe, utilizza BasicTextField. (Iec002)
  • I metodi await*TouchSlop() sono stati modificati in modo da non rilevare il puntatore verso il basso e sono stati rinominati *OrCancellation. È stato inoltre rimosso il 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. È stata anche eseguita la migrazione di alcune API utilizzando children come nome del lambda finale in content, secondo le indicazioni e il controllo del lint. (Iec48e).
  • foundation:foundation-text API spostate in foundation:foundation. La struttura del pacchetto è rimasta la stessa (Id3eb2)
  • Nuovo rilevatore di gesti multi-touch, con strumenti per rilevare la rotazione, lo zoom e la panoramica. (Ic459d)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25).
  • VectorAsset rinominato in ImageVector Spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida del consiglio API. Aggiunto l'alias di tipo VectorAssetBuilder per il collegamento a ImageVector.Builder per la compatibilità. (Icfdc8)
  • ImageAsset e i relativi metodi sono stati rinominati in ImageBitmap. (Ia2d99).
  • Proprietà della semantica di base spostate nell'UI (I6f05c)
  • Aggiungi API di scorrimento basate sulla coroutine:

    Aggiunge LazyListState.snapToItem e LazyListState.smoothscrollBy, oltre alle API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il termine dello scorrimento prima di tornare. (Ie5642)

  • È stato aggiunto un parametro singeLine in BasicTextField, TextField e OutlineTextField. Imposta questo parametro su true per rendere il campo di testo una singola riga scorrevole orizzontalmente. (I57004, b/168187755)

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

  • Modifier.focusable deve essere aggiunto negli elementi di base. Utilizzalo per aggiungere comportamenti attivabili a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824).

  • Le API deprecate in precedenza sono state rimosse: il bordo è stato rimosso. Usa invece BorderStroke. Modifier.drawBorder è stato rimosso, usa invece Modifier.Border. Modifier.gravity è stato rimosso. Usa invece Modifier.align. Lo stack è stato rimosso. Utilizza Box (I32c2b, b/172470874)

  • TotalArrangement è stato rinominato in Arrangement.assoluta. (If26f2)

Correzioni di bug

  • API DrawModifier spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. Creato il file DrawModifier Deprecato.kt per includere i metodi typealiases/helper al fine di facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
  • Rinominato Modifier.drawlayer in Modifier.graphics Layer Aggiornato anche le classi correlate in Graphicslayer in base ai feedback del consiglio delle API. (I0bd29, b/173834241).
  • L'elemento <T> è stato rimosso dalla dichiarazione SubcomposeLayout. Puoi utilizzarla senza specificare un tipo ora. (Ib60c8).
  • Rendere non null sui campi di uptime e posizione di PointerInputData. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i punti di manipolazione di selezione e lo sfondo di selezione. Le app che non includono materiali 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 in contentAllineament. (I2c957)
  • i modificatori offsetPx sono stati rinominati in offset. Ora utilizzano i parametri lambda anziché State. (Ic3021, b/173594846).
  • Sono stati aggiunti WindowManager.isWindowFocused per controllare se la finestra host è in stato attivo e un WindowFocus rispettanor che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874).
  • Parametro resetInput aggiunto a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • API TextFieldValue aggiornata
    • reso di sola lettura TextFieldValue.composition
    • viene generata un'eccezione rimossa per l'intervallo di selezione non valido (I4a675, b/172239032)
  • Gli Ambient obsoleti hanno come suffisso il nome Ambient e sono stati sostituiti con nuove proprietà con prefisso Ambient, in base ad altre linee guida relative all'API Ambient e Compose. (I33440)
  • Aggiunto wrapper per il carattere tipo di Android. Puoi caricare un tipo di carattere Android tramite la funzione typeface, ad esempio typeface(Typeface.DEFAULT). Anche typefaceFromFontFamily() è stato rinominato typeface() (I52ab7)
  • È stato aggiunto un controllo lint per verificare che le fabbriche di modificatori utilizzino androidx.compose.ui.composed {} internamente, anziché essere contrassegnate come @Composable. (I3c4bc)
  • È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica del Modificatore siano definite come estensioni su Modificatore, in modo che possano essere concatenate fluentemente. (I07981)
  • L'argomento semantico mergeAllDescendants è stato rinominato mergeDescendants. (Ib6250)
  • Il controllo temporale nei test (TestAnimationClock e relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
  • Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
  • TextUnit.Inherit viene rinominata in TextUnit.Unspecified in linea con le altre unità. (Ifce19).
  • L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
  • foundation:foundation-text modulo è stato unito in foundation:foundation (Idac0f)
  • Depreca luogo(Offset) e placeRELATIVE(Offset). Utilizza invece sovraccarichi con offset int (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 vengono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche alle API

  • Analogamente a Modifier.fillMaxSize[Width|Height], ora sono supportate le frazioni in Modifier.fillParentMaxSize[Width|Height] nell'ambito di LazyColumn/Row (I797e2, b/166586426)
  • KeyboardOptions.toImeOptions rimosso dall'API pubblica. (Ic2e45).
  • Gli elementi di base AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono stati ritirati. Utilizza invece le nuove versioni disponibili nella libreria Material. Per le applicazioni non Material, dovresti invece creare un tuo sistema di progettazione per ambienti a tema che può essere utilizzato nei tuoi componenti. (I74acc, b/172067770)
  • Foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base non limitata che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb).
  • Aggiunti maxLines ai campi di testo (Ib2a5b)
  • Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
  • Aggiunta KeyboardOptions per l'utilizzo nei campi di testo (I9ca32)
  • Aggiunge BasicText come API senza progettazione per il testo, parallela a BasicTextField. (I28268)
  • L'annotazione sperimentaleLazyDsl è stata rimossa. Ora è possibile utilizzare LazyColumn/LazyRow senza aggiungere @OptIn (Idab7a, b/166584730)
  • BaseTextField è stato ritirato. Utilizza BasicTextField. (I896eb)
  • BasicTextField è stato aggiunto in sostituzione di CoreTextField e BaseTextField (Id4cea)
  • Rimuovi LazyColumnItems/LazyRowItems obsoleto (I1d8a8)
  • Gli elementi componibili ritirati per il dimensionamento secondo misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
  • relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per semplificare la specifica delle distanze dai limiti del layout alle basi del testo. (I0440a, b/170633813).
  • Il parametro matchHeightConstraintsFirst è stato aggiunto al modificatore proporzioni, che può essere utilizzato per specificare il modificatore di dimensioni in base ai vincoli di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593).
  • I DpConstraints ritirati sono stati rimossi. (I87884, b/171702471)

Correzioni di bug

  • È stata introdotta la classe in linea ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro e per supportare casi d'uso di scalabilità non uniforme.
    • È stato aggiunto il metodo computeScaleFactor a ContentScale
    • Sono stati aggiunti ContentScale.FillBounds per eseguire una scalabilità non uniforme in modo da estendere i limiti src per occupare completamente la destinazione.
    • Sono stati aggiunti metodi dell'operatore per calcolare i parametri ScaleFactor con i parametri per le dimensioni.
    • (Ic96a6, b/172291582).
  • CaptureToBitmap spostato in CaptureToImage. (I86385)
  • Contrassegna CoreText come @InternalTextApi. Utilizza BasicText. (I6aaeb)
  • Rinomina KeyboardOptions come ImeOptions (I82f36)
  • Spostamento di KeyboardType e ImeAction in KeyboardOptions (I910ce)
  • CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza invece BasicTextField (Ie2469)
  • L'annotazione sperimentaleSubcomposeLayoutApi è stata rimossa. Ora è possibile utilizzare SubcomposeLayout senza aggiungere @OptIn (I708ad)
  • Introduci il modulo ui-test-junit4 (Ib91f8)
  • API Icona aggiornata in modo da acquisire Color.Non specificato come possibile colore di tinta che consente di disegnare l'asset o il disegno fornito senza ColorFilter. In precedenza, tenta di ignorare la colorazione con Colore.Non specificato potrebbe applicare un colore trasparente alla fine senza alcun rendering. (I049e2, b/171624632).
  • MeasureResult è stato rimosso da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424).
  • androidx.ui.test spostato in androidx.compose.ui.test (I9ffdb)
  • FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
  • Aggiunto SelectionContainer senza il callback (Ibfadb)
  • Aggiungi test per le posizioni di SelectionHandles in SelectionContainer. (Ie93db)
  • Aggiunta l'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 vengono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche alle API

  • Il dominio androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Puoi anche usare il componente Immagine / Modifier.paint() con un pittore se non vuoi usare la libreria Material. (I9f622).
  • Aggiunto lo stato di interazione a Modifier.scrollable, ScorribileColumn e LazyColumnFor (I81566, b/169509805)
  • allineareByBaseline è stato aggiunto a RowScope e allineaWithSiblings è stato rinominato in allineatoBy (I06503, b/170628732)
  • Box è stato impostato come funzione in linea. (Ibce0c, b/155056091).
  • Aggiunto maxLines a CoreTextField (Ibee58, b/143687793)
  • È stato aggiunto il softwrap a CoreTextField. (I21a4b).

Correzioni di bug

  • Ritira VectorPainter in favore di promemoria per ricordareVectorPainter per indicare meglio che l'API componibile sfrutta internamente la funzionalità "ricorda" di rendere i dati persistenti in più composizioni. (Ifda43)
  • Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
  • Aggiunta dell'opzione per la tastiera a riga singola a CoreTextField (I72e6d)
  • L'API Radius è stata rinominata CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. È stata aggiornata la documentazione per indicare che i raggi degli angoli negativi sono fissati a zero. (I130c7, b/168762961).
  • Aggiungi la possibilità di specificare le informazioni sullo ispettore nel modificatore composto (Idee08, b/163494569)
  • Aggiunta l'opzione IME KeyboardCapitalization (I8ac38)
  • Correggi la posizione della maniglia RTL. (I6e1e0).
  • Modifica che provoca un errore: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che può essere modificato negli eventi puntatore sono i dati relativi al consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora è sufficiente modificare i dati di consumo degli eventi PointerEvents trasmessi. (I6acd0).
  • Aggiunta dell'opzione SelectAll 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 vengono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Modifiche alle API

  • CoreTextField ora supporta la funzionalità cursore (Id23aa)
  • Depreca le API contentColor() e currentTextStyle() e le sostituisce rispettivamente con gli ambienti AmbientContentColor e AmbientTextStyle. Puoi accedere al valore corrente usando .current nella proprietà Ambient, come con qualsiasi altro Ambient. Questa modifica è stata introdotta per garantire la coerenza e evitare di avere più modi per ottenere lo stesso risultato. Inoltre, rinomina alcune proprietà Ambient 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 sentinel per le classi in linea, cambia il nome Color.Unset.Unset.Unspecified per la coerenza con altre classi in linea (I97611, b/169797763)
  • Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Viene introdotto TextOverflow.None. Quando l'overflow è impostato su Nessuno, il testo non gestirà più l'overflow e ne segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170).
  • I parametri non specificati sono stati aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per confrontarle con le dimensioni.Non specificate e quelle non finite. (I95a7e).
  • Aggiunto il modulo Scrittura per le pagine e l'integrazione del paging (Ib85da)
  • Modifica LazyListScope per ricevere valori nullable (I1765b)
  • OnPositionedModifier è stata rinominata OnGloballyPositionedModifier e onPositioned() è stata rinominata onGloballyPositioned() (I587e8, b/169083903).
  • Esempi aggiunti per LazyColumn/Row (Idc16d)
  • Correzione degli elementi e dei metodi itemsIndexed per consentire l'uso di emptyList (I06647)
  • Aggiungi una DSL per specificare le informazioni del controllore (Ic9a22)
  • Sposta Premi a lungo nel testo. (Iff2bc).
  • Disabilita selezione nel testo e una demo. (Ie7e97)
  • È supportato la conversione da AnnotatedString a SpannableString per l'accessibilità. (Ief907)
  • PointerInputFilter.onPointerInput(...) rimosso. Al suo posto, deve essere utilizzato PointerInputFilter.onPointerEvent(...). (I6f04a).

Versione 1.0.0-alpha04

1° ottobre 2020

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

Modifiche alle API

  • Lo stack è stato rinominato in Box. Il formato Foundation.Box precedentemente esistente verrà ritirato e sostituito con il nuovo Box in Composer.foundation.layout. Il comportamento del nuovo Box è quello di impilare gli elementi secondari uno sopra un altro quando sono presenti più elementi secondari. Questo è diverso dal precedente riquadro, che si comportava in modo simile a quello di una colonna. (I94893, b/167680279)
  • I parametri per la decorazione della casella sono stati ritirati. Se vuoi includere decorazioni/spaziature sulla scatola, usa i modificatori (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279)
  • Aggiungi una nuova classe LazyListState. Ciò consente di osservare e controllare la posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro di stato del componente. Attualmente, il primo elemento visibile e gli offset possono essere osservati in questa versione iniziale. (Ic7cb7, b/159307669).
  • La posizione dell'elenco lento e l'offset di scorrimento vengono ora salvati e ripristinati nella ricreazione attività (Ie045f, b/166589058)
  • Aggiungi un'azione di semantica dei clic lunghi (I6281b, b/156468846)
  • Utilità Mutatormux aggiunta per mantenere un singolo mutatore di stato condiviso nel tempo e annullare mutatori in conflitto in base alla priorità (I3f975)
  • rootAnimationClockIndustry, TransactionsEnabled, blinkingCursorEnabled e textInputServiceService con @VisibileForTesting con annotazioni, impostali come API interna e nascondi il relativo file kdoc (I554eb, b/168308412)
  • Parametro inlineContent rimosso dal testo con input di stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
  • Le API Arrangement personalizzate ritirate sono state rimosse. (Ic576d, b/168297922, b/168297923).
  • Il parametro unbounded è stato aggiunto ai modificatori wrapContentSize, che consentono di misurare l'elemento del layout con vincoli massimi infiniti. (I77951, b/158559319)
  • Abbiamo impedito le importazioni statiche dei contenuti degli ambiti del layout (ad es. allineatoWithSiblings in RowScope). Usa invece l'alternativa con ambito esplicito: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Correzioni di bug

  • Aggiornamento di molte API grafiche.
    • Le API di scala e trasformazione della rotazione sono state aggiornate per utilizzare un singolo parametro di offset per rappresentare la coordinata pivot invece di parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Rimossi i metodi Rect.expandToInclude e Rect.join
    • La documentazione relativa al raggio è stata aggiornata per indicare ovale oltre che ellittica
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius in linea non deve essere chiamato direttamente, ma dovrebbe invece essere creato un'istanza degli oggetti Raggio tramite i rispettivi costruttori delle funzioni
    • Rimosse le API RoundRect per eseguire query su topRight, bottomRight, belowCenter e così via.
    • Rect.shift obsoleto a favore di Rect.translate
    • Rimosse le API RoundRect.grow e Rect.shrink
    • RoundRect.outerRect rinominato in Rect.boundingRect
    • Metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium rimossi
    • Rinominato RoundRect.longestSide in RoundRect.maxDimensione
    • RoundRect.shortestSide rinominato in RoundRect.minDimensione
    • RoundRect.center modificato in una proprietà anziché una funzione
    • Il costruttore RoundRect è stato aggiornato per utilizzare le proprietà Raggio anziché i parametri singoli per i valori del raggio x/y
    • Rimosse le API per le dimensioni che presupponevano che fosse un rettangolo con origine pari a 0,0
    • È stata aggiunta un'API di distruzione a Radius
    • Migrato varie funzioni di estensione RoundRect in proprietà in proprietà
    • (I8f5c7, b/168762961).
  • Ottimizzazioni delle prestazioni per LazyColumnFor/LazyRowPer lo scorrimento evitando ricomposizioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
  • È stato risolto l'arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la modifica degli elementi e dopo aver implementato lo scorrimento automatico verso l'alto quando l'elemento precedentemente visibile era stato rimosso, in modo da non mostrare più spazi vuoti alla fine (I220ab, b/161480164, b/167855468)
  • La nidificazione di contenitori scorrevoli nella stessa direzione, come ScorribileContainer e LazyColumnFor, non è più consentita. Non era mai supportato e stava rompendo l'avventura e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
  • Aggiornamento di molte API grafiche.
    • Sono state aggiornate le API DrawScope con metodi di trasformazione basati sull'ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo che il callback è stato richiamato.
    • La documentazione di clipPath è stata aggiornata per fare riferimento al percorso invece che al rettangolo arrotondato
    • Spaziatura fissa nella documentazione per il parametro corretto in clipPath
    • Rinominato DrawScope.drawCanvas inDrawScope.drawCanvas e rimosso il parametro di dimensione
    • Parametri dx/dy rinominati nel metodo inset in orizzontale e verticale
    • Aggiunto un sovraccarico che fornisce lo stesso valore di inserimento a tutti e 4 i limiti
    • È stata rimossa la documentazione sul metodo inset che indica che il riquadro sarebbe applicato a tutti e 4 i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri rettangolari in modo che corrispondano allo stile kdoc
    • Rimossi Rect.join e Rect.expandToInclude
    • Sovraccarico creato per Rect.translate(offset) e deprecato Rect.shift
    • (If086a, b/167737376).
  • aggiungere AccessibilityScorriState alle proprietà semantiche. (Ifeda9).
  • Rendi TextRange in linea per evitare la creazione di oggetti. (Id034b)
  • ParagraphConstraints rimosso. Ora la larghezza viene 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 vengono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche alle API

  • InnerPadding è stato rinominato in PaddingValues. (I195f1, b/167389171).
  • Gli usi della gravità sono stati costantemente rinominati per allineare o allineare nelle API di layout. (I2421a, b/164077038).
  • È stato aggiunto un parametro di allineamento allo stack, che consente di specificare l'allineamento predefinito per tutti gli elementi secondari dello stack. (Ie80ca, b/164085265).

Correzioni di bug

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

Versione 1.0.0-alpha02

2 settembre 2020

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

Correzioni di bug

  • TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
  • È stato aggiunto ManualFrameClock.hasAwaiters per vedere se c'è 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 supervisore dell'interfaccia utente principale nei tuoi test.

    Ecco alcuni esempi:

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

    (I0a85b, b/161247083).

Versione 1.0.0-alpha01

26 agosto 2020

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

Versione 0.1.0-dev

Versione 0.1.0-dev17

19 agosto 2020

androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 e androidx.compose.foundation:foundation-text:0.1.0-dev17 vengono rilasciati. La versione 0.1.0-dev17 contiene questi commit.

Modifiche alle API

  • È stata aggiunta la disposizione SpacedBy per Riga e Colonna, in modo da attivare gli elementi secondari del layout di posizionamento con una spaziatura fissa. È stato aggiunto anche il layout allineato, per consentire il posizionamento degli elementi secondari del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I precedenti metodi Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange sono stati ritirati e la scrittura di arrangiamenti personalizzati non sarà più supportata in futuro. (I6733d, b/161985975)
  • L'offset è diventato una classe in linea (Iaec70)
  • Rimossi i callback onFocusChanged da TextField. Al suo posto utilizza Modifier.focusObservationr. (I51089, b/161297615)
  • Modifier.drawBorder è stato ritirato. Usa invece Modifier.Border. La classe dei dati di confine è stata sostituita da BorderStroke (I4257d, b/158160576)
  • VerticalScorrier e HorizontalSlideer sono stati rimossi. Utilizza invece SlideableColumn/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 l'aggiunta corretta di questi modificatori per gli elementi che non sono elementi secondari diretti di LazyColumnFor (Ifa78d)
  • aggiunta dell'implementazione LazyColumn/LazyRow come DSL (I93cc6)
  • I vincoli sono ora una classe integrata (I88736)
  • È stata aggiunta la possibilità di ridimensionare un layout per una frazione dello spazio disponibile, utilizzando i modificatori FillMaxLarghezza, FillMaxHeight e FillMaxSize. (I945bb, b/161562591).

Correzioni di bug

  • È stato aggiunto un parametro di modifica a SelectionContainer (I4aada, b/161487952)
  • È stato aggiunto il comando lambda mergePolicy a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per l'unione della semantica mergeAllDescendants. Il criterio predefinito prevede l'utilizzo del valore padre se già presente, altrimenti il valore figlio. (Iaf6c4, b/161979921).
  • PlacementScope.placeAbsolute() è stato rinominato in PlacementScope.place(), mentre il precedente PlacementScope.place() è stato rinominato in PlacementScope.placeRelative(). Di conseguenza, il metodo PlacementScope.place() non esegue più automaticamente il mirroring della posizione in contesti da destra a sinistra. Se vuoi, utilizza PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Rimosso il componente FilledTextField obsoleto. Al suo posto, utilizza TextField per ottenere l'implementazione di Material Design del campo di testo compilato. (I5e889).
  • È stato aggiunto il parametro backgroundColor a LinearProgressIndicator e è stato rimosso la spaziatura interna interna da CircolareProgressIndicator. Sono stati aggiunti nuovi valori ProgressIndicatorCosts.DefaultProgressAnimationSpec che possono essere utilizzati come AnimationSpec predefinita durante l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677)
  • Per chiarezza, l'elemento componibile state { ... } è stato ritirato a favore di chiamate esplicite a remember { mutableStateOf(...) }. In questo modo si riduce la superficie API complessiva e il numero di concetti per la gestione dello stato e corrisponde al pattern by mutableStateOf() per la delega delle proprietà di classe. (Ia5727)
  • Ridenominazione di RRect in RoundRect per adattarsi meglio ai pattern di denominazione della composizione Creazione di costruttori di funzioni simili a RRect e costruttori di funzioni RRect deprecati (I5d325)
  • Rimosso onChildPositioned e OnChildPositionedModifier. Gli sviluppatori dovrebbero usare onPositioned e OnPositionedModifier nel layout secondario. (I4522e, b/162109766).
  • IntSize ora è una classe in linea (I2bf42)
  • Premi a lungo l'area vuota per modificarla. (Ib1e5b).
  • Nascondi FloatingToolbar dopo aver toccato il testo. (If4525)
  • Nascondi FloatingToolbar durante l'aggiornamento della selezione. (I8444c)
  • Deseleziona quando sfoca. (I781a2)

Versione 0.1.0-dev16

5 agosto 2020

androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 e androidx.compose.foundation:foundation-text:0.1.0-dev16 vengono rilasciati. La versione 0.1.0-dev16 contiene questi commit.

Modifiche alle API

  • LazyItemScope è stato aggiunto per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima dell'elemento, che risolve il caso d'uso in cui l'elemento deve riempire l'area visibile e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854).
  • Sposta la finestra di dialogo nell'UI (I47fa6)
  • Sono state aggiunte LazyColumnForIndexed/LazyRowForIndexed: versioni di LazyColumnFor/LazyRowFor che fornisce sia indice che elemento nell'elementoCallback. È utile quando, oltre a un elemento corrente, hai bisogno di conoscere un indice corrente. (I65ff3)
  • Modifier.deternimateProgress è stato rinominato Modifier.progressSemantics (I9c0b4)
  • LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stata rinominata in LazyRowFor (I84f84)
  • Aggiungi alcuni segni/annotazioni come motivo di best practice. (I66b20)
  • Il pacchetto Foundation.shape.corner è appiattito a Foundation.share (I46491, b/161887429)
  • Aggiunto il parametro di gravità сrossaxis per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supporta il comportamento a capo dei contenuti. (Ib39fc)
  • ZoomableState è stato rinominato ZoomableController. È stato aggiunto il supporto delle curve personalizzate per smoothScale. Sono state aggiunte le funzionalità enabled e onZoomStarted (If8b8f)
  • Material FilledTextField è stato rinominato TextField e il Foundational TextField è stato rinominato BaseTextField per rendere più semplice l'individuazione e l'utilizzo dell'API desiderata (Ia6242, b/155482676)
  • L'elenco AdapterList deprecato in precedenza è stato rimosso. Utilizza LazyColumnItems (I12b9b)
  • Modifier.drawBackground è stato rinominato Modifier.background (I13677)
  • La versione DSL precedente di ConstraintLayout è stata rimossa. ConstraintSet2 è stato rinominato ConstraintSet. (If58d1, b/162450908)
  • Sono stati aggiunti Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). A differenza dei modificatori di offset, i modificatori di offset assoluto non eseguono il mirroring automatico nel contesto da destra a sinistra (I3aa21)
  • Row e Column sono ora funzioni incorporate per ridurre in modo significativo l'overhead associato al loro utilizzo. (I75c10)

Correzioni di bug

  • Risolvi i problemi generici dell'API (I077bc)
    1. Rimuovi l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset per avere una superficie API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
    4. Spostamento del metodo nativeCanvas dall'interfaccia Canvas per supportare i consumatori nella creazione
    5. È stata creata la classe SvuotaCanvas dello stub per refactoring DrawScope in modo che sia un parametro non null anziché lateinit e garantire che il campo non sia nullo
    6. Enum ClipOp rinominate in Pascal Case
    7. Le enumerazioni del campo Qualità dei filtri sono state rinominate in Pascal Case
    8. Enumerazioni Strokejoin rinominate in Pascal Case
    9. Le enumerazioni di PointMode sono state rinominate in Pascal Case
    10. Le enumerazioni PaintingStyle rinominate in Pascal Case sono state rinominate
    11. Le enumerazioni PathFillType rinominate in Pascal Case sono state rinominate
    12. Le enumerazioni di StrokeCap rinominate in Pascal Case sono state rinominate
    13. L'implementazione di DrawCache è stata aggiornata per non usare più i parametri lateinit
    14. Aggiornamento di DrawScope per non usare più la delega lazy per i parametri interni di FillPaint e StrikePaint
    15. Aggiornata l'immagine componibile per evitare l'uso di Box con meno overhead
    16. Classe Outline aggiornata in modo che abbia annotazioni @Immutable
    17. PathNode aggiornato per avere annotazioni @Immutable per ogni istruzione del percorso
    18. La sottocomposizione vettoriale è stata aggiornata per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi del costruttore companion rettangoli deprecati a favore di costruttori di funzioni
    20. Sono stati aggiornati i costruttori di funzioni e le classi Brush con le API @Immutable e @Stable
    21. È stata aggiornata l'enumerazione di VertexMode in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto nel dipinto se sono
    23. Dimensione aggiornata per aggiungere l'API distruttiva, rinomina UnspecifiedSize in Non specificato e rimosso i metodi inutilizzati
  • È stato aggiunto MonotonicFrameAnimationClock che consente di utilizzare 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 MonotonicFrameClock di ManualAnimationClock è ora ManualFrameClock. (I111c7, b/161247083)

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

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

  • Le API per il supporto 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. Usa invece Modifier.then. "Quindi" ha un segnale di ordinamento più forte, mentre vieta di digitare Modifier.padding().background() + anotherModifier, il che spezza la catena e più difficile da leggere (Iedd58, b/161529964)

  • Aggiunti isFocused() e isNotFocused() SemanticsMatcher. (I0b760)

  • RemeasurementModifier è stato aggiunto. Consente agli utenti di rimisurare il layout in modo sincrono. In generale, non è mai necessario poiché la nuova misurazione/il relayout avviene automaticamente, ma li utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)

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

  • L'API OnChildPositioned è stata ritirata. Usa invece OnPositioned per il riquadro secondario. (I87f95, b/162109766).

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

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

Versione 0.1.0-dev15

22 luglio 2020

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 e androidx.compose.foundation:foundation-text:0.1.0-dev15 vengono rilasciati. La versione 0.1.0-dev15 contiene questi commit.

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

Aggiornamento delle dipendenze

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

Modifiche alle API

  • Analogamente al nuovo parametro in scrollableColumn/scrollableRow LazyColumnItems/LazyRowItems ora dispone anche il parametro contentPadding che consente di aggiungere una spaziatura interna per i contenuti dopo l'eliminazione del tag, cosa che non è possibile solo tramite un parametro di modifica. Inoltre, consente di aggiungere una spaziatura solo prima del primo/dopo l'ultimo. (Ibc24e).
  • Callback onFocusChange nei campi di testo rinominati onFocusChanged (Ida4a1)
  • VerticalScorrier e HoriziontalScorrier sono stati ritirati. Utilizza scrollableColumn e scrollableRow per usufruire di un'esperienza integrata con il comportamento e i parametri di colonne/riga oppure con Modifier.verticalscroll e Modifier.Horizontalscroll per il tuo elemento. Allo stesso modo, scrollerPosition è stato ritirato a favore di scrollState" (I400ce, b/157225838, b/149460415, b/154105299)
  • Le API Modifier.draggable e Modifier.scrollable sono state rielaborate. È stata rimossa la direzione di trascinamento a favore dell'orientamento. Lo stato richiesto per l'opzione Scorribile è stato semplificato. scrollableState è stato rinominato in scrollableController (Iab63c, b/149460415)
  • Le proprietà della semantica a valore singolo ora utilizzano uno stile di chiamata. Ad esempio, l'attributo 'semantics {hidden = true }" è ora scritto come: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412).
  • Le dimensioni degli angoli utilizzate da RoundedCornerShape e CutCornerShape possono ora essere superiori al 50% (Id2340, b/160400213)
  • È stato modificato il parametro predefinito ContentScale per l'immagine componibile da Inside a Fit. Questo avviene per ottenere un comportamento che faccia lo scale up della pittura sottostante se la dimensione del layout è superiore a quella intrinseca del pittore, mantenendo al contempo le proporzioni. Questo comportamento corrisponde meglio alle aspettative di fornire dimensioni fisse all'immagine, senza influire sul comportamento predefinito, se per calcolare le dimensioni dell'elemento componibile viene utilizzata solo la dimensione intrinseca. (I40ae3, b/159838006).
  • Usa AnimationSpec invece di AnimationBuilder nelle API di primo livello per chiarire il concetto di specifica dell'animazione statica -Migliora la transizione DSL rimuovendo il requisito lambda per creare AnimationSpecs come tween, spring. ma prendono direttamente i parametri del costruttore. - Migliorare la facilità d'uso complessiva di AnimationSpec aprendo i costruttori invece di affidarsi ai costruttori -Modificare la durata e il ritardo di KeyFrames e Tween to Int. Ciò consente di eliminare cast di tipi non necessari e il sovraccarico del metodo (per il supporto sia di Long che di Int). (Ica0b4).
  • L'opzione Cliccabile è stata rimossa. Usa Modifier.clickable (I84bdf)
  • Aggiunto LazyRowItems, analogico a scorrimento orizzontale di LazyColumnItems (Ibbcf7)
  • Introduzione delle API di animazione stateless di basso livello. Queste API (I63bf7)
  • androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i componibili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • È stato sostituito l'utilizzo di IntPx con l'opzione IntPxPosition sostituita con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44).
  • androidx.ui.foundation.shape.RettangoloShape rimosso; usa androidx.ui.graphics.RettangoloShape (I94939, b/154507984)
  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe size anziché di PxSize. Ciò offre i vantaggi di una classe in linea di utilizzare una classe long per comprimere 2 valori in virgola mobile per rappresentare la larghezza e l'altezza rappresentate come valori in virgola mobile. (Ic0191)
  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché di PxPosition. Ciò offre i vantaggi di una classe in linea di sfruttare una long per comprimere 2 valori in virgola mobile per rappresentare gli offset x e y rappresentati come valori in virgola mobile. (I3ad98)
  • Aggiunta di Modifier.zoomable per la funzionalità Pizzica per lo zoom (Id5d63)
  • Il componente attivabile è deprecato. Utilizza Modifier.toggleable (I35220, b/157642842)
  • L'API MutuallyEsclusivaSetItem è stata ritirata. Utilizza Modifier.selectable. (I02b47, b/157642842).
  • Il tag TestTag è stato ritirato. Al suo posto, utilizza Modifier.testTag. (If5110, b/157173105)
  • Aggiunge il parametro fontWeight a Text, che non era stato aggiunto per errore in precedenza (I56937)
  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I19d02)
  • VerticalScorrier ora fornisce Colonna fin dall'inizio. HorizontalSlideer ora offre Row per impostazione predefinita. (Ieca5d, b/157020670).
  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (Iede0b)
  • Modifier.indication è stata aggiunta al pacchetto di base. Utilizzala per mostrare indicazioni di pressione/trascina o altre indicazioni sugli elementi con cui è possibile interagire personalizzati (I8425f, b/155287131).
  • VerticalScorrier e Horizontalscroller ora supportano lo scorrimento invertito. IsReversed è impostato su scrollerPosition (I953bd)
  • Supporto dell'aggiunta di elementi componibili al layout di testo. (I1373c)
  • ha consolidato le implementazioni di CanvasScope, quindi ora sono disponibili solo DrawScope e ContentDrawScope rinominata CanvasScope in DrawScope. Aggiornamento di DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. La sottoclasse DrawScope eliminata in ContentDrawScope Painter e PainterModifier è stata aggiornata in modo da non mantenere più una proprietà RTL, in quanto DrawScope lo fornisce già senza fornirla manualmente (I1798e)
  • È stata rimossa l'API DrawBackground deprecata a favore delle API di estensione DrawBackground su Modifier. Il refactoring delle implementazioni di disegnoBackground di colori, pennelli e colori per ridurre i percorsi di codice e rimuovere il requisito della creazione di Modificatore come parte della composizione. (I0343a)
  • Sono state aggiornate le API di composizione di livello superiore che espongono CanvasScope per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che devono comunque accedere a Canvas possono utilizzare il metodo dell'estensione disegnoCanvas, che offre un callback per inviare i comandi di disegno con Canvas sottostante. (I80afd)
  • HorizontalScorrier e VerticalScorrier non ripristina la posizione di scorrimento utilizzando lo stato dell'istanza salvata. (Ia0fae, b/155075048).
  • FocusManagerAmbient è stato rimosso. Utilizza FocusModifier.requestFocus per ottenere lo stato attivo. (Ic4826)
  • Il layout della tabella è stato rimosso temporaneamente finché non lo renderemo di nuovo disponibile con un'API aggiornata. (Id88a7)
  • Creazione dell'API CanvasScope che esegue il wrapping di un oggetto Canvas per esporre una superficie API di disegno dichiarativo e stateless. Le trasformazioni sono contenute all'interno del loro ambito di ricezione e le informazioni sulle dimensioni hanno anche l'ambito dei corrispondenti limiti inseriti. Non richiede che un consumer mantenga il proprio oggetto stato Paint per configurare le operazioni di disegno.

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

  • L'elemento ColoredRect è stato rimosso. Casella utente con modificatore disegnoBackground (I983c7, b/152753731)

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

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

  • TextFieldValue utilizzato con TextField ora può essere sopravvissuto alla ricreazione dell'attività quando utilizzato nel seguente modo: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

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

  • Il parametro CoreTextField/TextField focusIdentifier è stato sostituito con FocusNode per l'integrazione con il sottosistema di focus. (I7ea48).

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

  • Aggiunte InteractionState e Interaction, per semplificare la creazione di componenti che reagiscono ai cambiamenti dello stato dell'UI, come la pressione e il trascinamento (Icfe25, b/152525426)

  • RettangoloShape spostato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984).

  • Sostituiti tutti gli utilizzi di colori con valori null nell'API con valori non null e utilizza Color.Unset anziché null (Iabaa7)

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

  • Ridenominazione di ScaleFit a ContentScale. Spostato ContentScale da interfaccia grafica a modulo ui-core per risiedere nello stesso modulo dell'API Allineamento. Rinominato FillMaxDimensione in Ritaglia Rinominato FillMinDimensione per Adatta Rinominato Adatta a interno per una migliore corrispondenza Equivalente ImageView.ScaleType È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e Allineamento.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato conline.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER.

  • Rimuove ProvideContentColor, ma è sufficiente utilizzare ContentColorAmbient direttamente con Providers (Iee942)

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

  • Migliora l'API DrawModifier:

    • È stato impostato l'ambito del destinatario perDraw() ContentDrawScope
    • Rimossi tutti i parametri in disegno()
    • DrawScope ha la stessa interfaccia del precedente CanvasScope
    • ContentDrawScope ha il metodoDrawContent() (Ibaced, b/152919067)
  • L'API ColoredRect è stata ritirata. Usa invece il criterio Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731).

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

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

  • L'elemento trascinabile è stato spostato nel modificatore (Id9b16, b/151959544)

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

  • aggiungi il parametro enabled a Casella di controllo, Interruttore e Attivabile (I41c16)

  • Onde è ora un modificatore. Anche se l'opzione Cliccabile non è stata ancora convertita, l'utilizzo consigliato è Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • È stata aggiunta l'API VectorPainter per sostituire l'API di sottocomposizione esistente per le grafiche vettoriali. Il risultato della sottocomposizione è un oggetto VectorPainter anziché un DrawModifier. Ritirati dei precedenti componibili DrawVector a favore di VectorPainter.

    API Image(Painter) rinominata in PaintBox(Painter) Created Vector composable che si comporta come l'immagine componibile tranne con un VectorAsset invece di un ImageAsset (I9af9a, b/149030271)

  • Creazione dell'immagine componibile per gestire dimensioni/layout oltre a disegnare un determinato asset immagine sullo schermo. Questo componibile supporta anche il disegno di qualsiasi istanza di Painter arbitraria che rispetti le sue dimensioni intrinseche, oltre a supportare una determinata dimensione fissa o minima (Ibcc8f)

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

  • È stata rinominata l'immagine in ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e l'imminente componibile componibile 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 app Android tradizionali con il framework di scrittura. (Id5bbd)

  • Il componibile DrawImage è stato rimosso. Utilizza ImagePainter per disegnare immagini su layout esistenti oppure SimpleImage per introdurre un'immagine che occupa spazio (I595e1, b/149827027)

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

  • Aggiunti Icon, IconButton e IconToggleButton, rimuovendo AppBarIcon. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, che ora avranno il touch target corretto. Consulta gli esempi per informazioni sull'utilizzo e vedi le icone per le icone material fornite che puoi utilizzare direttamente con questi componenti. (I96849)

  • L'elemento componibile DrawShape è stato rimosso. Usa il modificatore DrawBackground. (I7ceb2).

  • Aggiunto AdapterList, un componente di elenco a scorrimento che solo compone e dispone gli elementi visibili. I problemi attualmente noti includono il fatto che l'estensione è solo verticale e non gestisce completamente tutti i casi di modifiche agli elementi secondari. (Ib351b)

  • È stato aggiunto il componente Scorrevole, che consente la creazione di scorrimenti/elenchi personalizzati (I5fd37)

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

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

  • Componente Canvas aggiunto. Questo componibile occupa alcune dimensioni (fornite dall'utente) e ti consente di disegnare utilizzando CanvasScope (I0d622)

  • rinomina il modificatore Border in DrawBorder (I8ffcc)

  • Componente Box aggiunto per combinare layout e funzionalità di disegno comuni. (I6e2a7).

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

  • DrawBorder sostituito a favore del modificatore di bordo (Id335a)

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

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

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

  • Risolto il supporto RTL in ConstraintLayout. Sono state aggiunte le API inconsapevoli RTL. (I3b1c7).

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

  • È stata aggiunta l'annotazione @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn ora sono associati a questi tag per contrassegnare le loro API che cambieranno. (I412a8)

  • Aggiunta di Modifier.padding(InnerPadding) (I94985, b/157133803)

  • Rimosso RowAllinea, ColumnAllinea in Riga e Colonna rimossi. (If60d4, b/155858731).

  • Rimosso LayoutTag() deprecato. Usa invece Modifier.tag(). Rimosso il metodo Modifier.matchParent() deprecato. Usa invece Modifier.matchParentSize(). (If8044)

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

  • L'elemento componibile allineatoLineOffset è deprecato. Usa invece il modificatore relativePaddingFrom(). L'elemento componibile CenterAllineamentLine è stato rimosso. (I60107)

  • È stato aggiunto il modificatore di layout defaultMinSizeConstraints, che imposta i vincoli di dimensione nel layout aggregato 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 container è stato rimosso. Utilizza Box invece (Ibbc2b, b/151407926)

  • Sono stati rimossi i modificatori di larghezza/altezza/dimensione del layout ritirati. (Ib0bc1).

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

  • Aggiunto il modificatore di spaziatura interna simmetrica. (I39840)

  • È stato rimosso il modificatore di LayoutAspetto obsoleto. (I65a74)

  • Sono stati rimossi i modificatori LayoutAllineati deprecati. (I10877)

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

  • Sono stati aggiunti i parametri verticalGravity e HorizontalGravity rispettivamente a Row e Column. (I7dc5a)

  • Sono stati aggiornati i valori di wrapContentLarghezza e wrapContentAltezza per l'allineamento verticale o orizzontale, anziché dell'allineamento. Il modificatore di gravità è stato aggiornato in modo da accettare l'allineamento verticale o orizzontale. Righe, colonne e stack sono stati aggiornati per supportare gli allineamenti continui personalizzati. (Ib0728)

  • Allineamento reso istantaneo con valori arbitrari. Aggiunta degli allineamenti 1D. (Ia0c05).

  • La denominazione di EdgeInset è stata rinominata InnerPadding. Il parametro innerPadding di Material Buttons è stato rinominato in paddding. (I66165)

  • allineaToSiblings ora accetta un valore Misurato anziché un valore Posizionabile. (I5788d)

  • Sono stati aggiunti modificatori per il dimensionamento rispetto alle misurazioni intrinseche e hanno ritirato i componenti destinati a questo scopo. (I8295d)

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

  • Sono stati rimossi gli elementi componibili Wrap e Center deprecati. (I29e23).

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

  • I membri RowScope e ColumnScope ora sono accessibili all'esterno di Row e Column. (I3a641)

  • Il container è stato deprecato. Utilizza Box. (I675ce, b/151407926)

  • Aggiunto il modificatore LayoutOffset per la compensazione della posizione del layout (I0b8a3)

  • Supporto iniziale per RTL nel layout di Compose (Ia5519)

  • Aggiornamento di LayoutAllinea per non occupare più lo spazio disponibile (I2b14f)

  • Rimosso il formato componibile Proporzioni a favore del modificatore. Eliminati elementi componibili FlexColumn, FlexRow e modificatore di spaziatura (Iec8a7) eliminati

  • Rimosso il modificatore layoutInflessibile per riga e colonna (I0d820)

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

  • Implementa LongPressAndTrascina per la selezione di campi di testo. (I17919)

Correzioni di bug

  • FocusModifier è stato ritirato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObservationr. FocusState e FocusDetailsState sono deprecati 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 onNodeXYZ. Tutte le API doXYZ sono state rinominate performXYZ. (I7f164).
  • Rimuove il file Modifier.ripple deprecato in precedenza. Clickable ora utilizza Ripple come indicazione predefinita (se hai impostato un valore MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare l'indicatore cliccabile e ottenere senza costi l'indicazione dell'ondulazione. Se hai bisogno di personalizzare il parametro di colore / dimensione / parametro per l'onda, puoi creare manualmente un valore RippleIndication e passarlo a cliccabile come parametro di indicazione. (I663b2, b/155375067)
  • Rimosse le API obsolete per i test delle dimensioni. (Iba0a0).
  • API sperimentale Made LayoutNode (I4f2e9)
  • La versione 1 del blocco dell'orientamento di scorrimento è implementata in Compose. (I1ce7a, b/150289741).
  • Popup, finestre di dialogo e menu ora ereditano il tema contestuale del MaterialTheme (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 assolutaArrangement: 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 di compilazione di Composer intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se esistesse un (I5205a, b/158123804)
  • Aggiungi l'elemento componibile viewModel() per creare o ottenere un ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)
  • La classe Raggio è stata sottoposta a refactoring in modo che sia in linea. Sono stati rimossi i metodi di creazione companion a favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio sull'asse y corrisponda a quello del parametro obbligatorio del raggio dell'asse x.

    È stato aggiornato DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori mobili separati per il raggio lungo l'asse x e y (I46d1b).

  • È stato sostituito l'uso della classe Px in varie classi di composizione nell'ambito dell'ampio sforzo di refactoring, che prevedeva l'uso solo di DP e di tipi primitivi per i parametri pixel. Classe Px eliminata completamente (I3ff33)

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I086f4)

  • Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su DP e tipi primitivi per i parametri pixel (Id3434)

  • Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I97a5a)

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

  • I gesti parziali non richiedono più il trasferimento di un TrackingToken (Id7ae5)

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I57bff)

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

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

  • È stata aggiornata l'API Guidelines e aggiunto supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto Rtl) (I38cd3)

  • È possibile misurare gli elementi secondari Layout e LayoutModifier con una direzione del layout diversa. (Ibd731)

  • Introduci un parametro rettangolo facoltativo aggiuntivo a ImagePainter per supportare il disegno di una sottosezione dell'asset ImageAsset sottostante (I0ea9e)

  • Risolto il problema di arresto anomalo in AdapterList durante la rimozione degli elementi (Ic64b0, b/153195921)

  • Abbiamo cambiato il modo in cui misuriamo il primo layout che inserisci nel blocco activity.setContent { }. In precedenza era costretto a riempire l'intera schermata delle attività, mentre ora si comporta come se il layout fosse stato inserito in uno stack: può essere più piccolo di uno schermo e verrà posizionato nella schermata in alto a sinistra. Se vuoi utilizzare il vecchio comportamento, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714).

  • Il modulo ui-text-compose è stato rinominato ui-text. ui-text ora contiene elementi componibili CoreText e CoreTextField (Ib7d47)

  • il modulo ui-text viene rinominato come ui-text-core (I57dec)

  • Spostato ui-framework/CoreText, componibili CoreTextField in ui-text-compose. Potresti voler includere ui-text-compose nel tuo progetto. (I32042)

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

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

  • DrawlayerModifier e disegno Layer() ora prevedono il valore predefinito di clipToBounds e clipToOutline su false. (I0eb8b, b/152810850).

  • Rinominato LayoutResult in MeasureResult. (Id8c68)

  • Elemento componibile Center deprecato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAllinea.Center o con uno dei componenti componibili Box o Impila con i modificatori adatti applicati (Idf5e0)

  • È stato cambiato il nome LayoutFlessibile in LayoutWeight. Rinominato parametro stretto per riempire. (If4738)

  • DrawVector è stata modificata da una funzione componibile regolare alla restituzione di una funzione di modifica disegnoVector() che disegna il vettore come sfondo di un layout. (I7b8e0).

  • Sostituisci la funzione componibile Clip con il modificatore drawClip(). DrawClipToBounds è un modificatore utile da usare quando devi agganciare i margini del livello con una forma rettangolare. (If28eb).

  • Funzione componibile DrawShadow sostituita con il modificatore DrawShadow(). Le ombre sono ora disegnate come parte del Modificatore di livello. (I0317a)

  • androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable rimosso. È stato ridondante con ComponentiNode. androidx.compose.ViewAdapters è stato rimosso. Non rappresentano più un caso d'uso supportato. Compose.composeInto è stato deprecato. Usa invece setContent o setViewContent. Compose.disposeCompose è stato deprecato. Usa invece il metodo dispose sul Composition restituito da setContent. androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponenteNode#emitInsertAt è stato rinominato in ComponenteNode#insertAt ComponenteNode#emitRemoveAt è stato rinominato in ComponenteNode#removeAt ComponenteNode#emitMode

  • Componibile a capo deprecato. Può essere sostituito con il modificatore LayoutAllinea o con lo stack componibile (Ib237f)

  • La direzione del layout è stata propagata dal nodo del layout principale ai nodi secondari. Modificatore di direzione del layout aggiunto. (I3d955)

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

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

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

  • Classe Valueholder rimossa. Ha riorganizzato le classi AnimatedValue, 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 modello per AnimatedValue, AnimatedFloat e così via.
    • È stato aggiunto un nuovo set di API @Composable leggera per l'animazione dei valori.
    • (I79530)
  • Interruzione delle modifiche all'API Ambient. Per informazioni dettagliate, consulta la documentazione relativa al log e a Ambient<T> (I4c7ee, b/143769776)

  • Le posizioni Int della riga di allineamento restituite da Placeable#get(ExactmentLine) sono ora non null. Se manca la linea di allineamento oggetto della query, verrà restituito Guidelines.Unspecified. (I896c5, b/158134875)

  • Risolto un bug di ConstraintLayout che causava un arresto anomalo nelle ricomposizioni. (Ibee5a, b/158164341).

  • L'API WithConstraints finale lambda è stata modificata. Ora, invece di due parametri, ha un ambito ricevitore che, oltre a vincoli e layoutDirection, fornisce le proprietà minwidth, maxwidth, minHeight e maxHeight in Dp (I91b9a, b/149979702).

  • È stato rinominato LayoutModifier2 in LayoutModifier. (Id29f3)

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

  • LayoutDirectionAmbient è stato ritirato. Per leggere la direzione del layout definita dalle impostazioni internazionali, utilizza linguaLayoutDirection su ConfigurationAmbient (I851b1)

  • Aggiunti positionInParent e boundsInParent per leCoordinate di Layout. (Icacdd, b/152735784)

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

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

  • Non consentire spaziatura interna negativa in LayoutPadding. Per gli offset di posizione negativi, utilizza LayoutOffset. (Ifb5b1)

  • Parametro WithConstraints ottenuto da LayoutDirection (I6d6f7)

  • È stato aggiornato il flag ComposeFlags.COMPOSER_PARAM in modo che sia true. Questa operazione cambierà 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 trasmesso alle successive chiamate @Composable per consentire al runtime di gestire correttamente l'esecuzione. Si tratta di una modifica significativa che provoca un'interruzione del programma binario, tuttavia dovrebbe garantire la compatibilità a livello di origine in tutti gli utilizzi sanzionati di Compose. (I7971c)

  • Modificato LayoutCoordinates per rendere providedAllineamentLines un insieme anziché Mappa e in modo che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, i modificatori possono modificare più facilmente uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a).

  • LayoutCoordinates non ha più una proprietà di posizione. La proprietà "position" non ha senso quando si considerano i modificatori di layout, la rotazione o la scalabilità. Invece, gli sviluppatori dovrebbero usare parentCoordinates e childToLocal() per calcolare la trasformazione da LayoutCoordinate a un altro.

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

  • Miglioramenti alla superficie API dei vincoli (I0fd15)

  • Aggiunta di TextDirection.Content (I48f36)

  • Modifica il menu della barra degli strumenti per visualizzare le opzioni di copia, taglia e incolla. (Id3955)

  • Aggiungi FloatingToolbar per la selezione del campo di testo. (Ie8b07)

  • TextDirectionAlgorithm è rinominato TextDirection (I75ce8)

  • TextDirection viene rinominata ResolvedTextDirection (I3ff38)

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

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

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

  • Il nome del pacchetto per Impostazioni internazionali e LocaleList è stato modificato da androidx.ui.text ad androidx.ui.intl (I8132c)

  • Modifica dell'API: AnnotatedString(builder: Builder) è stato rinominato in annotatedString(builder: Builder). (Ia6377)

  • Modifica dell'API: AnnotatedString.Item è stato rinominato in AnnotatedString.Range. (I2d44d).

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

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

  • Nome del pacchetto ui-android-text (androidx.text) sostituito con androidx.ui.text.platform per allinearsi con il criterio androidx. (I42711)