Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(consulta la documentazione di riferimento dell'API per tutti i pacchetti di composizione)
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
13 novembre 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
Struttura
Compose è una combinazione di 7 ID gruppo Maven in androidx
. Ogni gruppo contiene un sottoinsieme mirato di funzionalità, ciascuna con il proprio insieme di note di rilascio.
Questa tabella illustra i gruppi e i link a ogni set di note di rilascio.
Gruppo | Descrizione |
---|---|
compose.animation | Creare animazioni nelle loro applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in del compilatore Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed espandi la base per creare i componenti del tuo sistema di progettazione. |
compose.material | Crea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di contatto di primo livello di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea interfacce utente Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You come i colori dinamici ed è progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12. |
compose.runtime | Componenti di base del modello di programmazione e della gestione dello stato di Compose, nonché del runtime di base per il plug-in del compilatore Compose come target. |
compose.ui | Componenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input. |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.8
Versione 1.8.0-alpha06
13 novembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06
viene rilasciato. La versione 1.8.0-alpha06 contiene questi commit.
Modifiche all'API
- Aggiunge il modificatore
stylusHoverIcon
. (Iff20a, b/331289114) confirmValueChange
diAnchoredDraggableState
è stato ritirato. Anziché vietare le modifiche dello stato, le ancore non consentite non devono essere nell'insieme di ancore attive e deve essere utilizzato unOverscrollEffect
per indicare la non disponibilità dell'azione richiesta. (Ia717f)- Modifica il gestore della compilazione automatica in modo che sia un'interfaccia. (I84914, b/376080755)
- Aggiunge le API
OverscrollEffect#withoutDrawing
eOverscrollEffect#withoutEventHandling
: queste API creano un'istanza con wrapping dell'effetto overscroll fornito che non disegna / gestisce gli eventi, rispettivamente, il che consente di eseguire il rendering dell'overscroll in un componente separato da quello che gestisce gli eventi. Ad esempio, disattivando il disegno dell'overscroll all'interno di un elenco lazy e poi disegnando l'overscroll separatamente in alto o altrove. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - È stato aggiunto il supporto della compilazione automatica nella barra degli strumenti di testo. (Ie6a4c)
- Ritirata la funzionalità di
OverscrollConfiguration
eLocalOverscrollConfiguration
e aggiunta dirememberPlatformOverscrollFactory
per creare un'istanza di / personalizzare i parametri dell'implementazione dell'overscroll predefinita. Per disattivare lo scorrimento eccessivo, utilizzaLocalOverscrollFactory provides null
anzichéLocalOverscrollConfiguration provides null
. Per modificare il colore dell'effetto bagliore / il padding, anzichéLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
, utilizzaLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - La proprietà
effectModifier
inOverscrollEffect
è stata modificata innode: DelegatableNode
, in linea con le altre API. (Ic0b46, b/255554340) - È stata rimossa l'API
GlobalAssertions
sperimentale. L'utilizzo previsto era eseguire controlli di accessibilità. Per questo scopo, consultaenableAccessibilityChecks()
. (I59322)
Versione 1.8.0-alpha05
30 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05
viene rilasciato. La versione 1.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Supporto per il ridimensionamento automatico del testo. Passa un'istanza
AutoSize
(ad es.AutoSize.StepBased
) al tuo composable di testo preferito (ad es.BasicText
) e osserva come le dimensioni del testo si adattano allo spazio disponibile. (Ice7e0, b/139320827) - Aggiunge le API
OverscrollFactory
eLocalOverscrollFactory
per consentire la configurazione del movimento orizzontale oltre il limite all'interno di una gerarchia. Il valore fornito tramiteLocalOverscrollFactory
verrà utilizzato per impostazione predefinita per creare unOverscrollEffect
. Per creare e ricordare un effetto dall'attuale factory fornita, utilizzarememberOverscrollEffect()
. (I51ca4, b/255554340)
Modifiche all'API
- Introduzione di
CompositionLocal
che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione riuscita della compilazione automatica. (I32092) ScrollableDefaults.overscrollEffect
è stato rimosso. UtilizzarememberOverscrollEffect
. Verrà creata un'istanza dell'attuale implementazione del scorrimento oltre i limiti fornita conLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516)- Viene introdotta una nuova interfaccia
AutofillManager
che può essere utilizzata per perfezionare il percorso di compilazione automatica degli utenti e un flagisSemanticAutofillEnabled
per attivare questa nuova versione della compilazione automatica. (I9d484) - Rimuove
CombinedClickableNode
. Questa API sperimentale è stata esposta temporaneamente per sbloccare il lavoro sul rendimento, ma non è più necessaria. Dovresti invece utilizzare direttamenteModifier.combinedClickable
come per le altre API di modificatori. (I4b658) - Aggiunge sovraccarichi a
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
eVerticalPager
con il supporto per la specifica di unOverscrollEffect
personalizzato. IlOverscrollEffect
fornito riceverà gli eventi e verrà visualizzato nei limiti di questi componenti. Tieni presente che non è supportato il disegno dello stessoOverscrollEffect
due volte, quindi non puoi disegnare lo stessoOverscrollEffect
fornito a uno di questi componenti separatamente conModifier.overscroll
. Il caso d'uso di disegno del movimento oltre lo scorrimento al di fuori dei limiti di questi componenti verrà affrontato separatamente in futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Versione 1.8.0-alpha04
16 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04
viene rilasciato. La versione 1.8.0-alpha04 contiene questi commit.
Modifiche all'API
- Aggiunge i callback
DelegatableNode#onDensityChange
eDelegatableNode#onLayoutDirectionChange
per consentire l'aggiornamento dello stato del nodo quando questi cambiano. (I04f3e, b/340662451) - Paragrafo e
ParagraphIntrinsics
ora accettano un elenco di tutte le annotazioni applicate alAnnotatedString
, in precedenza era presente solo un elenco diSpanStyles
. (I12f80) - È stato introdotto
PointerInputModifierNode#touchBoundsExpansion
, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del cursore. (Iccf02, b/335339283)
Correzioni di bug
- È stato risolto un bug per cui le soglie di posizione passate a
AnchoredDraggableDefaults.flingBehavior
non venivano considerate correttamente in alcuni scenari. (Ifdf0d, b/367660226) - È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante un movimento in corso. Ora questi nodi annulleranno il fling e invieranno correttamente l'evento
onPostFling
con la velocità rimanente. Stiamo anche introducendo il flagNewNestedScrollFlingDispatchingEnabled
per controllare il comportamento in caso di regressioni. L'indicatore verrà rimosso prima della versione beta. (I05c37, b/371168883) - È stato corretto un bug per cui
OverscrollEffects
passato aModifier.anchoredDraggable
riceveva delta 2D anziché 1D. (Ie52c0)
Versione 1.8.0-alpha03
2 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03
viene rilasciato. La versione 1.8.0-alpha03 contiene questi commit.
Modifiche all'API
- Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
- È stato introdotto il flag
DraggableAddDownEventFixEnabled
(I848d5) - È stato introdotto un nuovo ruolo di semantica denominato Carosello per emulare il comportamento dell'elenco nei pager per i servizi a11y. (Id354b, b/354109776, b/239672673)
- È stato rimosso il modificatore
graphicsLayer
implicito dal composableBasicText
. È stato aggiunto il flag sperimentaleComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
per poter ripristinare il comportamento precedente. (Ie478d) - È stato aggiunto
Modifier.recalculateWindowInsets()
per consentire ai figli nella gerarchia di utilizzareinsetsPadding
anche quando i genitori li hanno allineati senzaconsumeWindowInsets()
. (I7f9e4)
Correzioni di bug
- Implementa il rilevamento dei gesti in
detectDragGestures
, elementi spostabili e scorrevoli. Ora, se un elemento trascinabile secondario non risponde a un gesto, il genitore ha la possibilità di riprenderlo. Ciò consente una gestione dei gesti più continua e integrata. (Ic88fe) - Aggiornamento del comportamento di annullamento del movimento brusco negli elementi scorrevoli. Ora, se un elemento scorrevole viene lanciato e raggiunge i limiti, trasmette correttamente la velocità di lancio all'elemento scorrevole successivo della catena anziché continuare a gestire il lancio. (I9326a)
Versione 1.8.0-alpha02
18 settembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02
viene rilasciato. La versione 1.8.0-alpha02 contiene questi commit.
Modifiche all'API
- Ora sono disponibili
TextOverflow.StartEllipsis
eTextOverflow.MiddleEllipsis
, che consentono di inserire i puntini di sospensione all'inizio o al centro della riga del testo a una riga (I38913, b/185418980)
Versione 1.8.0-alpha01
4 settembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01
viene rilasciato. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.5
30 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.5
viene rilasciato. La versione 1.7.5 contiene questi commit.
Correzioni di bug
- Assicurati che gli elementi bloccati non siano sottocomposti due volte nell'area di spaziatura dei contenuti. (Ic6224)
Versione 1.7.4
16 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.4
viene rilasciato. La versione 1.7.4 contiene questi commit.
Correzioni di bug
- Risolto un bug che causava un raro arresto anomalo nei campi di testo. (I475c6, b/313010266)
- È stato rimosso
ReusableContentHost
dalla radice degli elementi di layout lazy. Si trattava di una potenziale causa principale degli arresti anomali "Misura chiamata su un nodo disattivato". (Id6e60)
Versione 1.7.3
2 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.3
viene rilasciato. La versione 1.7.3 contiene questi commit.
Correzioni di bug
- È stata corretta una perdita di memoria con
BasicText
quando minLines è impostato su un valore diverso da quello predefinito.
Versione 1.7.2
18 settembre 2024
androidx.compose.foundation:foundation-*:1.7.2
viene rilasciato. La versione 1.7.2 contiene questi commit.
Correzioni di bug
- È stato risolto un problema relativo agli elementi spostabili per i quali mancavano gli eventi di scorrimento verso il basso, che causavano un movimento più lento del normale.
Versione 1.7.1
10 settembre 2024
- Nessuna modifica agli elementi Android. Sono stati rimossi
-desktop
elementi e aggiunti-jvmStubs
e-linuxx64Stubs
elementi. Nessuno di questi target è destinato all'uso, ma sono segnaposto per supportare le attività di JetBrains Compose.
Versione 1.7.0
4 settembre 2024
androidx.compose.foundation:foundation-*:1.7.0
viene rilasciato. La versione 1.7.0 contiene questi commit.
Modifiche importanti dalla versione 1.6.0
- Il rendimento di
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
eModifier.draggable
è stato notevolmente migliorato. Nell'ambito di questo impegno, oltre alle modifiche interne, sono state apportate le seguenti modifiche alle API:- È stata aggiunta una nuova API Indication,
IndicationNodeFactory
. Ciò comporta implementazioni di indicatori più performanti rispetto all'APIrememberUpdatedInstance
precedente (ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
ora accetta un parametroMutableInteractionSource
nullable. Se è nullo e l'indicazione fornita èIndicationNodeFactory
, l'indicazione può essere creata in modo lazy solo quando necessario, il che migliora il rendimento. Se non esegui l'elevazione e non utilizziMutableInteractionSource
, ti consigliamo di passare null anzichéremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
è stato deprecato. Ha un elevato impatto negativo sulle prestazioni e impedisce altre ottimizzazioni. Dovresti utilizzare la nuova APIIndicationNodeFactory
.
- È stata aggiunta una nuova API Indication,
BasicTextField
che utilizza unTextFieldState
è ora stabile e consigliamo a tutti i call-site di iniziare la migrazione daBasicTextField(value, onValueChange)
aBasicTextField(TextFieldState)
.ClickableText
è stato deprecato. Per aggiungere link cliccabili al testo, utilizzaBasicText
con la nuova annotazioneLinkAnnotation
inAnnotatedString
.LinkAnnotation
consente di applicare stili personalizzati in base allo stato del link (ad es. attivo, con il mouse sopra).- Presentazione di
ContextualFlowRow
eEnhanced FlowRow/Column
conMaxLines
eOverflow
. Siamo lieti di annunciare i miglioramenti apportati aFlowRow
eFlowColumn
sperimentali, che ora includono il supporto dimaxLines
e dell'overflow, oltre al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, doveContextualFlow*
è perfetto per un numero elevato di articoli che utilizzano una configurazione di maxLines ridotta e pulsanti dinamici Mostra altro +N, mentreFlowRow
eFlowColumn
sono perfetti per un numero ridotto di articoli, meno di 100. Importante: per mantenere il comportamento esistente inFlowRow
oFlowColumn
, in cui tutti gli elementi vengono composti indipendentemente dal fatto che si adattino all'asse trasversale massimo, imposta overflow suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. ConsultaContextualFlowRowSample
eFlowRowSample
per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082) - In
LazyColumn
eLazyRow
è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I2d7f7, b/150812265) - È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Scrivi utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). - Le origini
NestedScroll
Trascina e Fling vengono sostituite daUserInput
eSideEffect
per supportare la definizione estesa di queste origini, che ora includono le animazioni (Side Effect) e la rotella del mouse e la tastiera (UserInput
). - Ora le richieste di prefetch
LazyLayout
possono essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (Id513f) - Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi successivi ad Android U. (I002e4)
- Diverse API sono state promosse a versione stabile.
- Lettori di codici a barre, accoppiamento, riquadri incassati
Versione 1.7.0-rc01
21 agosto 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01
viene rilasciato. La versione 1.7.0-rc01 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione in cui si verificava un arresto anomalo quando un elemento era attivo all'interno di un elemento principale attivabile (o cliccabile) e disattivato. (b/317561689)
Versione 1.7.0-beta07
7 agosto 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07
viene rilasciato. La versione 1.7.0-beta07 contiene questi commit.
Correzioni di bug
- Le funzioni
SemanticsNodeInteraction
relative all'inserimento di testoperformTextReplacement
,performTextInput
eperformTextClearance
ora genereranno errori di asserzione quando vengono chiamate suTextFields
di sola lettura. (I4ae8f) - È stato corretto un problema visivo nei link ipertestuali. (I23311)
- È stato corretto il problema per cui il modificatore
contentReceiver
non funzionava con alcuni IME. - Generazione di velocità: impedisci la propagazione di valori NaN in Compose UI e Foundation.
Versione 1.7.0-beta06
24 luglio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06
viene rilasciato. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05
viene rilasciato. La versione 1.7.0-beta05 contiene questi commit.
Correzioni di bug
- Correzione per il trattamento dei valori Nan in
SnapFlingBehavior
e Pager.
Versione 1.7.0-beta04
26 giugno 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
viene rilasciato. La versione 1.7.0-beta04 contiene questi commit.
Correzioni di bug
- Evitare arresti anomali durante la misurazione di righe di testo molto grandi (ad es.10. 000 caratteri) (8157ab)
- Corregge la misurazione del testo molto grande che causava un arresto anomalo nella nuova versione di
BasicTextField
(6b7575) - Ripristina una modifica del comportamento nella misurazione di righe/colonne che interrompe l'utilizzo del testo in determinati scenari (69e8ba)
Versione 1.7.0-beta03
12 giugno 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
viene rilasciato. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
viene rilasciato. La versione 1.7.0-beta02 contiene questi commit.
Modifiche all'API
- Aggiunge un'API sperimentale per la configurazione del comportamento di prefetch di
LazyGrids
simile all'API sperimentale esistente perLazyLists
. È incluso il supporto per il pre-caricamento degli elementi inLazyGrids
nidificati. Come perLazyListPrefetchStrategy
, l'impostazione predefinita dell'implementazione è il precaricamento dei primi 2 elementi nidificati di ogni griglia, ma questa impostazione può essere configurata dalle nuove APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) SemanticsProperties.Editable
è stato rinominato inIsEditable
eSemanticsPropertyReceiver.editable
in un valoreisEditable
. La proprietà ora è booleana e sempre specificata da campi di testo. (I8acd8)- I valori predefiniti di
basicMarquee
sono stati spostati nell'oggettoMarqueeDefaults
. (I12ff6) - Il parametro
basicMarquee
delayMillis
è stato rinominato inrepeatDelayMillis
. (I12ff6) - Aggiornamento dell'API per lo stile dei link: spostato
TextLinkStyles
inTextStyle
e rimossoTextDefaults
da Material (I5477b)
Correzioni di bug
LayoutCoordinates.introducesFrameOfReference
è stato rinominato inLayoutCoordinates.introducesMotionFrameOfReference
per rispecchiare meglio la sua finalità. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)- È stato rimosso "Predefinito" dalle proprietà
MarqueeDefaults
. (I1d8a0) - L'effetto "Risalto" è stato rimosso dalle proprietà
MarqueeDefaults
. (Iad4f4) TextLinkStyles
è stato rimosso dal corsoTextStyle
.TextLinkStyles
fa invece parte del costruttoreLinkAnntation
e del metodoAnnotatedString.fromHtml
(I90b2b)- È stato corretto un bug per cui Pager scattava quando veniva lanciato verso un limite mentre era già agganciato al limite. (I9f373, b/339171222)
- BTF2 ora ha i gesti di selezione del mouse corretti. (Ibe8c6)
Contributo esterno
- Invia di nuovo "Fai in modo che il tipo di contenuto del calcolo del tempo di composizione/misurazione si basi sul prefetch per migliorare l'accuratezza" (Iea622)
- Creare il tipo di contenuto del calcolo del tempo di composizione/misurazione in base al prefetch per migliorare la precisione (Ibccb1)
- Rendere disponibili i modificatori
WindowInsetsPadding
dall'insieme di origini comuni (I070b2)
Versione 1.7.0-beta01
14 maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
viene rilasciato. La versione 1.7.0-beta01 contiene questi commit.
Modifiche all'API
- La proprietà
KeyboardOptions.shouldShowKeyboardOnFocus
è stata aggiunta di nuovo come nascosta ritirata per la compatibilità binaria. (I15cfe) Modifier.anchoredDraggable
ora inverte i delta di trascinamento per impostazione predefinita per i componenti con orientamento orizzontale quando vengono utilizzati in un layout RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
è diventatohasEqualAnnotations
. (I685c0)- L'API è stata aggiornata per ottenere link con temi Material nel testo. Nello specifico, sono stati rimossi i metodi dal
TextDefaults
per la costruzione diLinkAnnotations
a tema e l'analisi del codice HTML con link a tema. È stata invece aggiunta una classeTextLinkStyles
che consente di applicare uno stile ai link come parametro al composable di testo. (I31b93) onDragStarted
eonDragStopped
sono stati sostituiti con callback non in sospensione. (I59de8)
Correzioni di bug
- È stato risolto un bug che causava l'arresto anomalo di Pager quando
contentPadding
era più grande dei vincoli in entrata. Ora la paginazione forza i valori negativi restituiti daPageSize
a 0. (Iba5d8, b/314008560)
Versione 1.7.0-alpha08
1° maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
viene rilasciato. La versione 1.7.0-alpha08 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il menu contestuale del tasto destro del mouse a
BasicTextField
eSelectionContainer
con voci per le azioni Taglia, Copia, Incolla e Seleziona tutto. (If8c93, Ia2b49, I6f268)
Modifiche all'API
- Ora le richieste di prefetch
LazyLayout
possono essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (Id513f) isPositionedByParentWithDirectManipulation
rinominato inintroducesFrameOfReference
. Tieni presente che ora ha l'effetto opposto, il che significa che per impostazione predefinita la maggior parte degli elementiLayoutCoordinates
introduce un sistema di riferimento e, solo quando viene sottoposto a manipolazione diretta, la proprietà sarà falsa. Per eseguire query sulla posizione solo con quelle che introducono un sistema di riferimento, utilizzapositionInLocalFrameOfReference(...)
. OppurepositionInLocalLookaheadFrameOfReference
da unLookaheadScope
. (Ifc5f7)onClicked
rinominato inonClick
all'interno diLinkInteractionListener
(Iaa35c)- Modifica l'azione lambda per
getScrollViewportLength
in base al feedback del consiglio API. (Ibc74a) - Le API di delega della scrittura a mano libera con stilo sono state rinominate. (Ica45f, b/327271923)
- Rinomina
TextInclusionStrategy.isInside
inisIncluded
. Rendi il tipo di ritornoParagraph/MultiParagraph#getRangeForRect()
non null. (I51f26)
Correzioni di bug
- È stata aggiunta l'opzione "Seleziona tutto" a tutti i menu contestuali di testo in
SelectionContainer
. (Ib750e, b/240143283) - È stato corretto il problema di acquisizione di screenshot lunghi per i contenitori con scorrimento con
reverseScrolling=true
. (I7c59c) - È stato risolto un problema per cui
AnchoredDraggableState
dicurrentValue
cambiava quando si avvicinavano i limiti dello stato. (Iea30b, b/333846848)
Contributo esterno
PrefetchExecutor
->PrefetchScheduler
è stato rinominato per riflettere meglio le relative responsabilità. (Ib9154)- È stato aggiunto il supporto per il pre-caricamento degli elementi in
LazyLists
nidificati (ad es. unLazyColumn
che esegue il rendering diLazyRows
nidificati). Questa modifica dovrebbe ridurre i cali di frame durante lo scorrimento per questiLazyLists
. L'impostazione predefinita dell'implementazione è il pre-caricamento dei primi 2 elementi nidificati, ma questo comportamento può essere controllato dalle nuove APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Versione 1.7.0-alpha07
17 aprile 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07
viene rilasciato. La versione 1.7.0-alpha07 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un oggetto
TextDefaults
contenente metodi per creare unLinkAnnotation
e analizzare la stringa con tag HTML che applicaMaterialTheme
ai link. (I98532, b/139312671) - In
LazyVerticalGrid
eLazyHorizontalGrid
è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (Ib7d12, b/330510929) - In
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I69bc9, b/330511290)
Modifiche all'API
- Aggiunge
ContextMenuColors
e gli elementiLocalContextMenuTheme
ProvidableCompositionLocal
associati. I colori del menu contestuale nei campi di testo e nel testo selezionabile possono essere modificati specificando la composizione locale. (Ifa154) - I link di testo hanno ricevuto l'opzione di stile per lo stato premuto, oltre allo stile normale, al passaggio del mouse e allo stato attivo. (I5f864, b/139312671)
- Presenta
ViewConfiguration.HandwritingGestureLineMargin
per i gesti di scrittura a mano libera. Supporto del gesto di scrittura a mano libera perBasicTextField
. (Ie6e13, b/325660505) DelegatableNode.scrollIntoView
è stato rimosso per la release 1.7 perché non abbiamo avuto il tempo di completare la stabilizzazione del resto dell'interfaccia API correlata. Questa funzione verrà reintrodotta nella versione 1.8 (I6cf61, b/333421581, b/332900232)- Quando esegui una query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato i figli utilizzandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Analogamente, un layout che modifica di frequente la posizione dei relativi elementi secondari ora può posizionarli utilizzandowithDirectManipulationPlacement
(ad esempio Scroll, implementato per impostazione predefinita). In questo modo, le animazioni basate suapproachLayout
sono più intuitive, perché ora è possibile distinguere l'offset da animare e cosa applicare direttamente quando si decide di animare l'approccio. (I60ec7) - Presenta
requestScrollToItem
perLazyStaggeredGrid
. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamandorequestScrollToItem
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToItem
. (I63983) - Presenta
requestScrollToPage
in Pager. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamandorequestScrollToPage
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToPage
. (Ic4213) - È stato introdotto
requestScrollToItem
perLazyGrids
. Per ogni passaggio di misura, il client ora può disattivare la gestione dell'indice in base alla chiave chiamandorequestScrollToItem
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToItem
. (I0a7a0) ClickableText
è deprecato. Per aggiungere link al testo, crea unAnnotatedString
con unLinkAnnotation
corrispondente al link e passa questoAnnotatedString
al composableText
(I34d4b, b/323346994)UrlAnnotation
è deprecato. UtilizzaLinkAnnotation.Url
. Se utilizzi il tema Material, utilizza l'oggettoTextDefaults
per creare l'annotazione con il tema Material applicato (I8d180, b/323346545)String.parseAsHtml
rinominato inAnnotatedString.Companion.fromHtml
(I43dcd)- Sono stati aggiunti argomenti di stile (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e un gestore di interazioni con i link al metodoparseAsHtml
. Durante l'analisi della stringa con tag HTML con tag<a>
, il metodo creerà unLinkAnnotation.Url
per ogni tag di questo tipo e passerà gli oggetti di stile e l'ascoltatore di interazioni con i link a ogni annotazione. (I7c977) LinkAnnotation
ora accetta gli argomenti di stile basati sullo stato e unLinkInteractionListener
. Aggiungi questa annotazione alAnnotatedString
per ottenere un link ipertestuale. PassandofocusedState
e/ohoveredState
puoi definire la configurazione visiva dei link quando sono attivi e/o quando il mouse passa sopra. (I81ce4, b/139312671)- Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
LazyColumn
ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)- È stata stabilizzata la maggior parte delle API sperimentali rimanenti introdotte con il nuovo
BasicTextField
. (I714e2) - È stato aggiunto il parametro
textObfuscationCharacter
aBasicSecureTextField
che controlla il carattere da utilizzare durante l'oscuramento dei contenuti. (I0588b) - Le origini
NestedScroll
Trascina e Fling vengono sostituite daUserInput
eSideEffect
per supportare la definizione estesa di queste origini, che ora includono animazioni (Side Effect), rotella del mouse e tastiera (UserInput
). (I40579) - Viene introdotto
LocalBringIntoViewSpec
, un comportamento di scorrimento dell'attenzione dipendente dalla piattaforma che viene applicato al livello del modificatore Scrollable. (I27aa5, b/317453911) TextFieldCharSequence
rimosso.TextFieldBuffer.originalValues
viene sostituito conTextFieldBuffer.originalText
eTextFieldBuffer.originalSelection
. (I2c7d6)ImeOptions.hintLocales
non è più nullable. Se vuoi passare un elenco di lingue vuoto, utilizzaLocaleList.Empty
. (Ic5bc4)getOffsetFractionForPage
rinominato ingetOffsetDistanceInPages
. (Ia05e2)
Correzioni di bug
- Quando
InputTransformations
vengono uniti anext
, i relativiKeyboardOptions
vengono ora uniti correttamente in base alle singole opzioni utilizzando il nuovo metodoKeyboardOptions.merge
. (Ie5304, b/295951492) AnchoredDraggableState
ditargetValue
ora non prende più in considerazione le soglie di posizione. Ora ha una soglia implicita del 50%, il che significa chetargetValue
cambia al punto intermedio tra due ancore. (I82c2c)
Contributo esterno
- Sono state rinominate due API di scorrimento (I56a75)
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
viene rilasciato. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- In
LazyColumn
eLazyRow
è stato aggiunto il supporto dell'animazione di apparizione e scomparsa degli elementi. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di riordino dei posizionamenti. Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che consente di supportare tutti e tre i tipi di animazione: apparizione (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordinamento. (I2d7f7, b/150812265) - Ora i clienti di
LazyColumn/LazyRow
possono disattivare la gestione di un indice in base alla chiave per il prossimo passaggio di misura chiamando unLazyListState.requestToScroll
non in sospensione. (I98036, b/209652366) - È stato aggiunto il metodo
parseAsHtml
per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML inAnnotatedString
. Tieni presente che non tutti i tag sono supportati, ad esempio non potrai ancora visualizzare elenchi puntati. (I84d3d) - È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivata per impostazione predefinita. Per attivare questa funzionalità, imposta il flagComposeFeatureFlag_LongScreenshotsEnabled
su true. Questo flag verrà rimosso prima della versione beta 1.7. (I2b055, b/329296471) - Viene introdotta una nuova API
GraphicsLayer
per offrire maggiore flessibilità nel posizionamento e nel rendering delle istanzeGraphicsLayer
e supportare le funzionalità di rendering intrinseche senza dover coordinarsi con le implementazioni Composable per specificare le istanze di modificatoriGraphicsLayer
.
Modifiche all'API
- Tutti i parametri
KeyboardOptions
ora hanno un valore non specificato per impostazione predefinita. MetodoKeyboardOptions.merge
aggiunto. - Il campo
KeyboardOptions.autoCorrect
è stato rinominato inautoCorrectEnabled
e impostato come nullable, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492) outOfBoundsPageCount
rinominato inbeyondViewportPageCount
. (I129c6)fun ClipEntry.getMetadata()
viene modificato inval ClipEntry.clipMetadata
. (I50155)TextFieldState.valueAsFlow()
rimosso. Ti consigliamo di utilizzaresnapshotFlow { state.text }
osnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629)- Parametri
InputTransformation.transformInput
riorganizzati.originalValue: TextFieldCharSequence
rimosso. OraTextFieldBuffer
ha questo valore con lo stesso nome. È stato rimosso anche il parametrovalueWithChanges: TextFieldBuffer
.TextFieldBuffer
ora è l'ambito del ricevitore nella funzione. (I919cc) - La variante
BasicTextField(state)
eBasicSecureTextField
ora utilizzanoKeyboardActionHandler
anzichéKeyboardActions
per elaborare le azioni eseguite dalla tastiera software. (I58dda) - API di delega della scrittura a mano libera con lo stilo per supportare la scrittura a mano libera con lo stilo in campi di immissione di testo "falsi". (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
rinominato inshowKeyboardOnFocus
. (Ib4b7a, b/295951492)- Parametro
hintMediaTypes
rimosso daModifier.contentReceiver
. Gli sviluppatori erano già invitati a controllare il tipo di media diTransferableContent
ricevuto, in quanto potrebbe non essere compatibile conhintMediaTypes
configurato. (I82f99) - Sono stati riordinati i parametri di
BasicSecureTextField
. Sono stati rimossi i parametrikeyboardType
eimeAction
a favore della classeKeyboardOptions
completa, mantenendo gli stessi valori predefiniti appropriati perBasicSecureTextField
. È stato rimosso anche il parametroscrollState
. (Ibbfa9) - Il tipo di
TextFieldState.text
è stato modificato daTextFieldCharSequence
aCharSequence
. Di conseguenza, sono stati aggiuntiTextFieldState.selection: TextRange
eTextFieldState.composition: TextRange?
per leggere i valori correnti di selezione e composizione direttamente dall'oggetto stato. TextFieldState.forEachTextValue
rimosso. (Idb2a2)- Sono state rimosse le funzioni
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
. UtilizzaclipEntry.getMetadata()
per leggere i metadati della voce del clip corrente. Controlla anche il risultato diClipboardManager.getClip
per capire se è nullo o meno per capire se gli appunti contengono un clip corrente. (I50498) ClipboardManager.setClip
ora accetta null per poter svuotare la clipboard. (I7d2e9)ReceiveContentListener
viene convertito in un'interfaccia di funzione. Inoltre, l'overload diModifier.receiveContent
che accetta una lambda è stato rimosso poichéReceiveContentListener
ora è un'interfaccia di funzione.- Il nuovo nome di
Modifier.receiveContent
èModifier.contentReceiver
. (I1e6af) TransferableContent.consumeEach
rinominato inTransferableContent.consume
. (I1e462)rememberTextFieldState
è stata promossa a API stabile. (I37999)
Correzioni di bug
- È stato corretto un bug per cui la variante
BasicTextField(state)
non funzionava con le tastiere CJK(basate sulla composizione). (I54425) - È stato corretto un bug per cui
Modifier.dragAndDropTarget()
poteva fare riferimento a dati non aggiornati in determinati scenari con il riutilizzo diModifier.Node
. (I05bb1) - È stata ripristinata una recente modifica del contratto in cui le chiamate
AnchoredDraggableState#anchoredDrag
venivano interrotte al termine di un'operazioneanchoredDrag
. (I95715)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
viene rilasciato. La versione 1.7.0-alpha05 contiene questi commit.
Modifiche all'API
- È stata rimossa la composizione locale
LocalTextLinkStyle
sperimentale per lo stile dei link ipertestuali. (Iebfa7) - È stata rimossa l'override sperimentale di
BasicText
con l'argomentoonLinkClicked
. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5) - Sono stati rimossi i metodi e le proprietà relativi ai punti di codice in
TextFieldState
eTextFieldBuffer
. Sono stati rimossi anche i suffissiinChars
dalle API rimanenti relative alla selezione e alla composizione. (Ief7ce) - Ora
currentValue
diAnchoredDraggable
si aggiorna quando passa attraverso un punto di ancoraggio. UtilizzasettledValue
per ricevere la semantica precedente dicurrentValue
, aggiornando solo quando si arriva a un'ancora. Il progresso ora viene visualizzato come funzione (che richiede un punto di inizio e di fine) anziché come proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
sono classificati come stabili. (I9582b)- È stato introdotto
InterceptPlatformTextInput
per aiutare a scrivere test di basso livello relativi all'IME e altri casi d'uso di basso livello dell'IME.PlatformTextInputTestOverride
è stato deprecato. (I862ed, b/322680547) - Suddividi
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd)
Contributo esterno
- Sono state aggiunte due nuove API
isLastScrollForward
/isLastScrollBackward
per controllare la direzione di scorrimento dell'ultima azione di scorrimento e restituire false se non è stata ancora eseguita alcuna azione di scorrimento. (I63a0e)
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
viene rilasciato. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche all'API
- Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi successivi ad Android U. (I002e4)
- È stato aggiunto
hintLocales
aKeyboardOptions
per fornire aTextFields
la possibilità di suggerire agli IME con impostazioni internazionali specifiche di preimpostare una lingua preferita. (Id18c2) - Sono stati rimossi i sovraccarichi sperimentali
BasicTextField2
eBasicSecureTextField
che utilizzavano i parametrivalue: String
eonValueChange: () -> String
. (I568b4) - Aggiungi una funzione
applySemantics
facoltativa aInputTransformation
per influenzare la semantica delBasicTextField2
a cui viene applicata. (I74a2f, b/170648072) - In questo CL aggiungiamo l'azione semantica
GetScrollViewportLength
per poter inviare al sistema a11y informazioni sui componenti su cui si scorre in composizione. Questo CL applica l'utilizzo di questa proprietà anche agli elenchi scorrevoli di Foundation. (Ic5fa2) - Il nuovo nome di
BasicTextField2
èBasicTextField
. (Ie5713) FocusRequester.createRefs
è ora stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.scrollIntoView()
per consentire ai nodi modificatori di effettuare direttamente richiestescrollIntoView
. (I2b3b7, b/299939840) - È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi di modifica di ottenere l'View
Android corrente senza leggere una composizione locale. (I40768) - Sono state introdotte informazioni sul layout contestuale nell'ambito di Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice riga, posizione e vincoli relativi a larghezza e altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/l'altezza massima possono essere inseriti nella riga successiva o omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)
Correzioni di bug
- È stato corretto un bug per cui, in determinate condizioni, l'attivazione/la disattivazione degli attributi
enabled
oreadOnly
diTextField
causava un arresto anomalo. (Iae17b)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
viene rilasciato. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche all'API
- È stato introdotto
DelegatableNode.requireLayoutCoordinates()
come modo per ottenere ilLayoutCoordinates
corrente di unModifier.Node
senza dover sostituireonPlaced
e memorizzare autonomamente le coordinate in una proprietà. (Ia8657) - È stato introdotto
DelegatableNode.currentLayoutCoordinates
come modo per ottenere ilLayoutCoordinates
corrente di unModifier.Node
senza dover sostituireonPlaced
e memorizzare autonomamente le coordinate in una proprietà. (Iaebaa) - Ottimizzazioni del rendimento in
DraggableAnchors
utilizzate daAnchoredDraggable
. (I89cff) BasicTextField2
e le API correlate nel pacchettoandroidx.compose.foundation.text2
vengono spostate inandroidx.compose.foundation.text
. (I9f635)BasicTextField2
non accetta più un parametroCodepointTransformation
. UtilizzaBasicSecureTextField
oOutputTransformation
. (Id34ff)- È stato aggiunto un metodo per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659) - Ti presentiamo
ContextualFlowRow
eFlowRow
/Column
avanzati conMaxLines
eOverflow
. Siamo lieti di annunciare i miglioramenti apportati aFlowRow
eFlowColumn
sperimentali, che ora includono il supporto dimaxLines
e dell'overflow, oltre al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, doveContextualFlow*
è perfetto per un numero elevato di elementi che utilizzano una piccola configurazionemaxLines
e pulsanti dinamici +N per visualizzare altri elementi, mentreFlowRow
eFlowColumn
sono perfetti per un numero ridotto di elementi, meno di 100. Importante: per mantenere il comportamento esistente inFlowRow
oFlowColumn
, in cui tutti gli elementi vengono composti indipendentemente dal fatto che si adattino all'asse trasversale massimo, impostaoverflow
suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. ConsultaContextualFlowRowSample
eFlowRowSample
per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
Correzioni di bug
- L'animazione del cursore non richiede più frame tra gli stati On e Off. (Ia2253)
- I costruttori di copia deprecati di
KeyboardOptions
ora copieranno correttamente tutte le proprietà. (If12de)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche all'API
HorizontalPager
,VerticalPager
ePagerState
vengono promossi a stabili. (I67660, b/316966909)- È stata aggiunta la composizione locale
LocalTextLinkStyle
che consente di modificare lo stile dei link nel testo nell'app. Se utilizzi il tuo tema nell'app, devi impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, il colore del link verrà impostato per impostazione predefinita sul colore principale di Material. (I7eb10) - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o tramite l'azione Incolla dagli appunti. (I81b72)- In questa modifica, sostituiremo
SnapFlingBehavior
conTargetedFlingBehavior
nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea) - Con questa modifica, le API di snapping diventeranno stabili. Stiamo anche riordinando parte del codice di test e aggiungendo altri esempi a Snapping. (Id8da9)
- Introduci
TargetedFlingBehavior
, unFlingBehavior
che consente di propagare informazioni sullo stato dell'animazione in corso e sull'offset di scorrimento target. (I6a207)
Correzioni di bug
BasicTextField2
ora mantiene il cursore visibile durante la digitazione quando non è visibile a causa dello scorrimento o si sposta fuori dalla visuale a causa dell'input. (Ieb856, b/237190748)
Contributo esterno
- Aggiunge un'API sperimentale per la configurazione del comportamento di precaricamento di LazyLists. (I022a4)
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
viene rilasciato. La versione 1.7.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un nuovo
Indication API
,IndicationNodeFactory
. Ciò comporta implementazioni diIndication
più performanti rispetto all'APIrememberUpdatedInstance
precedente (ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com. clickable / combinedClickable / selectable / toggleable
ora accetta un parametroMutableInteractionSource
nullable. Se è nullo e ilIndication
fornito è unIndicationNodeFactory
, ilIndication
può essere creato in modo lazy solo quando necessario, il che migliora le prestazioni. Se non esegui l'elevazione e non utilizziMutableInteractionSource
, ti consigliamo di passare null.
Modifiche all'API
- Viene introdotto
DecayAnimation
inAnchoredDraggable
. Questa modifica aggiunge un parametrodecayAnimationSpec
aAnchoredDraggable
che consente di utilizzare l'animazione di decadimento quando si stabilizza su una delle ancore. La modifica include anche la ridenominazione dianimationSpec
esistente insnapAnimationSpec
per facilitare la comprensione del caso d'uso di ogni specifica. BasicTextField2
è disponibile per uso sperimentale. Dovrebbe avere all'incirca la stessa funzionalità diBasicTextField
e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, l'API rimane sperimentale per il momento. Prima della stabilizzazione, verrà rinominato inBasicTextField
e spostato nello stesso pacchetto.- È stata introdotta la prima bozza dell'API
OutputTransformation
perBasicTextField2
. Questa API sostituisce la maggior parte dei casi d'uso diVisualTransformation
nella precedenteBasicTextField
. Tuttavia, non è ancora completa e alcune funzionalità non funzionano correttamente, ma saremo lieti di ricevere qualsiasi feedback sull'usabilità dell'API per i tuoi casi d'uso. (aosp/2708848) - È stato introdotto
LinkAnnotation
che consente di aggiungere link e elementi cliccabili al testo. La funzionalità dei link non è ancora completa e sono previste altre modifiche all'API. - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o tramite incolla dagli appunti.KeyboardOptions.shouldShowKeyboardOnFocus
ti consente di disattivare il comportamento predefinito diBasicTextField
di richiedere una tastiera software quando è attivo lo stato attivo.TextInputService
eLocalTextInputService
sono stati ritirati. UtilizzaPlatformTextInputModifierNode
per eseguire l'integrazione direttamente con le API IME della piattaforma. (aosp/2862698)Indication#rememberUpdatedInstance
è stato deprecato. Ha un elevato impatto negativo sulle prestazioni e impedisce altre ottimizzazioni. Dovresti utilizzare la nuova APIIndicationNodeFactory
.
Correzioni di bug
BasicTextField
ora prevaliderà una piccola selezione di mappature degli offset quando viene passatoVisualTransformation
. In questo modo è possibile rilevare errori di codifica comuni che generano eccezioni non recuperabili in passaggi di misurazione o disegno successivi. Se viene generato un errore durante la composizione, è più probabile che gli sviluppatori lo vedano durante lo sviluppo, contribuendo a evitare arresti anomali in produzione. (I0fd42)VisualTransformation
non verrà lanciato se restituisci un indice non valido per un indice non valido (b/316401857 )
Versione 1.6
Versione 1.6.8
12 giugno 2024
androidx.compose.foundation:foundation-*:1.6.8
viene rilasciato. La versione 1.6.8 contiene questi commit.
Versione 1.6.7
1° maggio 2024
androidx.compose.foundation:foundation-*:1.6.7
viene rilasciato. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
androidx.compose.foundation:foundation-*:1.6.6
viene rilasciato. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- È stato corretto un bug per cui, in determinate condizioni, l'attivazione/la disattivazione degli attributi
enabled
oreadOnly
diTextField
causava un arresto anomalo. (Iae17b)
Versione 1.6.5
3 aprile 2024
androidx.compose.foundation:foundation-*:1.6.5
viene rilasciato. La versione 1.6.5 contiene questi commit.
Correzioni di bug
- Aggiunge log di debug a bug difficili da riprodurre in Riga/Colonna: (b/300280216 e b/297974033)
Versione 1.6.4
20 marzo 2024
androidx.compose.foundation:foundation-*:1.6.4
viene rilasciato. La versione 1.6.4 contiene questi commit.
Correzioni di bug
- Il gesto di selezione con pressione prolungata e trascinamento che esce dai limiti del layout del testo nel primo frame del trascinamento non causa più arresti anomali. (Icdf90, b/325307463)
Versione 1.6.3
6 marzo 2024
androidx.compose.foundation:foundation-*:1.6.3
viene rilasciato. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.2
viene rilasciato. La versione 1.6.2 contiene questi commit.
Correzioni di bug
- Correggi il problema di reimpostazione non corretta di
AnimateContentSize
. (I07051) - Risolto il problema per cui
intrinsicHeight
di testo veniva memorizzato nella cache in modo eccessivo in alcune circostanze. (3cd398, b/217910352)
Versione 1.6.1
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.1
viene rilasciato. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Correzione della misurazione della griglia a zig zag quando si scorre oltre il limite. (bffc39)
- Aggiungi il controllo per i layout con dimensioni grandi. (e74af5)
- Correggere il posizionamento degli elementi di dimensioni pari a 0 all'inizio della griglia sfalsata. (785f94)
- Chiama il callback onRelease nello stesso ordine di onForgotten. (31ce3b)
Versione 1.6.0
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0
viene rilasciato. La versione 1.6.0 contiene questi commit.
Modifiche importanti dalla versione 1.5.0
- Nuovo modificatore
Modifier.anchoredDraggable
che consente di trascinare e animare tra insiemi predefiniti di ancore. Questo modificatore è pensato per sostituireModifier.swipeable
. Scopri come utilizzarlo ed esegui la migrazione daModifier.swipeable
nella guida alla migrazione. - È stata aggiunta la funzionalità di trascinamento tra app e componenti. Per iniziare, consulta
DragAndDropTarget
,Modifier.dragAndDropSource
e altre API Modifier.draggable2D
è il nuovo modificatore che consente di supportare facilmente il trascinamento 2D. Vedi Esempio.AndroidExternalSurface
eAndroidEmbeddedExternalSurface
sono stati aggiunti per semplificare l'aggiunta di componenti basati su elementi in compose- Varie modifiche e miglioramenti alle API in
Pager
esnapFlingBehaviour
- Diverse API di messa a fuoco, testo e intestazioni sono state promosse ad API stabili
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.
Modifiche all'API
- Il costruttore dell'estensione
DragAndDropTarget()
è stato rimosso. Crea una nuova istanza utilizzandoobject: DragAndDropTarget {}
. (I32318)
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03
viene rilasciato. La versione 1.6.0-beta03 contiene questi commit.
Correzioni di bug
- Correzione dell'errore di arresto anomalo che interessava il testo di grandi dimensioni misurato con vincoli infiniti. (I1a7df, b/312294386)
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.
Correzioni di bug
- Correzione del problema relativo al mancato aggiornamento di
canScroll
dopo lo scorrimento solo per il nuovo layout. (I60a86) - Correzione per
Modifier.animateItemPlacement()
eLookaheadScope
dopo piccoli scorrimenti. (I3a2b7)
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
viene rilasciato. La versione 1.6.0-beta01 contiene questi commit.
Modifiche all'API
- Il modificatore
DragAndDropTarget
ora prende in modo esplicito ilDragAndDropTarget
di ricezione e ha un lambda per attivare una sessione di trascinamento. Ora esistono due funzioni di fabbrica per unDragAndDropModifierNode
. Uno per ricevere i trasferimenti e uno per trasferire i dati (I69481) maximumFlingVelocity
aggiornato in modo da essere rappresentato come numero decimale. La documentazione è stata aggiornata per maggiore chiarezza in merito all'unitàmaximumFlingVelocity
. (I8adc7)onDragAndDropStart
nella fabbricaDragAndDropModifierNode
è stato rinominato inacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto adragAndDropTarget
Modifier
per accettare da una sessione di trascinamento. Questa funzione lambda restituisce un valore validoDragAndDropTarget
se ti interessa una sessione di trascinamento. Gli altri lambda per l'elaborazione degli eventi di trascinamento sono stati sostituiti da questo.È stata aggiunta una funzione di fabbrica
DragAndDropTarget
per ricevere dalle sessioni di trascinamento (Iebf3a)L'esposizione di
startDragImmediately
inAnchoredDraggable
consente di rilevare i gesti di trascinamento durante l'utilizzo. È utile impostarlo quando il widget è animato su un'ancora di destinazione. Vedi Esempio. (Ie6d13, b/285139987)Le API di descrizioni comando di base ora sono
@ExperimentalFoundationApi
(I30b0b)DragAndDropInfo
è stato rimosso come tipo.DragAndDropModifierNode.drag
ora accetta i parametri per la lambdaDrawScope
transferData
, la dimensione della decorazione e la decorazione trascinataDragAndDropTarget
ha metodi per eventi di trascinamento specifici anziché essere un singolo metodo astrattoonDragAndDropEvent
nella funzione di fabbrica per unDragAndDropModifierNode
è stato rinominato inonDragAndDropStart
per comunicare meglio che ilDragAndDropTarget
fornito è valido solo per una determinata sessione di trascinamentoDragAndDropEventType
è stato rimosso (I645b1)PlatformTextInputModifierNode.runTextInputSession
rinominato inestablishTextInputSession
. (I03cd0)Sostituisci
OriginalText
conTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
rinominato inrunTextInputSession
. (Ie9c6b)Gli elementi secondari di
SubcomposeLayout
(e i layout comeLazyColumn
basati su questo) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di testassertIsDeactivated()
per testare questi nodi. Il resto delle API di test escluderà i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)Il parametro
clippingEnabled
diModifier.magnifier
viene rinominato inclip
.Il parametro
magnifierCenter
diModifier.magnifier
viene reso nullable mantenendo lo stesso comportamento predefinito. (I6aa66)Le API
SwipeToReveal
Material (per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che comporta una interruzione del servizio. Consulta la demo e il codice di esempio per esempi su come utilizzare la nuova API. (Ia8943)
Correzioni di bug
- Implementa equals e hashcode per
PageSize.Fixed
. (Ie3ede, b/300134276) - È stato corretto un bug che causava il mancato restringimento del layout di
BasicText
quandominWidth
cambiava eminWidth
era inferiore ai vincoli di misura inizialimaxWidth
(Idb19c) - È stato aggiunto il supporto del renderer per il gradiente a scorrimento in
ArcLine
. (I4d5bb) - Risolvere il problema di compatibilità binaria con la modifica dell'Inserimento finestra (Iee695)
- Rimuovi il livello di base del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza questo livello. (I55555)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
viene rilasciato. La versione 1.6.0-alpha08 contiene questi commit.
Nuove funzionalità
Modifier.draggable2D
è il nuovo modificatore che consente di supportare facilmente il trascinamento 2D. Vedi Sample (Id95f5, b/214412658)
Modifiche all'API
- La funzione lambda
onDrawDragShadow
diModifier.dragAndDrawSource
è stata rinominatadrawDragDecoration
e il parametro size diDragAndDropInfo
è stato rinominatodragDecorationSize
. (Id0e30, b/303904810) - Il parametro
decorationBox
diBasicTextField2
viene rinominato indecorator
. Il relativo tipo viene modificato anche in un'interfaccia di divertimento equivalenteTextFieldDecorator
. (I23c1c)
Correzioni di bug
- Documentazione migliorata su
BasicTextField
in merito ai requisiti dionValueChange
. (I90fc9, b/160257648)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
viene rilasciato. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche all'API
- È stato introdotto
PlatformTextInputMethodTestOverride
per scrivere test per gli editor di testo personalizzati. (Id159b) GraphicsSurface
rinominato inAndroidExternalSurface
(I11680)- È stato aggiunto il flag temporaneo
DisableNonLinearFontScalingInCompose
per disattivare il ridimensionamento dei caratteri non lineari. ImpostaDisableNonLinearFontScalingInCompose = true
nei test se hai bisogno di tempo per ripulire. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486) - Sono state aggiunte le raccolte
ColorList
eColorSet
che evitano le allocazioni. (I744bd) - Questa modifica rimuove
shortSnapVelocityThreshold
, che è stato trasformato in un dettaglio di implementazione delle implementazioni diSnapLayoutInfoProvider
. (I65f6d) - Aggiunge il modificatore
dragAndDropSource
per avviare le sessioni di trascinamento e il modificatoredragAndDropTarget
per ricevere da queste sessioni (Ib7828, b/286038936) - Aggiorna la documentazione e il metodo di posizionamento di
SnapPositionInLayout
. Inserisci spaziatura interna dei contenuti nel metodo di posizionamento inSnapPositionInLayout
. (Id7938, b/300116110) - È stato aggiunto
UndoState
aTextFieldState
per consentire di annullare/ripetere le modifiche apportate dall'utente. (Icc024)
Correzioni di bug
- È stato corretto il problema per cui
basicMarquee
non si animava dopo la modifica della velocità. (Id2e77, b/297974036)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
viene rilasciato. La versione 1.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Nuovi wrapper composable per
SurfaceView
,TextureView: GraphicsSurface()
eEmbeddedGraphicsSurface()
. Si tratta di un'API sperimentale soggetta a cambiamenti e modifiche. (I9ddb2) Modifier.magnifier()
è ora un'API stabile. È inclusa la rimozione diMagnifierStyle
a favore dei parametri in linea nel modificatore stesso. (I83bec, b/298381260, b/262367109, b/261438887)
Modifiche all'API
updateCurrentPage
eupdateTargetPage
sono stati introdotti inScrollScope
e sono gli ultimi elementi necessari per consentire la personalizzazione dello scorrimento animato inPagerState.scroll
. (I9cad5, b/267744105, b/243786897)- Rimuovi la densità da
SnapFlingBehavior
. Poiché tutte le implementazioni diSnapLayoutInfoProvider
hanno già un modo per accedere alla densità, l'ambito del ricevitore potrebbe essere rimosso, il che comporterà un'implementazione meno complessa sia diSnapFlingBehavior
che diSnapLayoutInfoProviders
. (I153c3) - Altri modificatori contrassegnati come stabili. (I56af1, b/298046462)
SnapStepSize
è stato rimosso daSnapLayoutInfoProvider
. Il calcolo deve essere eseguito utilizzando le informazioni del layout e fornito tramite l'approccio o gli offset di agganci. (If320c)
Modifiche al comportamento
- Ora Scrivi utilizza il ridimensionamento dei caratteri non lineari per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è superiore al 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, ma quelle del testo già grande aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente in modo da rimanere proporzionali all'altezza prevista della scala del 100%. Per 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 all'API
- Aggiungi sovraccarichi per
BasicSecureTextField
che accettano un valore immutabile e un callback per modificarlo, proprio come l'attuale APIBasicTextField
. (Ia4882) - Aggiungi
Modifier.preferKeepClear()
per contrassegnare come composable la preferenza di evitare le finestre popup nell'API 33 e versioni successive. (Ib51d5, b/297260115) - Le velocità di lancio nei componenti View come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974) - Sono stati rimossi i sovraccarichi
Pager
ePagerState
deprecati. (Iea07e) - È stato aggiunto
BasicTooltipBox
acompose.foundation
e sono stati aggiornatiPlainTooltipBox
eRichTooltipBox
per utilizzareTooltipBox
con i nuovi composabiliPlainTooltip
eRichTooltip
. (I79e1d)
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
viene rilasciato. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche all'API
- Aggiungi l'interfaccia
ReusableComposition
per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stato promosso ad API stabili. (I7ffa3)- Aggiungi sovraccarichi per
BasicTextField2
che accettano un valore immutabile e un callback per modificarlo, proprio come l'attuale APIBasicTextField
. (I3f2b8) GridItemSpan::currentLineSpan
è ora un'API stabile. (Icc29c)- Canvas che accetta
contentDescription
è ora un'API stabile. (Ib3d29) - È stato introdotto
viewportSize
inScrollState
, un modo per conoscere le dimensioniviewPort
del componente che utilizzaScrollState
dopo la misurazione. (I8b85a, b/283102682) - È stato risolto un problema per cui il pre-caricamento in Pager non corrispondeva al comportamento in Visualizzazioni. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
è ora stabile.- L'API
Deprecated Modifier.consumedWindowInsets
è stata rimossa. Utilizza inveceModifier.consumeWindowInsets
. (Id72bb)
- L'API
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
viene rilasciato. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche all'API
- È stato aggiunto il sovraccarico di
LazyLayout
, che ora accetta una funzione lambda diLazyLayoutItemProvider
, non un semplice oggetto come in precedenza. Il sovraccarico precedente è stato ritirato. (I42a5a) - È stato aggiunto il supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
- È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando
readOnly
è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quandoreadOnly
veniva modificato da true a false quando era attivo. (I34a19, b/246909589)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
viene rilasciato. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche all'API
- È stato introdotto
PagerLayoutInfo
con le informazioni raccolte dopo il passaggio di una misura inPager
. È stato introdotto anchePageInfo
, le informazioni su una singola pagina misurata inPager
. (Iad003, b/283098900) - Annotazioni aggiuntive per specificare gli input consentiti per i composabili (I51109)
- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più pratico e rilevabile per richiedere lo stato attivo nei test. (Ie8722) - API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali. AncheLocalSoftwareKeyboardController
è ora unCompositionLocal
corretto. (I4c364)Modifier.transformable
ora fornisce il parametro pan delta incanPan
per determinare la direzione della panoramica da consentire o meno. (I692aa, b/266829800)- Aggiorna il modificatore
consumeWindowInsets
per estendere la superclasseAbstractComposeView
(Iacd74, b/269479941)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
viene rilasciato. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata introdotta una nuova API
AnchoredDraggable
in Foundation. Può essere utilizzato per creare componenti che possono essere trascinati tra stati discreti, come i riquadri inferiori modali. Questa API sostituisce l'APISwipeable
di Material. (I4a2ed)
Modifiche all'API
- Supporto
InputConnection#requestCursorUpdates
(I0c69b) - È stato introdotto
scrollAnimationSpec
per consentire specifiche di animazione personalizzate. ImpostazioneBringIntoViewCalculator
aggiornata aBringIntoViewScroller
. (Idb741) - Aggiungi il tipo
ResourceResolutionException
per avvolgere gli oggetti da lanciare lanciati durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset di cui non è stato possibile il caricamento. (I19f44, b/230166331, b/278424788) - Sono state aggiunte proprietà e azioni di semantica per supportare la traduzione del testo. (I4a6bc)
- È stata introdotta un'API
BringIntoViewCalculator
che può essere utilizzata per personalizzare il modo in cui componenti comeScrollable
rispondono alle richiestebringIntoView
. È stata modificata l'overload di scrollable in modo che accetti facoltativamente un'istanza diBringIntoViewCalculator
. (Iaf5af)
Correzioni di bug
- È stato aggiunto un controllo lint per avvisare se stai creando un
MutableInteractionSource
nella composizione senza ricordarlo, in modo simile ai controlli lint per la creazione di stato mutabile /Animatable
. (I5daae) - È stato aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271)
- È stata aggiunta l'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.4
viene rilasciato. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.3
viene rilasciato. Questa versione non presenta modifiche.
Versione 1.5.2
27 settembre 2023
androidx.compose.foundation:foundation-*:1.5.2
viene rilasciato. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- È stato corretto un bug nel testo che causava arresti anomali in determinate circostanze quando la semantica veniva invalidata.
Versione 1.5.1
6 settembre 2023
androidx.compose.foundation:foundation-*:1.5.1
viene rilasciato. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando
readOnly
è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quandoreadOnly
veniva modificato da true a false quando era attivo. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
androidx.compose.foundation:foundation-*:1.5.0
viene rilasciato. La versione 1.5.0 contiene questi commit.
Modifiche importanti dalla versione 1.4.0
- È stata eseguita la migrazione di molti modificatori di base, tra cui
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, il modificatore di layout e altri, all'APIModifier.Node
, riducendo il sovraccarico nella composizione iniziale. - Miglioramenti alla stabilità dei pager. Sono stati risolti molti bug.
- I parametri
pageCount
ora si trovano inPagerState
anziché nel pager stesso
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
È disponibile un'ispezione facoltativa per consigliare la migrazione delle chiamate
mutableStateOf()
ai tipi specializzati corrispondenti per le primitive. Il relativo ID lint èAutoboxingStateCreation
. In precedenza, questa ispezione era attiva per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output di lint del progetto, modifica la gravità da informativa ad avviso (o superiore) dichiarandowarning "AutoboxingStateCreation"
all'interno della configurazionebuild.gradle
obuild.gradle.kts
del modulo come mostrato (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
viene rilasciato. La versione 1.5.0-beta03 contiene questi commit.
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.
Modifiche all'API
- Implementa
PlatformDataProvider
per fornire il battito cardiaco e i passi giornalieri. L'interfacciaSensorGateway
viene rimossa dall'API pubblica. (I55b84)
Correzioni di bug
- Riduci le allocazioni durante le misurazioni di liste/griglie/ecc. lazy (Iaf9e2)
- Ridotte le allocazioni durante l'applicazione degli snapshot (I65c09)
- Le allocazioni sono state rimosse dalle animazioni con effetto molla (Ie9431)
- L'allocazione è stata rimossa da
TextLayout
(I0fd11) - Sono state rimosse più allocazioni nel monitoraggio della velocità del cursore (I26bae)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.foundation:foundation:1.5.0-alpha04
e androidx.compose.foundation:foundation-layout:1.5.0-alpha04
vengono rilasciati. La versione 1.5.0-alpha04 contiene questi commit.
Modifiche all'API
- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Presenta un
SnapLayoutInfoProvider
che può essere utilizzato conLazyGridState
. (I92134, b/269237141, b/260914964) - È stato aggiunto il valore sperimentale
Modifier.animateItemPlacement()
per l'ambito dell'elemento delle griglie sfalsate lazy. Puoi applicarlo agli articoli per ottenere le animazioni di modifica della posizione/riordino dell'automazione. (I4b62d, b/257034719) - Esegui la promozione di
GridCells.FixedSize
alla versione stabile.FixedSize
definisce unLazyGrid
in cui ogni cella assume dimensioni esatte sull'asse trasversale, con lo spazio rimanente distribuito dall'organizzazione dell'asse trasversale. (I8542f) - È stato introdotto l'ambito del ricevitore
PagerScope
per Pager e una funzione di utilità per il calcolo di un determinato offset di pagina. (If2577) - Inserisci
snapPositionalThreshold
quando crei un comportamento di scorrimento rapido di Snap. Utilizza questo parametro per specificare una soglia di posizione per lo scatto breve in Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
sostituito concalculateSnappingOffset
. In questo nuovo metodo, richiediamo semplicemente l'offset successivo a cui applicare lo snap. Il calcolo dei limiti deve essere eseguito a livello di implementazione, in quanto può variare a seconda di come deve avvenire l'aggancio. (I923a4)- Le API
LazyStaggeredGrid
sono state promosse a stabili. (I633a5) - Vuoi rimuovere
pageCount
daHorizontal/VerticalPager
? Deve essere fornito al momento della creazione dello stato.PagerState
erememberPagerState
sono stati aggiornati per accettare ipageCount
. (Ieb52d, b/266965072) - Vuoi rimuovere
pageCount
daHorizontal/VerticalPager
? Deve essere fornito al momento della creazione dello stato.PagerState
erememberPagerState
sono stati aggiornati per accettare ipageCount
. (Ifa3cb, b/266965072) - Inserisci
shortSnapVelocityThreshold
inSnapFlingBehavior
del pager. (I7379e, b/275579012) - Aggiunge un
FlowRowScope
e unFlowColumnScope
. (I54fe2)
Correzioni di bug
- Le chiamate per ottenere la semantica del testo quando i vincoli hanno
minWidth
eminHeight
non si arrestano più in modo anomalo. (Ibd072) - È stata corretta la regressione per cui la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal composable
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
e androidx.compose.foundation:foundation-layout:1.5.0-alpha03
vengono rilasciati. La versione 1.5.0-alpha03 contiene questi commit.
Questa release attiva il nuovo stack di rendering del testo per Scrivi. Il nuovo stack è ottimizzato per il rendimento e non dovresti notare modifiche visibili.
Se noti delle modifiche nel testo visualizzato, puoi eseguire il debug impostando NewTextRendering1_5 = false
per confermare la differenza di comportamento. Se imposti questa opzione, la ricomposizione verrà forzata. Segnala eventuali differenze di comportamento come bug.
Il flag di debug verrà rimosso prima della release 1.5 beta01.(Iada23, b/246960758)
Modifiche all'API
- Inserisci
FlowColumn/FlowRow
in linea. (Idab37)
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
e androidx.compose.foundation:foundation-layout:1.5.0-alpha02
vengono rilasciati. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche all'API
- È stato aggiunto il supporto per le celle di dimensioni fisse in
LazyGrid
e per l'organizzazione con disposizione degli assi incrociati. (I83ed9, b/235121277, b/267942510) - È stato aggiunto il supporto per corsie di dimensioni fisse in
LazyStaggeredGrid
e per l'organizzazione con disposizione trasversale dell'asse. (I7d519) - Ora i
UrlAnnotation
inAnnotatedString
possono essere aperti tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta l'azione di semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Le azioni di test relative al testo (ad es.
performTextInput
) ora richiederanno direttamente lo stato attivo, utilizzando l'azione di semantica, anziché fare clic sul campo. (I6ed05) - Aggiunge il supporto per la spaziatura/l'organizzazione sull'asse trasversale utilizzando
verticalArrangement
inFlowRow
ehorizontalArrangement
inFlowColumn
. Rimuoviamo ancheverticalAlignment
ehorizontalAlignment
di primo livello inFlowRow/FlowColumn
. Gli sviluppatori possono utilizzareModifier.align
. In questo modo viene ridotta la confusione tra le convenzioni di denominazione diverticalAlignment
everticalArrangement
. (I87b60, b/268365538)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
e androidx.compose.foundation:foundation-layout:1.5.0-alpha01
vengono rilasciati. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche all'API
- Il testo e
BasicText
vengono sottoposti a refactoring per utilizzare il nuovo sistema di modificatori. In molti casi, questo porta a notevoli miglioramenti delle prestazioni. Non dovrebbero essere visibili modifiche. (If1d17, b/246961435) - È stata aggiunta l'azione di semantica
PerformImeAction
per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)
Correzioni di bug
- Componenti interni di
Modifier.hoverable
aggiornati. Il modificatorehoverable
verrà mostrato nell'inspector solo se è attivato. (I82103)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.foundation:foundation:1.4.3
e androidx.compose.foundation:foundation-layout:1.4.3
vengono rilasciati senza modifiche (solo un aggiornamento della versione).
Versione 1.4.2
19 aprile 2023
androidx.compose.foundation:foundation:1.4.2
e androidx.compose.foundation:foundation-layout:1.4.2
vengono rilasciati. La versione 1.4.2 contiene questi commit.
Versione 1.4.1
5 aprile 2023
androidx.compose.foundation:foundation:1.4.1
e androidx.compose.foundation:foundation-layout:1.4.1
vengono rilasciati. La versione 1.4.1 contiene questi commit.
Versione 1.4.0
22 marzo 2023
androidx.compose.foundation:foundation:1.4.0
e androidx.compose.foundation:foundation-layout:1.4.0
vengono rilasciati. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta l'integrazione di Emoji compat a
Text
eTextField
, nonché al paragrafo di livello inferiore. È attiva per impostazione predefinita quando è configurato emojicompat. EmojiCompat
può essere configurato su un testo specifico utilizzandoPlatformParagraphStyle
.- È stato aggiunto il supporto per l'intervallo di riga completo a
LazyStaggeredGrid
(I28252) - Aggiunta di
onHover
sperimentale aClickableText
(I6938f) - Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni
runComposeUiTest
ecreate*ComposeRule
che accettano parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamateLaunchedEffect
erememberCoroutineScope()
al suo interno. (I10614, b/265177763) FlowRow
eFlowColumn
sono ora disponibili come@ExperimentalFoundationApi
, che consente un layout più flessibile dei componenti in base a righe e colonne che si interromperanno in una nuova riga se non c'è spazio sufficiente sull'asse principale. (I3a7b2)Modifier.basicMarquee()
è disponibile in versione sperimentale per la visualizzazione dei contenuti con un effetto di scorrimento del carosello. (I2df44, b/139321650)
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.foundation:foundation:1.4.0-rc01
e androidx.compose.foundation:foundation-layout:1.4.0-rc01
vengono rilasciati. La versione 1.4.0-rc01 contiene questi commit.
Modifiche all'API
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni di input di testo personalizzati che comunicano direttamente con le API di piattaforma. (I58df4) - Aggiunta del supporto per il layout inverso a
LazyStaggeredGrid
. (I3ef4a)
Correzioni di bug
- L'azione di semantica
SetText
diBasicTextField
ora aggiornerà il buffer di testo utilizzando lo stesso percorso del codice degli aggiornamenti dell'IME e delle funzioni di test (ad es.performTextReplacement
). - Le funzioni di test del testo
performTextClearance
,performTextReplacement
eperformTextSelection
ora utilizzanoSemanticsActions
. (I0807d, b/269633168, b/269624358)
Versione 1.4.0-beta02
22 febbraio 2023
androidx.compose.foundation:foundation:1.4.0-beta02
e androidx.compose.foundation:foundation-layout:1.4.0-beta02
vengono rilasciati. La versione 1.4.0-beta02 contiene questi commit.
Modifiche all'API
- È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che consente di reimpostare alcuni stati locali per gestire correttamente la situazione quandoLayout
verrà riutilizzato (ad esempio come elemento diLazyColumn
). È stato correttoFocusTargetModifierNode
per reimpostare correttamente lo stato attivo. (I65495, b/265201972) - È stato aggiunto il parametro
BlendMode
ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508) - È stata rimossa l'API
modifierElementOf()
. Espandi direttamente daModifierNodeElement
. (Ie6d21)
Correzioni di bug
- Non è più possibile selezionare un carattere parziale con i maniglie di selezione. (Idedd1)
- Correzione di un arresto anomalo quando si preme Ctrl+Backspace su un campo 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 di Emoji compat a
Text
eTextField
, nonché al paragrafo di livello inferiore. È attiva per impostazione predefinita quando è configurato emojicompat. EmojiCompat
può essere configurato su un testo specifico utilizzandoPlatformParagraphStyle
.
Modifiche all'API
- È stata aggiunta l'implementazione comune dell'API
PinnableContainer
utilizzata in tutti iLazyLayouts
per conservare gli elementi che escono dalla composizione, ma che devono comunque essere attivi. (If45a4) PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)
Contributo esterno
- È stata aggiunta la proprietà
mainAxisItemSpacing
aLazyListLayoutInfo
,LazyGridLayoutInfo
eLazyStaggeredGridItemInfo
(I52fad)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
e androidx.compose.foundation:foundation-layout:1.4.0-alpha05
vengono rilasciati. La versione 1.4.0-alpha05 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto dell'intervallo di riga completa a
LazyStaggeredGrid
(I28252) - Aggiunta di
onHover
sperimentale aClickableText
(I6938f) - Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni
runComposeUiTest
ecreate*ComposeRule
che accettano parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamateLaunchedEffect
erememberCoroutineScope()
al suo interno. (I10614, b/265177763)
Modifiche all'API
- Unisce le API pre/post di
OverscrollEffect
in funzioni "decoratore" combinateapplyToScroll
eapplyToFling
. Consulta gli esempi aggiornati nella documentazione per esempi di come implementare un effetto di scorrimento eccessivo con la nuova forma dell'API. (I8a9c4, b/255554340) - Più tipi/valori null delle funzioni in linea/nascoste ritirate (I24f91)
- Le API
LineBreak
eHyphens
inTextStyle
sono state rese stabili. (Ic1e1d)
Correzioni di bug
- Ora il cursore nei campi di testo continuerà a lampeggiare anche quando le animazioni sono disattivate. (I95e70, b/265177763)
Modifier.basicMarquee
ora si anima anche quando le animazioni sono disattivate nelle impostazioni di sistema. (I23389, b/262298306, b/265177763)
Contributo esterno
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non vengono nuovamente deprecati. (I23a04, b/262648050)
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha04
e androidx.compose.foundation:foundation-layout:1.4.0-alpha04
vengono rilasciati. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
FlowRow
eFlowColumn
sono ora disponibili come@ExperimentalFoundationApi
, che consente un layout più flessibile dei componenti in base a righe e colonne che si interromperanno in una nuova riga se non c'è spazio sufficiente sull'asse principale. (I3a7b2)Modifier.basicMarquee()
è disponibile in versione sperimentale per la visualizzazione dei contenuti con un effetto di scorrimento del carosello. (I2df44, b/139321650)
Modifiche all'API
FocusRequesterModifier
è deprecato a favore diFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Il costruttore
AndroidFont
convariationSettings
è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807) - È stata introdotta l'API
PinnableContainer
propagata dagli elenchi lazy tramite una composizione locale che consente di bloccare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando viene visualizzato fuori dalla visualizzazione. Ad esempio,Modifier.focusable()
blocca l'elemento corrente attivo tramite questo meccanismo. (Ib8881, b/259274257, b/195049010) - È stato riscritto il modo in cui gli elementi scorrevoli rispondono a
bringIntoViewRequesters
e agli elementi che possono essere attivati per gestire meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Maggiore nullabilità del tipo di ritorno delle funzioni nascoste ritirate (Ibf7b0)
- È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7) - Aggiungi
TextFieldFocusModifier
per correggere il comportamento di navigazione con il fuoco per la piattaforma Android (I00303) - L'argomento
maxSize: IntSize
indrawText
è stato sostituito consize: Size
per essere in linea con le altre funzioniDrawScope
. Per impostazione predefinita,size
è impostato suSize.Unspecified
, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)
Correzioni di bug
- Modifiche alla fisica di aggancio in
SnapFlingBehaviour
per un'esperienza più naturale.
Problema noto
- Quando esegui l'aggiornamento da
androidx.compose.foundation:1.4.0-alpha03
aandroidx.compose.foundation:1.4.0-alpha04
, potresti riscontrare un errorejava.lang.NoSuchFieldError
. Qui è dove è stato segnalato il problema per la prima volta. È stata inviata una correzione che sarà disponibile nel prossimo aggiornamento di Scrivi. Come soluzione alternativa, aggiorna le librerieandroidx.compose.material
eandroidx.compose.material3
all'ultima versione(1.1.0-alpha04) o esegui il downgrade diandroidx.compose.foundation
alla versione 1.4.0-alpha03.
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
e androidx.compose.foundation:foundation-layout:1.4.0-alpha03
vengono rilasciati. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche all'API
- Nei test dell'interfaccia utente che utilizzano una regola di composizione, le interruzioni riprese durante i callback
withFrameNanos
non verranno inviate finché non sarà terminata l'esecuzione di tutti i callback del frame. Questo corrisponde al comportamento di composizione quando viene eseguito normalmente. Tuttavia, i test che si basano sul vecchio comportamento potrebbero non riuscire. Ciò dovrebbe interessare solo il codice che chiama direttamentewithFrameNanos
owithFrameMillis
e ha una logica esterna al callback passata a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Consulta le modifiche al test di animazione in questo CL per esempi. - È stato aggiunto il parametro facoltativo
onPerformTraversals: (Long) -> Unit
al costruttore e alla funzione di fabbricaTestMonotonicFrameClock
per eseguire il codice dopo i callbackwithFrameNanos
, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670) - Introduci le azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che sono disponibili solo a partire dall'API 29. (Ida4ab) - Vengono introdotti
HorizontalPager
eVerticalPager
, un modo per mostrare i composabili in un modo simile a Pager. È stato introdottoPagerState
per controllare i pager ed eseguire query sulle informazioni relative allo stato corrente del pager. È stato introdottoPageSize
, un modo per controllare le dimensioni della pagina di un carosello, che può essere utilizzato per creare un carosello come i caroselli. È stato introdottoPagerSnapDistance
, un modo per controllare il funzionamento dell'aggancio nel comportamento di scorrimento di Pager. (I01120) - È stato introdotto un sovraccarico in
SnapFlingBehavior.performFling
per aiutare a capire dove si stabilirà il lancio. (I569f6) OverscrollEffect#isEnabled
rimosso. Anziché dover ricordare e impostare questo flag, non inviare eventi all'effetto di scorrimento eccessivo nei casi in cui non vuoi che venga visualizzato (ad esempio seScrollableState#canScrollForward/backward
restituisce entrambi false). (I1a4b0, b/255554340, b/255557085)- Sono stati aggiunti
ScrollableState#canScrollForward
eScrollableState#canScrollBackward
per verificare se unScrollableState
ha spazio per scorrere in entrambe le direzioni (se si trova al minimo / massimo del suo intervallo). Il valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni diScrollableState
. I consumatori possono utilizzarlo per indicare all'utente che c'è ancora spazio per scorrere e potrebbe essere utilizzato anche per evitare di inviare delta aScrollableStates
che non hanno spazio per scorrere in una determinata direzione, in modo da ridurre il lavoro non necessario. (Idf1a0, b/255557085) - È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli antenati. (I2ba9d, b/203141462)
- Utilizzato in
Clickable
per ritardare correttamente le interazioni con i tasti, quando i gesti potrebbero diventare eventi di scorrimento. - È stato corretto il problema per cui
Clickables
non ritardava correttamente le increspature quando veniva utilizzato all'interno di unScrollable ViewGroup
. - È stato aggiornato il riquadro e i riquadri per posticipare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
- Aggiorna la denominazione di
snapStepSize
in modo che sia coerente con gli altri metodi inSnapLayoutInfoProvider
. (Ife67c) EmojiCompat
aggiunto aCompose
(Ibf6f9, b/139326806)- Abbiamo rinominato
consumedWindowInsets()
inconsumeWindowInsets()
ewithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
e abbiamo reso pubblici i modificatori. (Ie44e1)
Correzioni di bug
- L'arresto anomalo con
Modifier.animateItemPlacement()
e le griglie lazy è stato risolto. Il problema si verificava in alcune condizioni quando il numero di nuovi elementi è inferiore a quello precedente. (I0bcac, b/253195989)
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha02
e androidx.compose.foundation:foundation-layout:1.4.0-alpha02
vengono rilasciati. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche all'API
awaitFirstDown
ewaitForUpOrCancellation
ora accettano unPointerEventPass
per una maggiore flessibilità. (I7579a, b/212091796)- Ripristinare l'API
beyondBoundCount
dalle API Lazy* (I12197) - È stato introdotto un parametro nelle API Lazy per comporre e posizionare gli elementi fuori dal viewport (I69e89, b/172029355)
- È stato aggiunto il parametro
minLines
aBasicText
eBasicTextField
. Consente di impostare l'altezza minima di questi composabili in termini di numero di righe (I24294, b/122476634)
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.foundation:foundation:1.4.0-alpha01
e androidx.compose.foundation:foundation-layout:1.4.0-alpha01
vengono rilasciati. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche all'API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Funziona in modo simile aforEachGesture()
, ma il ciclo dei gesti opera interamente all'interno diAwaitPointerEventScope
, quindi gli eventi non possono essere persi tra le iterazioni. forEachGesture()
è stato ritirato a favore diawaitEachGesture()
perché consente la perdita di eventi tra un gesto e l'altro. (Iffc3f, b/251260206)- Sono stati aggiunti
WindowInsets.imeAnimationSourc
eWindowInsets.imeAnimationTarget
per determinare l'avanzamento dell'animazione e sapere dove si troverà l'IME al termine dell'animazione. (I356f1, b/217770337)
Versione 1.3
Versione 1.3.1
9 novembre 2022
androidx.compose.foundation:foundation:1.3.1
e androidx.compose.foundation:foundation-layout:1.3.1
vengono rilasciati. La versione 1.3.1 contiene questi commit.
Correzioni di bug
- Risolvere il problema di prestazioni in
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
non legge le coordinate del layout se non è collegato (aosp/2241316)
Versione 1.3.0
24 ottobre 2022
androidx.compose.foundation:foundation:1.3.0
e androidx.compose.foundation:foundation-layout:1.3.0
vengono rilasciati. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Sono state introdotte le versioni sperimentali di
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
e altre API corrispondenti sono state aggiunte come sperimentali.Modifier.clickable
,Modifier.toggleable
eModifier.selectable
ora mostrano delle increspature se si fa clic con la tastiera o con il d-pad di un telecomando.
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.foundation:foundation:1.3.0-rc01
e androidx.compose.foundation:foundation-layout:1.3.0-rc01
vengono rilasciati. La versione 1.3.0-rc01 contiene questi commit.
Modifiche all'API
- È stato introdotto
lowVelocityAnimationSpec
utilizzato dal passaggio di avvicinamento quando la velocità di lancio non è sufficiente per il decadimento. (Iaeb27) - È stata aggiunta una nuova API sperimentale Hyphens per supportare l'inserimento automatico di trattini nel testo (Iaa869)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.foundation:foundation:1.3.0-beta03
e androidx.compose.foundation:foundation-layout:1.3.0-beta03
vengono rilasciati. La versione 1.3.0-beta03 contiene questi commit.
Modifiche all'API
- Aggiungi opzioni per personalizzare il taglio a capo in Testo. (I86907)
BringIntoViewResponder
ora sono in grado di ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211)- Introduzione del supporto delle spaziature tra gli elementi nella versione sperimentale
Staggered Grid
(I10b82) - Introduzione di spaziatura dei contenuti per
Staggered Grid
sperimentale (I342ea) - È stato modificato l'argomento
size:IntSize
conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525) - È stato aggiunto
Modifier.withConsumedWindowInsets()
per consumareWindowInsets
per l'utilizzo al di fuori diwindowInsetsPadding
. - È stato aggiunto
MutableWindowInsets
per consentire di modificare facilmenteWindowInsets
senza ricomposizione. (I7fd28, b/237019262, b/243119659)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.foundation:foundation:1.3.0-beta02
e androidx.compose.foundation:foundation-layout:1.3.0-beta02
vengono rilasciati. La versione 1.3.0-beta02 contiene questi commit.
Modifiche all'API
- Versione iniziale di
StaggeredGrid
sperimentale (Ia48be) FocusDirection.In
eFocusDirection.Out
sono stati rinominati inFocusDirection.Enter
eFocusDirection.Exit
(Ia4262, b/183746982)- È stata introdotta un'overload di
rememberSnapFlingBehavior
che fornisce un modo rapido per attivare l'aggancio inLazyLists
. (Ifb48a) - La factory
snapFlingBehavior
è stata sostituita con una classeSnapFlingBehavior
concreta. Sono stati applicati gli ambiti ai metodiSnapLayoutInfoProvider
per la densità per semplificare le conversioni da dp a px per gli utenti dell'API. (I54a11) - Aggiorna
LazyLayoutMeasureScope.measure
in modo che restituisca un elenco di elementi inseribili, evidenziando l'immutabilità desiderata del valore restituito. (I48b7c) - È stato introdotto
SnapLayoutInfoProvider
che accetta unLazyListState
per creare un'istanza diSnapLayoutInfoProvider
che può essere utilizzata per attivare uno snapFlingBehavior
perLazyLists
. (I2dd10)
Correzioni di bug
- Refactoring di
AwaitPointerEventScope#awaitLongPressOrCancellation
in modo che corrisponda ad altre funzioni await (I646e6)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.foundation:foundation:1.3.0-beta01
e androidx.compose.foundation:foundation-layout:1.3.0-beta01
vengono rilasciati. La versione 1.3.0-beta01 contiene questi commit.
Modifiche all'API
pointerPosition
è stato rimosso daOverscrollEffect
: gli effetti che si basano sulla posizione del cursore possono utilizzareModifier.pointerInput { }
ineffectModifier
per ottenere la posizione corrente del cursore. (I9f606, b/241239306)- È stato esposto
AwaitPointerEventScope#awaitLongPressOrCancellation
come componente aggiuntivo per il rilevamento dei gesti più complessi (I04374, b/181577176) - È stato introdotto
lazyListSnapLayoutInfoProvider
per attivare l'aggancio in Elenchi lazy. (I3ecdf) - È stato introdotto
SnapFlingBehavior
, un comportamento di lancio che consente l'aggancio dell'elenco. Fornisci un'istanza diSnapLayoutInfoProvider
con informazioni sul layout di agganci. (Ie754c)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.foundation:foundation:1.3.0-alpha03
e androidx.compose.foundation:foundation-layout:1.3.0-alpha03
vengono rilasciati. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche all'API
- I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26 e versioni successive). (I900dd, b/143703328)
- Supporto dei caratteri variabili in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - È stata rimossa l'annotazione sperimentale da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - Ora i campi di testo generano eccezioni più dettagliate quando l'
OffsetMapping
fornito da unVisualTransformation
restituisce indici non validi. (Ie73f9, b/229378536) - Introduzione di API sperimentali per condividere la logica del provider di elementi tra i layout lazy. (Ic891c)
ScrollableDefaults.reverseDirection()
non è più sperimentale. (Iba646)- È stato ritirato
SemanticsModifier.id
e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524) checkScrollableContainerConstraints()
non è più sperimentale. (I2c290)Modifier.clipScrollableContainer()
non è più sperimentale. (Ia2b44)- Ignora
TextInputService.show|hideSoftwareKeyboard
. UtilizzaSoftwareKeyboardController
nel codice dell'app eTextInputSession
nel codice di gestione dell'IME. (I14e4c, b/183448615)
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.foundation:foundation:1.3.0-alpha02
e androidx.compose.foundation:foundation-layout:1.3.0-alpha02
vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche all'API
- È stata aggiunta la funzione di estensione
drawText
inDrawScope
per fornire un modo per disegnare testo con più stili su composabili e modificatori che operano su unDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898)
Correzioni di bug
- Ora la tastiera virtuale viene nascosta quando un campo di testo viene disattivato mentre è attivo. (I6e3e4, b/237308379)
- Quando aggiungi gli eventi
InputEventChange
a Tracker della velocità, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803) - Quando un elemento scorrevole ha un elemento secondario attivo, ora scorrerà correttamente per mantenere visibile l'elemento secondario attivo quando le sue dimensioni diminuiscono, anche se le dimensioni sono animate. (I80867, b/230756508, b/220119990)
- È stato corretto un arresto anomalo in cui
TextField
viene cancellato e riempito mentre la selezione è attiva. (I1235b, b/208655565, b/214253689)
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.foundation:foundation:1.3.0-alpha01
e androidx.compose.foundation:foundation-layout:1.3.0-alpha01
vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche all'API
- È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare il collegamentoTalkBack
inAnnotatedString
. (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
eLazyHorizontalGrid
ora sono stabili.- Ora puoi specificare un tipo di contenuti per gli elementi nelle griglie e negli elenchi lazy. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
- Le liste e le griglie lazy ora hanno il parametro
userScrollEnabled
che consente di disattivare lo scorrimento tramite i gesti dell'utente. - È stata aggiunta una nuova API sperimentale denominata
LazyLayout
. È l'API che utilizziamo internamente per alimentare le griglie e gli elenchi lazy. - L'API
OverscrollEffect
è stata introdotta come sperimentale. Puoi definire effetti di scorrimento personalizzati, nonché aggiungere un effetto standard della piattaforma ai contenitori scorrevoli personalizzati. - Sono state introdotte le API di interoperabilità con scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e comporre gli attori di scorrimento.
- Lo scorrimento del mouse e del trackpad è stato aggiunto a tutti i contenitori con scorrimento.
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc03
e androidx.compose.foundation:foundation-layout:1.2.0-rc03
vengono rilasciati. La versione 1.2.0-rc03 contiene questi commit.
- Nessuna modifica dalla versione 1.2.0-rc02.
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc02
e androidx.compose.foundation:foundation-layout:1.2.0-rc02
vengono rilasciati. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc01
e androidx.compose.foundation:foundation-layout:1.2.0-rc01
vengono rilasciati. La versione 1.2.0-rc01 contiene questi commit.
Modifiche all'API
- È stato introdotto un
OverscrollEffect
sperimentale per consentire effetti di scorrimento personalizzati, insieme ai sovraccarichi diModifier.scrollable
che lo accettano. - La versione sperimentale
LocalOverScrollConfiguration
è stata spostata dafoundation.gesture
al pacchetto di base e rinominata inLocalOverscrollConfiguration
(If19fb, b/204650733) - Le interfacce nelle librerie di composizione ora vengono create utilizzando i metodi di interfaccia predefiniti di JDK8 (I5bcf1)
- È stata introdotta un'API sperimentale
checkScrollableContainerConstraints()
che consente di verificare che non vengano nidificati contenitori scorrevoli. Puoi utilizzarlo per creare layout lazy scorrevoli tramiteLazyLayout
. (Id6fab, b/233352497) LazyVerticalGrid
deprecato è stato rimosso dal pacchettoandroidx.compose.foundation.lazy
. La nuova API stabile si trova inandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Versione 1.2.0-beta03
1° giugno 2022
androidx.compose.foundation:foundation:1.2.0-beta03
e androidx.compose.foundation:foundation-layout:1.2.0-beta03
vengono rilasciati. La versione 1.2.0-beta03 contiene questi commit.
Modifiche all'API
- Sono stati aggiunti nuovi
IntervalList
eMutableIntervalList
sperimentali. Consente di rappresentare un elenco di valori tramite più intervalli. Sarà utile quando vuoi definire il tuo DSL simile a quello utilizzato daLazyColumn
, in cui gli elementi dell'elenco possono essere definiti tramite più chiamate item/items. (I2d05e, b/228580728)
Correzioni di bug
- È stata chiarita la documentazione relativa a
WindowInsets.ime
per indicare che gli insertiime
vengono segnalati fin dall'API 23, ma solo animati a partire dalla versione 30. (Ia7fc0, b/230756508) - La pressione del tasto Elimina avanti quando il cursore si trova alla fine di un campo di testo non causerà più arresti anomali.
- Ora
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
richiedono che gli argomenti del costruttore siano non negativi. (Ica8e6, b/199919707)
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta02
e androidx.compose.foundation:foundation-layout:1.2.0-beta02
vengono rilasciati. La versione 1.2.0-beta02 contiene questi commit.
- In precedenza, la risoluzione dei caratteri scaricabili che non modificava le dimensioni del layout del testo o di
TextField
non veniva ridisegnato, il che comportava la visualizzazione di caratteri obsoleti. Questa correzione di bug garantisce che il layout del testo attivi sempre il ricalcolo (b/229727404). (I1d49e, b/229727404)
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta01
e androidx.compose.foundation:foundation-layout:1.2.0-beta01
vengono rilasciati. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima release beta di 1.2.
Modifiche all'API
- È stato aggiunto
BeyondBoundsInterval
sperimentale che può essere utilizzato da implementazioni personalizzate diLazyList
quando il layout degli elementi supera i limiti visibili (Ifabfb, b/184670295) LineHeightBehavior
è stato rinominatoLineHeightStyle
LineVerticalAlignment
è stato rinominatoLineHeightStyle.Alignment
LineHeightTrim
viene rinominatoLineHeightStyle.Trim
- I valori del costruttore predefinito di
LineHeightStyle
sono stati rimossi (I582bf, b/181155707) - Sono stati aggiunti valori predefiniti per i membri facoltativi dell'interfaccia
LazyLayoutItemProvider
. (Iba8a0) - Nell'API
LazyLayoutItemProvider
, anziché una factory che restituisce la lambda componibile per indice, ora abbiamo una funzione componibile più semplice che accetta l'indice. (Id2196) - LazyLayoutItemsProvider viene rinominato in LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
viene rinominato initemCount
(Id409c)- È stato aggiunto il pennello a
TextStyle
eSpanStyle
per fornire un modo per disegnare il testo con colorazione sfumata. (I53869, b/187839528) - Gli attributi
trimFirstLineTop
etrimLastLineBottom
diLineHeightBehavior
sono stati sostituiti da un'unica enumerazione:LineHeightTrim
.LineHeightTrim
ha valori di 4 stati definiti da due valori booleani:FirstLineTop
,LastLineBottom
, Entrambi e Nessuno (Ifc6a5, b/181155707) È stato aggiunto
LineHeightBehavior
aTextStyle
eParagraphStyle. LineHeightBehavior
per controllare se l'altezza della linea viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della riga nello spazio fornito daTextStyle
(lineHeight
).Ad esempio, è possibile ottenere un comportamento simile a quello definito da CSS tramite
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.trimFirstLineTop
, le configurazionitrimLastLineBottom
funzionano correttamente solo quandoincludeFontPadding
è 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
- È stata corretta la regressione per cui i campi di testo non nascondevano la tastiera quando venivano rimossi dalla composizione mentre erano attivi. (I7a410, b/230536793, b/225541817)
- Supporto dei puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
verrà ora sempre sospesa fino al completamento della richiesta o all'interruzione da parte di una richiesta più recente non sovrapposta. Le richieste in sovrapposizione verranno messe in coda. (I43e7f, b/216790855)- Le chiamate
BringIntoViewRequester.bringIntoView
simultanee per rettangoli completamente sovrapposti ora rispetteranno solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918) - È stata attivata l'opzione predefinita
includeFontPadding
. È possibile disattivareincludeFontPadding
utilizzando l'attributoTextStyle.platformTextStyle
. Nel prossimo futuro cambieremo il comportamento predefinito, ma fino ad allora questa impostazione ci consente di integrare meglio i miglioramenti dell'altezza della riga (aosp/2058653) e risolvere i problemi di ritaglioTextField
. (I01423, b/171394808) Modifier.bringIntoViewRequester
non utilizza piùonGloballyPositioned
. (I630f5)
Contributo esterno
MouseInjectionScope.scroll(delta = someDelta)
ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, lo scorrimento avviene verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
e androidx.compose.foundation:foundation-layout:1.2.0-alpha08
vengono rilasciati. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche all'API
- Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium nell'API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 nell'API 21-28. (I380fe, b/156048036, b/226441992) - Paragraph e MultiParagraph ora accettano il parametro Constraints. Al momento, il passaggio di
Constraints.maxHeight
non ha alcun effetto, ma in futuro consentirà di eseguire alcuni calcoli, ad esempio l'ellissizzazione in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata simile a MutableSet che non consente di aggiungere nuovi elementi. (Icd314)- Il consumo parziale (posizione OR verso il basso) è stato ritirato in
PointerInputChange
. Puoi utilizzareconsume()
per consumare completamente la modifica. Puoi utilizzareisConsumed
per determinare se qualcun altro ha già utilizzato la modifica. PointerInputChange::copy()
ora crea sempre una copia superficiale. Ciò significa che le copie diPointerInputChange
verranno consumate una volta consumata una delle copie. Se vuoi creare unPointerInputChange
non vincolato, utilizza il costruttore. (Ie6be4, b/225669674)- È stata introdotta la nuova API sperimentale
LazyLayout
. In questo modo puoi creare i tuoi componenti, ad esempioLazyColumn
diLazyVerticalGrid
. Tieni presente che l'API è nelle sue fasi iniziali e può essere modificata nelle release future. (Iba2bc, b/166591700) AndroidFont
ora accettatypefaceLoader
come parametro del costruttore. (I2c971)- La funzionalità complementare
WindowInsets
ora mostra la visibilità (se sono sullo schermo, indipendentemente dal fatto che si intersechino con la finestra) e le dimensioni che potrebbero avere se sono disponibili sul dispositivo, ma non sono attualmente attive. (I65182, b/217770337)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
e androidx.compose.foundation:foundation-layout:1.2.0-alpha07
vengono rilasciati. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche all'API
- È stata aggiunta un'API
PinnableParent
che consente ai figli dei layout lazy di impedire lo smaltimento degli elementi attualmente composti (Ibbdd0, b/184670295) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno i campibeforeContentPadding
eafterContentPadding
(I3b628, b/200920410)- È stato aggiunto
KeyboardType.Decimal
come alternativa aKeyboard.Number
per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363) - Aggiungi un nuovo descrittore di caratteri Font(DeviceFontFamilyName) per eseguire la ricerca facoltativa dei caratteri installati nel sistema durante le catene di fallback dei caratteri. (I30468, b/219754572)
PointerEventType.Scroll
ePointerEvent.scrollDelta
sono ora API stabili (I574c5, b/225669674)- La configurazione di compatibilità temporanea aggiunta per
includeFontPadding
inTextStyle/ParagraphStyle. includeFontPadding
può essere modificata tramiteTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Si tratta di un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) FontFamily.Resolver
è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)- La proprietà di estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare il consumo di WindowInsets di Android. In questo modo, ogniComposeViews
separato nella gerarchia può applicareWindowInsets
senza interferire con gli altri. (I0ef08, b/220943142)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.foundation:foundation:1.2.0-alpha06
e androidx.compose.foundation:foundation-layout:1.2.0-alpha06
vengono rilasciati. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'azione di semantica
RequestFocus
per richiedere lo stato attivo sul target attivabile. (I17b71) FocusOrder
è stato unito aFocusProperties
efocusProperties()
ora dispone di tutte le funzionalità difocusOrder()
.FocusOrder
efocusOrder()
sono stati ritirati.focusOrder()
che accetta unfocusRequester
deve essere sostituito con un modificatorefocusRequester()
in combinazione confocusProperties()
. In questo modo, i modificatori hanno una separazione delle preoccupazioni più forte. (I601b7)WindowInsets.asPaddingValues(Density)
è stato aggiunto per consentire agli sviluppatori di eseguire la conversione senza dover essere in modalità di composizione. (I94c35)- Analisi aggiornata degli elementi drawable vettoriali per supportare il mirroring automatico in modo da capovolgere i contenuti di un
VectorPainter
se l'orientamento del layout corrente è RTL. (I79cd9, b/185760237)
Correzioni di bug
- Ora i modificatori di scorrimento (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
eModifier.scrollable()
) scorreranno per mantenere visibile il composable attivo se le dimensioni dell'area di scorrimento vengono modificate e il composable attivo era precedentemente visibile. - Ora i campi di testo verranno mantenuti sopra la tastiera quando sono attivi e la tastiera è visibile, quando si trovano all'interno di un elemento scorrevole non lazy e la modalità di immissione soft è
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
e androidx.compose.foundation:foundation-layout:1.2.0-alpha05
vengono rilasciati. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche all'API
LazyVerticalGrid
eLazyHorizontalGrid
ora sono stabili. (I307c0)LazyGridItemInfo.Unknown
è stato sostituito conLazyGridItemInfo.UnknownRow
eLazyGridItemInfo.UnknownColumn
separati (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
e tutte le API correlate sono state spostate nel sottopacchetto.grid
. Aggiorna le importazioni daandroidx.compose.foundation.lazy
aandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Testo:
includeFontPadding
è ora disattivato per impostazione predefinita. I problemi di ritaglio dovuti aincludeFontPadding=false
vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808) - L'interfaccia misurata ora espone la proprietà parentData (I3313f)
- È stato introdotto
Modifier.onFocusedBoundsChanged
sperimentale per consentire di osservare i limiti degli elementi figlio che possono essere attivati. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - È stata aggiunta la classe LazyHorizontalGrid. (I61ae7, b/191238807)
- È stata aggiunta una nuova API
LazyVerticalGrid
per definire le dimensioni delle assi trasversali (I17723) - È stato aggiunto il modificatore FocusGroup (I64bc0, b/213508274, b/184670295)
Correzioni di bug
WindowInsets.toString()
ora mostrerà i valori corretti. (I1585d)
Contributo esterno
- Aggiornamento per l'utilizzo di Kotlinx coroutines 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
e androidx.compose.foundation:foundation-layout:1.2.0-alpha04
vengono rilasciati. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche all'API
BringIntoViewResponders
non è più necessario riemettere manualmente le richieste ai responsabili principali, ma deve restituire immediatamente il rettangolo che vuole che il responsabile principale mostri. (I8e66a)- Supporto del caricamento dei caratteri asincroni in Testo (I77057, b/214587005)
LazyVerticalGrid
ora supportaline breaking
prima degli elementi con un'ampiezza non adatta alla riga corrente. (I05c40, b/207462103)excludeFromSystemGestures
rinominato insystemGesturesExclusion
(I19526)LazyVerticalGrid
ora supporta reverseLayout. (I6d7d7, b/215572963, b/211753558)- Aggiungi il metodo
WindowInsets.only()
per consentire agli sviluppatori di includere solo le dimensioni di WindowInsets. (I14c94, b/217768486) Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono di generare report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per il quale non è stata progettata.Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore di compose, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni composable astratte (come metodi di interface), campi o variabili globali che sono lambda composable (le variabili e i parametri locali vengono dedotti), o quando si utilizza
ComposeNode
o una funzione composable correlata.Per gli applicatori personalizzati, le funzioni composable che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneCompoableTarget
per la funzione e per eventuali tipi di parametri lambda composable. Tuttavia, è consigliabile creare un'annotazione annotata conComposableTargetMarker
e poi utilizzare l'annotazione contrassegnata anzichéComposableTarget
direttamente. Un'annotazione componibile contrassegnata conComposableTargetMarker
è equivalente a unComposbleTarget
con il nome completo della classe dell'attributo come parametro dell'applicatore. Per un esempio di utilizzo diComposableTargetMarker
, consultaanroidx.compose.ui.UiComposable
. (I38f11)
Correzioni di bug
- Ora è consentito passare offset di scorrimento negativi a
LazyGridState.scrollToItem()
eLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Supporta il caricamento dei caratteri asincroni per TextField. (Icc4bf, b/214587005)
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.foundation:foundation:1.2.0-alpha03
e androidx.compose.foundation:foundation-layout:1.2.0-alpha03
vengono rilasciati. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche all'API
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
sono stati deprecati e non verranno chiamati. Utilizza inveceBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Le animazioni sono state attivate per gli elementi delle griglie lazy con Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
ora propaga le richieste alla visualizzazione Android ospitante. (Ia7a51)FontFamilyResolver
è ora disponibile tramiteLocalFontFamilyResolver.current
- Sono stati aggiunti
createFontFamilyResolver(context)
ecreateFontFamilyResolver(context, coroutineScope)
per creare nuovi resolver FontFamily al di fuori dell'utilizzo di compose. - Paragraph e MultiParagraph ora accettano
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
ora contiene il resolver utilizzato per questo layout, ritiratoTextLayoutResult.layoutInput.resourceLoader
perché non è più utilizzato. (Id5a45, b/174162090)
- Sono stati aggiunti
- È stata aggiunta
AndroidFont
, una nuova API di basso livello per fornire nuovi tipi di descrittori di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico per l'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.- L'API
Font.ResourceLoaded
è stata ampliata per supportare il caricamento dei caratteri facoltativo e asincrono. Sconsigliamo agli sviluppatori di applicazioni di utilizzare direttamente questa API. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont. - La funzione di estensione
Font.AndroidResourceLoader
consente di creare unFont.ResourceLoader
al di fuori della composizione. - È stato aggiunto il parametro
loadingStrategy
ai caratteri basati su risorse per consentire il caricamento asincrono quando il carattere della risorsa fa riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)
- L'API
- Il costruttore
Typeface(FontFamily)
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che può richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza inveceFontFamilyResolver.preload
fontResource(FontFamily): Typeface
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che può richiedere fino a 10 secondi per i caratteri scaricabili. UtilizzaFontFamilyResolver.preload
(If8e7c, b/174162090)
- Ora puoi specificare il tipo di contenuti per gli elementi di
LazyVerticalGrid
: le funzioni item/items inLazyGridScope
ora accettano questo parametro. Fornendo queste informazioni, la logica di riutilizzo della composizione degli elementi viene semplificata e i contenuti vengono riutilizzati solo tra gli elementi di tipo simile. (I7b355, b/215372836) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno nuove proprietà:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Ora puoi specificare il tipo di contenuti per gli elementi di LazyColumn/LazyRow: le funzioni item/items su LazyListScope ora accettano questo parametro. Fornendo queste informazioni, la logica di riutilizzo della composizione degli elementi viene semplificata e i contenuti vengono riutilizzati solo tra gli elementi di tipo simile. (I26506)
- Il costruttore
SubcomposeLayoutState
che accettamaxSlotsToRetainForReuse
è stato ritirato. Esiste invece un nuovo costruttore che accettaSubcomposeSlotReusePolicy
, una nuova interfaccia che consente un controllo più granulare sugli slot da conservare per il riutilizzo futuro. (I52c4d) - Aggiunge modificatori per WindowInsets, sia per i margini che per le dimensioni. In questo modo, alcuni contenuti possono estendersi nell'area dell'inserimento, mentre i contenuti principali rimangono al di fuori di quest'area. Ad esempio, windowInsetsPadding può essere utilizzato per aggiungere spazi all'area dei contenuti per evitare aree che potrebbero essere completamente o parzialmente coperte. (Id0395, b/213942085)
Correzioni di bug
- Ora i campi di testo verranno mantenuti sopra la tastiera quando sono selezionati e la tastiera è visualizzata, quando la modalità di immissione soft è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Il computer utilizza la composizione locale per
FontFamily.Resolver
FontLoader
per computer è deprecato- Nuova versione di fabbrica di
createFontFamilyResolver
su computer (I6bbbb, b/174162090)
- Il tipo di immissione della tastiera virtuale non lampeggia più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
- I campi di testo non richiedono più un'ulteriore pressione del tasto Indietro quando viene visualizzato il cursore. (Ideb4b, b/205726883)
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato perfezionato in modo da assomigliare a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha02
e androidx.compose.foundation:foundation-layout:1.2.0-alpha02
vengono rilasciati. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche all'API
- È stato aggiunto
NonRestartableComposable
ai metodi che sono sovraccarichi di metodi esistenti senza logica complessa. In questo modo, vengono ridotti i controlli di memorizzazione (uguale) generati dal compilatore per tutti i parametri che vengono ripetuti nella funzione interna chiamata. (I90490) - Sono stati aggiunti i modificatori
excludeFromSystemGesture
per accedere facilmente asetSystemGestureExclusionRects
di Android (I46f07)
Correzioni di bug
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato perfezionato in modo da assomigliare a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
e altri contenitori che utilizzanoModifier.scrollable
ora supportano lo scorrimento della rotellina del mouse. (I2b5e1, b/198214718)
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha01
e androidx.compose.foundation:foundation-layout:1.2.0-alpha01
vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche all'API
- Il nuovo parametro
userScrollEnabled
è stato aggiunto aLazyColumn
,LazyRow
eLazyVerticalGrid
per consentire agli utenti di disattivare temporaneamente o definitivamente lo scorrimento avviato dall'utente tramite gesti tocco o azioni di accessibilità. Lo scorrimento tramite programmazione tramite i metodi dello stato continuerà a essere consentito. (I7eae9, b/201150093) - Aggiungi il callback
onSizeChanged
al modificatore della lente d'ingrandimento. (I6879f) - Il widget della lente d'ingrandimento viene ora visualizzato quando trascini i manici di selezione in un
SelectionContainer
. (I30b38, b/139320979)
Correzioni di bug
- È stato corretto il problema relativo al punto di manipolazione del cursore
TextField
che non si nascondeva quando non era visibile. (I14552, b/208883748)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.foundation:foundation:1.1.1
e androidx.compose.foundation:foundation-layout:1.1.1
vengono rilasciati. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correggi
NullPointerException
il giornoandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- È stato corretto il problema relativo alla formattazione RTL in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
androidx.compose.foundation:foundation:1.1.0
e androidx.compose.foundation:foundation-layout:1.1.0
vengono rilasciati. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto overscroll di Android 12
- Miglioramenti alle dimensioni dei target di tocco
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante verrà espanso fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti di Material Design, garantendo un comportamento coerente se combini le viste e Compose. Questa modifica garantisce inoltre che, quando crei l'interfaccia utente utilizzando i componenti Material di Compose, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
- Supporto stabile per la barra di navigazione laterale
- Passa a una versione stabile un certo numero di API precedentemente sperimentali
- Supporto per le versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.foundation:foundation:1.1.0-rc03
e androidx.compose.foundation:foundation-layout:1.1.0-rc03
vengono rilasciati. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornamento per il supporto di Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.foundation:foundation:1.1.0-rc01
e androidx.compose.foundation:foundation-layout:1.1.0-rc01
vengono rilasciati. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Ora è consentito passare offset di scorrimento negativi a
LazyListState.scrollToItem()
eLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Risolto un bug che causava la mancata visualizzazione delle azioni di scorrimento dell'accessibilità (I7cbfb)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.foundation:foundation:1.1.0-beta04
e androidx.compose.foundation:foundation-layout:1.1.0-beta04
vengono rilasciati. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornata per essere compatibile con Kotlin
1.6.0
Modifiche all'API
- È stata corretta la presenza di valori null in
androidx.core.view
(I7078a, b/204917439) - Sono state aggiunte API sperimentali che consentono di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d)
- Mostra un widget di lente d'ingrandimento quando trascini il cursore o i cursori di selezione all'interno dei campi di testo. (I5391e, b/203781358)
Correzioni di bug
- È stato corretto il problema relativo alla mancata modifica dei cursori del testo quando la visibilità dell'IME cambia. (I25f2e)
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta03
e androidx.compose.foundation:foundation-layout:1.1.0-beta03
vengono rilasciati. La versione 1.1.0-beta03 contiene questi commit.
Modifiche all'API
- È stato aggiunto il supporto degli intervalli orizzontali a LazyVerticalGrid. (I7e2fa, b/176758183)
È stata aggiunta la possibilità sperimentale di animare le posizioni degli elementi degli elenchi lazy. All'interno di LazyItemScope è disponibile un nuovo modificatore denominato
Modifier.animateItemPlacement()
. Esempio di utilizzo:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Quando fornisci una chiave tramite
LazyListScope.item
oLazyListScope.items
, questo modificatore attiva le animazioni di riordino degli elementi. Oltre al riordino degli elementi, verranno animate anche tutte le altre modifiche di posizione causate da eventi come cambiamenti di organizzazione o allineamento. (I59e7b, b/150812265)
- Quando fornisci una chiave tramite
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta02
e androidx.compose.foundation:foundation-layout:1.1.0-beta02
vengono rilasciati. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- Le increspature e altre indicazioni ora verranno ritardate solo se si trovano all'interno di un contenitore
Modifier.scrollable()
, anziché essere sempre ritardate per un evento di interruzione. (Ibefe0, b/203141462) - È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)
Contributo esterno
Modifier.pointerHoverIcon
aggiunto (I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-beta01
e androidx.compose.foundation:foundation-layout:1.1.0-beta01
vengono rilasciati. La versione 1.1.0-beta01 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-alpha06
e androidx.compose.foundation:foundation-layout:1.1.0-alpha06
vengono rilasciati. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche all'API
- È stata aggiunta un'overload senza elementi secondari per Layout, con un'efficienza migliorata (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
ora restituisce ilSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db)- È stato aggiunto
performScrollToNode(matcher: SemanticsMatcher)
che scorra un contenitore scorrevole fino ai contenuti corrispondenti al parametro di corrispondenza specificato. (Ic1cb8)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha05
e androidx.compose.foundation:foundation-layout:1.1.0-alpha05
vengono rilasciati. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche all'API
- Sono stati aggiunti indicatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Correzioni di bug
- È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (lazy e non lazy) in relazione allo scorrimento (I6cdb0)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
e androidx.compose.foundation:foundation-layout:1.1.0-alpha04
vengono rilasciati. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche all'API
performGesture
eGestureScope
ritirati, sostituiti daperformTouchInput
eTouchInjectionScope
. (Ia5f3f, b/190493367)- È stato aggiunto
touchBoundsInRoot
aSemanticsNode
per includere le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214)
Correzioni di bug
- Il supporto dell'overscroll elastico è stato aggiunto sui dispositivi Android 12. (Iccf3c, b/171682480)
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha03
e androidx.compose.foundation:foundation-layout:1.1.0-alpha03
vengono rilasciati. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Compose
1.1.0-alpha03
è stato aggiornato in modo da dipendere da Kotlin1.5.30
. (I74545)
Modifiche all'API
- È stato aggiunto l'effetto bagliore per lo scorrimento. È stata aggiunta la nuova API OverScrollConfiguration sperimentale per consentire la configurazione dell'effetto visivo di scorrimento eccessivo. Specifica un valore null per disattivare l'effetto di scorrimento eccessivo. (I0c304, b/171682480)
- AwaitPointerEventScope ora dispone di withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- È stato aggiunto il metodo di test per ottenere i limiti ritagliati. (I6b28e)
- È stata aggiunta una dimensione minima del touch target a ViewConfiguration per l'utilizzo nella semantica e nell'input del cursore per garantire l'accessibilità. (Ie861c)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.foundation:foundation:1.1.0-alpha02
e androidx.compose.foundation:foundation-layout:1.1.0-alpha02
vengono rilasciati. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche all'API
- Sono state aggiunte le versioni DpSize per
Modifier.size
erequiredSize
(I3fc7e, b/194219828)
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.foundation:foundation:1.1.0-alpha01
e androidx.compose.foundation:foundation-layout:1.1.0-alpha01
vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche all'API
- Metodo
DrawScope#drawImage
aggiornato che utilizza i rettangoli di origine e di destinazione per utilizzare un parametro facoltativo FilterQuality. Questa opzione è utile per l'arte pixel che deve essere pixelata quando viene aumentata di dimensioni per l'arte basata su pixel. È stato aggiornato il composable BitmapPainter + Image per utilizzare anche un parametro facoltativo FilterQuality (Ie4fb0, b/180311607) - Ora TextField cancella la selezione quando viene premuto il pulsante Indietro, in modo da corrispondere al comportamento di EditText di Android. (I3ca16, b/174173645)
- Aggiungi il cursore. (I07a82, b/173016579)
Correzioni di bug
- Lo scorrimento tramite azioni di semantica per gli elenchi lazy e i componenti con scorrimento regolare ora è animato (Id9066, b/190742024)
Contributo esterno
LazyVerticalGrid
ora accetta i parametri di organizzazione sia orizzontale che verticale. (If9c92)
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.foundation:foundation:1.0.5
e androidx.compose.foundation:foundation-layout:1.0.5
vengono rilasciati. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
androidx.compose.foundation:foundation:1.0.4
e androidx.compose.foundation:foundation-layout:1.0.4
vengono rilasciati. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornata per dipendere da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.foundation:foundation:1.0.3
e androidx.compose.foundation:foundation-layout:1.0.3
vengono rilasciati. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornata per dipendere da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.foundation:foundation:1.0.2
e androidx.compose.foundation:foundation-layout:1.0.2
vengono rilasciati. La versione 1.0.2 contiene questi commit.
Aggiornamento per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.foundation:foundation:1.0.1
e androidx.compose.foundation:foundation-layout:1.0.1
vengono rilasciati. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornata per dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.foundation:foundation:1.0.0
e androidx.compose.foundation:foundation-layout:1.0.0
vengono rilasciati. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale relativo al rilascio di Compose.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o versioni successive nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc02
e androidx.compose.foundation:foundation-layout:1.0.0-rc02
vengono rilasciati. La versione 1.0.0-rc02 contiene questi commit.
- Aggiornamento del rendering dei bordi per le forme generiche per risolvere i problemi relativi ai percorsi definiti con dimensioni fisse. (aosp/1748871, b/191817116)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc01
e androidx.compose.foundation:foundation-layout:1.0.0-rc01
vengono rilasciati. La versione 1.0.0-rc01 contiene questi commit.
Modifiche all'API
- Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
Correzioni di bug
- Se il pulsante, la scheda, le caselle di controllo e
Modifier.clickable(enabled=false)
in generale sono disattivati, i clic non verranno trasmessi all'elemento principale. (Ic2c3b, b/183908811)
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.foundation:foundation:1.0.0-beta09
e androidx.compose.foundation:foundation-layout:1.0.0-beta09
vengono rilasciati. La versione 1.0.0-beta09 contiene questi commit.
Modifiche all'API
ManualFrameClock
rimosso. Se devi controllare le animazioni, utilizzacomposeTestRule.mainClock
. (I3c3e8, b/189951065)- Modifica l'enum Role e LiveRegionMode in classi in linea con il costruttore privato (Id1890)
- KeyboardCapitalization viene convertito in una classe in linea. (Id5a1c)
- TextOverflow viene modificato in un'entità in linea. (I433af)
Correzioni di bug
- Ora, quando specifichi le chiavi univoche per gli elementi LazyColumn/Row, la posizione di scorrimento verrà mantenuta in base alla chiave, il che significa che se aggiungi/rimuovi elementi prima dell'elemento visibile corrente, l'elemento con la chiave specificata verrà mantenuto come primo visibile. (Id263f, b/184257857)
- Per il momento le costanti principali sono @ExperimentalComposeUiApi. Il codice di consumo può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
- È stata aggiunta IdlingStrategy ad AndroidComposeTestRule, che può essere utilizzata dai framework di test per installare un meccanismo alternativo per attendere o raggiungere la quiete. Utilizza
AndroidComposeTestRule.setIdlingStrategyFactory()
prima dell'inizio del test per installare la tua strategia. (I608fa)
Regole del profilo aggiunte
Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
situato nella directorysrc/main
o equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza a metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile da persone che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole possono assumere una di due forme per scegliere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
è uno o più dei caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrà un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametro e i tipi di ritorno del metodo. Ad esempio, il metodofun isPlaced(): Boolean
inLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono contenere caratteri jolly (
**
,*
e?
) per consentire a una singola regola di includere più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.Un metodo che ha il flag
S
indica che si tratta di un metodo chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che si tratta di un metodo chiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.
Come funziona?
- Le librerie possono definire queste regole che verranno pacchettizzate negli elementi AAR. Quando viene compilata un'app che include questi elementi, le regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app è installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare il rendimento dell'applicazione, in particolare la prima esecuzione. Tieni presente che questo non avrà alcun effetto sulle applicazioni di debug.
Versione 1.0.0-beta08
2 giugno 2021
androidx.compose.foundation:foundation:1.0.0-beta08
e androidx.compose.foundation:foundation-layout:1.0.0-beta08
vengono rilasciati. La versione 1.0.0-beta08 contiene questi commit.
Modifiche all'API
- L'enum NestedScrollSource viene sostituito da una classe in linea. (Ie321b, b/187055290)
- È stato eseguito il refactoring degli utilizzi degli enum nelle classi in linea per evitare problemi con le istruzioni when esaustive quando vengono aggiunti nuovi valori di enum. (I2b5eb)
- Aggiunge un timeout per i tocchi agli elementi cliccabili/attivabili/disattivabili per impedire la visualizzazione di un'eco durante lo scorrimento/trascinamento (Ia2704, b/168524931)
- Le proprietà ContentDescription e Semantica testo non sono più valori singoli, ma elenchi. In questo modo è possibile unirli così come sono anziché concatenarli. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
Modifier.focusModifier()
è deprecato e sostituito daModifier.focusTarget()
(I6c860)- L'enum KeyboardType viene sostituito da una classe in linea. (I73045, b/187055290)
- Enum
FocusState
sostituito con un'interfacciaFocusState
(Iccc1a, b/187055290) - L'enum ImeAction è stato sostituito da una classe in linea. (I18be5, b/187055290)
- Le funzioni
AnnotatedString.withAnnotation
ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.
- PaddingValues ora è
@Stable
anziché@Immutable
(I88c50)
Correzioni di bug
- Correggere gli arresti anomali causati dalla pressione prolungata dell'area vuota in un testo non vuoto. (I33ab5, b/187437299)
- Mostra barra degli strumenti dopo Seleziona tutto (I495d9, b/185919613)
- Correzione per i contenitori scorrevoli che ritagliano gli elementi secondari sull'asse trasversale. Era facilmente riproducibile se avevi una LazyRow con elementi Card. Ora l'ombra non verrà ritagliata. (Icb635, b/186318448)
- È stato risolto un problema per cui a volte le increspature o altre indicazioni si bloccavano su un clic prolungato quando si utilizzava Modifier.combinedClickable (I2298c, b/186223077)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica della posizione, non è necessario chiamare change.consumePositionChange nelle chiamate di callback onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno registrate. (Ieb67d, b/177926591)
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta07
e androidx.compose.foundation:foundation-layout:1.0.0-beta07
vengono rilasciati. La versione 1.0.0-beta07 contiene questi commit.
Modifiche all'API
- La logica di precaricamento dell'elemento visibile successivo è stata introdotta per LazyColumn/Row (I8a4bc, b/184940225)
- È stato aggiunto il cursore di selezione dei clip (Iff80d, b/183408447)
Correzioni di bug
- Ora LazyColumn/Row manterrà attivi (non eliminati) fino a 2 elementi precedentemente visibili anche quando non sono visibili. In questo modo, il componente può riutilizzare le sottocomposizioni attive quando dobbiamo comporre un nuovo elemento, il che migliora le prestazioni di scorrimento. (Ie5555)
- Rimuovi paintBackground. (I38660)
- Disegna lo sfondo della selezione utilizzando DrawScope. (I73c61, b/186674472)
- È stata corretta una regressione della versione beta06 che interessava la riga/colonna che utilizzava le disposizioni spacedBy per il layout dei figli ponderati. (Ifaf8c, b/187326588)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta06
e androidx.compose.foundation:foundation-layout:1.0.0-beta06
vengono rilasciati. La versione 1.0.0-beta06 contiene questi commit.
Modifiche all'API
- Risolvere il conflitto con il gesto di navigazione (I1145e)
- Sono state aggiunte le API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017)
- È stato aggiunto
SemanticsActions.ScrollToIndex
per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice eSemanticsProperties.IndexForKey
per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni sono implementate da LazyList.- È stato aggiunto
SemanticsNodeInteraction.performScrollToIndex
che scorra un elenco fino all'indice specificato eSemanticsNodeInteraction.performScrollToKey
che scorra un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
- È stato aggiunto
- Supporto per il salvataggio di AnnotatedString in TextFieldValue.Saver. Aggiunta delle funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
- I valori predefiniti dei parametri
0.dp
sono stati aggiunti aPaddingValues(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 dell'asse principale disponibile. (Ied94d, b/186012444, b/184355105)
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.foundation:foundation:1.0.0-beta05
e androidx.compose.foundation:foundation-layout:1.0.0-beta05
vengono rilasciati. La versione 1.0.0-beta05 contiene questi commit.
Modifiche all'API
- L'interfaccia FlingBehavior è ora contrassegnata come @Stable. Tutte le implementazioni devono essere conformi al contratto
@Stable
. (I93354, b/184830577)
Correzioni di bug
- Sono state corrette le azioni di scorrimento dell'accessibilità per
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Invece di scorrere fino alla fine della sezione scorrevole, ora verrà visualizzata una schermata nella direzione indicata. (Ieccb0) - I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
androidx.compose.foundation:foundation:1.0.0-beta04
e androidx.compose.foundation:foundation-layout:1.0.0-beta04
vengono rilasciati. La versione 1.0.0-beta04 contiene questi commit.
Modifiche all'API
- Rinomina hideSoftwareKeyboard e showSoftwareKeyboard su
SoftwareKeyboardController rispettivamente in
hide()
eshow()
.- Fornisci l'interfaccia CompositionLocal completa per LocalSoftwareKeyboardController, consentendo di impostarla (particolarmente utile nei test) (I579a6)
- Viene introdotto
TextOverflow.Visible
. (Ic8f89) - Le istanze pubbliche di
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
sono state rimosse. (I4e83e, b/181869067)
Correzioni di bug
- È stato risolto il problema per cui gli elementi di
LazyColumn
/LazyRow
situati sui bordi erano posizionati in modo errato dopo un movimento rapido (Ie4d13, b/183877420) Prima di questa modifica, le funzioni composable locali erano ignorabili in base ai relativi parametri. Dopo questa modifica, nessuna funzione composable locale verrà saltata. Questa modifica viene apportata perché è normale e previsto che le funzioni locali acquisiscano i parametri dall'elemento principale e il loro salto è una fonte comune di bug.
Per riepilogare, considera l'esempio:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Prima di questa modifica, la funzione composable
ShowCount
veniva sempre ignorata, anche dopo l'aggiornamento del parametrocount
. Abbiamo deciso, tuttavia, di non dare seguito a questa misura. (I5648a)
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta03
e androidx.compose.foundation:foundation-layout:1.0.0-beta03
vengono rilasciati. La versione 1.0.0-beta03 contiene questi commit.
Modifiche all'API
DefaultMonotonicFrameClock
è deprecato. La chiamata awithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
senzaMonotonicFrameClock
ora genera un erroreIllegalStateException
. (I4eb0d)
Correzioni di bug
- Ora
FlingBehavior.performFling()
viene chiamato anche quando la velocità è 0 (I0b6e5, b/181237123)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta02
e androidx.compose.foundation:foundation-layout:1.0.0-beta02
vengono rilasciati. La versione 1.0.0-beta02 contiene questi commit.
Modifiche all'API
- Sono state aggiunte diverse piccole ottimizzazioni nella logica di misurazione di LazyColumn (Ic6889)
- È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I5951e, b/168778053) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I84472, b/168778053)
Correzioni di bug
- Applicare limitazioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-beta01
e androidx.compose.foundation:foundation-layout:1.0.0-beta01
vengono rilasciati. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 Beta.
Modifiche all'API
- Il callback onStart è stato aggiunto a
detectDragGestures
(I67269, b/179995594) - I modificatori per le dimensioni in base ai valori intrinseci non sono più sperimentali. (I15744)
- Affermazioni dp rimosse (I798d2)
- È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per essere sostituito a breve da una nuova API. (Iae869, b/168778053)
- MeasureBlocks è stato rinominato MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
è stato sostituito da[Mutable]InteractionSource
- Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
- Anziché passare
interactionState = remember { InteractionState() }
a componenti comeButton
eModifier.clickable()
, utilizzainteractionSource = remember { MutableInteractionSource() }
. - Anziché:
Interaction.Pressed in interactionState
, dovresti utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState(). - Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare lo stream di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Sono stati rimossi i metodi LayoutCoordinates deprecati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- È stata creata una nuova TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
- Ora Placeable espone measuredSize, che rappresenta le dimensioni effettive misurate del layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
- Aggiunge il modificatore selectionGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
Aggiungi LazyListState.animateScrollToItem
Questo metodo scorre in modo fluido fino a un elemento specifico dell'elenco. (I4bfd7)
ScrollableState.smoothScrollBy() è stato rinominato in animateScrollBy() LazyListState.snapToItemIndex() è stato rinominato in scrollToItem() ScrollState.smoothScrollTo() è stato rinominato in animateScrollTo() (I35ded)
Modifier.zoomable è stato sostituito da Modifier.transformable. smoothPanBy, smoothRotationBy sono stati aggiunti come funzionalità. (Ifc32b, b/175294473)
Il valore
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
ora è obbligatorio anziché facoltativo.Queste modifiche rimuovono un potenziale errore di tipo per i tipi non nulli in cui non è stata fornita una fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non null.
Per i tipi nullable, ti consigliamo di fornire
{ null }
come factory predefinita.Sconsigliamo di utilizzare variabili locali con tipi non null se non è possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la funzione lambda
defaultFactory
deve generare un'eccezione. Tuttavia, se viene lanciata un'eccezione, i consumatori della locale avranno una dipendenza implicita dalla sua indicazione che non viene applicata dal sistema di tipi. (Ifbd2a)Indication#createIndication()
è stato modificato inIndication#rememberUpdatedIndication(InteractionState)
e il parametroInteractionState
è stato rimosso da IndicationInstance#drawIndication()
. IndicationInstance deve essere responsabile solo del disegno degli effetti visivi e non dell'avvio di animazioni / stato di scrittura in risposta alle modifiche di InteractionState. Queste animazioni e scritture dello stato devono invece avvenire entrorememberUpdatedIndication()
. Anche il parametroindication
inModifier.indication
è stato modificato in modo da essere obbligatorio. (Ic1764, b/152525426)Ora le azioni di testo controllano automaticamente lo stato attivo (I13777, b/179648629)
Rimozione di
runBlockingWithManualClock
(I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con interi (I81298)
I pacchetti dei metodi smoothScrollBy e scrollBy sono stati modificati in
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)FlingConfig è stato rinominato in FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché delle decelerazioni predefinite. (I02b86, b/175294473)
I modificatori delle taglie sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)
defaultMinSizeConstraints è stato rinominato in defaultMinSize. (I4eaae)
Modifier.tapGestureFilter è stato rimosso. Utilizza invece
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Il consumo parziale è stato rimosso dal sistema di input del cursore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)
L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è passato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
AnimationClockObservable e le sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
drawerState.open() e drawerState.close() sono ora funzioni di sospensione. Utilizza rememberCoroutineScope() per ottenere l'ambito della composizione da chiamare (I16f60, b/175294473)
Providers è stato rinominato in CompositionLocalProvider
- Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è stata trasformata in una proprietà di primo livello componibile anziché in una funzione di primo livello componibile.
- CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione clearRoots di primo livello
@TestOnly
è stata rimossa. Non è più necessario. - Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- La funzione Composer.collectKeySourceInformation è stata rimossa. Non è più necessario.
- I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe file di Kotlin, la compatibilità binaria verrà interrotta, ma non la compatibilità con il codice sorgente, pertanto non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scrollable anziché la classe ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable ora accetta DraggableState anziché una semplice lambda. Puoi creare lo stato tramite
rememberDraggableState { delta -> }
per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)I modificatori requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) sono stati aggiunti per le dimensioni richieste alle dimensioni intrinseche. (I0a6b4)
La risorsa deprecata
emptyContent()
è stata rimossa. Utilizza invece{}
. (Idb33f, b/179432510)Sono state eliminate alcune API precedentemente ritirate (Ice5da, b/178633932)
Correzioni di bug
- È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-alpha12
e androidx.compose.foundation:foundation-layout:1.0.0-alpha12
vengono rilasciati. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche all'API
- Modifier.pointerInput ora richiede chiavi di memorizzazione per indicare quando deve essere riavviata la coroutine di rilevamento dell'input del cursore per le nuove dipendenze. (I849cd)
- Aggiornamento dei test: la funzione hasText() controllerà sia i testi di input che le etichette/suggerimenti/testo segnaposto nel campo di testo (Iab803)
- È stato aggiunto PaddingValues.Absolute e può essere utilizzato nelle API che accettano PaddingValues. (Ia5f30)
- onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
- Per una migliore corrispondenza delle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato in BitmapPainter per allinearsi a VectorPainter. (Iba381, b/174565889)
- Miglioramento delle API di test della sottostringa con la sottostringa ora come argomento (Icbe78)
- È stato introdotto un elemento di contesto della coroutine
InfiniteAnimationPolicy
che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando vengono eseguiti test conComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo e Animatable.stop ora sono funzioni di sospensione (If4288)
- ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi di destrutturazione e copy() sono stati rimossi da diversi classi in cui venivano utilizzati raramente. (I26702, b/178659281)
È stato aggiunto il supporto delle chiavi personalizzate per LazyColumn/LazyRow. In questo modo possiamo gestire in modo più intelligente il riordino degli articoli. Pertanto, lo stato memorizzato nei blocchi remember {} si sposta insieme all'elemento quando riordini gli elementi o rimuovi l'elemento dal centro.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
È stato modificato Indication#createInstance in modo che sia @Composable e LocalIndication in modo che contenga un'indicazione, non () -> Indication. (I5eeea, b/157150564)
Constraints.enforce
è stato sostituito conConstraints.constrain
. (I8b8ea)loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Utilizza invece painterResource. (I6b809)
Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta funzioni lambda che restituiscono valori Float anziché valori Float diretti. (If4a35, b/178657186)
Sono state aggiunte le semantiche di EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificarne la semantica (I8e07a)
Modifier.clickable ora non supporta i clic doppi e prolungati. Utilizza Modifier.combinedClickable per ottenere questa funzionalità. (Iafad1)
toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)
IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)
Modifier.dragGestureFilter è stato ritirato. Utilizza invece
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per i trascinamenti su un asse (I0ba93, b/175294473)Gli ambienti sono stati rinominati in modo che corrispondano alla ridenominazione di Ambient -> CompositionLocal. Gli ambienti in precedenza si chiamavano AmbientFoo, ora i CompositionLocals si chiamano LocalFoo. (I2d55d)
La selezione è stata spostata nella base. (I7892b)
Analogamente a come abbiamo rimosso in precedenza il composable
state { 0 }
e ora promuoviamo l'utilizzo diremember { mutableStateOf(0) }
, rimuoveremo il composablesavedInstanceState { 0 }
. Dovresti utilizzarerememberSaveable { mutableStateOf(0) }
, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno di MutableState può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo sovraccarico di rememberSaveable che ha il parametrostateSaver
. L'utilizzo sarà simile al seguente:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)È stata aggiunta la semantica della password per l'accessibilità (I231ce)
È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
Il tempo di riproduzione nell'animazione ora non è più limitato ai nanosecondi (If776a)
@ComposableContract è stato ritirato a favore di tre annotazioni più specifiche.
@ComposableContract(restartable = false)
è diventato@NonRestartableComposable
@ComposableContract(readonly = true)
è diventato@ReadOnlyComposable
@ComposableContract(preventCapture = true)
è diventato@DisallowComposableCalls
@ComposableContract(tracked = true)
è stato rimosso. (I60a9d)Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d)Ora i ricostruttori possono essere chiusi. I ricostruttori chiusi continueranno la ricostituzione fino al completamento delle coroutine secondarie di composizione. Recomposer.shutDown è stato rinominato in cancel per distinguerlo da close. (Ib6d76)
Le API relative a LazyVerticalGrid sono contrassegnate come sperimentali (Ia53e3, b/178519862)
rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
RestorableStateHolder è stato rinominato SaveableStateHolder e spostato nel pacchetto androidx.compose.runtime.saveable. Il metodo interno RestorableStateProvider è stato rinominato SaveableStateProvider. Il tipo generico è stato rimosso, quindi puoi semplicemente passare Qualsiasi come chiave. L'annotazione sperimentale non è più necessaria. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver sono stati spostati da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
L'elemento artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
Molte API obsolete nel pacchetto ui sono state eliminate. (I2f2dc)
L'elemento compose:runtime-dispatch è stato ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher in compose:ui. (Ib5c36)
I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da left/right a start/end per supportare lo specchio automatico della forma nella direzione RTL. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato lo specchio automatico. (I61040, b/152756983)
La proprietà canDrag è stata rimossa da Modifier.scrollable. (Id66e7, b/175294473)
L'API di destinazione del plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che comporta la rottura del codice binario. (I3b922, b/169406779)
Modifier.scaleGestureFilter è stato rimosso. Utilizza invece Modifier.zoomable. In alternativa, utilizza
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)AnimatedValue/Float è ora deprecato. Utilizza invece Animatable. (I71345, b/177457083)
- Sono stati rimossi CoreText e CoreTextField dall'API pubblica
- È stato rimosso il sovraccarico SelectionContainer obsoleto (I99c19)
Rimozione delle funzioni di scorrimento non in sospensione ritirate Proseguendo con le modifiche dell'ultima release, le funzioni di scorrimento non in sospensione sono state rimosse completamente. Converti le funzioni di sospensione con gli stessi nomi. Un ambito coroutine può essere ottenuto tramite rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout è stato ritirato a favore di androidx.constraintlayout.compose.ConstraintLayout. Dovrai aggiungere una dipendenza da
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)I filtri tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
Recomposer.current()
rimosso. [Abstract]Per impostazione predefinita, ComposeView ora utilizza Recomposer con ambito finestra creati in modo lazy e gestiti da ViewTreeLifecycleOwner per la finestra. I tick di animazione basati su recomposition e withFrameNanos vengono messi in pausa quando il ciclo di vita dell'host è interrotto. (I38e11)Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Utilizza questa API anziché Recomposer.current(), che ora è stata ritirata. (If8ebe)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha11
e androidx.compose.foundation:foundation-layout:1.0.0-alpha11
vengono rilasciati. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche all'API
Ritirare scrollBy non in sospensione, rimuovere scrollTo non in sospensione
Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere la fine dello scorrimento. Nell'ambito di questa transizione, stiamo ritirando e/o rimuovendo le versioni non sospese di queste funzioni. (Ie9ced)
Ritiro della funzionalità smoothScrollBy non in sospensione Ora consigliamo di utilizzare le funzioni in sospensione per controllare lo scorrimento e attendere il completamento dello scorrimento. Nell'ambito di questa transizione, stiamo ritirando le versioni non in sospensione di queste funzioni. (I12880)
Il parametro Descrizione dei contenuti è stato aggiunto a Immagine e Icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)
BasicTextField ha ricevuto un nuovo parametro denominato "decorationBox". Consente di aggiungere decorazioni come icone, segnaposto, etichette e simili al campo di testo e di aumentare l'area target di hit. (I16996)
Il parametro canDrag è stato rimosso da Modifier.draggable (Ic4bec, b/175294473)
AnimatedFloat.fling che accetta FlingConfig è stato rimosso. Utilizza invece suspend Animatable.animateDecay. (I4659b, b/177457083)
data class
è stato rimosso dai seguenti corsi:- InlineTextContent
- LocaleList
- (I605c7)
ora è possibile creare elementi cliccabili, attivabili e selezionabili al di fuori della composizione (I0a130, b/172938345, b/175294473)
Le colonne/le righe scorrevoli sono state ritirate. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai contenuti di scorrimento di grandi dimensioni, perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino un metodo inefficace, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e di promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non avere bisogno del comportamento lazy e utilizzare direttamente i modificatori come questo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Nuovo metodo di fabbrica
items(count: Int)
per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
eitemsIndexed(items: List)
sono ora funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi sovraccarichi dell'estensione per gli array: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)L'attributo deprecato AbsoluteArrangement è stato rimosso. (Iffa96, b/177641870)
Il parametro propagateMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere trasmessi o meno ai contenuti della casella. Il valore predefinito è false. (I0125b, b/152613457)
Correzioni di bug
- onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
- Con restrizioni è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface
- Sono state aggiunte funzioni di fabbrica che iniziano con una lettera maiuscola
- Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
- Le nuove funzioni di fabbrica restituiscono la famiglia di caratteri anziché le sottoclassi
- Sono stati nascosti i costruttori delle sottoclassi, in modo che possano essere costruiti solo tramite funzioni di fabbrica.
- Rinominato Font.asFontFamily in Font.toFontFamily
- (I42aa7)
È stato introdotto
ComposeContentTestRule
, che estendeComposeTestRule
e definiscesetContent
, che è stato rimosso daComposeTestRule
. È stato aggiunto un metodo di fabbricacreateEmptyComposeRule()
che restituisce unComposeTestRule
e non avvia un'attività per lo sviluppatore. Da utilizzare quando vuoi avviare l'attività durante il test, ad esempio utilizzandoActivityScenario.launch
(I9d782, b/174472899)animateAsState ora è animateFooAsState, dove Foo è il tipo della variabile da animare, ad esempio Float, Dp, Offset e così via (Ie7e25)
La densità ora è l'ambito del ricevitore per le interfacce di Arrangement. (I18aad)
TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata.
initial
è stato rimosso dai parametri del costruttore EditingBuffer. (I326d5)
invalidate e compositionReference() sono ora deprecati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)
AnnotatedString viene modificato in modo da estendere kotlin.CharSequence. Pertanto, length e subSequence ora sono funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429)
La durata e il tempo di attività verranno sostituiti da Long millisecondi e questo passaggio rimuove la dipendenza dell'input del cursore da queste classi. (Ia33b2, b/175142755, b/177420019)
RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora deprecato.
RememberObserver
sostituisceCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, che è la prassi consigliata e continuerà a esserlo. Tuttavia, se un riferimento è stato memorizzato più volte in una composizione,onRemembered
viene chiamato per ogni riferimento, mentreonEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, comeWithConstraints
eScaffold
, rendendo inaffidabile la singola chiamataonEnter
, che è stata rimossa perRememberObserver
.RememberObserver
aggiungeonAbandoned
, che viene chiamato se l'istanzaRememberObserver
viene restituita dal callback passato aremember
, ma non è stata memorizzata nello stato della composizione e, pertanto, non verrà mai chiamatoonRemembered
. Ciò può accadere se un'eccezione termina la composizione prima del completamento o se la composizione viene ignorata perché lo stato per cui è stata prodotta non è più attuale o non è più necessario. Se l'istanza diRememberObserver
che segue il singolo consiglio di riferimento riportato sopra monitora una risorsa esterna, siaonForgotten
cheonAbandoned
indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro avviato o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato se viene chiamatoonRemembered
. (I02c36)Rinomina di TransformedText.transformedText in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
Le seguenti classi non sono più classi di dati:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Sono stati rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Sono stati ritirati i metodi per le coordinate globali e sono stati creati nuovi metodi per le coordinate basate su finestre. (Iee284)
Utilizza ImeAction.None anziché ImeAction.NoAction
- Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
FocusRequester.createRefs è ora contrassegnato come sperimentale perché potrebbe cambiare. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)
Utilizza TestCoroutineDispatcher nei test (I532b6)
È stato rimosso PointerInputData e modificato PointerInputChange per assegnargli tutti i campi di PointerInputData. È stato reso interno PointerInputEvent e PointerInputEventData perché non vengono utilizzati in alcuna API pubblica. (Ifff97, b/175142755)
TextInputService.onStateUpdated è stato rinominato in updateState (Id4853)
Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o le dimensioni della finestra. (I62db4)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
e androidx.compose.foundation:foundation-layout:1.0.0-alpha10
vengono rilasciati. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche all'API
- ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
- Modifiche all'API VisualTransformation
- OffsetMap è stato rinominato in OffsetMapping
- È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
- PasswordTransformation non è più un data-class
- OffsetMapping è stato spostato in un file dedicato
- (I0bdf3)
- Modifiche all'API EditOperations
- La classe EditOperation è stata rinominata in EditCommand
- È stato aggiunto il suffisso Command per le implementazioni concrete di EditOperation
- I comandi di modifica non sono più classi di dati
- La funzione EditOperation.process è stata rinominata in applyTo
- Rinomina di InputEventListener in InputEventCallback
- (I0a366)
- Velocità modificata per includere componenti e operazioni matematiche. (Ib0447)
- @ExperimentalTesting è stato rinominato in @ExperimentalTestApi per essere coerente con le annotazioni delle API sperimentali simili (Ia4502, b/171464963)
- È stato aggiunto il metodo sperimentale stickyHeader per LazyColumn/LazyRow (I0a81d)
- È stato rinominato Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher è stato ritirato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
- Aggiungi il pulsante di attivazione/disattivazione a Strings.kt di base (I4a5b7, b/172366489)
- nativeClass è stato spostato nel modulo UI e reso interno. Sono stati aggiornati gli utilizzi di nativeClass nelle implementazioni di equals in modo da utilizzare "è MyClass". (I4f734)
- FlowRow e FlowColumn sono stati ritirati. Utilizza invece un layout personalizzato. (I09027)
- Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- È stato introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
- Modificata la richiesta da
fun Dp.isFinite()
aval Dp.isFinite
(I50e00) - Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
- Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi inline con una costante Unspecified. (I93f7b, b/174310811)
Correzioni di bug
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le animazioni. Nuovo DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale (I820f2, b/168014930) - È stato aggiunto il supporto per i campi di testo disattivati e di sola lettura (I35279, b/171040474, b/166478534)
animate()
viene ora sostituito conanimateAsState()
, che restituisce unState<T>
anzichéT
. Ciò consente un miglior rendimento, in quanto l'ambito dell'invalidazione può essere ridotto al punto in cui viene letto il valore di Stato. (Ib179e)- Aggiungi l'API di ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier, che è selezionabile, attivabile e disattivabile. È stato modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
- Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
e androidx.compose.foundation:foundation-layout:1.0.0-alpha09
vengono rilasciati. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche all'API
Aggiungere un'interfaccia scorrevole
In questo modo, ScrollState e LazyListState possono essere trattati come un tipo comune, consentendo di implementare lo scorrimento personalizzato in entrambi i tipi.
Inoltre, sposta smoothScrollBy in una funzione di estensione su Scrollable, sfruttando questa funzionalità. (I2153b)
È stato aggiunto LazyVerticalGrid. (I17267, b/162213211)
Ritiro di LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)
Per la sospensione delle API di input del cursore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
È stato aggiunto LazyListState.layoutInfo, che espone l'elenco delle dimensioni e degli offset degli elementi attualmente visibili (If8678, b/170472532)
È stata rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
È stato aggiunto il supporto di InteractionState per i campi di testo. (I61d91)
Aggiungi il parametro reverseLayout per LazyColumn/Row. Quando
true
gli elementi verranno composti dal basso verso l'alto eLazyListState.firstVisibleItemIndex == 0
significherà che il primo elemento si trova in basso. (I552ae, b/166589935)Il parametro verticalArrangement è stato aggiunto per LazyColumn. È stato aggiunto il parametro orizzontalArrangement per LazyRow. La disposizione ci consente di aggiungere spaziatura tra gli elementi e di specificare la loro disposizione quando non ne abbiamo a sufficienza per riempire l'intera dimensione minima. (Icf79a, b/170394300)
Ora detectMultitouchGestures utilizza un callback con parametri combinati di centro, panoramica, zoom e rotazione. (Ie6e1c)
È stato spostato ContentDrawScope nel modulo ui-graphics per essere associato a DrawScope. (Iee043, b/173832789)
Correzioni di bug
- Le lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
Sono stati rimossi SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza erano contrassegnati come InternalComposeAPI. Ora sono interne al modulo di composizione.
CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Sono pubblici, ma non sono destinati all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c)
È stato eseguito il refactoring di ShaderBrush per creare in modo lazy un'istanza di shader quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Questo è utile per definire gradienti che occupano l'intero spazio di disegno di un composable al momento della composizione, senza dover implementare DrawModifier personalizzati.
API del costruttore della funzione di gradiente ritirate a favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)
Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
Aggiunta di dichiarazioni di scomposizione per creare istanze di FocusRequester (I35d84, b/174817008)
accessibilityLabel è stata rinominata contentDescription. accessibilityValue è stata rinominata stateDescription. (I250f2)
Sono state introdotte diverse nuove funzioni in SelectionRegistrar e inoltre è stata rinominata la funzione onPositionChange in notifyPositionChange. (Ifbaf7)
AndroidOwner impostato come interno (Ibcad0, b/170296980)
Nuova funzione infiniteRepeatable per la creazione di un'istanza InfiniteRepeatableSpec (I668e5)
L'interfaccia
Applier
è cambiata per semplificare la creazione degli alberi dal basso verso l'alto anziché dal basso verso l'alto.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.Un applicatore inserisce i nodi nell'albero in modifica utilizzando
insertTopDown()
oinsertBottomUp()
, a seconda di quale ha un rendimento migliore.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti da creare dal basso verso l'alto rispetto a quelli dall'alto verso il basso. Prima di questa modifica, era necessario un insieme di inserimenti per implementare il metodo dal basso verso l'alto, che doveva essere copiato in ogni applicativo che richiedeva la costruzione dal basso verso l'alto per le prestazioni. Con questa modifica, unApplier
sostituisceinsertBottomUp()
per creare un albero dal basso verso l'alto einsertTopDown()
per creare l'albero dall'alto verso il basso. (Icbdc2)È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i file PNG) o da VectorDrawables. I consumatori non devono più determinare il tipo di asset in anticipo e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composabili di immagini o nei modificatori di pittura. (I2c703, b/173818471)
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare un oggetto AnnotatedString. Funzione di compilatore annotatedString ritirata. (Idfe0b)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
e androidx.compose.foundation:foundation-layout:1.0.0-alpha08
vengono rilasciati. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche all'API
- Parametro
maxLines
rimosso daCoreTextField
. Se vuoi limitare l'altezza del campo di testo in base al numero di righe, utilizzaBasicTextField
. (Iec002) - I metodi
await*TouchSlop()
sono stati modificati in modo da non rilevare il cursore verso il basso e sono stati rinominati in*OrCancellation
. Inoltre, non è più necessario il parametroorientationLock
. (Ie96e1) - È stato aggiunto il controllo lint per il nome e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
È stata inoltre eseguita la migrazione di alcune API che utilizzano
children
come nome per la funzione lambda finale acontent
, in base alle indicazioni e al controllo lint. (Iec48e) - Le API
foundation:foundation-text
sono state spostate infoundation:foundation
. La struttura del pacchetto è rimasta invariata (Id3eb2) - Nuovo rilevatore di gesti multitouch, inclusi gli elementi di assistenza per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
- Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del cursore, incluso il blocco dell'orientamento. (Icef25)
- È stato rinominato VectorAsset in ImageVector. È stato spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida del Consiglio API. È stato aggiunto un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
- I metodi ImageAsset e correlati sono stati rinominati in ImageBitmap. (Ia2d99)
- Le proprietà di semantica di base sono state spostate nella UI (I6f05c)
Aggiungi API di scorrimento basate su coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di tornare. (Ie5642)
È stato aggiunto un parametro a riga singola in BasicTextField, TextField e OutlinedTextField. Imposta questo parametro su true per fare in modo che il campo di testo sia una singola riga scorrevole orizzontalmente. (I57004, b/168187755)
È stato aggiunto il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del cursore in sospensione. Sono state aggiunte anche alcune utilità, che semplificano la scrittura di rilevatori di gesti da parte degli sviluppatori. (I00807)
Modifier.focusable deve essere aggiunto in Foundation. Utilizzalo per aggiungere un comportamento di attivazione a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)
Le API precedentemente ritirate sono state rimosse: Border è stato rimosso, utilizza invece BorderStroke. Modifier.drawBorder è stato rimosso. Utilizza Modifier.border. Modifier.gravity è stato rimosso. Utilizza Modifier.align. Lo stack è stato rimosso, utilizza invece la casella (I32c2b, b/172470874)
AbsoluteArrangement è stato rinominato in Arrangement.Absolute. (If26f2)
Correzioni di bug
- Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere metodi di tipo/helper per assistere nella migrazione dalle API non più supportate alle API attuali. (Id6044, b/173834241)
- È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer. Inoltre, sono stati aggiornati i relativi classi a GraphicsLayer in base al feedback del Consiglio API. (I0bd29, b/173834241)
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)- I campi uptime e posizione di PointerInputData non sono più null. (Id468a)
- MaterialTheme ora imposta i colori corretti per i manici e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
- Il parametro di allineamento della casella è stato rinominato in contentAlignment. (I2c957)
- I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché stato. (Ic3021, b/173594846)
- È stato aggiunto WindowManager.isWindowFocused per controllare se la finestra dell'host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
- È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- API TextFieldValue aggiornata
- è stato impostato TextFieldValue.composition come di sola lettura
- Eccezione rimossa lanciata per intervallo di selezione non valido (I4a675, b/172239032)
- Sono stati ritirati gli ambienti con il suffisso
Ambient
e sostituiti con nuove proprietà con prefisso Ambient, seguendo le linee guida per gli altri ambienti e l'API Compose. (I33440) - È stato aggiunto il wrapper Android Typeface. Puoi caricare un carattere Android tramite la funzione
typeface
, ad esempiotypeface(Typeface.DEFAULT)
. Inoltre, ha rinominatotypefaceFromFontFamily()
intypeface()
(I52ab7) - È stato aggiunto il controllo lint per verificare che le fabbriche di modificatori utilizzino
androidx.compose.ui.composed {}
internamente, anziché essere contrassegnate come@Composable
. (I3c4bc) - È stato aggiunto il controllo lint per verificare che le funzioni di fabbrica del modificatore siano definite come estensioni su Modifier, in modo che possano essere collegate in modo fluido. (I07981)
- L'argomento semantico mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
- Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- TextUnit.Inherit viene rinominato in TextUnit.Unspecified in modo coerente con le altre unità. (Ifce19)
- L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
- Il modulo
foundation:foundation-text
è stato unito afoundation:foundation
(Idac0f) - Ritiro delle funzioni place(Offset) e placeRelative(Offset). Utilizza invece le sovraccaricamenti con offset int (I4c5e7)
id
è stato rinominatolayoutId
perLayoutIdParentData
.Measurable.id
è stato rinominatoMeasurable.layoutId
. (Iadbcb, b/172449643)
Versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
e androidx.compose.foundation:foundation-text:1.0.0-alpha07
vengono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche all'API
- Analogamente a
Modifier.fillMaxSize[Width|Height]
, ora supportiamo le frazioni inModifier.fillParentMaxSize[Width|Height]
nell'ambito diLazyColumn/Row
(I797e2, b/166586426) KeyboardOptions.toImeOptions
è stato rimosso dall'API pubblica. (Ic2e45)- Gli elementi di base AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono stati ritirati. Utilizza invece le nuove versioni disponibili nella libreria Material. Per le applicazioni non Material, devi invece creare ambienti di temi specifici del tuo sistema di design che possono essere utilizzati nei tuoi componenti. (I74acc, b/172067770)
- foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base senza opinioni che non utilizza i valori di un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
- È stato aggiunto maxLines ai campi di testo (Ib2a5b)
- Aggiorna TextFields in modo che accetti KeyboardOptions (Ida7f3)
- Sono stati aggiunti KeyboardOptions da utilizzare nei campi di testo (I9ca32)
- Aggiunge BasicText come API per il testo senza opinioni sul design, parallela a BasicTextField. (I28268)
- L'annotazione ExperimentalLazyDsl è stata rimossa. Ora è possibile utilizzare LazyColumn/LazyRow senza aggiungere @OptIn (Idab7a, b/166584730)
- BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
- BasicTextField è stato aggiunto come sostituto sia di CoreTextField che di BaseTextField (Id4cea)
- Rimuovere gli elementi LazyColumnItems/LazyRowItems deprecati (I1d8a8)
- I composabili obsoleti per le dimensioni in base alle misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
- relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per specificare facilmente le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
- Al modificatore aspectRatio è stato aggiunto il parametro matchHeightConstraintsFirst, che può essere utilizzato per specificare il modificatore per le dimensioni in base alle limitazioni di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593)
- L'elemento DpConstraints deprecato è stato rimosso. (I87884, b/171702471)
Correzioni di bug
- È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro al fine di supportare i casi d'uso di scala non uniforme.
- È stato aggiunto il metodo computeScaleFactor a ContentScale
- È stato aggiunto ContentScale.FillBounds per eseguire una scalatura non uniforme in modo da allungare i limiti di src in modo da occupare completamente la destinazione.
- Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Dimensioni.
- (Ic96a6, b/172291582)
- captureToBitmap è stato spostato in captureToImage. (I86385)
- Contrassegna CoreText come @InternalTextApi. Utilizza invece BasicText. (I6aaeb)
- Rinomina KeyboardOptions in ImeOptions (I82f36)
- KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
- CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza invece BasicTextField (Ie2469)
- L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
- Introduzione del modulo ui-test-junit4 (Ib91f8)
- L'API Icon è stata aggiornata in modo da accettare Color.Unspecified come possibile colore di tinta che disegnerà l'asset o il pittore fornito senza un filtro di colore. In precedenza, gli tentativi di ignorare la colorazione con Color.Unspecified coloravano con un colore trasparente, senza che venisse visualizzato nulla. (I049e2, b/171624632)
- MeasureResult è stato spostato da MeasureScope. (Ibf96d, b/171184002)
- Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
- androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- È stato aggiunto SelectionContainer senza il callback (Ibfadb)
- Aggiungi test per le posizioni degli handle di selezione in SelectionContainer. (Ie93db)
- È stata aggiunta l'opzione di IME di correzione automatica della tastiera (I57b8d)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
e androidx.compose.foundation:foundation-text:1.0.0-alpha06
vengono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche all'API
- androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Se non vuoi utilizzare la libreria Material, puoi anche utilizzare il componente immagine / Modifier.paint() con un Painter. (I9f622)
- È stato aggiunto interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805)
- alignByBaseline è stato aggiunto a RowScope e alignWithSiblings è stato rinominato in alignBy (I06503, b/170628732)
- La casella è stata creata come funzione in linea. (Ibce0c, b/155056091)
- È stato aggiunto maxLines a CoreTextField (Ibee58, b/143687793)
- È stato aggiunto il rientro morbido a CoreTextField. (I21a4b)
Correzioni di bug
- Ritirare VectorPainter in favore di rememberVectorPainter per indicare meglio che l'API composable internamente sfrutta "remember" per mantenere i dati nelle composizioni. (Ifda43)
- Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- È stata aggiunta l'opzione di tastiera a riga singola a CoreTextField (I72e6d)
- L'API Radius è stata rinominata in CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. Documentazione aggiornata per indicare che i raggi di angolo negativi vengono bloccati a zero. (I130c7, b/168762961)
- Aggiunta della possibilità di specificare le informazioni dell'ispettore nel modificatore composto (Idee08, b/163494569)
- È stata aggiunta l'opzione IME Maiuscole tastiera (I8ac38)
- Correggi la posizione dell'handle Rtl. (I6e1e0)
- Modifica non compatibile: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che dovrebbe essere modificabile negli eventi del cursore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo degli eventi relativi al mouse passati. (I6acd0)
- È stata aggiunta l'opzione Seleziona tutto al menu di selezione (Ief02b)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
e androidx.compose.foundation:foundation-text:1.0.0-alpha05
vengono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche all'API
- CoreTextField ora supporta la funzionalità del cursore (Id23aa)
Ritirata l'API contentColor() e currentTextStyle(), che vengono sostituite rispettivamente con gli ambienti AmbientContentColor e AmbientTextStyle. Puoi accedere al valore corrente utilizzando
.current
nella proprietà ambient, come per qualsiasi altro ambient. Questa modifica è stata apportata per garantire la coerenza e per evitare di avere più modi per ottenere lo stesso risultato. Inoltre, rinomina alcune proprietà dell'ambiente per descriverne meglio lo scopo, come segue:- ColoreContenutoAmbiente -> ColoreContenutoAmbiente
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Correzioni di bug
- Nell'ambito della standardizzazione degli indicatori di valori per le classi in linea, rinomina Color.Unset in Color.Unspecified per garantire la coerenza con le altre classi in linea (I97611, b/169797763)
- Sono state aggiunte le azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Viene introdotto TextOverflow.None. Quando overflow è None, Text non gestisce più l'overflow e segnala le sue dimensioni effettive a LayoutNode. (I175c9, b/158830170)
- I parametri aggiornati di Dimensioni.Senza_specifiche sono ora Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per eseguire il controllo rispetto a Dimensioni.Senza specifica e a dimensioni non finite. (I95a7e)
- È stato aggiunto il modulo di composizione con paginazione e l'integrazione della paginazione (Ib85da)
- Modificare LazyListScope per ricevere valori nullable (I1765b)
- OnPositionedModifier viene rinominato in OnGloballyPositionedModifier e onPositioned() viene rinominato in onGloballyPositioned(). (I587e8, b/169083903)
- Sono stati aggiunti esempi per LazyColumn/Row (Idc16d)
- Correzione per i metodi items e itemsIndexed per consentire emptyList (I06647)
- Aggiungi un DSL per specificare le informazioni dell'ispettore (Ic9a22)
- Spostare il pulsante di pressione prolungata in Testo. (Iff2bc)
- Disattivare la selezione nel testo e una demo. (Ie7e97)
- Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
PointerInputFilter.onPointerInput(...)
rimosso. Al suo posto deve essere utilizzatoPointerInputFilter.onPointerEvent(...)
. (I6f04a)
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
e androidx.compose.foundation:foundation-text:1.0.0-alpha04
vengono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche all'API
- La funzionalità Stack è stata rinominata in Box. L'elemento foundation.Box esistente verrà ritirato a favore del nuovo Box in compose.foundation.layout. Il comportamento della nuova casella è impilare gli elementi secondari uno sopra l'altro quando sono presenti più elementi secondari. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
- I parametri di decorazione delle caselle sono stati ritirati. Se vuoi aggiungere decorazioni/spaziatura alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Aggiungi una nuova classe LazyListState. In questo modo è possibile osservare e controllare la posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro stato del componente. Al momento, in questa versione iniziale è possibile osservare il primo elemento visibile e gli offset. (Ic7cb7, b/159307669)
- La posizione dell'elenco lazy e l'offset di scorrimento vengono ora salvati e ripristinati durante la ricreazione dell'attività (Ie045f, b/166589058)
- Aggiungere un'azione di semantica dei clic lunghi (I6281b, b/156468846)
- È stata aggiunta l'utilità MutatorMutex per mantenere un singolo mutatore dello stato condiviso nel tempo e annullare i mutatori in conflitto in base alla priorità (I3f975)
- Sono stati annotati rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendendoli API interne e nascondendo il relativo kdoc (I554eb, b/168308412)
- Il parametro inlineContent è stato rimosso da Testo con input di stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
- Le API di ordinamento personalizzate non più supportate sono state rimosse. (Ic576d, b/168297922, b/168297923)
- Il parametro
unbounded
è stato aggiunto ai modificatori wrapContentSize, che consente di misurare l'elemento di layout con vincoli massimi infiniti. (I77951, b/158559319) - Abbiamo impedito le importazioni statiche dei contenuti degli ambiti di layout (ad es. alignWithSiblings in RowScope). Dovresti utilizzare l'alternativa di ambito esplicito:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Correzioni di bug
- Sono state aggiornate molte API di grafica
- API di trasformazione di scala e rotazione aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata pivot anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
- Sono stati rimossi i metodi Rect.expandToInclude e Rect.join
- La documentazione di Raggio è stata aggiornata per indicare ovale oltre a ellittico
- È stata aggiunta la documentazione per indicare che il costruttore pubblico della classe Radius inline non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istigati tramite i costruttori delle funzioni.
- Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
- Ritiro di Rect.shift a favore di Rect.translate
- Sono state rimosse le API RoundRect.grow e Rect.shrink
- Rinominata RoundRect.outerRect in Rect.boundingRect
- Sono stati rimossi i metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
- RoundRect.latoPiùLungo è stato rinominato in RoundRect.maxDimension
- Rinominata RoundRect.shortestSide in RoundRect.minDimension
- È stata modificata la proprietà RoundRect.center in modo che sia una proprietà anziché una funzione
- Il costruttore RoundRect è stato aggiornato in modo da utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
- Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con inizio in 0,0
- È stata aggiunta un'API di destrutturazione a Radius
- È stata eseguita la migrazione di varie funzioni di estensione di RoundRect in modo che diventino proprietà
- (I8f5c7, b/168762961)
- Ottimizzazioni delle prestazioni per lo scorrimento di LazyColumnFor/LazyRowFor evitando ricostruzioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
- È stato corretto un arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la modifica degli elementi ed è stato implementato lo scorrimento automatico verso l'alto quando l'elemento precedentemente visibile è stato rimosso, in modo da non visualizzare più spazi vuoti alla fine (I220ab, b/161480164, b/167855468)
- Non è più consentito nidificare contenitori scorrevoli nella stessa direzione, come ScrollableContainer e LazyColumnFor. Non è mai stato supportato e stava rompendo il fling e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
- Sono state aggiornate molte API di grafica
- API DrawScope aggiornate con metodi di trasformazione basati su ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
- Documentazione di clipPath aggiornata per fare riferimento a Path instead of rounded rectangle
- Spaziatura fissa nella documentazione per il parametro giusto in clipPath
- È stato rinominato DrawScope.drawCanvas in drawIntoCanvas e è stato rimosso il parametro size
- I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
- È stata aggiunta un'overload di inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
- È stata rimossa la documentazione relativa al metodo di inset che indicava che l'inset verrebbe applicato a tutti e quattro i lati
- Documentazione aggiornata per la classe Rect
- Commenti aggiornati sui parametri Rect in modo che corrispondano allo stile kdoc
- Sono stati rimossi Rect.join e Rect.expandToInclude
- È stata creata un'overload per Rect.translate(offset) e ritirato Rect.shift
- (If086a, b/167737376)
- Aggiungi AccessibilityScrollState alle proprietà di semantica. (Ifeda9)
- Crea un TextRange in linea per evitare la creazione di oggetti. (Id034b)
- ParagraphConstraints è stato rimosso. Ora la larghezza viene passata direttamente a Paragrafo. (Ica712)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
e androidx.compose.foundation:foundation-text:1.0.0-alpha03
vengono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche all'API
- InnerPadding è stato rinominato in PaddingValues. (I195f1, b/167389171)
- Gli utilizzi di gravity sono stati rinominati in modo coerente in allineamento o allineamento nelle API di layout. (I2421a, b/164077038)
- A Stack è stato aggiunto un parametro di allineamento che consente di specificare l'allineamento predefinito per tutti gli elementi figlio di Stack. (Ie80ca, b/164085265)
Correzioni di bug
- DpConstraints e le API che lo utilizzano sono stati ritirati. (I90cdb, b/167389835)
- I parametri
minWidth
emaxWidth
diwidthIn
sono stati rinominati inmin
emax
. Analogamente perpreferredWidthIn
,heightIn
epreferredHeightIn
. (I0e5e1, b/167389544) - È stato aggiunto onNode e altri metodi globali a ComposeTestRule poiché quelli globali attuali verranno ritirati. (Ieae36)
- Sono stati corretti i calcoli delle dimensioni e della posizione in GestureScope, che tra le altre cose causavano la generazione di gesti di scorrimento non validi (Iaf358, b/166589947)
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
e androidx.compose.foundation:foundation-text:1.0.0-alpha02
vengono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.
Correzioni di bug
- TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
È stato aggiunto
ManualFrameClock.hasAwaiters
per verificare se è presente qualche elemento in attesa di un frame da quell'orologio;runWithManualClock
come sostituto dirunBlocking
quando esegui test che richiedono un ManualFrameClock;TestUiDispatcher.Main
che consente di accedere facilmente all'intercettatore UI principale nei test.Ad esempio:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
e androidx.compose.foundation:foundation-text:1.0.0-alpha01
vengono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
e androidx.compose.foundation:foundation-text:0.1.0-dev17
vengono rilasciati. La versione 0.1.0-dev17 contiene questi commit.
Modifiche all'API
- L'ordinamento spacedBy è stato aggiunto per Riga e Colonna per consentire il posizionamento dei componenti secondari del layout con una spaziatura fissa. È stato aggiunto anche l'ordinamento allineato per consentire il posizionamento dei componenti secondari del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I metodi precedenti Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange sono stati ritirati e la scrittura di arrangiamenti personalizzati non sarà supportata in futuro. (I6733d, b/161985975)
- L'offset è diventato una classe in linea (Iaec70)
- Sono stati rimossi i callback onFocusChanged da TextField. Utilizza invece Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
- VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
- Rimuovi i modificatori fillMax* contrassegnati come deprecati da LazyItemScope perché rendono più difficile aggiungerli correttamente per gli elementi che non sono elementi secondari diretti di LazyColumnFor (Ifa78d)
- È stata aggiunta l'implementazione di LazyColumn/LazyRow come DSL (I93cc6)
- Constraints ora è una classe in linea (I88736)
- È stata aggiunta la possibilità di impostare le dimensioni di un layout su una frazione dello spazio disponibile utilizzando i modificatori fillMaxWidth, fillMaxHeight e fillMaxSize. (I945bb, b/161562591)
Correzioni di bug
- È stato aggiunto un parametro di modifica a SelectionContainer (I4aada, b/161487952)
- È stata aggiunta la funzione lambda mergePolicy a SemanticsPropertyKey. Questo può essere utilizzato per definire un criterio personalizzato per l'unione con la semantica di mergeAllDescendants. Il criterio predefinito è utilizzare il valore principale se già presente, altrimenti il valore secondario. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
è stato rinominato inPlacementScope.place()
e il precedentePlacementScope.place()
è stato rinominato inPlacementScope.placeRelative()
. Di conseguenza, il metodoPlacementScope.place()
non rispecchierà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza invecePlacementScope.placeRelative()
. (I873ac, b/162916675)- È stato rimosso il componente FilledTextField deprecato. Utilizza invece TextField per ottenere l'implementazione di Material Design del campo di testo compilato. (I5e889)
- È stato aggiunto il parametro backgroundColor a LinearProgressIndicator e la spaziatura interna è stata rimossa da CircularProgressIndicator. È stato aggiunto il nuovo ProgressIndicatorConstants.DefaultProgressAnimationSpec che può essere utilizzato come AnimationSpec predefinito per l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677)
- Il composable
state { ... }
è stato ritirato a favore di chiamate esplicite aremember { mutableStateOf(...) }
per maggiore chiarezza. Ciò riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e corrisponde al patternby mutableStateOf()
per la delega delle proprietà della classe. (Ia5727) - RRect è stato rinominato in RoundRect per adattarsi meglio ai pattern di denominazione di compose Sono stati creati costruttori di funzioni simili a RRect e sono stati ritirati i costruttori di funzioni RRect (I5d325)
- Sono stati rimossi onChildPositioned e OnChildPositionedModifier. Gli sviluppatori devono utilizzare onPositioned e OnPositionedModifier sul layout secondario. (I4522e, b/162109766)
- IntSize ora è una classe in linea (I2bf42)
- Tieni premuta l'area vuota da modificare. (Ib1e5b)
- Nascondere la barra degli strumenti fluttuante dopo aver toccato il testo. (If4525)
- Nascondi barra degli strumenti fluttuante durante l'aggiornamento della selezione. (I8444c)
- Deseleziona Quando sfocato. (I781a2)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
e androidx.compose.foundation:foundation-text:0.1.0-dev16
vengono rilasciati. La versione 0.1.0-dev16 contiene questi commit.
Modifiche all'API
- È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi lazy. Fornisce modificatori per riempire la dimensione massima del contenitore principale, che risolve il caso d'uso in cui l'elemento deve riempire il viewport e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854)
- Spostare la finestra di dialogo nell'interfaccia utente (I47fa6)
- Sono stati aggiunti LazyColumnForIndexed/LazyRowForIndexed, versioni di LazyColumnFor/LazyRowFor che forniscono sia l'indice che l'elemento in itemCallback. È utile quando, oltre a un elemento corrente, devi conoscere un indice corrente. (I65ff3)
- Modifier.deternimateProgress è stato rinominato in Modifier.progressSemantics (I9c0b4)
- LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stato rinominato in LazyRowFor (I84f84)
- Aggiungi alcuni segni/annotazioni per seguire le best practice. (I66b20)
- Il pacchetto foundation.shape.corner è stato appiattito in foundation.share (I46491, b/161887429)
- È stato aggiunto il parametro gravità asse trasversale per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supportano il comportamento di a capo dei contenuti. (Ib39fc)
- ZoomableState è stato rinominato ZoomableController. È stato aggiunto il supporto delle curve personalizzate per smoothScale. È stata aggiunta la funzionalità
enabled
eonZoomStarted
(If8b8f) - Material FilledTextField è stato rinominato in TextField e la funzionalità di base TextField è stata rinominata in BaseTextField per rendere più semplice la scoperta e l'utilizzo dell'API più semplice (Ia6242, b/155482676)
- AdapterList, precedentemente deprecato, è stato rimosso. Utilizza LazyColumnItems (I12b9b)
- Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
- Il vecchio DSL ConstraintLayout è stato rimosso. ConstraintSet2 è stato rinominato in ConstraintSet. (If58d1, b/162450908)
- Sono stati aggiunti Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). A differenza dei modificatori di offset, i modificatori di offset assoluto non eseguono lo specchio automatico nel contesto da destra a sinistra (I3aa21)
Row
eColumn
ora sono funzioni in linea che riducono notevolmente il sovraccarico di utilizzo. (I75c10)
Correzioni di bug
- Risolvere correzioni generali dell'API (I077bc)
- Rimuovere l'interfaccia OffsetBase inutilizzata
- Allinea le classi Offset e IntOffset per avere una piattaforma API coerente
- Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
- Il metodo nativeCanvas è stato spostato dall'interfaccia Canvas per consentire ai consumatori di creare le proprie istanze Canvas
- È stata creata la classe stub EmptyCanvas per eseguire il refactoring di DrawScope in modo che sia un parametro non nullo anziché lateinit e garantire la non nullità del campo
- I valori enumerati ClipOp sono stati rinominati in Pascal Case
- Le enum FilterQuality sono state rinominate in Pascal Case
- Gli enum StrokeJoin sono stati rinominati in Pascal Case
- Gli enum PointMode sono stati rinominati in Pascal Case
- Gli enum PaintingStyle sono stati rinominati in Pascal Case
- Gli enum PathFillType sono stati rinominati in Pascal Case
- I valori enumerati di StrokeCap sono stati rinominati in Pascal Case
- È stata aggiornata l'implementazione di DrawCache in modo che non utilizzi più i parametri lateinit
- DrawScope è stato aggiornato in modo da non utilizzare più la delega lazy per i parametri interni fillPaint e strokePaint
- Componibile immagine aggiornato per evitare l'utilizzo di Box per un overhead ridotto
- Aggiornamento della classe Outline per includere le annotazioni @Immutable
- PathNode è stato aggiornato in modo da avere annotazioni @Immutable per ogni istruzione del percorso
- È stata aggiornata la composizione secondaria di vettore per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
- Metodi di costruttore complementari di Rect ritirati a favore di costruttori di funzioni
- Classi e costruttori di funzioni di Brush aggiornati con API @Immutable e @Stable
- È stato aggiornato l'enum VertexMode in modo che sia in PascalCase
- Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri di tratto sul colore se sono stati modificati
- È stato aggiornato il parametro Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
È stato aggiunto MonotonicFrameAnimationClock che ti consente di utilizzare un MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora i vecchi orologi basati su callback.
L'equivalente di MonotonicFrameClock di ManualAnimationClock ora è ManualFrameClock. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
rimosso. Utilizza inveceSemanticsNodeInteraction.performGesture
. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
rinominato inSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Le API per il supporto della scrittura da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
Modifier.plus è deprecato. Utilizza Modifier.then. "Poi" indica più chiaramente l'ordine, ma impedisce anche di digitare
Modifier.padding().background() + anotherModifier
, che interrompe la catena ed è più difficile da leggere (Iedd58, b/161529964)Aggiunto SemanticsMatcher per
isFocused()
eisNotFocused()
. (I0b760)È stato aggiunto RemeasurementModifier. Consente agli utenti di rimisurare il layout in modo sincrono. In genere, non è necessario perché la misurazione/il nuovo layout avvengono automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
Ora isSystemInDarkTheme prende sempre in considerazione l'impostazione del tema scuro a livello di sistema e ignora lo stato di risparmio energetico prima di Q, seguendo le ultime indicazioni. (I0c10c)
OnChildPositioned è stato ritirato. Utilizza invece OnPositioned sul componente figlio. (I87f95, b/162109766)
Il nome di AndroidComposeTestRule è stato rinominato in createAndroidComposeRule. (I70aaf)
Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
e androidx.compose.foundation:foundation-text:0.1.0-dev15
vengono rilasciati. La versione 0.1.0-dev15 contiene questi commit.
Per utilizzare la versione 0.1.0-dev15
di Compose, devi:
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.
Modifiche all'API
- Analogamente al nuovo parametro in ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems ora hanno anche il parametro contentPadding che consente di aggiungere un padding per i contenuti dopo che sono stati ritagliati, il che non è possibile solo con un parametro di modifica. Consente inoltre di aggiungere una spaziatura solo prima del primo elemento/dopo l'ultimo elemento. (Ibc24e)
- Il callback onFocusChange nei campi di testo è stato rinominato in onFocusChanged (Ida4a1)
- VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ColonnaScorrevole e RigaScorrevole per un'esperienza integrata con il comportamento e i parametri di Colonna/Riga oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
- Le API Modifier.draggable e Modifier.scrollable sono state riscritte. DragDirection è stato rimosso a favore di Orientation. Lo stato richiesto per la funzionalità scorrevole è stato semplificato. ScrollableState è stato rinominato in ScrollableController (Iab63c, b/149460415)
- Le proprietà di semantica a valore singolo ora utilizzano uno stile di chiamata.
Ad esempio, "semantics { hidden = true }" ora viene scritto come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Le dimensioni degli angoli utilizzati da RoundedCornerShape e CutCornerShape ora possono essere superiori al 50% (Id2340, b/160400213)
- È stato modificato il parametro predefinito ContentScale per il composable Immagine da Interno a Adatta. Questo è stato fatto per ottenere un comportamento che aumenti le dimensioni del Painter sottostante se le dimensioni del layout sono maggiori di quelle intrinseche del Painter, mantenendo al contempo le proporzioni. Questo comportamento soddisfa meglio le aspettative per quanto riguarda la fornitura di dimensioni fisse all'immagine senza influire sul comportamento predefinito se viene utilizzata solo la dimensione intrinseca per calcolare le dimensioni del componibile. (I40ae3, b/159838006)
- Utilizza AnimationSpec anziché AnimationBuilder nelle API di primo livello per chiarire il concetto di specifica di animazione statica - Migliora il DSL di transizione rimuovendo il requisito lambda per creare AnimationSpec come tween, spring. ma accettano direttamente i parametri del costruttore. -Migliora la facilità d'uso complessiva di AnimationSpec aprendo i metodi di costruzione anziché fare affidamento sui costruttori -Modifica la durata e il ritardo per KeyFrames e Tween in Int. Questo elimina il casting di tipo e il sovraccarico di metodi non necessari (per supportare sia Long che Int). (Ica0b4)
- La funzionalità Cliccabile è stata rimossa. Utilizza Modifier.clickable (I84bdf)
- Aggiunto LazyRowItems, l'analogo di LazyColumnItems con scorrimento orizzontale (Ibbcf7)
- Sono state introdotte API di animazione stateless di basso livello. Queste API (I63bf7)
- androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i composabili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- È stato sostituito l'utilizzo di IntPx con Int. È stata sostituita IntPxPosition con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape rimosso; utilizza androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe Size anziché PxSize. Ciò offre i vantaggi di una classe in linea per sfruttare un valore lungo per imballare 2 valori float per rappresentare la larghezza e l'altezza rappresentate come valori float. (Ic0191)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. Ciò offre i vantaggi di una classe in linea per sfruttare un valore long per imballare 2 valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
- È stato aggiunto Modifier.zoomable per la funzionalità di zoom con due dita (Id5d63)
- Il componente attivabile/disattivabile è stato ritirato. Utilizza Modifier.toggleable (I35220, b/157642842)
- MutuallyExclusiveSetItem è stato ritirato. Utilizza invece Modifier.selectable. (I02b47, b/157642842)
- TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
- Aggiunge il parametro fontWeight a Testo, che non è stato aggiunto per errore in precedenza (I56937)
- È stato sostituito l'utilizzo della classe Px in vari classi di composizione nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
- VerticalScroller ora fornisce la colonna out of the box. HorizontalScroller ora fornisce la riga out of the box. (Ieca5d, b/157020670)
- È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Iede0b)
- Modifier.indication è stato aggiunto al pacchetto di base. Utilizzalo per mostrare un'indicazione di pressione/trascinamento/altro sugli elementi interattivi personalizzati (I8425f, b/155287131)
- VerticalScroller e HorizontalScroller ora supportano lo scorrimento inverso se isReversed è impostato su ScrollerPosition (I953bd)
- Supporta l'aggiunta di composabili nel layout di testo. (I1373c)
- Implementazioni CanvasScope consolidate quindi ora ci sono solo DrawScope e ContentDrawScope CanvasScope è stato rinominato in DrawScope. È stato aggiornato DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. È stato eliminato il sottotipo DrawScope in ContentDrawScope. Painter e PainterModifier sono stati aggiornati in modo da non gestire più autonomamente una proprietà RTL, poiché DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
- È stata rimossa l'API DrawBackground ritirata a favore delle API di estensione drawBackground su Modifier. È stato eseguito il refactoring delle implementazioni di colore, pennello e drawBackground per ridurre i percorsi di codice e rimuovere il requisito di creazione di Modifier nell'ambito della composizione. (I0343a)
- Sono state aggiornate le API compose di livello superiore che espongono un Canvas per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che hanno ancora bisogno di accedere a un Canvas possono utilizzare il metodo drawCanvas dell'estensione, che fornisce un callback per emettere comandi di disegno con il Canvas di base. (I80afd)
- HorizontalScroller e VerticalScroller non ripristinano la posizione di scorrimento utilizzando lo stato dell'istanza salvato. (Ia0fae, b/155075048)
- FocusManagerAmbient è stato rimosso. Utilizza FocusModifier.requestFocus per ottenere lo stato attivo. (Ic4826)
- Il layout della tabella è stato rimosso temporaneamente finché non lo renderemo di nuovo disponibile con un'API aggiornata. (Id88a7)
È stata creata l'API CanvasScope che avvolge un oggetto Canvas per esporre un'API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del ricevitore e le informazioni sulle dimensioni sono limitate anche ai limiti di inset corrispondenti. Non richiede all'utente di gestire un proprio oggetto stato di Paint per la configurazione delle operazioni di disegno.
È stato aggiunto CanvasScopeSample e l'app di dimostrazione è stata aggiornata in modo da includere una dimostrazione di grafica dichiarativa (Ifd86d)
ColoredRect è stato rimosso. Utilizza invece User Box con il modificatore drawBackground (I983c7, b/152753731)
Aggiungere la personalizzazione del colore del cursore al TextField (I6e33f)
Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, che viene fornito dal callback onTextInputStarted (I8dc44, b/151860051)
TextFieldValue utilizzato con TextField ora può sopravvivere alla ricreazione dell'attività se utilizzato come segue:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Aggiunge i parametri di uso comune a Text(). Se al momento stai creando uno stile di testo locale per trasmettere un numero limitato di questi parametri, ad esempio
Text(style = TextStyle(textAlign = TextAlign.Center))
, ora puoi semplicemente fornire i parametri direttamente:Text(textAlign = TextAlign.Center)
(I82768)È stato sostituito il parametro focusIdentifier di CoreTextField/TextField con FocusNode per l'integrazione con il sottosistema di messa a fuoco. (I7ea48)
Aggiornamento del campo di testo: nella dimensione orizzontale occuperà tutto lo spazio disponibile concesso (Ib08df, b/154638552)
Sono stati aggiunti InteractionState e Interaction, che semplificano la creazione di componenti che reagiscono alle modifiche dello stato dell'interfaccia utente, come pressioni e trascinamenti (Icfe25, b/152525426)
RectangleShape è passato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984)
Sono stati sostituiti tutti gli utilizzi di Color nullable nell'API con valori non nullable e viene utilizzato Color.Unset anziché null (Iabaa7)
Aggiornamento dell'API TextField: i callback onFocus e onBlur sono stati uniti in un unico callback onFocusChange(Boolean) con parametro (I66cd3)
È stato rinominato ScaleFit in ContentScale È stato spostato ContentScale dal modulo ui-graphics al modulo ui-core perché si trovi nello stesso modulo dell'API Alignment. Rinominata FillMaxDimension in Crop Rinominata FillMinDimension in Adatta Rinominata Adatta in Interno per una corrispondenza migliore con gli equivalenti di ImageView.ScaleType È stata aggiunta la documentazione che indica che la combinazione di Crop e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER. Interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
Rimuove ProvideContentColor, ma utilizza direttamente ContentColorAmbient con
Providers
(Iee942)Aggiunge il parametro di colore al testo, consentendo di ignorare il colore dello stile di testo senza dover unire manualmente lo stile fornito in un tema. (I41a66)
Miglioramento dell'API DrawModifier:
- È stato creato l'ambito del ricevente per draw() ContentDrawScope
- Sono stati rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia dell'ex CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
ColoredRect è stato ritirato. Utilizza invece
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Il sistema di temi delle forme viene aggiornato in base alle specifiche di Material Design. Ora puoi fornire forme piccole, medie e grandi da utilizzare per la maggior parte dei componenti (Ifb4d1)
Operatore Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)
La funzionalità Trascinabile è stata spostata nel modificatore (Id9b16, b/151959544)
Text
è stato spostato nel pacchetto androidx.ui.foundation da androidx.ui.core. (I87ce5)Aggiungi il parametro
enabled
a casella di controllo, pulsante di attivazione/disattivazione e pulsante di attivazione/disattivazione (I41c16)Ora l'effetto Ripple è un modificatore. Anche se lo stato Cliccabile non è ancora stato convertito, l'utilizzo consigliato è
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per le immagini vettoriali. Il risultato della composizione secondaria è un oggetto VectorPainter anziché DrawModifier. Sono stati ritirati i composabili DrawVector precedenti a favore di VectorPainter.
L'API
Image(Painter)
è stata rinominata inPaintBox(Painter)
È stato creato un componibile vettoriale che si comporta come il componibile Immagine, tranne che con un asset vettoriale anziché un asset immagine (I9af9a, b/149030271)È stato creato un composable immagine per gestire le dimensioni/il layout, oltre a disegnare un determinato asset immagine sullo schermo. Questo composable supporta anche il disegno di qualsiasi istanza Painter arbitraria nel rispetto delle sue dimensioni intrinseche, nonché di una determinata dimensione fissa o minima (Ibcc8f).
Button, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni dei parametri di Button sono stati rinominati o riordinati. (I54b5a)L'elemento Image è stato rinominato in ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e il componente composable Image imminente utilizzato per partecipare al layout e disegnare i contenuti.
È stato creato il metodo di estensione su android.graphics.Bitmap,
Bitmap.asImageAsset()
, per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework Compose. (Id5bbd)Il composable DrawImage è stato rimosso. Utilizza ImagePainter per disegnare un'immagine sul layout esistente o SimpleImage per inserire un'immagine che occupa spazio (I595e1, b/149827027)
Il componente Stack supporta la direzione da destra a sinistra (Ic9e00)
Sono stati aggiunti Icon, IconButton e IconToggleButton e rimosso AppBarIcon. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, e ora avranno il target di tocco corretto. Consulta i Samples per informazioni sull'utilizzo e la sezione Icone per le icone Material fornite che puoi utilizzare direttamente con questi componenti. (I96849)
Il composable DrawShape è stato rimosso. Utilizza invece il modificatore DrawBackground. (I7ceb2)
È stato aggiunto AdapterList, un componente dell'elenco con scorrimento che compone e dispone solo gli elementi visibili. I problemi attualmente noti includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai suoi elementi secondari. (Ib351b)
È stato aggiunto il componente scorrevole, che consente la creazione di elenchi/barra scorrevoli personalizzati (I5fd37)
Lo sfondo è stato rinominato in DrawBackground e viene memorizzato per impostazione predefinita (Ia0bd3)
Aggiungi i parametri padding, border, shape e background a Box (I05027, b/148147281)
È stato aggiunto il componente Canvas. Questo composable occupa alcune dimensioni (fornite dall'utente) e ti consente di disegnare utilizzando CanvasScope (I0d622)
Rinomina il modificatore
Border
inDrawBorder
(I8ffcc)È stato aggiunto il componente Box per combinare il layout e le funzionalità di disegno comuni. (I6e2a7)
Ora i cursori mostrano il comportamento di movimento fling nativo di Android. (I922af, b/147493715)
DrawBorder è stato sostituito da Border Modifier (Id335a)
Modifier.tag è stato rinominato in Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Il parametro percentuale per la creazione delle linee guida di ConstraintLayout è stato rinominato in frazione. (Ida2db)
È stato aggiunto il supporto per i margini delle barriere ConstraintLayout. (I47ffe)
È stato corretto il supporto RTL in ConstraintLayout. Sono state aggiunte API non RTL aware. (I3b1c7)
È stato aggiunto un nuovo DSL per ConstraintLayout. Per maggiori dettagli, consulta i sample. (Icaa9a)
È stata aggiunta l'annotazione @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn sono ora contrassegnati per indicare che le relative API cambieranno. (I412a8)
È stato aggiunto
Modifier.padding(InnerPadding)
(I94985, b/157133803)Sono stati rimossi RowAlign e ColumnAlign in Row e Column. (If60d4, b/155858731)
È stato rimosso LayoutTag(), che è deprecato. Utilizza Modifier.tag() al suo posto. È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)
È stato aggiunto il modificatore di layout offsetPx, che può essere utilizzato per definire offset (dinamici) in pixel. (I5af57)
Il composable AlignmentLineOffset è deprecato. Utilizza invece il modificatore relativePaddingFrom(). Il composable CenterAlignmentLine è stato rimosso. (I60107)
È stato aggiunto il modificatore di layout defaultMinSizeConstraints, che imposta i vincoli delle dimensioni sul layout con a capo solo quando i vincoli corrispondenti in entrata non sono specificati (0 per i vincoli minimi e infinito per i vincoli massimi). (I311ea, b/150460257)
Il contenitore è stato rimosso. Utilizza invece Box (Ibbc2b, b/151407926)
Sono stati rimossi i modificatori LayoutWidth/Height/Size obsoleti. (Ib0bc1)
Sono stati aggiunti valori predefiniti per il parametro di modifica dell'offset. (I37f06)
È stato aggiunto il modificatore di spaziatura simmetrica. (I39840)
È stato rimosso il modificatore LayoutAspectRatio deprecato. (I65a74)
Sono stati rimossi i modificatori LayoutAlign non più supportati. (I10877)
È stato corretto un bug nei modificatori di larghezza e altezza che causava la misurazione del layout a capo senza vincoli dell'asse opposto. (I210b8, b/154797971)
Sono stati aggiunti i parametri verticalGravity e horizontalGravity rispettivamente a Riga e Colonna. (I7dc5a)
Aggiornati wrapContentWidth e wrapContentHeight in modo che prevedano l'allineamento verticale o orizzontale anziché qualsiasi allineamento. Il modificatore di gravità è stato aggiornato in modo da accettare l'allineamento verticale o orizzontale. Le opzioni Riga, Colonna e Serie sono state aggiornate per supportare gli allineamenti continui personalizzati. (Ib0728)
È stato reso possibile creare istanze di Allineamento con valori arbitrari. Sono stati aggiunti gli allineamenti 1D. (Ia0c05)
EdgeInsets è stato rinominato in InnerPadding. Il parametro innerPadding dei pulsanti Material è stato rinominato in padding. (I66165)
alignToSiblings ora accetta un valore Measured anziché Placeable. (I5788d)
Sono stati aggiunti modificatori per le dimensioni alle misurazioni intrinseche e sono stati ritirati i componenti che hanno questo scopo. (I8295d)
È stato aggiunto il supporto per la personalizzazione delle dimensioni degli elementi secondari di ConstraintLayout (Idb1a5)
Sono stati rimossi i composabili Wrap e Center non più supportati. (I29e23)
È stata aggiunta LayoutModifier2, una nuova API per definire i modificatori di layout. È stato deprecato LayoutModifier (If32ac)
I membri RowScope e ColumnScope sono ora accessibili al di fuori di Riga e Colonna. (I3a641)
Il contenitore è stato ritirato. Utilizza Box. (I675ce, b/151407926)
È stato aggiunto il modificatore LayoutOffset per compensare la posizione del layout (I0b8a3)
Supporto iniziale per la scrittura da destra a sinistra nel layout di composizione (Ia5519)
LayoutAlign è stato aggiornato in modo da non riempire più lo spazio disponibile (I2b14f)
È stato rimosso il composable AspectRatio a favore del modificatore. È stato eliminato il composable obsoleto FlexColumn, FlexRow e il modificatore Spacing (Iec8a7)
È stato rimosso il modificatore LayoutInflexible per riga e colonna (I0d820)
Implementa i punti di manipolazione della selezione per modificare la selezione per TextField. (I27032)
Implementa LongPressAndDrag per la selezione del campo di testo. (I17919)
Correzioni di bug
- FocusModifier è deprecato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState e FocusDetailedState sono stati ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
runOnIdleCompose
è stato rinominato inrunOnIdle
(I83607)- Diverse API di test sono state rinominate per essere più intuitive. Tutte le API findXYZ sono state rinominate in onNodeXYZ. Tutte le API doXYZ sono state rinominate in performXYZ. (I7f164)
- Rimuove Modifier.ripple, precedentemente deprecato. Ora clickable utilizza l'effetto ripple come indicazione predefinita (se hai impostato MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare clickable e ottenere l'indicazione dell'effetto ripple senza costi. Se devi personalizzare il parametro colore / dimensioni / contenuto per l'eco, puoi creare manualmente un'indicazione di eco e passarla a selezionabile come parametro indicazione. (I663b2, b/155375067)
- Sono state rimosse le API di test delle dimensioni obsolete. (Iba0a0)
- È stata creata l'API sperimentale LayoutNode (I4f2e9)
- La versione 1 del blocco dell'orientamento dello scorrimento è implementata in Compose. (I1ce7a, b/150289741)
- I popup, le finestre di dialogo e i menu ora ereditano il MaterialTheme contestuale (Ia3665, b/156527485)
- È stato rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). La direzione del layout è tuttavia disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d)
- Aggiungi AbsoluteArrangement: consente di disporre gli elementi secondari all'interno della riga senza il mirroring automatico in RTL (I3a1df)
- L'annotazione @Untracked è stata ritirata. Sostituire con @ComposableContract(tracked=false) (Id211e)
- Prima di questa modifica, il plug-in del compilatore di Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
- Aggiungi il composable
viewModel()
che consente di creare o recuperare un ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1) La classe Radius è stata sottoposta a refactoring per diventare una classe in linea. Sono stati rimossi i metodi di creazione di compagni in favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio sull'asse y corrisponda a quello del parametro obbligatorio del raggio sull'asse x.
È stato aggiornato DrawScope.drawRoundRect in modo da utilizzare un singolo parametro Radius anziché due valori float distinti per il raggio lungo gli assi x e y (I46d1b)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Classe Px eliminata nella sua interezza (I3ff33)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Id3434)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
I gesti parziali non richiedono più il passaggio di un GestureToken (Id7ae5)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)
Modifier.semantics non è più deprecato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)
Aggiornamento dell'API Alignment e aggiunta del supporto per l'allineamento assoluto (che non esegue la duplicazione automatica nel contesto Rtl) (I38cd3)
Gli elementi Layout e LayoutModifier possono essere misurati con una direzione di layout diversa. (Ibd731)
Introduzione di un parametro facoltativo aggiuntivo per il rettangolo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)
È stato corretto un arresto anomalo in AdapterList durante la rimozione di elementi (Ic64b0, b/153195921)
Abbiamo modificato il modo in cui misuriamo il primo layout inserito all'interno del blocco activity.setContent { }. In precedenza, era costretto a riempire l'intera schermata dell'attività e ora si comporta come se avessi inserito il layout in una serie: può essere più piccolo di uno schermo e verrà posizionato nella schermata in alto a sinistra. Se vuoi il vecchio comportamento, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714)
Il modulo ui-text-compose è stato rinominato in ui-text. ui-text now contiene composabili CoreText e CoreTextField (Ib7d47)
Il modulo ui-text viene rinominato ui-text-core (I57dic)
Sono stati spostati i composabili ui-framework/CoreText, CoreTextField in ui-text-compose. Ti consigliamo di includere ui-text-compose nel tuo progetto. (I32042)
runOnIdleCompose
erunOnUiThread
ora sono funzioni globali invece di metodi su ComposeTestRule. (Icbe8f)[Mutabile]Gli operatori di delega della proprietà stato sono stati spostati nelle estensioni per supportare le ottimizzazioni della delega della proprietà di Kotlin 1.4. Gli utenti che chiamano devono aggiungere importazioni per continuare a utilizzare
by state { ... }
oby mutableStateOf(...)
. (I5312c)Ora per DrawLayerModifier e drawLayer() il valore predefinito di clipToBounds e clipToOutline è false. (I0eb8b, b/152810850)
LayoutResult è stato rinominato in MeasureResult. (Id8c68)
Componente componibile del Centro ritirato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAlign.Center o con uno dei composabili Box o Stack con modificatori appropriati applicati (Idf5e0)
LayoutFlexible è stato rinominato LayoutWeight. Il parametro tight è stato rinominato in fill. (If4738)
DrawVector è stata modificata da una funzione composable normale in modo da restituire un modificatore drawVector() che disegnerà il vettore come sfondo di un layout. (I7b8e0)
Sostituisci la funzione composable Clip con il modificatore drawClip(). DrawClipToBounds è un modificatore pratico da utilizzare quando devi solo ritagliare in base ai limiti del livello con una forma rettangolare. (If28eb)
La funzione composable DrawShadow è stata sostituita con il modificatore drawShadow(). Le ombre vengono ora disegnate all'interno di LayerModifier. (I0317a)
androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable è stato rimosso. Era ridondante con ComponentNode. androidx.compose.ViewAdapters è stato rimosso. Non sono più un caso d'uso supportato. Compose.composeInto è stato ritirato. Utilizza invece
setContent
osetViewContent
. Compose.disposeComposition è stato ritirato. Utilizza invece il metododispose
suComposition
restituito dasetContent
. androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt è stato rinominato in ComponentNode#insertAt ComponentNode#emitRemoveAt è stato rinominato in ComponentNode#removeAt ComponentNode#emitMode è stato rinominato in ComponentNode#move (Idef00)Componibile Wrap deprecato. Può essere sostituito con il modificatore LayoutAlign o con il composable Stack (Ib237f)
La direzione del layout è stata propagata dal nodo del layout principale ai figli. È stato aggiunto il modificatore dell'orientamento del layout. (I3d955)
Rinomina Painter.toModifier in Painter.asModifier perché il modificatore appena creato ha un riferimento al Painter originale che può essere condiviso tra più istanze di modificatore (I7195b)
Supporto della direzione da destra a sinistra nel modificatore LayoutPadding (I9e8da)
Density e DensityScope sono stati uniti in un'unica interfaccia. Ora puoi utilizzare DensityAmbient.current anziché ambientDensity(). Anziché withDensity(density), usa semplicemente with(density) (I11cb1)
È stata rimossa la classe ValueHolder. Le classi AnimatedValue e AnimatedFloat sono state ristrutturate per astrarre il campo del valore dell'animazione in modo che le sottoclassi possano monitorare l'aggiornamento del valore.
- Sono state aggiunte classi di modelli per AnimatedValue, AnimatedFloat e così via.
- È stato aggiunto un nuovo insieme di API @Composable leggere per l'animazione tra valori.
- (I79530)
Modifiche non compatibili all'API Ambient. Per informazioni dettagliate, consulta il log e la documentazione di
Ambient<T>
(I4c7ee, b/143769776)Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la riga di allineamento sottoposta a query non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)
È stato corretto un bug di ConstraintLayout che causava un arresto anomalo durante le ricostruzioni. (Ibee5a, b/158164341)
L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del ricevitore che, oltre a constraints e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in DP (I91b9a, b/149979702)
LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)
Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 ora hanno un ricevitore IntrinsicMeasureScope che fornisce l'API di query intrinseca con la direzione del layout propagata implicitamente. (Id9945)
LayoutDirectionAmbient è deprecato. Per leggere l'orientamento del layout definito dalle impostazioni internazionali, utilizza localeLayoutDirection su ConfigurationAmbient (I851b1)
Aggiunti positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)
Il composable ParentData è deprecato. Devi creare un modificatore che implementi l'interfaccia ParentDataModifier o utilizzare il modificatore LayoutTag se devi semplicemente taggare gli elementi layout secondari per riconoscerli all'interno del blocco di misura. (I51368, b/150953183)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni composable OnPositioned e OnChildPositioned. (I2ec8f)
Non consentire spaziature negative in LayoutPadding. Per gli offset di posizione negativi, deve essere utilizzato LayoutOffset. (Ifb5b1)
WithConstraints ha ricevuto il parametro LayoutDirection (I6d6f7)
È stato aggiornato il flag
ComposeFlags.COMPOSER_PARAM
intrue
, il che comporterà la modifica della strategia di generazione del codice per il plug-in di composizione. A un livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene trasmesso alle chiamate @Composable successive affinché il runtime possa gestire correttamente l'esecuzione. Si tratta di una modifica significativa che comporta la rottura del codice binario, ma dovrebbe preservare la compatibilità a livello di codice sorgente in tutti gli utilizzi consentiti di compose. (I7971c)È stato modificato LayoutCoordinates in modo che le linee di allineamento fornite siano un insieme anziché una mappa e che LayoutCoordinates implementi l'operatore get() per il recupero di un valore. In questo modo, è più facile per i modificatori modificare uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a)
LayoutCoordinates non ha più una proprietà position. La proprietà posizione non ha senso se si prendono in considerazione LayoutModifiers, la rotazione o la scalatura. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da un LayoutCoordinate all'altro.
LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, pertanto tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)
Miglioramenti all'API Constraints (I0fd15)
È stato aggiunto TextDirection.Content (I48f36)
Modifica il menu della barra degli strumenti in modo che mostri correttamente le opzioni di copia, taglio e incolla. (Id3955)
Aggiungi la barra degli strumenti fluttuante per la selezione del campo di testo. (Ie8b07)
TextDirectionAlgorithm viene rinominato TextDirection (I75ce8)
TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)
Aggiungi HapticFeedback alla selezione del campo di testo. (I58050)
Aggiungi i metodi Copia, Taglia e Incolla alla selezione del campo di testo. (Idb70b)
TestTag e Semantics sono stati eliminati. Utilizza Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
Il nome del pacchetto per Locale e LocaleList è stato modificato da androidx.ui.text in androidx.ui.intl (I8132c)
Modifica all'API:
AnnotatedString(builder: Builder)
viene rinominato inannotatedString(builder: Builder)
. (Ia6377)Modifica all'API:
AnnotatedString.Item
viene rinominato inAnnotatedString.Range
. (I2d44d)Aggiungi la barra degli strumenti per le operazioni relative al testo. (I49d53)
La nuova proprietà LifecycleOwnerAmbient è ora disponibile. Ora un'attività che utilizzi con l'interfaccia utente di Compose deve estendere androidx.activity.ComponentActivity (o AppCompatActivity). setContent su android.app.Activity è ora deprecato (Idb25a, b/153141084)
Il nome del pacchetto ui-android-text (androidx.text) è stato sostituito con androidx.ui.text.platform per allinearsi alle norme di androidx. (I42711)