UI di composizione
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Consulta la documentazione di riferimento dell'API per tutti i pacchetti di Compose)
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Alpha Release |
---|---|---|---|---|
2 luglio 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
Struttura
Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx
. Ogni gruppo
contiene un sottoinsieme mirato di funzionalità, ognuna con il proprio insieme di note di rilascio.
Questa tabella spiega i gruppi e fornisce i link a ogni insieme di note di rilascio.
Gruppo | Descrizione |
---|---|
compose.animation | Creare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e attiva le ottimizzazioni con un plug-in del compilatore Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le fondamenta per creare i tuoi elementi del sistema di progettazione. |
compose.material | Crea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti che corrispondono a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea UI Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include componenti e temi aggiornati e funzionalità di personalizzazione Material You come il colore dinamico. È progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12. |
compose.runtime | Elementi costitutivi fondamentali del modello di programmazione e della gestione dello stato di Compose e runtime di base per il plug-in del compilatore Compose da utilizzare come target. |
compose.ui | Componenti fondamentali dell'interfaccia utente di Compose necessari per interagire con il dispositivo, inclusi layout, disegno e input. |
Dichiarazione di dipendenze
Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle
per
la tua app o il tuo modulo:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.9
Versione 1.9.0-beta02
2 luglio 2025
androidx.compose.ui:ui-*:1.9.0-beta02
viene ritirata. La versione 1.9.0-beta02 contiene questi commit.
Modifiche alle API
- Modifica l'oggetto complementare in sperimentale in modo che corrisponda alla classe. (I8452a)
- Rimosso il flag sperimentale
isTrackFocusEnabled
(I003fd)
Correzioni di bug
- Quando non si verifica alcuna
WindowInsets
sui contenuti diComposeView
, i valori diWindowInsetsRulers
non vengono forniti. (I71221)
Versione 1.9.0-beta01
18 giugno 2025
androidx.compose.ui:ui-*:1.9.0-beta01
viene ritirata. La versione 1.9.0-beta01 contiene questi commit.
Modifiche alle API
ShadowContext
è stata modificata in un'interfaccia sigillata (I3ce40)- Aggiunge un modo cross-module per creare un evento di tocco indiretto (per i test) (I22e4c)
- Rende
IndirectTouchEvent.nativeEvent
sperimentale. (I6fda5) - Revisiona la superficie API in base al feedback del consiglio API. (Ibf378)
- Rimuovi la costante
FrameRateCategory.NoPreference
. RinominaModifier.requestedFrameRate
inModifier.preferredFrameRate
. (I2f976) WindowInsetsRulers
:rulersIgnoringVisibility
impostato sul valore massimo.getDisplayCutoutBounds()
è stata modificata in modo da essere una funzione di estensione diPlacementScope
.WindowInsetsAnimationProperties
è stato modificato inWindowInsetsAnimation
egetAnimationProperties()
è stato modificato ingetAnimation()
. (I3816f)- Classe
ShadowParams
modificata inShadow
(I11cca) - Modifica del pacchetto per l'API frame rate da
androidx.compose.ui.ui
aandroidx.compose.ui
(I8994e) InsetsRulers
è stato modificato per essere in un codice comune con il nomeWindowInsetsRulers
. L'API è stata semplificata in modo che tutti gli inserti sianoWindowInsetsRulers
. Le proprietà di animazione non righelli sono state estratte in una classeAnimationProperties
.WindowInsetsRulers.innermostOf()
può essere utilizzato per unire piùWindowInsetsRulers
. (I2f0c6, b/415012444)- È stata aggiunta un'API di strumentazione per l'analisi delle informazioni sull'origine aggiunte dal compilatore Compose. (Iceaf9, b/408492167)
Correzioni di bug
- Il flag per
isGetFocusedRectReturnEmptyEnabled
è stato rimosso ora che la funzionalità è stata completamente verificata. (Ife722) - Corregge un bug in
performScrollToNode
, che in alcuni casi non raggiungeva il nodo di destinazione. Con questa correzione, dovrebbe sempre raggiungere il nodo di destinazione in questi casi. Un effetto collaterale di questa modifica è che la posizione di scorrimento esatta alla fine dell'azione potrebbe ora essere diversa, il che influisce sui test degli screenshot e sui test che fanno ipotesi sulla posizione di scorrimento esatta. (I2c8a1)
Versione 1.9.0-alpha04
4 giugno 2025
androidx.compose.ui:ui-*:1.9.0-alpha04
viene ritirata. La versione 1.9.0-alpha04 contiene questi commit.
Modifiche alle API
- Aggiunte API di modifica per ombre personalizzabili. (I2058d, b/160665122)
- Aggiungi una proprietà
SemanticsModifierNode.isImportantForBounds
che determina se il nodo deve essere preso in considerazione durante il calcolo dei limiti. La proprietà è vera per impostazione predefinita e può essere impostata su false per indicare che il nodo non deve essere preso in considerazione per i limiti. (I7ebec) - Aggiungi una funzione di fabbrica
SemanticsPropertyKey
per dichiarare proprietà semantiche specifiche di Android che vengono rese disponibili come extra di accessibilità esposti tramiteAccessibilityNodeInfo.getExtras
. (I2ed51) - Sono stati rimossi gli utilizzi di
ComposeUiFlags.isRemoveFocusedViewFixEnabled
e il flag è stato ritirato. (I50328) - Introduzione di un nuovo framework delle ombre personalizzabile. Sono inclusi
DropShadowPainter
eInnerShadowPainter
, nonché le dipendenzeDropShadow/InnerShadow
. L'infrastruttura shadow è condivisa in modo che le stesse ombre generate possano essere condivise in più call center senza doverle rigenerare n volte. (I24f7a, b/160665122) - Introduci
CompositeShader
eCompositeShaderBrush
, che crea un risultato composito tra due shader. Aggiungi ancheShaderBrush#transform
per impostare una matrice di trasformazione per lo shader. (I2621a, b/160665122)
Correzioni di bug
- È stato corretto un bug in
NestedScrollInteropConnection
per cui i metodi di scorrimento rapido erano nell'ordine errato rispetto alle visualizzazioni. (I56ad4) - In precedenza, le finestre di dialogo che venivano visualizzate a schermo intero non venivano disegnate all'interno della regione di ritaglio del display. Questo bug è stato corretto in modo che le finestre di dialogo con
decorFitsSystemWindows = false
eusePlatformDefaultWidth = false
possano occupare la regione di ritaglio del display. (I9e975) - È stato corretto un bug a causa del quale l'indicatore di messa a fuoco verde di
TalkBack
non veniva visualizzato dopo l'attivazione mentre l'app Compose è in background. (Ifd12a)
Versione 1.9.0-alpha03
20 maggio 2025
androidx.compose.ui:ui-*:1.9.0-alpha03
viene ritirata. La versione 1.9.0-alpha03 contiene questi commit.
Modifiche alle API
- Il flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
fa sì che, quando non è possibile mettere a fuoco nulla in unComposeView
, il rettangolo venga impostato su un valore vuoto. In questo modo, una ricerca mirata non può scegliere la visualizzazione su cui concentrarsi. Ciò è particolarmente importante quando un IME ha un'opzione NEXT in cui potrebbe tentare di concentrarsi suComposeView
erequestFocus()
non riesce. (Ibd0e2, b/369256395) - Introduci il flag
isNestedScrollDispatcherNodeFixEnabled
. (I0d24a) - Rinomina
DialogProperties
'dialogContentTitle
inwindowTitle
(Ibd27b) - Sono stati introdotti i modificatori
Modifier.onFirstVisible
eModifier.onVisibilityChanged
, che sono modificatori di alto livello basati suModifier.onLayoutRectChanged
. Questi modificatori sono creati appositamente per gestire molti requisiti comuni delle applicazioni, come la registrazione delle impressioni, la riproduzione automatica dei video e così via. Sono stati creati pensando alle prestazioni, in modo che possano essere utilizzati in scenari critici basati su elenchi senza rischiare di compromettere le prestazioni di scorrimento. Oltre a queste API di modifica, sono state aggiunte altre API perRelativeLayoutBounds
per supportare questi casi d'uso, nonché per consentire agli sviluppatori di creare facilmente modificatori personalizzati simili adatti al loro caso d'uso. (I759b8) - Modifica
setDiagnosticStackTraceEnabled
in sperimentale per tenere conto del futuro sviluppo di questa funzionalità. (I11db3) - Introduci
Modifier.scrollable2D
,Scrollable2DState
e le API companion per la creazione di stati. Sono state introdotte anche funzioni di estensione di scorrimento comuni. (Ic61c8, b/214410040) - I valori di colore a 64 bit di Compose non sono direttamente confrontabili con Android
ColorLongs
perché gli ID dello spazio colore non sono in ordine per alcuni spazi colore. Per la conversione da e verso gli spazi colore Android, vengono aggiunte due nuove API:toColorLong()
efromColorLong()
. (I36899) - È stato introdotto
ViewConfiguration.minimumFlingVelocity
per consentire il controllo della velocità di scorrimento del limite inferiore. (I11aab)
Versione 1.9.0-alpha02
7 maggio 2025
androidx.compose.ui:ui-*:1.9.0-alpha02
viene ritirata. La versione 1.9.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiungi
dialogContentTitle
aDialogProperties
, che imposta il titolo della finestra dei contenuti. bf9d670
Correzioni di bug
- I righelli degli inset della finestra sono stati disattivati temporaneamente durante la correzione dei test interni. 8d1402
- È stato corretto il modo in cui le modifiche all'input del puntatore vengono aggiunte a
VelocityTracker
inDragGestureNode
. Questa operazione può essere controllata con il nuovo flagisAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
.254ddb
Versione 1.9.0-alpha01
23 aprile 2025
androidx.compose.ui:ui-*:1.9.0-alpha01
viene ritirata. La versione 1.9.0-alpha01 contiene questi commit.
Modifiche al comportamento
- I controlli Lint forniti con Compose ora richiedono una versione minima di AGP 8.8.2. Se non riesci a eseguire l'upgrade di AGP, puoi eseguire l'upgrade di Lint separatamente utilizzando
android.experimental.lint.version=8.8.2
(o una versione più recente) ingradle.properties
. Per eseguire i controlli lint di Compose all'interno dell'IDE, è necessario Android Studio Ladybug o versioni successive.
Modifiche alle API
- Rimuove il flag per attivare le istruzioni di tracciamento per il tracker del percorso hit (debug). (I1b2a1)
InnerRectRulers
eOuterRectRules
sono stati modificati in metodi. Rimosso il parametro name dall'API pubblicaRectRulers
.DerivedRulers
ora è un'opzione del costruttore per i righelli verticale e orizzontale.MergedHorizontalRulers
eMergedVerticalRulers
sono stati sostituiti dai metodiminOf
emaxOf
per generare istanze. (Iee89f, b/408192133)- Depreca
androidx.compose.ui.LocalSavedStateRegistryOwner
a favore diandroidx.savedstate.compose.LocalSavedStateRegistryOwner
. (I5439f, b/377946781) - Aggiungi un
Modifier.keepScreenOn
per impostare la visualizzazione in modo che non si metta in modalità sospensione quando è presente (Ib5af4, b/408284174) - Aggiungi una nuova proprietà semantica
Shape
, che può essere impostata quando la forma dell'elemento UI è diversa dal rettangolo di selezione, ad esempio un rettangolo con angoli arrotondati. (I1376f) - È stato risolto il problema relativo all'invio di eventi puntatore in
AndroidViews
ed è stato aggiunto il flagisPointerInteropFilterDispatchingFixEnabled
per proteggere le modifiche. (I0e272, b/372055500, b/408002332) FocusRestorer
non blocca più l'elemento attivo in precedenza. Gli utenti devono utilizzare un tasto per assicurarsi che l'elemento precedentemente selezionato abbia lo stesso hash di composizione, in modo che la selezione venga ripristinata correttamente. (I4203b, b/330696779)- Consenti a Compose di attivare
ViewTreeObserver.OnScrollChanged
. Questo comportamento viene introdotto con il flagisOnScrollChangedCallbackEnabled
. Abbiamo anche introdotto una funzione di estensione diDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) currentCompositeKeyHash
è stato ritirato. Utilizza invececurrentCompositeKeyHashCode
. L'API di sostituzione codifica lo stesso hash con più bit, il che riduce in modo esponenziale la possibilità che due gruppi casuali non correlati nella gerarchia di composizione abbiano la stessa chiave hash. (I4cb6a, b/177562901)- I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
- Aggiunto il supporto del controllo lint per
FocusRequester
per assicurarsi che venga ricordato all'interno della composizione (I6bf91) - Aggiunta la possibilità di impostare la frequenza fotogrammi preferita o la categoria di frequenza fotogrammi in cui deve essere visualizzato il componente componibile (Ie5201)
- Esporre l'API
MotionEvent
nativa su Android. (I17286) - Aggiungi
getChecked() + setChecked(int)
, ritiraisChecked + setChecked(boolean)
(Iaac9d) - Il modificatore
graphicsLayer
ora accetta unblendMode
e uncolorFilter
(Iab0e6) - Aggiunta della composizione
LocalResources
locale alle risorse di query. La chiamata diLocalResources.current
verrà ricomposta quando la configurazione cambia, quindi le chiamate alle API comestringResource()
restituiranno valori aggiornati. (I50c13, b/274786917) - Esporre l'API sperimentale per i componenti componibili per gestire gli eventi di tocco indiretti (Icff57)
- Questa release migliora la segnalazione delle eccezioni non gestite generate durante le fasi di layout e disegno dei contenuti componibili. In precedenza, un'eccezione non rilevata in questo punto causava l'arresto anomalo del test runner e la chiusura anticipata della suite di test. Queste eccezioni ora possono essere segnalate in modo più elegante senza terminare la suite di test. (I9928b, b/314128080)
- È stata ritirata l'API sperimentale
GlobalAssertions
. Il suo utilizzo previsto era quello di eseguire controlli di accessibilità. Per questo scopo, consultaenableAccessibilityChecks()
. (I50aa5) SemanticsNodeInteraction.performTextInputSelection
non è più sperimentale e ora supporta un parametrorelativeToOriginal
aggiuntivo che ti consente di applicare la selezione al testo originale non trasformato o al testo trasformato. (I3a905, b/261561038, b/277018945)- Introduzione dell'API per la creazione di elenchi puntati personalizzati tramite
AnnotatedString
(I1d066, b/383269496, b/139326648) - Ritira
runWithTimingDisabled
a favore dirunWithMeasurementDisabled
, che descrive più chiaramente il comportamento: tutte le metriche vengono messe in pausa. Inoltre, espone la superclasseMicrobenchmarkScope
poiché non è possibile dichiarare nuovamente la funzionerunWithMeasurementDisabled
per aprire l'accesso, in quanto è inline. (I9e23b, b/389149423, b/149979716) - È stata aggiornata l'API ui-tooling Devices per includere dispositivi più recenti. (Ia2ac1)
- Aggiungi Tablet Portrait alla raccolta di dimensioni dello schermo di anteprima per aiutare lo sviluppatore a considerare finestre più grandi (Ia1976)
- Introduzione dell'API per il valore di traccia per contrassegnare/registrare la traccia con valori in un determinato momento. I valori di traccia vengono visualizzati in Prefetto come una nuova corsia visibile nella sequenza temporale di una traccia. Su Android vengono implementate utilizzando
Trace.setCounter
. (Idcf48)
Correzioni di bug
- Correzione dell'invio degli osservatori memorizzati nella composizione sospendibile per evitare l'invio di osservatori memorizzati/dimenticati nella stessa applicazione (I570b2, b/404645679, b/407931790)
- Ora
android:dialogTheme
può essere impostato per controllare le proprietà della finestra di dialogo quandodecorFitsSystemWindows
è false (I7922f, b/246909281) - È stato corretto un bug per cui qualsiasi evento di movimento rilevato al di fuori di una finestra di dialogo poteva chiuderla. (Ia78fd)
- I controlli lint di Compose ora richiedono una versione minima di AGP 8.8.2 dalla riga di comando e almeno Android Studio Ladybug per il supporto IDE. Se utilizzi una versione precedente di AGP, puoi impostare
android.experimental.lint.version=8.8.2
in gradle.properties per eseguire l'upgrade della versione di Lint senza influire su AGP. (I6f2a8) - È stata aggiunta una nuova proprietà semantica
InputText
che acquisisce il valore ditextfield
prima che venga applicata la trasformazione dell'output. (Iae46a, b/395911609, b/176949051) - È stata spostata l'API
enableAccessibilityChecks()
che attiva i controlli di accessibilità per Android in pacchetti separati, che sonocompose:ui:ui-test-accessibility
se non utilizziTestRule
ecompose:ui:ui-test-junit4-accessibility
quando chiamiTestRule
(I3c318, b/391560768) - Aggiunto il supporto per la composizione delle analisi dello stack in
LaunchedEffect
erememberCoroutineScope
(I705c0, b/354163858)
Contributo esterno
- Modifica della funzione sperimentale
runComposeUiTest
per accettare un blocco della sospensione. È stata aggiunta anche una funzione deprecatarunComposeUiTest
per la compatibilità binaria (I3b88c, b/361577328)
Versione 1.8
Versione 1.8.3
18 giugno 2025
androidx.compose.ui:ui-*:1.8.3
viene ritirata. La versione 1.8.3 contiene questi commit.
Correzioni di bug
- Il flag per
isGetFocusedRectReturnEmptyEnabled
è stato rimosso ora che la funzionalità è stata completamente verificata. (Ife722) - Il flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
fa sì che, quando non è possibile mettere a fuoco nulla in unComposeView
, il rettangolo venga impostato su un valore vuoto. In questo modo, una ricerca mirata non può scegliere la visualizzazione su cui concentrarsi. Ciò è particolarmente importante quando un IME ha un'opzione NEXT che potrebbe tentare di concentrarsi suComposeView
erequestFocus()
non riesce. (Ibd0e2, b/369256395)
Versione 1.8.2
20 maggio 2025
androidx.compose.ui:ui-*:1.8.2
viene ritirata. La versione 1.8.2 contiene questi commit.
Correzioni di bug
- Correzioni di NPE quando la finestra di dialogo viene rimossa durante il flusso di eventi attivo nella finestra di dialogo (6a7e7f)
- Correzione di
onLayoutRectChange
che non si aggiorna in base alla sequenza temporale limitata quando si verificano aggiornamenti di sola visualizzazione. (03b82d)
Versione 1.8.1
7 maggio 2025
androidx.compose.ui:ui-*:1.8.1
viene ritirata. La versione 1.8.1 contiene questi commit.
Correzioni di bug
- Risoluzione di alcuni problemi relativi a
onLayoutRectChanged
eLazyLayout
d791b11 - Ignora le richieste di ri-misurazione per gli elementi pre-composti. Questo bug ha influito sul rendimento dello scorrimento dei layout pigri, in quanto il precaricamento non funzionava in modo efficiente in alcuni casi e la misurazione avveniva all'interno del frame. 742087a
Versione 1.8.0
23 aprile 2025
androidx.compose.ui:ui-*:1.8.0
viene ritirata. La versione 1.8.0 contiene questi commit.
Modifiche importanti dalla versione 1.7.0
- Compose 1.8 include il supporto appena aggiunto per il completamento automatico semantico. Assicurati che le versioni di UI e Foundation che utilizzi siano la 1.8 o versioni successive, poiché il completamento automatico per i componenti di testo richiede le versioni più recenti di entrambi i moduli. Per l'utilizzo e gli esempi dell'API, consulta la documentazione sulla compilazione automatica per ulteriori dettagli qui.
- Compose 1.8 supporta altri tipi di feedback aptico:
Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. È accessibile tramiteLocalHapticFeedback
e su Android è disponibile per impostazione predefinita quando l'API Vibrator indica che la tecnologia aptica è supportata. - Diverse API Focus sono ora stabili, tra cui
Modifier.focusRestorer()
,onEnter
,onExit
eFocusProperties
(I6e667). Ora puoi specificare unFocusDirection
quando chiamirequestFocus
. Abbiamo aggiunto un'APIrequestFocus(FocusDirection)
sia afocusRequester
sia aFocusTargetModifierNode
per consentire la messa a fuoco in una direzione specifica. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Versione 1.8.0-rc03
9 aprile 2025
androidx.compose.ui:ui-*:1.8.0-rc03
viene ritirata. La versione 1.8.0-rc03 contiene questi commit.
Correzioni di bug
- Disattiva alcune correzioni di interoperabilità della messa a fuoco che hanno causato una regressione. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
Versione 1.8.0-rc02
26 marzo 2025
androidx.compose.ui:ui-*:1.8.0-rc02
viene ritirata. La versione 1.8.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui le visualizzazioni mirate incorporate nella gerarchia di Compose causavano una composizione rientrante quando la visualizzazione mirata veniva rimossa da una LazyList. (765562)
Versione 1.8.0-rc01
12 marzo 2025
androidx.compose.ui:ui-*:1.8.0-rc01
viene ritirata. La versione 1.8.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo quando un
AndroidView
attivo viene rimosso con la tastiera virtuale attiva. (Ic725a) - Corregge alcuni problemi nella nuova implementazione della gestione dello stato attivo. (b/395895685)
- Corregge un problema che blocca la compilazione automatica quando si utilizza
LaunchedEffect
per richiedere lo stato attivo su un campo di testo. (b/392539099)
Versione 1.8.0-beta03
26 febbraio 2025
androidx.compose.ui:ui-*:1.8.0-beta03
viene ritirata. La versione 1.8.0-beta03 contiene questi commit.
Modifiche alle API
- È stata spostata l'API
enableAccessibilityChecks()
che attiva i controlli di accessibilità per Android in pacchetti separati, che sonocompose:ui:ui-test-accessibility
se non utilizzi TestRule ecompose:ui:ui-test-junit4-accessibility
quando chiamiTestRule
(I547ef, b/391560768) - È stata aggiunta una nuova proprietà semantica
InputText
che acquisisce il valore di un campo di testo prima che venga applicata la trasformazione dell'output. (Iae46a)
Correzioni di bug
- È stato risolto un problema che causava il salvataggio del testo trasformato nell'output anziché del testo di input da parte dei servizi di compilazione automatica. (Iae46a, b/395911609, b/176949051)
Versione 1.8.0-beta02
12 febbraio 2025
androidx.compose.ui:ui-*:1.8.0-beta02
viene ritirata. La versione 1.8.0-beta02 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un controllo lint per avvisare in caso di chiamate a
Configuration#screenWidth
/heightDp
. In alternativa, è possibile utilizzareLocalWindowInfo.current.containerSize
per recuperare la dimensione della finestra corrente.
Versione 1.8.0-beta01
29 gennaio 2025
androidx.compose.ui:ui-*:1.8.0-beta01
viene ritirata. La versione 1.8.0-beta01 contiene questi commit.
Modifiche alle API
ContextualFlowRow
eContextualFlowColumn
sono stati contrassegnati come deprecati. Questo componente sperimentale è stato introdotto nella versione 1.7 e non era ancora stato stabilizzato, pertanto l'implementazione è stata ritenuta indesiderabile. In futuro, potrebbe essere fornito un componente che risolve i casi d'uso che questo componente era destinato a risolvere.FlowRow
eFlowColumn
hanno sovraccarichi sperimentali introdotti nella versione 1.7 che includono un parametrooverflow
. L'utilizzo di questo parametro è stato ritirato e al suo posto possono essere utilizzate le sovraccariche senza questo parametro. Il comportamento predefinito di "overflow" per questi sovraccarichi sarà "Clip", come fin dalla sua introduzione.- Molti casi d'uso per
ContextualFlowRow
possono essere realizzati utilizzando FlowRow, ma riconosciamo che non è vero in generale.ContextualFlowRow
è completamente implementabile nello spazio utente ed è possibile tentare di copiarne l'implementazione e adattarla, se necessario. In futuro, speriamo di risolvere questi casi d'uso in modo diverso. (Ibafec)
SemanticsNodeInteraction.semanticsId()
è stato rimosso. Utilizza inveceSemanticsNodeInteraction.fetchSemanticsNode().id
. (Ie397a)- Le vecchie API di compilazione automatica sono obsolete. Utilizza invece la nuova API basata sulla semantica. (I943ff)
- Riscrivi l'API
requestAutofill
in modo che esista al di fuori del gestore della compilazione automatica. (Id1929)
Correzioni di bug
- È stato risolto il problema di messa a fuoco per cui
requestFocus()
con un parametropreviouslyFocusedRect
senza senso (relativo alla direzione della messa a fuoco) saltava unComposeView
. (Ifdc2f, b/388590015) - È stato risolto un errore NPE occasionale durante l'utilizzo di
GraphicsLayer.record { this@ContentDrawScope.drawContent() }
. Se registridrawContent()
in questo modo, assicurati di utilizzare la funzione di estensioneGraphicsLayer#record
all'interno diDrawScope
e non la funzione membro suGraphicsLayer
. (I75fc0, b/389046242) - Correzione del layout del testo con i puntini di sospensione che a volte vengono tradotti in modo errato durante le animazioni. Per saperne di più, consulta b/389707025 (Ie55b1, b/389707025)
Versione 1.8.0-alpha08
15 gennaio 2025
androidx.compose.ui:ui-*:1.8.0-alpha08
viene ritirata. La versione 1.8.0-alpha08 contiene questi commit.
Modifiche alle API
- Rendere
AutofillManager
una classe astratta. (I0a3b0) - Sono stati risolti diversi problemi relativi alla messa a fuoco, inclusi arresti anomali quando l'IME tenta di mettere a fuoco
ComposeView
senza elementi selezionabili, cambio di messa a fuoco all'interno diAndroidViews
secondario e richiesta di messa a fuoco che lascia unAndroidView
. (Ia03c3, b/369256395, b/378570682, b/376142752) - Modifica
FocusEnterExitScope.cancelFocus()
incancelFocusChange()
(I89959) - Ora puoi calcolare le occlusioni componibili con
RectInfo.calculateOcclusions()
. - È stata aggiunta la funzione di estensione su
DelegatableNode
per registrare un listener per le modifiche globali del layout. (I68b59)
Correzioni di bug
- L'attività utilizzata come host per il composable in fase di test quando si utilizza
ComposeContentTestRule.setContent
ora utilizza il temaTheme.Material.Light.NoActionBar
, per evitare cheActionBar
si sovrapponga ai contenuti di test quando si ha come target l'SDK 35. Per disattivare questo comportamento, puoi rimuovere la dipendenza daui-test-manifest
e aggiungere una voce di attività nel file AndroidManifest.xml dell'app di test perComponentActivity
con il tema che preferisci. (I7ae1b, b/383368165) - I caratteri delle risorse con le stesse impostazioni di variante ora evitano l'over-caching, che causa l'applicazione di impostazioni di variante errate. (If3dff, b/372044241)
AnnotatedString.fromHtml
ora supporta i tag<ul>/<li>
. (I7c2fe, b/299662276, b/139326648)
Contributo esterno
- È stata aggiunta una nuova interfaccia degli appunti e una composizione locale. (I80809)
Versione 1.8.0-alpha07
11 dicembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
viene ritirata. La versione 1.8.0-alpha07 contiene questi commit.
Modifiche alle API
- Proprietario esposto da
LayoutNode
per gli strumenti. (I26f7f) - Ha
LocalAutofillHighlightColor
composizione locale che utilizza un tipo di colore. (I0e05b) - Mantieni
UrlAnnotation
deprecato e i relativi metodi contrassegnati come sperimentali. (Ic0021)
Correzioni di bug
- È stato corretto l'arresto anomalo di
IndexOutOfBoundsException
quando si utilizzaLinkAnnotation
all'interno diBasicText
o del composable Text (be7605, b/374115892) - È stato risolto il problema a causa del quale i campi di testo compilati con una forma personalizzata non ritagliavano la linea dell'indicatore. (I4f87f, b/380704151)
- Sono stati corretti gli sfondi mancanti negli screenshot lunghi. (I4d57a)
- Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto:
-Xjspecify-annotations=strict
(questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (Idfef8, b/326456246) - Aggiorna il supporto di Compose per i colori HDR e ad ampia gamma quando viene eseguito su Android Q+. (Icd8be, b/379135036)
- I caratteri delle risorse che non vengono caricati ora vengono sostituiti automaticamente con il carattere predefinito, anziché generare un'eccezione nella misura, come avveniva in precedenza. (Ib6a49)
- È stato corretto il problema relativo alla perdita della messa a fuoco quando
AndroidView
viene staccato e ricollegato. (I53446) - Accetta
requestFocus()
dall'azione di layout oltre i limiti. (Ia8461)
Contributo esterno
- Aggiungi
BringIntoViewResponderModifierNode
alla UI, che fornisce un nuovo modo per implementare la funzionalità Porta in visualizzazione e consente l'implementazione a livello di piattaforma. (Ia6dd8)
Versione 1.8.0-alpha06
13 novembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
viene ritirata. La versione 1.8.0-alpha06 contiene questi commit.
Modifiche alle API
- Aggiunge il modificatore
stylusHoverIcon
. (Iff20a, b/331289114) - Modifica la gestione della compilazione automatica in modo che diventi un'interfaccia. (I84914, b/376080755)
- Aggiunge
requestFocus(FocusDirection)
sia afocusRequester
che aFocusTargetModifierNode
per consentire la messa a fuoco in una direzione specifica. (I5d9ec, b/245755256) FocusProperties.enter
eFocusProperties.exit
sono stati sostituiti daonEnter
eonExit
, utilizzando un ambito del destinatario anziché il parametroFocusDirection
. (I6e667)- Aggiunta del supporto del completamento automatico nella barra degli strumenti di testo. (Ie6a4c)
- Modifiche all'API
Modifier.focusRestorer()
(I99c03):- Nome del parametro modificato in "fallback"
- Il parametro ora è un
FocusRequester
e non una funzione lambda - Il parametro ora non è NULL e il valore predefinito è Default
- Rimozione dell'annotazione
@Experimental
dall'interfaccia di gestione del completamento automatico. La funzionalità è ancora in fase di sviluppo per questa release, ma non vogliamo introdurre l'API @Expemiental (Id8398) LocalHapticFeedback
ora fornisce un'implementazioneHapticFeedback
predefinita quando l'API Vibrator indica che la tecnologia aptica è supportata. Sono stati aggiunti i seguenti elementi:HapticFeedbackType
-Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. I componenti di Wear Compose su cui è possibile fare clic prolungato, comeButton
,IconButton
,TextButton
eCard
, ora eseguono la vibrazioneLONG_PRESS
quando è stato fornito un gestore di clic prolungato. (I5083d)- Rimuove
OverscrollConfiguration
eLocalOverscrollConfiguration
e aggiungerememberPlatformOverscrollFactory
per creare un'istanza di / personalizzare i parametri dell'implementazione predefinita dell'overscroll. Per disattivare l'overscroll, utilizzaLocalOverscrollFactory provides null
anzichéLocalOverscrollConfiguration provides null
. Per modificare il colore / il padding della luce, anzichéLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
, utilizzaLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - È stata rimossa l'API
GlobalAssertions
sperimentale. Il suo utilizzo previsto era quello di eseguire controlli di accessibilità. Per questo scopo, consultaenableAccessibilityChecks()
. (I59322)
Versione 1.8.0-alpha05
30 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
viene ritirata. La versione 1.8.0-alpha05 contiene questi commit.
Nuove funzionalità
In questa release, il riempimento automatico è esposto dietro un flag funzionalità. Stiamo lavorando per migliorare le prestazioni e siamo alla ricerca di feedback iniziali sulle API. Si prevede che le API si evolveranno prima di diventare stabili in base al feedback.
- Per attivare la compilazione automatica, imposta
ComposeUiFlags.isSemanticAutofillEnabled
su true inonCreate
e utilizza l'ultima istantanea di bozza. - Questa versione della compilazione automatica supporta il salvataggio manuale delle credenziali, tramite Suggerisci password efficace e tramite navigazione. Supporta anche il riempimento quando un campo compilabile automaticamente riceve lo stato attivo o quando la compilazione automatica viene attivata tramite la barra degli strumenti di testo sui componenti di testo. Il componente verrà evidenziato per indicare il completamento del riempimento automatico.
Modifiche alle API
- Modifica l'interfaccia di compilazione automatica in modo che segua la struttura
expect
/actual
. (I22dce) - Introduci
CompositionLocal
che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione automatica riuscita. (I32092) - È stata aggiunta l'API
Modifier.onRectChanged
, che consente di abbonarsi alla posizione e alle dimensioni relative alla radice/alla finestra/allo schermo di unLayoutNode
. L'API risolve molti casi d'uso del modificatoreonGloballyPositioned
esistente, ma con un overhead molto inferiore e offre funzionalità per il debounce e la limitazione della frequenza di chiamata di callback in base alle esigenze del caso d'uso. (Id28c7, b/372765423, b/372757007, b/372994338) - Espande Gestore della compilazione automatica per includere le API
commit()
ecancel()
che aiutano gli utenti a salvare le credenziali appena inserite. (I2da00) - Introduce 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) - È stata aggiunta l'API
Modifier.onRectChanged
, che consente di abbonarsi alla posizione e alle dimensioni relative alla radice/alla finestra/allo schermo di unLayoutNode
. L'API risolve molti casi d'uso del modificatoreonGloballyPositioned
esistente, ma con un overhead molto inferiore e offre funzionalità per il debounce e la limitazione della frequenza di chiamata di callback in base alle esigenze del caso d'uso. (I3c8fa) - Aggiungi proprietà semantiche e tipi di dati per un supporto esteso della compilazione automatica. (I52c7d)
- Tutti i metodi nel builder
AnnotatedString
non sono più sperimentali (Ia89c8, b/261561823)
Correzioni di bug
- Le visualizzazioni incorporate nella composizione ora possono ricevere eventi di rotazione se sono selezionate (I4d53a, b/320510084)
- Risolto un problema per cui vari tipi di risorse non venivano aggiornati in seguito a modifiche alla configurazione (Ia9b99, b/352336694)
- È stato risolto un problema che impediva il corretto funzionamento di
TextField
quando si utilizzava la tastiera giapponese POBox su alcuni dispositivi Sony meno recenti. (Ia9b99, b/373743376) - È stato risolto il problema relativo alle finestre di dialogo visualizzate nella parte inferiore dello schermo anziché al centro (Ia2ec, b/373093006).
- Il targeting API 35+ non forza più l'impostazione di
decorFitsSystemWindows
su false per le finestre di dialogo. (Ibc94, b/364492593) - Correzione dell'arresto anomalo quando i livelli vengono spostati tra le finestre (ad es. finestra di dialogo e contenuti principali) (I675ba, b/330955281)
Versione 1.8.0-alpha04
16 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
viene ritirata. La versione 1.8.0-alpha04 contiene questi commit.
Modifiche alle API
- Aggiunge i callback
DelegatableNode#onDensityChange
eDelegatableNode#onLayoutDirectionChange
per consentire l'aggiornamento dello stato del nodo quando questi cambiano (I04f3e, b/340662451) - Aggiunge
WindowInfo#containerSize
per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzandoLocalWindowInfo
. (Idc38c, b/369334429, b/360343819) - È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante uno scorrimento in corso. Ora questi nodi annulleranno lo scorrimento e invieranno correttamente l'evento
onPostFling
con la velocità rimanente. Stiamo anche introducendo il flagNewNestedScrollFlingDispatchingEnabled
per controllare il comportamento in caso di regressioni. Il flag verrà rimosso prima della beta. (I05c37, b/371168883) - È stato introdotto
PointerInputModifierNode#touchBoundsExpansion
, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del puntatore. (Iccf02, b/335339283) - Aggiunge
WindowInfo#containerSize
per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzandoLocalWindowInfo
. (I27767, b/369334429, b/360343819) - Rimuovi
readOnly
daTextFields
per bloccare la versione stabile di Foundation. (I3aaba) Paragraph
eParagraphIntrinsics
ora accettano un elenco di tutte le annotazioni applicate aAnnotatedString
, in precedenza avevano solo un elenco diSpanStyles
(I12f80)
Correzioni di bug
- È stato aggiornato il modo in cui vengono trattati i paragrafi in
AnnotatedString
. In precedenza, potevi creare solo paragrafi non sovrapposti. OraAnnotatedString
consente paragrafi completamente sovrapposti che verranno uniti e paragrafi nidificati, nel qual caso il paragrafo esterno verrà suddiviso in base ai limiti di quello interno e lo stile del paragrafo interno verrà unito a quello del paragrafo esterno (Ic9554). - Correzione dell'arresto anomalo in
AnnotatedString
con unLinkAnnotation
di lunghezza zero. (89aac6)
Versione 1.8.0-alpha03
2 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
viene ritirata. La versione 1.8.0-alpha03 contiene questi commit.
Modifiche alle API
- Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
- È stato introdotto un nuovo ruolo semantico chiamato Carosello per emulare il comportamento dell'elenco nei pager per i servizi di accessibilità. (Id354b, b/354109776, b/239672673)
- Rinomina
invisibleToUser()
inhideFromAccessibility
. La sua funzione rimane invariata. Per ulteriori dettagli, consulta la documentazione. (Ib43a3)
Correzioni di bug
- Aggiornamento della documentazione per il modificatore
SensitiveContent
(Ib0442) - È stato risolto il problema per cui alcuni clip di contorno generici venivano ignorati in combinazione con le ombre di elevazione su alcune versioni di Android
- È stato risolto il problema per cui venivano applicati clip vuoti quando venivano specificati clip di contorno generici su alcune versioni di Android.
- È stata corretta l'eccezione generata quando l'IME è attivo in una visualizzazione esterna e l'azione Successivo viene utilizzata per impostare lo stato attivo su
ComposeView
. Il comportamento diclearFocus()
è in linea con il comportamento di View nell'API < 28, doveclearFocus()
può causare la messa a fuoco della visualizzazione predefinita. - Risolto il problema per cui il posizionamento avveniva su nodi separati in
LazyList
separando la gestione della composizione secondaria per diversi passaggi di layout. - È stato risolto un problema per cui la tastiera software sfarfallava quando lo stato attivo passava da un
TextField
a unEditText
o a qualsiasi altro editor basato su View. - I nodi di scorrimento nidificati ora inviano correttamente gli eventi
onPostFling
dopo essere stati scollegati. - Miglioramenti generali delle prestazioni
Versione 1.8.0-alpha02
18 settembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha02
viene ritirata. La versione 1.8.0-alpha02 contiene questi commit.
Modifiche alle 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 su una sola riga. (I38913, b/185418980)
Correzioni di bug
- Correggi finestra di dialogo
dismissOnClickoutside
(39a3d, b/364508685) - Non tagliare le ombre dei contenuti della finestra di dialogo (e8e2f, b/363027803)
- Correzione del comportamento errato quando la ricerca dello stato attivo si sposta tra Scrivi e una visualizzazione (58377, b/350534714)
Contributo esterno
- Il
AlignmentLines
Map
ora accetta tipi di calcestruzzoVerticalAlignmentLine
oHorizontalAlignmentLine
. (I02912) - Nuovo metodo
ByteArray.decodeToImageBitmap(): ImageBitmap
comune. (I83c21)
Versione 1.8.0-alpha01
4 settembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha01
viene ritirata. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.8
12 febbraio 2025
androidx.compose.ui:ui-*:1.7.8
viene ritirata. La versione 1.7.8 contiene questi commit.
Versione 1.7.7
29 gennaio 2025
androidx.compose.ui:ui-*:1.7.7
viene ritirata. La versione 1.7.7 contiene questi commit.
Correzioni di bug
- È stato corretto
IndexOutOfBoundsException
quando si passa unAnnotatedString
conLinkAnnotation
al componibile Text. (Ic96d2) - Risolto un problema di timeout nei test in alcuni rari casi in cui
LinkAnnotation
viene utilizzato inAnnotatedString
. (I04a03)
Versione 1.7.6
11 dicembre 2024
androidx.compose.ui:ui-*:1.7.6
viene ritirata. La versione 1.7.6 contiene questi commit.
Correzioni di bug
- In precedenza, generavamo un errore ogni volta che rilevavamo un evento chiave quando il sistema di messa a fuoco aveva invalidazioni in attesa. Ora viene registrato un errore (I7ea0, b/346370327).
- Rimossa l'annotazione sperimentale da
SemanticsPropertyReceiver.invisibleToUser()
. Questa funzionalità verrà ritirata nella versione 1.8 e sostituita conSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0, b/376479686) - È stato risolto un problema che impediva il corretto funzionamento di
TextField
quando si utilizzava la tastiera giapponese POBox su alcuni dispositivi Sony meno recenti. (I94e0e, b/373743376) - Risolto un problema di accessibilità per cui inlineContent di
BasicText
non veniva annunciato daTalkBack
. (I67bcb, b/376479686)
Versione 1.7.5
30 ottobre 2024
androidx.compose.ui:ui-*:1.7.5
viene ritirata. La versione 1.7.5 contiene questi commit.
Correzioni di bug
- Risolti i problemi per cui l'elevazione e il ritaglio con contorni personalizzati non venivano visualizzati correttamente.
- Corregge un arresto anomalo del testo che si verifica con un carattere
LinkAnnotation
di larghezza zero. (Ic1e2e) - Corregge un annuncio in
Talkback
del pulsante quando viene creato come elemento componibile di testo selezionabile. (I1f588)
Versione 1.7.4
16 ottobre 2024
androidx.compose.ui:ui-*:1.7.4
viene ritirata. La versione 1.7.4 contiene questi commit.
Versione 1.7.3
2 ottobre 2024
androidx.compose.ui:ui-*:1.7.3
viene ritirata. La versione 1.7.3 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui la specifica di un clip di contorno generico comportava un limite del clip vuoto su alcune versioni di Android.
- È stata corretta l'eccezione generata quando l'IME è attivo in una visualizzazione esterna e l'azione Successivo viene utilizzata per impostare lo stato attivo su
ComposeView
. Il comportamento diclearFocus()
è in linea con il comportamento di View nell'API < 28, doveclearFocus()
può causare la messa a fuoco della visualizzazione predefinita. - Risolto un problema per cui veniva utilizzato un
placeOrder
errato per l'invalidazione del lookahead, risolvendo così un caso limite in cui il posizionamento del lookahead veniva ignorato.
Versione 1.7.2
18 settembre 2024
androidx.compose.ui:ui-*:1.7.2
viene ritirata. La versione 1.7.2 contiene questi commit.
Correzioni di bug
- Miglioramento delle prestazioni delle informazioni sui nodi di accessibilità e degli eventi semantici mediante la rimozione della tracciatura dettagliata. (I89156, b/362530618)
ComposeView
non si arresterà più in modo anomalo quando viene superata una dimensione di misurazione eccezionalmente grande (da5db, b/347036173)- Risolto un problema di accessibilità dello screen reader per cui gli annunci
LiveRegion
sui pulsanti non venivano effettuati. (f66fa7, b/348590026)
Versione 1.7.1
10 settembre 2024
- Nessuna modifica agli artefatti Android. Sono stati rimossi
-desktop
artefatti e sono stati aggiunti-jvmStubs
e-linuxx64Stubs
artefatti. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose.
Versione 1.7.0
4 settembre 2024
androidx.compose.ui:ui-*:1.7.0
viene ritirata.
Modifiche importanti dalla versione 1.6.0
Le modifiche importanti nella versione 1.7.0 sono descritte in questo post del blog.
Versione 1.7.0-rc01
21 agosto 2024
androidx.compose.ui:ui-*:1.7.0-rc01
viene ritirata. La versione 1.7.0-rc01 contiene questi commit.
Modifiche importanti
- Il modulo ui:ui ora impone il requisito di una versione minima di foundation:foundation pari almeno a 1.7.0-rc01 o successiva. Questa applicazione viene applicata per correggere un'incompatibilità di comportamento tra l'interfaccia utente e la libreria di base in merito alle modifiche di
NestedScrollSource
apportate all'inizio della versione 1.7.0-alpha01.
Versione 1.7.0-beta07
7 agosto 2024
androidx.compose.ui:ui-*:1.7.0-beta07
viene ritirata. La versione 1.7.0-beta07 contiene questi commit.
Correzioni di bug
- L'input di testo relativo alle funzioni
SemanticsNodeInteraction
performTextReplacement
,performTextInput
eperformTextClearance
ora genererà errori di asserzione quando vengono chiamate suTextFields
di sola lettura. (I4ae8f)
Versione 1.7.0-beta06
24 luglio 2024
androidx.compose.ui:ui-*:1.7.0-beta06
viene ritirata. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
androidx.compose.ui:ui-*:1.7.0-beta05
viene ritirata. La versione 1.7.0-beta05 contiene questi commit.
Correzioni di bug
- È stato corretto un bug a causa del quale la modifica della tastiera software impediva a
TextField
di accettare l'input della nuova tastiera finché il focus non veniva perso e riacquisito. - Risolto un problema per cui i tentativi di rendere persistenti i contenuti dei livelli causavano effetti collaterali indesiderati durante il rendering con contenuti
SurfaceView
.
Versione 1.7.0-beta04
26 giugno 2024
androidx.compose.ui:ui-*:1.7.0-beta04
viene ritirata. La versione 1.7.0-beta04 contiene questi commit.
Correzioni di bug
- Evita arresti anomali durante la misurazione di righe di testo molto lunghe (ad es.10. 000 caratteri) (8157ab)
- Disattiva il supporto del rendering software per l'API
GraphicsLayer
. (35ddd8) - Correzione per un arresto anomalo nella logica di persistenza dei livelli. (70b13e)
- L'ottimizzazione del riutilizzo degli oggetti dei livelli è stata ripristinata, in quanto causava problemi di rendering. (70b13e)
Versione 1.7.0-beta03
12 giugno 2024
androidx.compose.ui:ui-*:1.7.0-beta03
viene ritirata. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
androidx.compose.ui:ui-*:1.7.0-beta02
viene ritirata. La versione 1.7.0-beta02 contiene questi commit.
Modifiche alle API
SemanticsProperties.Editable
è stato rinominato inIsEditable
eSemanticsPropertyReceiver.editable
è stato modificato inisEditable
. La proprietà ora è booleana e viene sempre specificata dai campi di testo. (I8acd8)- Rinomina il parametro di benchmark di accessibilità. (I3d440)
- API aggiornata per lo stile dei link:
TextLinkStyles
ora fa parte del costruttoreLinkAnnotation
e del metodoAnnotatedString.fromHtml
(I90b2b). È stato rimosso ancheTextDefaults
dal materiale (I5477b)
Correzioni di bug
LayoutCoordinates.introducesFrameOfReference
è stato rinominato inLayoutCoordinates.introducesMotionFrameOfReference
per riflettere meglio il suo scopo. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)
Versione 1.7.0-beta01
14 maggio 2024
androidx.compose.ui:ui-*:1.7.0-beta01
viene ritirata. La versione 1.7.0-beta01 contiene questi commit.
Modifiche alle API
performCustomAccessibilityActionLabelled
è stato rinominato inperformCustomAccessibilityActionWithLabel
eperformCustomAccessibilityActionWhere
inperformCustomAccessibilityActionWithLabelMatching
. (I5387f)AnnotatedString.hasEqualsAnnotations
è diventatohasEqualAnnotations
(I685c0)- È stata aggiornata l'API per ottenere link con tema Material nel testo. In particolare, sono stati rimossi i metodi da
TextDefaults
per costruireLinkAnnotations
a tema e analizzare l'HTML con link a tema. È stata invece aggiunta una classeTextLinkStyles
che consente di applicare uno stile ai link come parametro del composable Text. (I31b93)
Correzioni di bug
- Correzioni di ulteriori casi d'uso quando vengono aggiunti dinamicamente modificatori di input del puntatore durante gli eventi 63e1504
Versione 1.7.0-alpha08
1° maggio 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
viene ritirata. La versione 1.7.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiunge il supporto per le implementazioni di forme modificabili.
Shape#createOutline
ora viene osservato all'interno dei livelli grafici, quindi la lettura dei valori di stato all'interno causerà invalidazioni quando lo stato cambia, consentendo animazioni di forme più performanti. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
rinominato inintroducesFrameOfReference
. Tieni presente che ora ha l'effetto contrario, il che significa che per impostazione predefinita la maggior parte degli elementiLayoutCoordinates
introduce un frame di riferimento e solo quando viene posizionata sotto manipolazione diretta la proprietà sarà false. Per eseguire query sulla posizione solo con quelle che introducono un frame di riferimento, utilizzapositionInLocalFrameOfReference(...)
. OppurepositionInLocalLookaheadFrameOfReference
da unLookaheadScope
. (Ifc5f7)LookaheadScope
Le API sono state rese stabili (I21507)- Modifica della lambda di azione per
getScrollViewportLength
in base al feedback del consiglio API. (Ibc74a) - API di contorno
GraphicsLayer
aggiornate per utilizzare parametri float anziché int. Valori sentinellaUnsetOffset/UnsetSize IntSize
rimossi a favore di costanti Unspecified già esistenti nelle classi inline Offset e Size basate su float (I2fb03, b/333863462) - Quando inserisci l'input del mouse durante i test,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
ora accettano un parametrobutton: MouseButton
per renderli più applicabili a livello universale. Il valore predefinito èMouseButton.Primary
per tutti i metodi. (I31a23, b/190493367, b/261439695) onClicked
rinominato inonClick
all'interno diLinkInteractionListener
. (Iaa35c)- Rinomina
TextInclusionStrategy.isInside
inisIncluded
. Rendi il tipo restituitoParagraph/MultiParagraph#getRangeForRect()
non annullabile. (I51f26)
Correzioni di bug
- È stata corretta l'acquisizione di screenshot lunghi per i contenitori a scorrimento con
reverseScrolling=true
. (I7c59c)
Contributo esterno
- È stato aggiunto il supporto per il recupero preventivo 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 di questiLazyLists
. L'implementazione predefinita prevede il recupero anticipato dei primi due 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.ui:ui-*:1.7.0-alpha07
viene ritirata. La versione 1.7.0-alpha07 contiene questi commit.
Modifiche alle API
ClickableText
è contrassegnato come deprecato. Per aggiungere link al testo, crea unAnnotatedString
con unLinkAnnotation
corrispondente al link e passa questoAnnotatedString
al composable Text. (I34d4b, b/323346994)- Introduci
ViewConfiguration.HandwritingGestureLineMargin
per i gesti di scrittura a mano libera. Supporto del gestoJoinOrSplit
perBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
eFocusProperties.exit
non sono più sperimentali.FocusDirection.Enter
eFocusDirection.Exit
non sono più sperimentali.FocusRequester.Cancel
non è più sperimentale (I461a1, b/261564106)- Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato i relativi elementi secondari utilizzandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Allo stesso modo, un layout che cambia spesso la posizione dei relativi elementi secondari ora può posizionarli utilizzandowithDirectManipulationPlacement
(ad esempio lo scorrimento, implementato per impostazione predefinita). In questo modo, le animazioni basate suapproachLayout
sono più intuitive, in quanto ora è possibile differenziare l'offset da animare e quello da applicare direttamente quando si decide di animare l'approccio. (I60ec7) - Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
LazyColumn
ora esegue il rendering corretto delle intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)- Le origini
NestedScroll
Drag and Fling vengono sostituite daUserInput
eSideEffect
per tenere conto della definizione estesa di queste origini, che ora includono animazioni (Side Effect) e rotellina del mouse e tastiera (UserInput
). (I40579) ApproachLayoutModifierNode
eModifier.approachLayout
sono ora stabili, con nuoviisMeasurementApproachInProgress()
eisPlacementApproachInProgress()
che sostituiscono i vecchiisMeasurementApproachComplete()
eisPlacementApproachComplete()
rispettivamente.- Rimosso il modificatore
intermediateLayout
obsoleto. (I3e91c) - Rinomina
GraphicsLayer#buildLayer
in record per rispecchiare i metodi begin/endRecording delle API basate su Displaylist comeRenderNode
e Picture. rememberGraphicsLayer
aggiornato per sfruttarerememberObserver
. (I312c1, b/288494724, b/330758155)UrlAnnotation
è deprecato, utilizzaLinkAnnotation.Url
. Se utilizzi i temi Material, usa l'oggettoTextDefaults
per creare l'annotazione con i temi Material applicati (I8d180, b/323346545).- I link di testo hanno ricevuto l'opzione di stile dello stato premuto, oltre allo stile normale, al passaggio del mouse e alla messa a fuoco (I5f864, b/139312671)
String.parseAsHtml
rinominato inAnnotatedString.Companion.fromHtml
. (I43dcd)- Sono stati aggiunti argomenti di stile (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e un listener di interazione con i link al metodoparseAsHtml
. Quando analizza la stringa con tag HTML con tag<a>
, il metodo costruisce unLinkAnnotation.Url
per ogni tag e passa gli oggetti di stile e il listener di interazione con i link a ogni annotazione. (I7c977) - Ora
LinkAnnotation
accetta gli argomenti di stile basati sullo stato e unLinkInteractionListener
. Aggiungi questa annotazione aAnnotatedString
per ottenere un link ipertestuale. PassandofocusedState
e/ohoveredState
puoi definire lo stile visivoconfiguration
per i link quando sono selezionati e/o quando il cursore li sorvola. (I81ce4, b/139312671) ImeOptions.hintLocales
non è più annullabile. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizzaLocaleList.Empty
. (Ic5bc4)
Correzioni di bug
- Gestisce correttamente i dati degli eventi di input storici danneggiati/corrotti (ignora i dati di offset errati).
- Corregge gli eventi puntatore imprevisti quando un modificatore di input del puntatore viene aggiunto dinamicamente prima di un altro modificatore di input del puntatore durante un flusso di eventi di input del puntatore attivo (ad esempio, tra un evento hover enter e hover exit [mouse/stilo]).
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
viene ritirata. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- 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 gli elenchi puntati. (I84d3d, I30626, b/139326648) - È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivato per impostazione predefinita. Per attivare la funzionalità, imposta il flagComposeFeatureFlag_LongScreenshotsEnabled
su true. (I2b055, b/329296471)
Modifiche alle API
fun ClipEntry.getMetadata()
è stato modificato inval ClipEntry.clipMetadata
. (I50155)- Sono state rimosse le funzioni
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
. UtilizzaclipEntry.getMetadata()
per leggere i metadati della voce del clip attuale. Controlla anche il risultato diClipboardManager.getClip
per capire se negli appunti è presente un clip corrente. (I50498) - Ora puoi passare oggetti
GraphicsLayer
nelle funzioniplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
ora accetta il valore null per poter cancellare gli appunti. (I7d2e9)- Sono stati aggiunti ID risorsa per facilitare l'occultamento delle visualizzazioni utilizzate come dettagli di implementazione all'interno degli strumenti di build (I99531).
- È stato aggiunto il metodo di sospensione
GraphicsLayer#toImageBitmap
per supportare il rendering dei contenuti di una bitmap in unGraphicsLayer
. Si tratta di un'operazione di rendering con accelerazione hardware a partire dal livello API 22 (incluso), che supporta oltre il 99% di tutti i dispositivi Android. Nel livello API Android 21, viene eseguito il rendering software. (I9e114) - Metodo helper per convertire un
RectF
Android inComposeRect
(I39925, b/325660505) - Per impostazione predefinita, tutti i parametri
KeyboardOptions
ora hanno un valore non specificato. MetodoKeyboardOptions.merge
aggiunto. KeyboardOptions.autoCorrect
è stato rinominato inautoCorrectEnabled
ed è stato reso annullabile, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492)- Le varianti
BasicTextField(state)
eBasicSecureTextField
ora utilizzanoKeyboardActionHandler
anzichéKeyboardActions
per elaborare le azioni eseguite dalla tastiera software. (I58dda)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
viene ritirata. La versione 1.7.0-alpha05 contiene questi commit.
Nuove funzionalità
- Introduzione della nuova API
GraphicsLayer
per registrare i comandi di disegno in un elenco di visualizzazione, nonché proprietà aggiuntive che influiscono sul rendering dell'elenco di visualizzazione. In questo modo viene fornito un limite di isolamento per dividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a unGraphicsLayer
possono essere eseguite senza registrare nuovamente l'elenco visualizzato. A differenza diModifier.graphicsLayer
,GraphicsLayer
consente il rendering dei contenuti componibili altrove ed è utile nei casi d'uso animati in cui è previsto il rendering dei contenuti in scene diverse.
Modifiche alle API
GraphicsLayer.draw(Canvas)
non è più un'API pubblica. Utilizza invece la funzione di estensioneDrawScope.drawLayer(GraphicsLayer)
per disegnare il livello. (I7a7c0)- Suddivisione di
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd) - È stato introdotto lo stub
HardwareCanvas
per l'utilizzo di Android L (I1c3b5, b/288494724) - Aggiorna il framework Compose per esporre un locale di composizione
GraphicsContext
insieme all'aggiornamento delle implementazioni di Owner,DelegateableNode
edrawWithCache
Modifier per esporre l'accesso aGraphicsContext
per l'accesso con ambito che pulirà automaticamente le istanzeGraphicsLayer
quando i modificatori vengono eliminati. (I64a2f, b/288494724) - È stato introdotto
InterceptPlatformTextInput
per facilitare la scrittura di test di basso livello relativi agli IME e di altri casi d'uso di basso livello degli IME.PlatformTextInputTestOverride
è stato ritirato. (I862ed, b/322680547) - È stata aggiunta la funzione di estensione
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Introduci il costruttore di funzioni
GraphicsContext
per creare una factory per creare istanzeGraphicsLayer
(Ib98d6, b/288494724) - API
GraphicsLayer
esposta per offrire agli sviluppatori la flessibilità di acquisire comandi di disegno che possono essere utilizzati per disegnare altrove e applicare diversi effetti visivi al risultato finale. (I80245, b/288494724) - Introduci
Paragraph#getRangeForRect
, che restituisce un intervallo di testo coperto da una determinata area rettangolare. (Iee516, b/325660505) - È stato rimosso l'override sperimentale di
BasicText
con l'argomentoonLinkClicked
. In futuro verrà implementata un'API sostitutiva per il supporto degli hyperlink. (I107d5)
Correzioni di bug
- È stata aggiunta la definizione dell'API
GraphicsLayer
expect/actual per supportare l'acquisizione e la riproduzione di comandi di disegno con trasformazioni ed effetti visivi di composizione facoltativi. Introduci l'interfacciaGraphicsContext
per contenere le dipendenze grafiche, inclusa la creazione e la gestione delle istanzeGraphicsLayer
. (I4a8d6, b/288494724) - È stato risolto un problema di interoperabilità con la ricerca dello stato attivo 1D in cui lo stato attivo rimaneva bloccato all'interno di un
ComposeView
incorporato in altre visualizzazioni. (I08fd4)
Contributo esterno
LocalLifecycleOwner
è stato spostato dall'interfaccia utente Compose alifecycle-runtime-compose
in modo che le relative API helper basate su Compose possano essere utilizzate al di fuori dell'interfaccia utente Compose. Grazie a Jake Wharton per il suo contributo. (I6c41b, b/328263448)- Esporre in modo coerente le proprietà di bias float in tutti i sottotipi di allineamento basati sul bias. (I69f0f, b/328088992)
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
viene ritirata. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche alle API
- Supporta la funzionalità di scrittura a mano libera con lo stilo per BasicTextField2 sui dispositivi con Android U e versioni successive. (I002e4)
- In questo CL aggiungiamo l'azione semantica
GetScrollViewportLength
in modo da poter inviare informazioni sui componenti di cui viene eseguito lo scorrimento in Compose al sistema di accessibilità. Questa CL applica anche l'utilizzo della proprietà negli elenchi scorrevoli di base. (Ic5fa2) FocusRequester.createRefs
è ora stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi modificatori di ottenere l'attualeView
di Android senza leggere una composizione locale. (I40768) - Nuova API
Path.reverse()
per invertire la direzione di un percorso (I36348) - È stato aggiunto
hintLocales
aKeyboardOptions
per consentire aTextFields
di suggerire IME con impostazioni internazionali specifiche per preimpostare una lingua preferita. - Esporre la proprietà
platformLocale
diLocale
che restituisce l'oggetto della piattaforma sottostante, ad esempiojava.util.Locale
. (I921c6)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
viene ritirata. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- Ti presentiamo
ContextualFlowRow
eFlowRow
/Column
avanzato con MaxLines e Overflow. Siamo felici di annunciare i miglioramenti apportati alle proprietà sperimentaliFlowRow
eFlowColumn
, che ora supportano maxLines e overflow, oltre al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cuiContextualFlow*
è perfetto per un numero elevato di elementi che utilizzano una piccola configurazionemaxLines
e pulsanti dinamici +N Mostra altro, 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 rientrino nel valore massimo dell'asse trasversale, impostaoverflow
suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. EsploraContextualFlowRowSample
eFlowRowSample
per vedere esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082) - Aggiungi la proprietà semantica
maxTextLength
da impostare nei campi di testo che filtrano il numero massimo consentito di caratteri. (I24d9f, b/170648072) - Il wrapper
Modifier.inspectable
è stato ritirato. Questa API creerà più invalidazioni del modificatore del necessario, pertanto il suo utilizzo è ora sconsigliato. Gli sviluppatori sono invitati a implementare il metodoinspectableProperties()
suModifierNodeElement
se vogliono esporre le proprietà dei modificatori agli strumenti. (Ib3236) - Nuovo costruttore per
PopupProperties
che consente il controllo completo dei flagWindowManager.LayoutParams
. (Ibb33e, b/312485503) - È stato introdotto
DelegatableNode.requireLayoutCoordinates()
come modo per ottenere l'Modifier.Node
attuale di unLayoutCoordinates
senza dover eseguire l'override dionPlaced
e memorizzare le coordinate in una proprietà. (Ia8657) - È stato introdotto
DelegatableNode.currentLayoutCoordinates
come modo per ottenere l'Modifier.Node
attuale di unLayoutCoordinates
senza dover eseguire l'override dionPlaced
e memorizzare le coordinate in una proprietà. (Iaebaa) BasicTextField2
e le API correlate nel pacchettoandroidx.compose.foundation.text2
vengono spostati inandroidx.compose.foundation.text
. (I9f635)- È stata aggiunta una nuova API
ApproachLayoutModifierNode
per supportare la creazione di una logica di approccio personalizzata in un nodo modificatore esplicito. È stata aggiunta anche una nuova APIDeferredTargetAnimation
sperimentale per le animazioni il cui target è sconosciuto al momento dell'istanza. (I60745) - Nuove API
Path
per eseguire query sulla direzione di un percorso ed estrarre le curve di livello da unPath
. (I63d04) - Sono stati aggiunti
PathHitTest
ePath.contains(Offset)
per verificare se unPath
contiene un punto specifico. (I3b218) - Ora
TextLayoutResult
espone il metodogetLineBaseline(lineIndex)
. Ciò consente di leggere la linea di base di una riga arbitraria del testo, oltre alle proprietà di convenienza esistentifirstBaseline
elastBaseline
. (Ide4e8, b/237428541) - È stato aggiunto un metodo per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659)
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti di
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
viene ritirata. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato risolto un problema di compatibilità binaria con
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Il costruttore
PopupProperties
che accetta un parametrousePlatformDefaultWidth
non è più sperimentale. (I8f8d2) - È stato aggiunto un overload di
ComposeTestRule.waitUntil
che accetta una descrizione stringa della condizione da includere nel messaggio di timeout. (I9413e) - Nuova API per la semantica
unset()
per rimuovere le proprietà semantiche aggiunte nella stessa catena di modificatori. Nuova proprietà semanticaisOpaque
. (I8c583, b/317966058, b/246056649) - Rimosso
originalEventPosition
dal metodo di copia nell'API pubblica diPointerInputChange
. (I7bead)
Correzioni di bug
- È stato corretto un bug di accessibilità che consentiva di fare clic su elementi diversi da schede e pulsanti di opzione quando selezionati. (I2181c)
VelocityTracker
ora avrà la correzione per l'aggiunta di punti per impostazione predefinita. La correzione può comunque essere disattivata impostandoVelocityTrackerAddPointsFix
su false in caso di problemi. (Ib3877, b/269487059)- È stata corretta l'incompatibilità binaria con le versioni precedenti in
TextStyle
eParagraphStyle
. (I179f0, b/320819734)
Contributo esterno
- È stato aggiunto un nuovo costruttore
DialogProperties
senza parametri specifici della piattaforma. (I45829) - È stato aggiunto un nuovo costruttore
PopupProperties
senza parametri specifici della piattaforma. (I9a038)
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
viene ritirata. La versione 1.7.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato ampliato
ClipboardManager
aggiungendoClipEntry
eClipMetadata
per supportare contenuti arbitrari come le immagini. - Aggiunge l'API
DeviceConfigurationOverride
aui-test
per consentire di eseguire l'override locale del comportamento dei contenuti in fase di test, ad esempio per specificare una dimensione, una lingua, una direzione del layout, una scala dei caratteri o un tema disponibili.
Versione 1.6
Versione 1.6.8
12 giugno 2024
androidx.compose.ui:ui-*:1.6.8
viene ritirata. La versione 1.6.8 contiene questi commit.
Correzioni di bug
- Sono state corrette le incoerenze nella scalabilità dei caratteri quando la scala dei caratteri è inferiore alla tabella definita più bassa. In questo caso, ora eseguiamo l'interpolazione tra la scala lineare 1x e la tabella più bassa definita, in modo che la dimensione del carattere aumenti in modo monotono all'aumentare delle scale. (Icbae3)
Versione 1.6.7
1° maggio 2024
androidx.compose.ui:ui-*:1.6.7
viene ritirata. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
androidx.compose.ui:ui-*:1.6.6
viene ritirata. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- Corregge un raro arresto anomalo di
BasicTextField
.
Versione 1.6.5
3 aprile 2024
androidx.compose.ui:ui-*:1.6.5
viene ritirata. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
androidx.compose.ui:ui-*:1.6.4
viene ritirata. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
androidx.compose.ui:ui-*:1.6.3
viene ritirata. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.ui:ui-*:1.6.2
viene ritirata. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
7 febbraio 2024
androidx.compose.ui:ui-*:1.6.1
viene rilasciato. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti di
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Ora i layout generano un errore durante la misurazione quando uno restituisce una dimensione eccessivamente grande. Questo tipo di errore si verifica normalmente quando la misurazione utilizza direttamente i vincoli massimi senza verificare la presenza di
Constraints.Infinity
. Il controllo aiuterà gli sviluppatori a trovare problemi con il layout che ha dimensioni errate anziché in un layout che lo contiene. (I339a9)
Versione 1.6.0
24 gennaio 2024
androidx.compose.ui:ui-*:1.6.0
viene ritirata. La versione 1.6.0 contiene questi commit.
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.ui:ui-*:1.6.0-rc01
viene ritirata. La versione 1.6.0-rc01 contiene questi commit.
Correzioni di bug
- Implementazione di grafica vettoriale ottimizzata per migliorare il rendimento riducendo al minimo le ricomposizioni aggiuntive.
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.ui:ui-*:1.6.0-beta03
viene ritirata. La versione 1.6.0-beta03 contiene questi commit.
Nuove funzionalità
- Ora è possibile scollegare un
LayoutCoordinates
senza scollegare il nodo. Proteggiti da questo problema in Layout Inspector di Compose (If693)
Correzioni di bug
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)- Sono state corrette le ricomposizioni downstream aggiuntive causate da
LocalSoftwareKeyboardController
eLocalTextInputService
a cui vengono forniti nuovi valori ogni volta che viene ricomposto un nodo principale. (I42190, b/310510985)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta02
viene ritirata. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta01
viene ritirata. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Il modificatore
DragAndDropTarget
ora accetta esplicitamenteDragAndDropTarget
e ha una 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 per essere rappresentato come Float. Documentazione aggiornata per maggiore chiarezza sull'unitàmaximumFlingVelocity
. (I8adc7)onDragAndDropStart
nella fabbricaDragAndDropModifierNode
è stato rinominato inacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto al modificatoredragAndDropTarget
per l'accettazione da una sessione di trascinamento. Questa espressione lambda restituisce unDragAndDropTarget
valido se ti interessa una sessione di trascinamento. Altre espressioni lambda per l'elaborazione degli eventi di trascinamento sono state sostituite da questa. È stata aggiunta una funzione di fabbricaDragAndDropTarget
per ricevere dalle sessioni di trascinamento (Iebf3a)Rimossa
DragAndDropInfo
come tipoDragAndDropModifierNode.drag
ora accetta parametri pertransferData
, dimensione della decorazione e lambda di trascinamento della decorazioneDrawScope
DragAndDropTarget
ha metodi per particolari eventi di trascinamento della selezione 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)Migliora i nomi delle API dei nodi attraversabili per renderli più comprensibili. (Ia4474)
Sostituisci
OriginalText
conTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
rinominato inrunTextInputSession
. (Ie9c6b)Gli elementi secondari di
SubcomposeLayout
(e i layout comeLazyColumn
basati su di esso) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di testassertIsDeactivated()
per testare questi nodi. Le altre API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)Rimozione di
FocusDirection.In
eFocusDirection.Out
, utilizzaFocusDirection.Enter
eFocusDirection.Exit
(I2f660)Le API Material
SwipeToReveal
(per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che causa interruzioni. Consulta la demo e il codice campione per esempi su come utilizzare la nuova API. (Ia8943)Il costruttore
FontStyle(int)
è deprecato. UtilizzaFontStyle.Normal
oFontStyle.Italic
. (I66610)Interfaccia
FontScalable
rinominata inFontScaling
(Ie804a)
Correzioni di bug
SoftwareKeyboardController.show()
non mostrerà più la tastiera software se non è selezionato alcun editor di testo. (I2165a, b/301477279)- Gli eventi di pressione dei tasti hardware per i tasti che non hanno ricevuto un evento di rilascio nella stessa visualizzazione di composizione verranno ora ignorati. (Ib37b4, b/305518328)
- Aggiungi il supporto del renderer per il gradiente radiale in
ArcLine
. (I4d5bb) - Implementa equals e hashcode per
PageSize.Fixed
. (Ie3ede, b/300134276) - Risolvi il problema di compatibilità binaria con la modifica dell'inserimento della finestra (Iee695)
- Rimuovi il livello principale del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza. (I55555)
TestDispatcher
s passed as theeffectContext
to Compose tests will now be used to create the test and frame clocks. (Ia7178)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
viene ritirata. La versione 1.6.0-alpha08 contiene questi commit.
Modifiche alle API
- La funzione
Modifier.dragAndDrawSource
ha rinominato la lambdaonDrawDragShadow
indrawDragDecoration
e la funzioneDragAndDropInfo
ha rinominato il parametro size indragDecorationSize
. (Id0e30, b/303904810) - Introduci
SemanticsNodeInteraction.isDisplayed()
eSemanticsNodeInteraction.isNotDisplayed()
per verificare se un nodo corrispondente è visibile o meno senza anche asserire su di esso. (I2c196, b/302100809) - È stato introdotto un valore speciale
Unspecified
per i campiTextAlign
,TextDirection
,Hyphens
eLineBreak
diParagraphTextStyle
per sostituirenull
. Poiché queste classi sono classi inline, sostituendo nullable con Unspecified, evitiamo il boxing dei tipi primitivi. I costruttori, i getter e altri metodi inTextStyle
e nello stile Paragrafo sono stati aggiornati per accettare i parametri menzionati come tipi non nulli. (I4197e, b/299490814) - Aggiungi l'overload
GoogleFont
per la lettura di unGoogleFont
da XML. (If8f59) - Ha reso
LoremIpsum
PreviewParameterProvider
un corso aperto. (I41bf5, b/266918816, b/300116360)
Correzioni di bug
FontFamilyResolver
ora utilizzaDispatchers.Main
per le coroutine di gestione della cache. (Ie8dd9)AndroidViewBinding
ora rimuove in modo sincrono le istanzeFragment
aumentate includendo unFragmentContainerView
nel layout nell'ambito del relativoonRelease
utilizzandocommitNow
(anzichécommit
, come in precedenza), risolvendo così i problemi relativi al metodo di Live Edit con la sostituzione della composizione in seguito alle modifiche. (I58fbf)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
viene ritirata. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
- È stato introdotto
PlatformTextInputMethodTestOverride
per scrivere test per gli editor di testo personalizzati. (Id159b) - Aggiunge il modificatore
dragAndDropSource
per avviare le sessioni di trascinamento e il modificatoredragAndDropTarget
per ricevere dalle sessioni di trascinamento. (Ib7828, b/286038936) - Sono state aggiunte le raccolte
ColorList
eColorSet
che evitano le allocazioni. (I744bd) - È stato aggiunto il flag temporaneo
DisableNonLinearFontScalingInCompose
per disattivare il ridimensionamento non lineare dei caratteri. ImpostaDisableNonLinearFontScalingInCompose = true
nei test se hai bisogno di tempo per pulirli. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)
Correzioni di bug
- Analisi ottimizzata dei drawables vettoriali XML. (Ibb015)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
viene ritirata. La versione 1.6.0-alpha06 contiene questi commit.
Modifiche alle API
- Ulteriori ottimizzazioni alle icone Material. (I3e08d)
- Aggiunge la possibilità di attraversare l'albero dei modificatori verso l'alto/il basso per trovare nodi simili. (I2d234)
- Aggiunto il callback
onRestoreFailed()
al modificatorefocusRestorer()
(Ie1d43) - Sono state aggiunte annotazioni androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro ancora. (Id65c8, b/290950582) - Aggiungi
showSystemUi=true
alla definizione diPreviewScreenSizes
(Ib61d3)
Modifiche al comportamento
- Ora la composizione utilizza il ridimensionamento non lineare dei caratteri per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumenteranno normalmente, mentre quelle del testo già grande aumenteranno solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente per rimanere proporzionali all'altezza prevista della scala al 100%. Per saperne di più, consulta le best practice per il ridimensionamento dei caratteri. (I11518)
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
viene ritirata. La versione 1.6.0-alpha05 contiene questi commit.
Modifiche alle API
- Attiva l'acquisizione dei contenuti in
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Le velocità di scorrimento rapido nei componenti View come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974) - Aggiunge lo scaffolding iniziale per supportare le API di trascinamento della piattaforma. (If84ce)
- Aggiungi
deviceId
inRotaryScrollEvent
(Iba3bf) - Aggiornamento dell'API Devices
ui-tooling
per includere dispositivi più recenti (Ib25b4)
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
viene ritirata. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo per disattivare
ReusableComposition
, rimuovendo le osservazioni ma mantenendo i nodi. La composizione disattivata può essere riattivata chiamando il numerosetContent
. (Ib7f31) - Aggiungi l'interfaccia
ReusableComposition
per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stata promossa ad API stabili. (I7ffa3)- Sono state aggiunte annotazioni androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro ancora. (I70487, b/290950582) - L'API
ColorFilter
è stata aggiornata in modo da avere tipi di sottoclassi concreti per una migliore ispezionabilità dei parametri. (I5fe29) - Introduci la libreria wear-tooling-preview per elencare i dispositivi indossabili validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
- È stata creata l'interfaccia
FontScalable
per gestire il ridimensionamento dei caratteri dell'interfaccia Densità. (I2cf3f)
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
viene ritirata. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche alle API
- Nuovo tipo di transizione di entrata/uscita che ridimensiona i contenuti in base alle dimensioni del contenitore di animazione durante l'animazione di entrata/uscita.
LookaheadScope
Composable fun e l'interfaccia sono ora stabili. (Ifb2ce) - Aggiunta del supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
PopupPositionProvider.calculatePosition
ora aggiornerà automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547)- Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando
readOnly
è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quandoreadOnly
viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589) - Applicazione estesa delle asserzioni globali nel test della UI. (I1f90d)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
viene ritirata. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'interfaccia di localizzazione dei servizi che può essere implementata dagli implementatori di Composition e che consente un'implementazione di Composition che delega a un altro servizio di ricerca dei delegati di composizione la composizione originale. Questo metodo non deve essere chiamato direttamente e viene utilizzato per consentire la creazione di API sperimentali nel runtime che possono essere trovate nelle versioni wrapper del compositore, come fa il modulo UI. (I296b9)
- API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali.LocalSoftwareKeyboardController
ora è anche unCompositionLocal
vero e proprio. (I4c364)LookaheadLayout
eLookaheadLayoutScope
sono stati ritirati da alcune versioni e ora sono stati rimossi. Le API sostitutive sonoLookaheadScope
che possono funzionare con qualsiasi layout. (I12ac3)- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più comodo e facile da scoprire per richiedere la messa a fuoco nei test. (Ie8722) - Aggiungi API sperimentali per la registrazione di asserzioni globali, da utilizzare in futuro dai framework di test. (I12d77)
Correzioni di bug
- La prima chiamata di callback di
update
diAndroidView
verrà ora posticipata fino al collegamento della visualizzazione, anziché essere eseguita quando viene applicata la composizione che introduceAndroidView
. Questo corregge un bug per cui il callbackupdate
non veniva invalidato se uno stato letto veniva modificato immediatamente da un effetto. (Ie9438, b/291094055)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
viene ritirata. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Supporta la ricerca predittiva in
LazyList
. In questo modo,LazyList
nel passaggio di prelettura può ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi,AnimatedVisibility
e così via) e calcolare le dimensioni e la posizione della prelettura per tutti gli elementi secondari. Dopo la bozza di animazione, i bambini diLazyList
possono animare in modo indipendente la realtà come si vede nella bozza di animazione.
Modifica del comportamento: includeFontPadding è ora false per impostazione predefinita in Compose
includeFontPadding
ora è false per impostazione predefinita (21d806) in Compose.
includeFontPadding
è un attributo legacy che controlla se includere o meno una spaziatura interna aggiuntiva sopra la prima e l'ultima riga del testo per adattarsi a eventuali caratteri che potrebbero estendersi sopra o sotto le linee di base del testo.
L'aggiornamento di questa versione di Compose modificherà il rendering di tutti i testi nella tua UI rimuovendo il padding aggiuntivo nella parte superiore della prima riga e dell'ultima riga di ogni testo visualizzato.
A seconda dei requisiti dell'interfaccia utente e delle metriche dei caratteri che utilizzi, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare problemi come: - Test degli screenshot non riusciti. Correggi la UI, se necessario, e rigenera le immagini di riferimento. - Il testo è leggermente disallineato. Rimuovi eventuali padding negativi personalizzati o aggiungi il padding, se necessario.
Puoi attivare includeFontPadding
utilizzando PlatformTextStyle
per ogni testo:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Puoi attivare includeFontPadding
per tutti i tuoi testi configurando gli stili Material. Tieni presente che i nomi dei parametri variano tra M2 e M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Puoi scoprire di più su Compose includeFontPadding
nella documentazione per gli sviluppatori e in questo post del blog.
Se riscontri problemi/bug correlati a questa modifica, segnalali utilizzando lo strumento di monitoraggio dei problemi.
Modifiche alle API
- Supporto
InputConnection#requestCursorUpdates
(I0c69b) - Aggiunti
FocusRequester.saveFocusedChild
eFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - Aggiungi il tipo
ResourceResolutionException
per eseguire il wrapping delle eccezioni generate durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset che non è stato caricato. (I19f44, b/230166331, b/278424788) - Accessibilità ottimizzata per le prestazioni e le allocazioni di memoria. (Iede48)
- Sono state aggiunte proprietà e azioni semantiche per supportare la traduzione del testo. (I4a6bc)
- Nuova proprietà in
IntrinsincMeasureScope
e relative implementazioni (ad es.MeasureScope
) per indicare se la misura corrente è una misura di previsione. (I7a812) - È stata aggiornata l'API
DrawScope
per introdurre la possibilità di eseguire il retargeting del rendering in un'altra tela con densità/direzione del layout e dimensioni alternative. DrawContext
è stato aggiornato per supportare la configurazione della densità e della direzione del layout, nonché per rendere configurabile il canvas. (Ie1f9b, b/225408150)- È stato aggiunto
Paragraph#fillBoundingBoxes
per calcolare i riquadri di delimitazione dei caratteri. (If30ee) - È stato aggiunto un insieme di
MultiPreviews
comuni (Ia5a27)
Correzioni di bug
- È stata aggiunta un'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e) - I parametri
fallback*
nel costruttoreTextMeasurer
sono stati rinominati indefault*
. (I940a5) SemanticsPropertyReceiver.performImeAction
è stato rinominato inonImeAction
eSemanticsActions.PerformImeAction
inOnImeAction
. (I8e841)- Aggiunge Wheel per distinguere lo scorrimento del mouse dal trascinamento nello scorrimento nidificato (in particolare in
NestedScrollConnection
). (Ie57e4) - Aggiunta dell'API
asComposePaint
per sostituiretoComposePaint
, in quanto l'oggetto restituito racchiude l'android.graphics.Paint
originale (I22b4c) - Ritira
SemanticsProperties.imeAction
e sostituiscilo con un nuovo parametroSemanticsActions.performImeAction
. (I4a587) - Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande di una parola e si riduce di un carattere. (Ic0c6c, b/180639271)
- I metodi
Paragraph
che prima generavanoAssertionError
per gli offset fuori dai limiti ora generanoIllegalArgumentException
comeMultiParagraph
. (I549d3, b/243338896)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.ui:ui-*:1.5.4
viene ritirata. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.ui:ui-*:1.5.3
viene ritirata. La versione 1.5.3 contiene questi commit.
Correzioni di bug
- (b/301209788)
TextField
a volte applicava in modo errato i comandi precedenti quando si concentrava e inseriva l'input coreano, causando la perdita di caratteri.
Versione 1.5.2
27 settembre 2023
androidx.compose.ui:ui-*:1.5.2
viene ritirata. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- È stata aggiunta una soluzione alternativa per i blocchi anomali quando si accedeva all'API di scorrimento per l'accessibilità dal thread in background.
- Correggi l'aggiunta di nodi non collegati all'albero semantico.
Versione 1.5.1
6 settembre 2023
androidx.compose.ui:ui-*:1.5.1
viene ritirata. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando
readOnly
è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quandoreadOnly
viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
androidx.compose.ui:ui-*:1.5.0
viene ritirata. La versione 1.5.0 contiene questi commit.
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.ui:ui-*:1.5.0-rc01
viene ritirata. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto l'arresto anomalo che si verificava quando
SubcomposeLayout
veniva utilizzato all'interno dimovableContentOf()
.
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta03
viene ritirata. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6)
- È stato risolto un problema con i composable Dialog e Popup che poteva causare il mancato ridimensionamento della finestra secondaria come previsto quando
usePlatformDefaultWidth=true
. (I112ee)
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta02
viene ritirata. La versione 1.5.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
asComposePaint
per consentire l'utilizzo di un'istanzaandroid.graphics.Paint
da utilizzare in Compose
Correzioni di bug
- Aggiunta dell'API
asComposePaint
per sostituiretoComposePaint
, in quanto l'oggetto restituito racchiude l'android.graphics.Paint
originale (I22b4c)
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.ui:ui-*:1.5.0-beta01
viene ritirata. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Allocazioni rimosse in ricomposizione, animazioni a colori e
AndroidComposeView
(Ib2bfa) - Aggiunge la funzione di assistenza
CacheDrawModifierNode()
per consentire la delega (Icf8f9) - Ti presentiamo la proprietà
isLookingAhead
, accessibile daMeasureScope
, per osservare i risultati di lookahead e influenzare la passata principale, se vuoi. (Ibf4c3) - Nuova proprietà semantica
traversalIndex
, un numero in virgola mobile utilizzato per riordinare i nodi nella traversataTalkBack
(i valori più bassi vengono prima). (I9a81b, b/186443263) - Ridenominazione della proprietà Semantica
isContainer
inisTraversalGroup
(I121f6) ColorProducer
ora ha unoperator fun invoke
invece diproduce
(I4a9a2)- Aggiungi l'API di trasformazione
Path
per applicare trasformazioni di traslazione/scalatura/rotazione agli oggetti percorso. (I23434, b/233772232) - Il metodo
ColorProducer
viene chiamatoproduce
. (I78bde) - Rinomina
toFrameworkColorSpace
intoAndroidColorSpace
(I4f547) - Rinomina
ColorLambda
inColorProducer
. (I73b1a) - Introduzione di API per la conversione tra i tipi di spazi colore Android e Compose. (Ie7db4, b/279979665)
- È stato aggiunto un parametro di colore a
BasicText
per consentire l'animazione o l'impostazione del colore del testo in modo efficiente. (Iffd88, b/246961787) TextRange.constrain
rinominato inTextRange.coerceIn
. (I31be2)- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Sono state stabilizzate molte API Text, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è più deprecato. Il nostro intento iniziale era di rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la deprecazione viene rimossa dal campo (I98e96, b/277703184)- È stato aggiunto il metodo pubblico
TextRange.constrain
. (I97912) - Ora è possibile aprire i
UrlAnnotation
neiAnnotatedString
tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta l'azione semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Il costruttore
LineHeightStyle.Alignment(topRatio)
viene promosso all'API stabile. (I79c32, b/261565383) TextMeasurer
e le API correlate non sono più sperimentali. (I74647, b/261581753)- È stata aggiunta l'azione semantica
PerformImeAction
per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506) - Le API
PlatformTextInput
non sono più sperimentali per Android. (I668eb) - Nome del parametro del valore per
Enum.valueOf
modificato (Ia9b89) - Altre eccezioni generate da enum valueOf (I818fe)
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni personalizzate di input di testo che comunicano direttamente con le API della piattaforma. (I58df4) - È 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) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. Solo rinomina. (I07af5) - Valori DPI aggiornati dei dispositivi di riferimento
@Preview
(Id6151, b/254528382) - Aggiungi i parametri
brush
ealpha
aBasicText
per animare o impostare in modo efficiente il pennello di testo. - Definisci i tipi lambda senza scatola per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)
Correzioni di bug
- Rimozione di più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
- Allocazioni ridotte nella gestione dell'input di layout e puntatore (I5333a)
- Ottimizza l'utilizzo della memoria vettoriale e il rendering dei primi frame (I2f3c6)
- Rimozione delle allocazioni durante il disegno di linee e punti con Canvas (I9f535)
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Contributo esterno
- Prestazioni migliorate e riduzione delle allocazioni nelle API Vector (I906cb)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
viene ritirata. La versione 1.5.0-alpha04 contiene questi commit.
Nuove funzionalità
Modifier.Node
Miglioramenti della delega È stata aggiunta una funzionalità avanzata per delegare ad altre istanze diModifier.Node
da unDelegatingNode
. Puoi farlo con le APIdelegate
eundelegate
. Prima di questa modifica, ogni API del nodo di delega doveva essere delegata esplicitamente al nodo delegato. Dopo questa modifica, le interfacce dei nodi verranno delegate implicitamente, a meno cheDelegatingNode
non le esegua l'override in modo esplicito. (67352bc)
Modifiche alle API
- Presenta
NestedScrollModifierNode
, unNestedScroll Modifier.Node
a cui è possibile delegare le credenziali utente. (I69513) - Sono stati aggiunti i parametri
onReset
eonRelease
al composableAndroidViewBinding
, che rispecchia il composableAndroidView
e consente il supporto del riutilizzo delle visualizzazioni conViewBinding
. (I00b1e, b/276802519) - Aggiornamento dell'API Compose Path per supportare le operazioni di riavvolgimento e i casi d'uso di manipolazione frequente dei percorsi con riutilizzo più rapido. (I7b797)
- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Sono state stabilizzate molte API Text, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è più deprecato. Il nostro intento iniziale era di rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la deprecazione viene rimossa dal campo (I98e96, b/277703184)
Correzioni di bug
- È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
viene ritirata. La versione 1.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- Nuovo comportamento predefinito per
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
che non hanno slot condizionali (ad es.TabRow
,Scaffold
,BoxWithConstraints
e così via) ora funzionano correttamente con le animazioni di prelettura.
Modifiche alle API
- Il nuovo
intermediateMeasurePolicy
predefinito che riutilizza la norma di misurazione del passaggio lookahead consente ai sottotipiSubcomposeLayout
senza slot condizionali comeScaffold
,TabRow
eBoxWithConstraints
di funzionare con lookahead per impostazione predefinita. (Id84c8) - Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a
withFrameNanos
anziché tutta la composizione quando riceve una notificaON_STOP
. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante diwithFrameNanos
verranno bloccate. (Id9e7f, b/240975572) - Modifiche
motionEventSpy
alla modalità stabile. (Ic5ec4, b/261560988) - È stato aggiunto il metodo pubblico
TextRange.constrain
. (I97912) PlatformTextStyle.includeFontPadding
non è più deprecato per incoraggiare gli sviluppatori a utilizzare questa API di compatibilità per passare e testare l'impostazioneincludeFontPadding
su false. (I98e96, b/277703184)
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
viene ritirata. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche alle API
- Nuova API
SubcomposeLayout
che accetta una policy di misurazione intermedia aggiuntiva per la gestione della logica di misurazione/layout durante le animazioni basate sulla previsione. (I017d3) - PointerInput ora è lazy e utilizza Modifier.Node per un rendimento migliore (scopri di più sulla piccola modifica del comportamento). (15dab9)
- Modifica le API sperimentali in API stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368)
- Modifica le API sperimentali in API stabili in
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Aggiunge un modo per creare un'istanza di un
SuspendingPointerInputModifierNode
per implementazioni diModifier.Node
più complesse. (Ic4933) - Ora è possibile aprire i
UrlAnnotation
neiAnnotatedString
tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta un'API per intercettare i tasti hardware prima che vengano inviati alla tastiera virtuale (I4f4c6, b/186800395)
- È stata aggiunta l'azione semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Le azioni di test correlate al testo (ad es.
performTextInput
) ora richiedono direttamente lo stato attivo, utilizzando l'azione semantica, anziché fare clic sul campo. (I6ed05)
Correzioni di bug
- Ora le azioni di test del testo richiedono l'attivazione dei campi di testo. (Iab328)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
viene ritirata. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche alle API
- Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misurazione in intermediateLayout ha IntermediateMeasureScope come destinatario, che fornisce CoroutineScope, LookaheadScope e MeasureScope convenienti.(Ibe2e5)
- LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti secondari in un LookaheadScope possono essere controllati direttamente dalla MeasurePolicy del genitore. (Ibe2e5)
- Aggiunge
Modifier.Node#coroutineScope
per consentire a Modifier.Nodes di avviare le coroutine. (I76ef9) - Consenti a Modifier.Nodes di leggere CompositionLocals implementando l'interfaccia CompositionLocalConsumerModifierNode. (Ib44df)
- Propagazione della classe @Deprecated alla proprietà. (I882d1)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.ui:ui-*:1.4.3
viene ritirata. La versione 1.4.3 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui
AndroidView
potrebbe non essere disposto correttamente se utilizzato con determinati modificatori. (I4dc77, b/274797771) - È stato corretto un bug nella ricerca della messa a fuoco 2D che interessava i menu
DropDown
(b/276811828) - È stato corretto un bug nelle proprietà di entrata/uscita dello stato attivo personalizzato che eseguiva il blocco di entrata/uscita solo la prima volta che veniva richiamata la lambda (b/277234245)
- È stata corretta una regressione nel sistema di messa a fuoco che causava un arresto anomalo durante la lettura di
focusProperties
. (b/271324781, b/274897776)
Versione 1.4.2
19 aprile 2023
androidx.compose.ui:ui-*:1.4.2
viene ritirata. La versione 1.4.2 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui
AndroidView
non riutilizzava correttamente i modificatori, il che poteva causare comportamenti imprevisti e arresti anomali. (Ib67ee, b/275919849) - È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile
Dialog
(I82551, b/262140644)
Versione 1.4.1
5 aprile 2023
androidx.compose.ui:ui-*:1.4.1
viene ritirata. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Correzione di un problema relativo a
ParentDataModifier
che non influisce suAndroidView
(b/274797771)
Versione 1.4.0
22 marzo 2023
androidx.compose.ui:ui-*:1.4.0
viene ritirata. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco pigro, in modo che non vengano eliminati quando vengono spostati fuori dai limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API
Modifier.Node
sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Aggiunta della proprietà semantica
IsContainer
sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379) - È stato aggiunto un nuovo ruolo di accessibilità
DropdownList
. Può essere utilizzato per replicare il comportamento diTalkBack
quando si mette a fuocoandroid.widget.Spinner
. (I177e5, b/236159001) - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato di inattività (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che asseriscono singoli frame delle animazioni di layout. (I8ea08, b/222093277) - È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7)
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.ui:ui-*:1.4.0-rc01
viene ritirata. La versione 1.4.0-rc01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un overload della funzione componibile
AndroidView
, che accetta il parametroonReset
. Consente di riutilizzare le istanze View quando il nodo nella composizione viene eliminato e riutilizzato in modo compatibile. Ciò è particolarmente utile perLazyRows
eLazyColumns
delle visualizzazioni. (I3f10d, b/230099236) - È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni personalizzate di input di testo che comunicano direttamente con le API della piattaforma. (I58df4)
Correzioni di bug
- L'azione semantica
SetText
diBasicTextField
ora aggiornerà il buffer di testo utilizzando lo stesso percorso di codice degli aggiornamenti IME e delle funzioni di test (ad es.performTextReplacement
). - Le funzioni di test del testo
performTextClearance
,performTextReplacement
eperformTextSelection
ora utilizzanoSemanticsActions
. (I0807d, b/269633168, b/269624358)
Versione 1.4.0-beta02
22 febbraio 2023
androidx.compose.ui:ui-*:1.4.0-beta02
viene ritirata. La versione 1.4.0-beta02 contiene questi commit.
Modifiche alle API
- Rimozione dell'API
modifierElementOf()
. Estendi direttamente daModifierNodeElement
. (I2256b) - È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che consente di reimpostare alcuni stati locali per gestire correttamente il caso in cuiLayout
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)
Correzioni di bug
- Algoritmo dell'ordine di messa a fuoco dell'accessibilità migliorato, ad esempio le barre superiore/inferiore vengono lette più spesso rispettivamente per prime/ultime (74e9c5)
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.ui:ui-*:1.4.0-beta01
viene ritirata. La versione 1.4.0-beta01 contiene questi commit.
Modifiche alle API
PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)- Sono stati aggiunti
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
ewaitUntilDoesNotExist
come API sperimentali aComposeTestRule
, estendendo l'APIwaitUntil
per accettare qualsiasi matcher e qualsiasi numero di nodi. Per ulteriore documentazione, consultaComposeTestRule
. (Ifa1b9, b/226934294) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. (I07af5) GoogleFont.Provider.AllFontsListUri
rimosso e collegato in ktdoc. (I16f29)
Correzioni di bug
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
viene ritirata. La versione 1.4.0-alpha05 contiene questi commit.
Modifiche alle API
- Sono stati introdotti nuovi overload sperimentali per la funzione
runComposeUiTest
e le funzionicreate*ComposeRule
che accettano parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione del test e per eventuali chiamateLaunchedEffect
erememberCoroutineScope()
nella composizione. (I10614, b/265177763) - Aggiungi una nuova API per monitorare la velocità unidimensionale (If5a82)
FocusRequester
è ora contrassegnato come@Stable
. (I580ee)- Rimuovi un'annotazione sperimentale dal costruttore
DialogProperties
che accetta un parametrousePlatformDefaultWidth
. (Ic4048) - Aggiunta della funzione per calcolare la posizione e la tangente a una distanza su un percorso, con
PathMeasure.getPosition()
ePathMeasure.getTangent()
(I3b47c) - Rimosso setter pubblico esposto accidentalmente il giorno
PlatformParagraphStyle
. (I07f47) - Più tipi/nullabilità di funzioni inline/deprecate-nascoste (I24f91)
- Aggiungi
AnnotatedString.hasStringAnnotations
alla query per cercare annotazioni con allocazioni pari a zero. (I94dfe, b/246960758) - È stato aggiunto un nuovo overload per la funzione
TextMeasurer.measure
che accetta unString
come testo. (I47b2d, b/242705342) - Le API
LineBreak
eHyphens
in TextStyle sono state promosse alla versione stabile. (Ic1e1d)
Contributo esterno
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non sono di nuovo deprecati. (I23a04, b/262648050)
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
viene ritirata. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco pigro, in modo che non vengano eliminati quando vengono spostati fuori dai limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API
Modifier.Node
sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Aggiunta della proprietà semantica
IsContainer
sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379) - È stato aggiunto il nuovo ruolo di accessibilità
DropdownList
. Può essere utilizzato per replicare il comportamento diTalkBack's
quando si mette a fuocoandroid.widget.Spinner
. (I177e5, b/236159001) - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato di inattività (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che asseriscono singoli frame delle animazioni di layout. (I8ea08, b/222093277) - È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7)
Modifiche alle API
- L'argomento
maxSize: IntSize
indrawText
è stato sostituito consize: Size
per essere in linea con le altre funzioniDrawScope
.size
è impostato suSize.Unspecified
per impostazione predefinita, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d) - È stato rimosso il costruttore di caratteri sperimentale deprecato. (I8a724, b/261435386)
- La classe di dati ui tooling
Group
ora ha un campo,isInline
, che indica se il gruppo è per una chiamata a una funzione componibile inline. SeisInline
ètrue
, la chiamata è a una funzione componibile inline. Tuttavia, il valore potrebbe essere false per le chiamate a funzioni componibili inline provenienti da moduli compilati con una versione del plug-in del compilatore Compose che non genera le informazioni sulla funzione inline. (Idb846) - È stato eseguito l'upgrade di una serie di API precedentemente sperimentali a stabili
- L'API Rotary Scroll Event è ora stabile (I42ad3, b/261561229)
- L'API
FontVariation
è ora stabile (I8779f, b/241016309) - Tutti i costruttori
Font()
sono ora API stabili (I5948b, b/261435386) DeviceFontFamilyName
è ora stabile (I8b640, b/261435386)- Il costruttore
AndroidFont
convariationSettings
è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori di caratteri. (I5adcc, b/261565807) - L'API
createFontFamilyResolver
è ora stabile. Può essere utilizzato per rilevare eccezioni non rilevate durante il caricamento asincrono dei caratteri. (Ibb481, b/261435386) - L'API
Font.loadingStrategy
è ora stabile. (I5937c, b/261435386) - L'API
GoogleFont
è ora stabile. (Ic90b0, b/261435386) TextUnit(float, TextUnitType)
è ora un'API stabile. (I90c84, b/261561612)pluralStringResource
è ora un'API stabile. (I09849, b/261439703)
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
viene ritirata. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimozione di
ExperimentalComposeUiApi
daPointerIcon
(I23af8) - Introduzione delle azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che queste sono disponibili solo a partire dall'API 29. (Ida4ab) - Visualizzazione del parametro
rememberNestedScrollConnection
aggiornata dalla visualizzazione principale alla visualizzazione host. (Ia5200) - È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli elementi principali. (I2ba9d, b/203141462)
- Utilizzato in
Clickable
per ritardare correttamente le interazioni di pressione, quando i gesti potrebbero diventare eventi di scorrimento. - È stato corretto il problema per cui
Clickables
non ritardava correttamente gli effetti ripple quando veniva utilizzato all'interno di unScrollable ViewGroup
. - Aggiornamento di riquadri e fogli per ritardare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
CompositingStrategy.Always
è stato rinominato inOffscreen
per indicare chegraphicsLayer
verrà sempre sottoposto a rendering in un buffer intermedio (I47dc1)- L'overload del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
- Sono state aggiunte nuove API sperimentali
PerfettoTrace.record {}
ePerfettoTraceRule
per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, per esaminare il comportamento e le prestazioni del test. (I3ba16) - Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni riprese durante i callback
withFrameNanos
non verranno inviate finché non saranno terminati tutti i callback dei frame. Questo comportamento corrisponde a quello della composizione in esecuzione normale. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Ciò dovrebbe influire solo sul codice che chiama direttamentewithFrameNanos
owithFrameMillis
e che ha una logica al di fuori del callback passato a queste funzioni che potrebbe dover essere spostata all'interno dei callback. Per esempi, consulta le modifiche al test dell'animazione in questo elenco di modifiche. - È 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) - Aggiunta di EmojiCompat a Compose (Ibf6f9, b/139326806)
- È stato aggiunto un nuovo parametro dello sfondo a
@Preview
per il supporto dei colori dinamici (I9f512)
Correzioni di bug
- Le notifiche di applicazione dello snapshot vengono ora inviate dopo che
Recomposer
ha terminato l'applicazione delle modifiche. (Iad6c0, b/222093277) - Sono state introdotte modifiche in
captureToImage
per consentire l'acquisizione di screenshot in modalità multi-finestra. Questa opzione è utile per i test degli screenshot che utilizzano i popup di Compose. (I169c5)
Aggiornamenti delle dipendenze
- Compose UI e Compose Material ora dipendono da Lifecycle 2.5.1. (I05ab0, b/258038814)
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
viene ritirata. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
GraphicsLayerScope
aggiornato per mostrare le dimensioni attuali digraphicsLayer
. Ciò è utile per calcolare le trasformazionigraphicsLayer
in funzione delle dimensioni del composable. (If8c43,b/181387080)- È stato introdotto
CompositingStrategy
per determinare quando utilizzare un livello di composizione off-screen per il rendering dei contenutigraphicsLayer
. Auto mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato un valore alfa o unRenderEffect/Overscroll
. Always introdurrà sempre un buffer off-screen, mentreModulateAlpha
eviterà di utilizzare un buffer off-screen e modulerà invece ciascuna delle istruzioni di disegno registrate all'interno digraphicsLayer
. L'utilizzo diModulateAlpha
continuerà a sfruttare un buffer fuori schermo per gli utilizzi diRenderEffect/Overscroll
(I25e82, b/256382834) invalidateSubtree()
è stato aggiunto aModifier.Node
per consentire l'invalidazione di intere gerarchie per il layout e il disegno. (I4bd90)- Promuovi
rememberNestedScrollInteropConnection
alla versione stabile. È stata introdotta la possibilità di passare una visualizzazione principale arememberNestedScrollInteropConnection
. In questo modo, la visualizzazione personalizzata può reagire meglio ai vincoli di scorrimento, soprattutto nelle visualizzazioni non standard (ad es.ModalBottomSheetDialog
). (I9e107) - È stata aggiunta l'interfaccia
ObserverNode
che può essere utilizzata dalle implementazioniModifier.Node
che devono ricevere una notifica quando un valore letto in precedenza è stato modificato (I5728b, b/247716483). - È stato aggiunto un nuovo costruttore a
Paint
che accetta unandroid.graphics.Paint
nativo. È stata aggiunta anche una funzione di estensionetoComposePaint()
che converte un oggetto Paint nativo esistente in Compose Paint. (Ica91b) - Aggiungi nuovi
FontFamily.Resolver.resolveAsTypeface
da utilizzare su Android. (I8950b) - Aggiungi
ToolingState
per consentire agli strumenti di modificare gli stati interni di Composable (Ie6614) - Refactoring degli strumenti per un migliore supporto delle nuove animazioni aggiunte (I8677b)
- È stato aggiunto il parametro
minLines
a Text,TextField
eOutlinedTextField
di Material e Material3, che consente di impostare l'altezza minima del componente in termini di numero di righe (I4af1d).
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
viene ritirata. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Funziona in modo simile aforEachGesture()
, ma il ciclo sui gesti opera interamente all'interno diAwaitPointerEventScope
, quindi gli eventi non possono essere persi tra le iterazioni. forEachGesture()
è stato ritirato a favore diawaitEachGesture()
perché consente di perdere eventi tra i gesti. (Iffc3f, b/251260206)- Ritiro del riciclo degli oggetti di accessibilità in androidx. Abbiamo riscontrato variazioni di rendimento trascurabili anche nelle versioni supportate più vecchie. (I0a961)
- È stato aggiunto
DrawStyle
come attributo sperimentale aTextStyle
eSpanStyle
per consentire il disegno di testo con contorno. (If24b8, b/155421273) AnnotatedString.Builder
ora implementakotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ora ha un metodoappend(AnnotatedString, start: Int, end: Int)
per aggiungere una sottostringa di unAnnotatedString
e gli stili che si intersecano.- È stato aggiunto il parametro
DrawStyle
alle funzioni di pitturaParagraph
eMultiParagraph
, che consente di disegnare testo con contorno. (Ic8102, b/155421273)
Contributo esterno
- Grazie per
vighnesh
per aver aggiunto i dispositivi TV alle anteprime (Ie15cd)
Versione 1.3
Versione 1.3.3
11 gennaio 2023
androidx.compose.ui:ui-*:1.3.3
viene ritirata. La versione 1.3.3 contiene questi commit.
Correzioni di bug
- Correzione di un arresto anomalo che a volte si verifica su Android 9 quando l'attività salva lo stato della visualizzazione di composizione. (I0b755, b/260322832)
Versione 1.3.2
7 dicembre 2022
androidx.compose.ui:ui-*:1.3.2
viene ritirata. La versione 1.3.2 contiene questi commit.
Correzioni di bug
- Aggiornato per utilizzare Profobuf 3.21.8, che evita un avviso di sicurezza in
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Versione 1.3.1
9 novembre 2022
androidx.compose.ui:ui-*:1.3.1
viene ritirata. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
androidx.compose.ui:ui-*:1.3.0
viene ritirata. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Nuova suite di API sperimentali
LookaheadLayout
(che consentono comportamenti di animazione precedentemente impossibili) - Nuova suite di API sperimentali
Modifier.Node
(alternativa più performante aModifier.composed
) - Supporto migliorato per gli inset della finestra.
- Supporto della messa a fuoco per i D-pad e la tastiera hardware in LazyList.
- L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica del comportamento che causa interruzioni per alcuni sistemi di progettazione personalizzati. Motivazione nelle note di rilascio di beta01)
- Molti miglioramenti minori e non distruttivi all'API
- Numerose correzioni di bug e miglioramenti delle prestazioni
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.ui:ui-*:1.3.0-rc01
viene ritirata. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- È stata aggiunta una nuova API sperimentale, Hyphens, per supportare la sillabazione automatica in Text (Iaa869)
Correzioni di bug
- I caratteri
DeviceFontFamilyName
non configureranno le impostazioni delle variantiwght
eital
per impostazione predefinita, ma utilizzeranno l'impostazione della piattaforma per i caratteriTypeface
caricati. (Ia7a6d, b/246989332) - Correzione della perdita di memoria
LazyColumn
:onModifierLocalsUpdated
non veniva chiamato con il valore predefinito quando i modificatori venivano riutilizzati (b/230168389)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta03
viene ritirata. La versione 1.3.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiungi opzioni per personalizzare l'interruzione di riga in Testo. (I86907)
- Modificato l'argomento
size:IntSize
conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525)
Correzioni di bug
- L'API
BackHandler
di AndroidX Activity ora funziona all'interno di un composableDialog
. (I35342)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta02
viene ritirata. La versione 1.3.0-beta02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un overload sperimentale per Layout che accetta un elenco di più lambda di contenuti componibili, il che consente di trattare le misurazioni inserite in lambda di contenuti diversi in modo diverso (Ic1b4e).
Modifiche alle API Focus sperimentali:
FocusDirection.In
eFocusDirection.Out
sono deprecati e sostituiti daFocusDirection.Enter
eFocusDirection.Exit
. (Ia4262, b/183746982)- Sono state aggiunte due nuove proprietà di messa a fuoco, enter e exit, per specificare un comportamento personalizzato per
FocusManager.moveFocus(Enter)
eFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Ora puoi utilizzare
FocusRequester.Cancel
per annullare lo spostamento della messa a fuoco.FocusRequester.Cancel
può essere utilizzato in una qualsiasi delle seguenti proprietà di messa a fuoco: up, down, left, right, next, previous, start, end, enter e exit. (Ib300f)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.ui:ui-*:1.3.0-beta01
viene ritirata. La versione 1.3.0-beta01 contiene questi commit.
Refactoring del nodo modificatore
Il livello che gestisce le istanze Modifier/Modifier.Element
e coordina il loro comportamento su LayoutNodes
è stato sottoposto a un refactoring importante. Allo stato attuale, si tratta di un refactoring che non ha interessato l'API pubblica di nessuno dei numerosi modificatori in Compose e può essere considerato una modifica solo di implementazione. Nonostante ciò, si tratta di un cambiamento importante per vari motivi. (Ie4313)
Riepilogo delle modifiche
Le API Modifier.Node
sperimentali aggiunte forniscono un'astrazione che consente di mantenere lo stato su un'istanza che verrà conservata con il ciclo di vita del nodo di layout e verrà allocata per nodo di layout e per utilizzo del Modifier.Element
corrispondente che lo ha prodotto.
In termini generali, questa astrazione fornisce un meccanismo alternativo per produrre modificatori stateful senza fare affidamento sui meccanismi dell'API Modifier.composed
.
Rischio
Questa modifica è strettamente compatibile a livello binario con le versioni precedenti ed è pensata per essere retrocompatibile in termini di comportamento osservabile nella misura in cui è pratico e ragionevole. Detto questo, sono pochi i sottosistemi di Compose che non sono stati interessati da questo refactoring ed è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e non ancora trovati e corretti.
Esegui l'upgrade a questa release con cautela. Se ritieni che questo abbia causato problemi, comunicacelo.
API sperimentali
Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "nodo modificatore". Modifier.Node vengono creati in seguito a
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Modifica che causa un'interruzione del comportamento
L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp.
L'elevazione massima supportata per le finestre di dialogo e i popup di Compose è stata ridotta da 30 dp a 8 dp. Questa modifica riguarda sia le finestre di dialogo personalizzate sia i popup di Material e dell'interfaccia utente. Questa modifica viene apportata per mitigare un bug di accessibilità nelle versioni di Android precedenti alla S e per garantire che i servizi di accessibilità all'interno di queste finestre possano interagire con i contenuti all'interno della finestra di dialogo o del popup.
Questa modifica ti interesserà solo se stai creando un'implementazione personalizzata di finestre di dialogo o popup con un'elevazione impostata su livelli superiori a 8 dp. Valuta la possibilità di abbassare l'elevazione della finestra di dialogo o del popup. Se devi disattivare questo nuovo comportamento, valuta la possibilità di creare un tuo dialogo o popup con il livello di elevazione desiderato. Questa operazione non è consigliata, in quanto l'accessibilità potrebbe essere compromessa e spetta allo sviluppatore garantire che la parte inferiore della finestra di dialogo o del popup sia interattiva e leggibile dai servizi di accessibilità.
Modifiche alle API
- Risolto un problema per cui
painterResource
non veniva aggiornato in seguito alle modifiche alla configurazione (I58e73, b/228862715) rememberTextMeasurer
non accetta più i parametriFontFamily.Resolver
,Density
oLayoutDirection
. Utilizza il costruttoreTextMeasurer
per fornire valori personalizzati per questi parametri. (Ia1da3)- È stata aggiunta la proprietà
DialogProperties.decorFitsSystemWindows
per consentire alle finestre di dialogo di supportareWindowInsets
. (I57742, b/229378542) - I costruttori di caratteri sono stati spostati di nuovo nel file Kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3)
- È stato rimosso un operatore non necessario da diverse definizioni di uguaglianza, senza alcun effetto. (I6c309)
FontVariation.Setting
è un'interfaccia sigillata per consentire future API di bloccaggio. (I11021, b/143703328)- Aggiungi
CompositionGroup.findParameters
aSlotTree.kt
. In questo modo, gli strumenti possono recuperare i parametri per unCompositionGroup
senza dover analizzare l'intera tabella degli slot. (I124fe)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
viene ritirata. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
LayoutCoordinates.findRootCoordinates()
è ora pubblico (I7fa37, b/204723384)- È stata aggiunta un'API sperimentale per ottenere
LayoutCoordinates
inPlacementScope
. In questo modo, gli sviluppatori sanno dove si trova il layout corrente per posizionare gli elementi secondari rispetto alla sua posizione. (I5482b, b/238632578) - È stato aggiunto
LayoutCoordinates.transformFrom
per ottenere la trasformazione della matrice da unLayoutCoordinates
all'altro. (Ic5ab1, b/238632578) SemanticsModifier.id
è stato ritirato e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524)- I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26+). (I900dd, b/143703328)
- Supporto dei caratteri variabili in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - I costruttori di caratteri ora accettano un elenco di
FontVariation.Setting
per configurare i caratteri variabili sui dispositivi O+. (I11a9d, b/143703328) - Aggiungi l'API
FontVariation
per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328) - Il costruttore
LineHeightStyle.Alignment
è ora pubblico (sperimentale) (I4bbbe, b/235876330) - Il paragrafo ora è expect|actual e definito per Android e computer. (Id387e, b/239962983)
- L'interfaccia Paragrafo è ora l'interfaccia Paragrafo sigillata. Non esiste un caso d'uso per la sottoclasse del paragrafo e ti consigliamo di contattarci se questa modifica ti riguarda. (If5247, b/239962983)
- Annotazione sperimentale rimossa da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - Depreca
TextInputService.show|hideSoftwareKeyboard
. Utilizza inveceSoftwareKeyboardController
nel codice dell'app eTextInputSession
nel codice di gestione IME. (I14e4c, b/183448615) - Aggiungi una nuova API per i tipi di animazione esistenti (I26179)
Correzioni di bug
- È stato aggiunto
@RequiresPermission
alle API che richiedono la concessione dell'autorizzazionePOST_NOTIFICATIONS
su SDK 33 e versioni successive. (Ie542e, b/238790278)
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
viene ritirata. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta una nuova proprietà
PointerInputChange#pressure
per recuperare la pressione. (I45a5e, b/205164819) - È stato aggiunto
rememberTextMeasurer
per creare e ricordare facilmente le istanze diTextMeasurer
nella composizione. (I8d66e) Rect
,RoundRect
eMutableRect
ora supportano la sintassiin
di Kotlin per chiamare la funzionecontains
. (Ie42b0, b/238642990)- Rimuovi le funzioni non necessarie da
KeyInjectionScope
, in quanto possono essere implementate facilmente con parti più semplici dell'API. Le funzioni rimosse includonopressKeys
,keysDown
ekeysUp
. (I81d77) - È stato eseguito il refactoring dei nomi di costanti e parametri in
KeyInjectionScope
per includere il suffisso "Millis" quando le unità di misura di queste costanti e parametri sono i millisecondi. (Iabef5) - È stato aggiunto il metodo
toStringForLog()
aEditCommand
per facilitare la risoluzione dei problemi di modifica del testo. (I53354, b/228862731) - Aggiunta della funzione di estensione
drawText
suDrawScope
per fornire un modo per disegnare testo con più stili su composable e modificatori che operano su unDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898) - È stata introdotta una nuova API sperimentale chiamata
TextMeasurer
che consente il calcolo arbitrario del layout del testo, creando risultati identici aBasicText
, indipendentemente dal runtime di Compose. (I17101) - Aggiungi
mapTree
aSlotTree.kt
. Ciò consente agli strumenti di esaminareSlotTree
senza prima creare una copia in memoria come fa asTree. Per Layout Inspector, questo comporta un miglioramento delle prestazioni di circa un fattore 10. (I5e113) - È stata modificata l'anteprima di Compose in modo che venga memorizzata nei file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni
MultiPreview
dalle librerie. (I85699, b/233511976)
Correzioni di bug
- Quando aggiungiamo eventi
InputEventChange
al trackerVelocity
, ora considereremo le differenze anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente in tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803). - Correzione di NPE causato da
AnnotatedString.toUpperCase
quando sono presenti annotazioni. (I0aca2, b/210899140)
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
viene ritirata. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Nuovo
LookaheadLayout
che supporta una passata di prelettura prima della misurazione/layout effettivo. Ciò consente un pre-calcolo del layout quando cambia, consentendo al layout/misura post-lookahead di utilizzare le dimensioni/la posizione precalcolate per animare le dimensioni e le posizioni verso la destinazione.SubcomposeLayouts
non sono ancora supportati, ma lo saranno in una prossima release. (I477f5) - Aggiungi il parametro alfa facoltativo al tipo di pennello di
TextStyle
eSpanStyle
per modificare l'opacità dell'interoText
. (Ic2fac, b/234117635) - È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare i linkTalkBack
neiAnnotatedString
. (I1c754, b/231495122) - Spostamento della funzionalità di utilità nel runtime (I4f729)
Correzioni di bug
TextLayoutResult.getLineForOffset
non genera un errore. (Idc5d6, b/235876324)
Contributo esterno
- È stata aggiunta una nuova API
WindowInfo.keyboardModifiers
per osservarne lo stato all'interno di funzioni componibili o tramite snapshotFlow (Icdb8a)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.ui:ui-*:1.2.1
viene ritirata. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- È stato corretto un errore di puntatore nullo nello strumento di controllo (b/237987764)
- È stata corretta l'eccezione di cast della classe durante il ricordo nell'ispettore (b/235526153)
Versione 1.2.0
27 luglio 2022
androidx.compose.ui:ui-*:1.2.0
viene ritirata. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
Miglioramenti dello spostamento del focus:
- Lo scorrimento basato sulla messa a fuoco degli elenchi pigri ora funziona utilizzando la nuova API principale
BeyondBoundsLayout
. - Nuove API di personalizzazione del comportamento in
FocusOrder
eFocusProperties
- Comportamento migliorato con la tastiera fisica o il telecomando della TV
- Lo scorrimento basato sulla messa a fuoco degli elenchi pigri ora funziona utilizzando la nuova API principale
Nuove API per:
- Inserti per finestre
- Primitive di base per animazioni basate su gesti, infinite e di layout
- Funzionalità di
GraphicsLayer
, tra cuiRenderEffect
Numerose correzioni di bug e miglioramenti delle prestazioni
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc03
viene ritirata. 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.ui:ui-*:1.2.0-rc02
viene ritirata. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc01
viene ritirata. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Le interfacce nelle librerie Compose ora sono create utilizzando i metodi di interfaccia predefiniti di jdk8 (I5bcf1)
- Sono state aggiunte funzioni di ordine superiore a
KeyInjectionScope
per l'inserimento di pressioni di tasti mentre altri tasti sono tenuti premuti o attivati/disattivati. Queste funzioni includonowithKeysDown
,withKeysToggled
e così via. Sono state aggiunte anche proprietà per verificare se un determinato tasto meta è premuto, ad esempioisCtrlDown
per verificare se uno dei tasti Control è premuto. ConsultaKeyInjectionScope
per la documentazione relativa a ogni funzione. (I9f6cd, b/229831515) - È stato introdotto un
OverscrollEffect
sperimentale per consentire effetti di overscroll personalizzati, insieme agli overloadModifier.scrollable
che lo accettano. LocalOverScrollConfiguration
sperimentale è stato spostato dafoundation.gesture
al pacchetto di base e rinominato inLocalOverscrollConfiguration
(If19fb, b/204650733)- Rinomina
runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
, in modo che sia in linea concreateEmptyComposeRule()
(I6fed7)
Versione 1.2.0-beta03
1 giugno 2022
androidx.compose.ui:ui-*:1.2.0-beta03
viene ritirata. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti
pressKeyTimes
,isCapsLockOn
e amici aKeyInjectionScope
. Inoltre, l'API ora supporta pattern di inserimento combinati di mouse e tastiera, ad esempio fare clic su un pulsante del mouse tenendo premuto un tasto meta. (I4c8da, b/229831515) - Aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Utilizza
performKeyInput
per inviare gli eventi chiave oppure inviali tramite la proprietàkey
diMultiModalInjectionScope
durante un gesto di input multimodale conperformMultiModalInput
. ConsultaKeyInjectionScope
per la documentazione dell'API. (Ic5000, b/229831515) - Aggiungi un nuovo
GoogleFont.Provider.AllFontsListUri
per recuperare l'origine internet canonica di Google Fonts supportata da Android. - Migliorare i messaggi di errore rilanciati quando Google Fonts non viene caricato in Compose. (I0416c)
Correzioni di bug
- Quando aggiungiamo eventi
InputEventChange
a Velocity Tracker, ora prendiamo in considerazione i delta anziché le posizioni. In questo modo, la velocità viene calcolata correttamente in tutti i casi, anche se l'elemento target si sposta (I51ec3, b/216582726, b/223440806, b/227709803). - L'impostazione
Show Layout Bounds
verrà ora applicata ai composable immediatamente dopo l'attivazione dal riquadro delle impostazioni rapide, senza dover uscire e rientrare nell'attività. (I843d5, b/225937688) - La ricerca di stringhe di accessibilità non attiva il caricamento dei caratteri. In precedenza, tentava di caricare i caratteri per
StyleSpans
, il che causava arresti anomali seFontFamily.Resolver
era stato sovrascritto. (I4609d) - Se premi il tasto di eliminazione in avanti quando il cursore si trova alla fine di un campo di testo, non si verifica più un arresto anomalo.
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
ora richiedono che gli argomenti del costruttore non siano negativi. (Ica8e6, b/199919707)
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.ui:ui-*:1.2.0-beta02
viene ritirata. La versione 1.2.0-beta02 contiene questi commit.
Modifiche alle API
- Riutilizzo della funzionalità in altri tipi di anteprima (I19f39)
Correzioni di bug
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
è stato rinominatoDisposeOnDetachedFromWindowOrReleasedFromPool
per riflettere meglio che quando si verificano smaltimenti, anziché semplicemente quando non si verificano. (If15ca)
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.ui:ui-*:1.2.0-beta01
viene ritirata. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima release beta della versione 1.2.
Modifiche alle API
- È stato aggiunto
BeyondBoundsInterval
sperimentale che può essere utilizzato dalle implementazioni personalizzate diLazyList
quando dispongono gli elementi oltre i limiti visibili (Ifabfb, b/184670295). - Le versioni con chiave di
Modifier.composed
sono ora API stabili (Ie65e4, b/229988420) - È stata semplificata l'API
rememberNestedScrollConnection
per utilizzare le variabili locali di composizione per acquisire le informazioni sulla visualizzazione corrente (I67ca7) - L'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
ora possono essere utilizzate a livello di file utilizzando il prefisso@file
. L'utilizzo di un'annotazione di destinazione nell'ambito del file fa sì che il compilatore presupponga che tutte le funzioni componibili nel file siano destinate a essere destinate all'applier associato. Ad esempio, l'utilizzo di@file:UiComposable
dichiara che tutte le funzioni@Composable
hanno come target l'applicazione dell'interfaccia utente di Compose. Una funzione che deve avere come target un altro applicatore deve fornire esplicitamente l'annotazione del marcatore di destinazione per l'applicatore desiderato. (I40804) È stata introdotta una nuova API di test sperimentale, indipendente dalla piattaforma: un
interface ComposeUiTest
e unfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, che possono essere utilizzati per eseguire test dell'interfaccia utente di Compose senza la necessità di unTestRule
. Per eseguire un test senza unComposeTestRule
, trasmetti il test come lambda arunComposeUiTest
e utilizza i metodi e i membri nell'ambito del destinatarioComposeUiTest
, che sono gli stessi diComposeContentTestRule
.Vengono aggiunti
interface AndroidComposeUiTest
efun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
specifici per Android per fornire l'accesso all'attività sottostante, in modo simile aAndroidComposeTestRule
. Per un controllo ancora maggiore, puoi creare unclass AndroidComposeUiTestEnvironment
.L'implementazione per computer è
class DesktopComposeUiTest
, ma al momento non vengono offerte funzioni di esecuzione specifiche per computer.La migrazione di un test da
ComposeTestRule
aComposeUiTest
può essere eseguita in questo modo (esempio per Android). Da:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Segui le istruzioni per eseguire le operazioni indicate:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Per ora,
ComposeContentTestRule
eComposeTestRule
non derivano daComposeUiTest
, il che significa che le funzioni di estensione suComposeUiTest
non possono ancora essere chiamate nell'interfacciaTestRule
. QuandoComposeUiTest
diventerà un'API stabile,ComposeContentTestRule
eComposeTestRule
verranno modificati per estendersi daComposeUiTest
. (Ib4e90)LineHeightBehavior
è stato rinominato inLineHeightStyle
LineVerticalAlignment
è stato rinominato inLineHeightStyle.Alignment
Il nome di
LineHeightTrim
è stato cambiato inLineHeightStyle.Trim
I valori del costruttore predefinito di
LineHeightStyle
sono stati rimossi (I582bf, b/181155707)Sono stati aggiunti
Brush
aTextStyle
eSpanStyle
per fornire un modo per disegnare testo con colorazione sfumata. (I53869, b/187839528)Gli attributi
trimFirstLineTop
etrimLastLineBottom
diLineHeightBehavior
sono stati modificati in un unico enum:LineHeightTrim
.LineHeightTrim
hanno valori di 4 stati definiti da due valori booleani:FirstLineTop
,LastLineBottom
, Entrambi e Nessuno (Ifc6a5, b/181155707)Aggiunta di
LineHeightBehavior
aTextStyle
eParagraphStyle
.LineHeightBehavior
controlla se l'altezza della linea viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della linea nello spazio fornito daTextStyle(lineHeight)
.Ad esempio, è possibile ottenere un comportamento simile a quello definito da CSS tramite
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Le configurazioni
trimFirstLineTop
etrimLastLineBottom
funzionano correttamente solo quandoincludeFontPadding
è false. (I97332, b/181155707)Le funzioni
PlatformParagraphStyle.lerp
ePlatformSpanStyle.lerp
sono state modificate per essere funzioni di primo livello (I9a268)
Correzioni di bug
- La documentazione
PointerInputChange::copy
ora indica correttamente che si tratta di una copia superficiale. (I182f5) - Supporta i puntini di sospensione quando l'altezza è limitata e non contiene tutte le righe di testo (Ie528c, b/168720622)
- Attivato per impostazione predefinita
includeFontPadding
. È possibile disattivareincludeFontPadding
utilizzando l'attributoTextStyle.platformTextStyle
. Nel prossimo futuro cambieremo il comportamento predefinito, ma fino ad allora questo ci consente di integrare meglio i miglioramenti dell'altezza della linea (aosp/2058653) e risolvere i problemi di ritaglioTextField
. (I01423, b/171394808)
Contributo esterno
MouseInjectionScope.scroll(delta = someDelta)
ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
viene ritirata. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Le funzioni
pluralStringResource
sono state contrassegnate come sperimentali per consentire l'evoluzione a supporto di una migliore internazionalizzazione in futuro. (If24e4) - Paragraph e MultiParagraph ora accettano il parametro Constraints. Il passaggio di
Constraints.maxHeight
è un'operazione no-op al momento, ma consentirà di eseguire alcuni calcoli in futuro, ad esempio l'ellissi in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi. (Icd314)- PointerIcon ora è un'interfaccia
@Stable
(I9dafe) - Il consumo parziale (in basso O posizione) è stato ritirato in
PointerInputChange
. Puoi utilizzareconsume()
per utilizzare 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 che una delle copie sarà stata consumata. Se vuoi creare unPointerInputChange
non associato, utilizza il costruttore. (Ie6be4, b/225669674)- Attiva l'interoperabilità dello scorrimento nidificato tra Compose e View nella direzione Compose > View. Ciò significa che un elemento padre di composizione potrà ricevere i delta di scorrimento nidificati da una visualizzazione a scorrimento nidificata. (If7949, b/174348612)
- Nuovo
SemanticsProperty testTagsAsResourceId
, che può essere utilizzato per rendere Compose conforme ai test UIAutomator progettati per il sistema View. (I39c20) - Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium sulle API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 sulle API 21-28. (I380fe, b/156048036, b/226441992) - Gli istruttori Paragraph e Multiparagraph hanno riordinato gli argomenti posizionali prima degli argomenti facoltativi. (Idafaa)
AndroidFont
ora accetta typefaceLoader come parametro del costruttore. (I2c971)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
viene ritirata. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta la nuova funzione
Snapshot.withoutReadObservation { ... }
. Consente agli utenti di eseguire la lambda passata senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potrebbe essere utile nei casi d'uso in cui vuoi usufruire di letture/scritture thread-safe basate su snapshot, ma vuoi poter leggere il valore senza causare ricomposizioni o misurazioni non necessarie. (I9f365, b/214054486) - La proprietà di estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare l'utilizzo diWindowInsets
di Android. In questo modo, i diversiComposeViews
nella gerarchia possono applicareWindowInsets
senza interferire tra loro. (I0ef08, b/220943142) - È stato aggiunto
KeyboardType.Decimal
come alternativa aKeyboard.Number
per includere in modo specifico il separatore decimale nell'IME. (Iec4c8, b/209835363) PointerEventType.Scroll
ePointerEvent.scrollDelta
sono ora API stabili (I574c5, b/225669674)- Attiva l'interoperabilità dello scorrimento nidificato tra View e Compose per le classi View che cooperano. Ciò significa che ora Compose è in grado di inviare delta di scorrimento a un elemento View padre (cooperativo). (I5d1ac, b/174348612)
FontFamily.Resolver
è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)Font(AssetManager, String, ...)
è deprecato e sostituito daFont(String, AssetManager, ...)
. Questa è un'API sperimentale. (I1c7a4)- Aggiungi il nuovo descrittore di caratteri
Font(DeviceFontFamilyName)
per cercare facoltativamente i caratteri installati nel sistema durante le catene di fallback dei caratteri. (I30468, b/219754572) - Aggiunta una configurazione di compatibilità temporanea per
includeFontPadding
in TextStyle/ParagraphStyle.includeFontPadding
può essere modificato tramiteTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Si tratta di un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) - Aggiungi l'estensione
GoogleFont.Provider.isAvailableOnDevice
per assistenza con il debug. (I64e31) - Aggiungi il costruttore
GoogleFont.Provider
per l'utilizzo con@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
ora si chiamaFont(GoogleFont)
, l'API rimane stabile. (I125f2)
Correzioni di bug
- È stato aggiunto il controllo lint a material/Scaffold per garantire l'utilizzo del padding interno (Ifb111)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
viene ritirata. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche alle API
- Aggiunta dell'azione semantica
RequestFocus
per richiedere la messa a fuoco del target selezionabile. (I17b71) - È stata aggiornata l'analisi dei drawables vettoriali per supportare il mirroring automatico e invertire i contenuti di un
VectorPainter
se la direzione del layout corrente è da destra a sinistra. (I79cd9, b/185760237) Aggiornamento dei colori dell'ombra/dell'ambiente in modo che siano parametri finali di
Modifier.graphicsLayer
per la compatibilità dell'API (I3f864, b/160665122)Sono state aggiunte implementazioni predefinite al colore dell'ombra/ambientale su
GraphicsLayerScope
per garantire modifiche API non distruttiveAggiunta dell'ora dell'evento agli eventi RSB (Ief8ae)
FocusOrder
è stato unito aFocusProperties
efocusProperties()
ora ha tutte le funzionalità difocusOrder()
.FocusOrder
efocusOrder()
sono stati ritirati.focusOrder()
che accetta unfocusRequester
deve essere sostituito da un modificatorefocusRequester()
in combinazione confocusProperties()
. In questo modo, i modificatori possono avere una separazione più netta delle responsabilità. (I601b7)L'upgrade sia di
RecyclerView
che diCompose
ora comporta prestazioni di scorrimento molto migliori per RecyclerView con visualizzazioni Compose come elementi secondari.Aggiungi
ViewCompositionStrategy.Default
come mezzo per recuperare la strategia predefinita integrataAggiungi
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, che è la nuova strategia predefinita e gestisce correttamente i contenitori di pooling come RecyclerView. (If7282)È stato aggiunto il supporto per l'annotazione delle classi di annotazioni con @Preview come primo passo per l'aggiunta della funzionalità di anteprima multipla. Queste annotazioni potrebbero essere utilizzate per annotare metodi componibili o altre classi di annotazioni, che potrebbero poi essere considerate annotate indirettamente con la @Preview specificata. (I12eff)
Dispositivi di riferimento aggiunti all'elenco dei dispositivi per @Preview (I071c9)
Correzioni di bug
- API di grafica vettoriale aggiornate per utilizzare l'annotazione componibile corretta @VectorComposable anziché @UiComposable (I942bc)
- Rimuovi crossinline da
AnnotatedString.Builder.withStyle
(If84d5)
Contributo esterno
- compose-ui: aggiungi le proprietà
ambientShadowColor
espotShadowColor
aGraphicsLayerScope
(I1ba1a, b/160665122) - Ora le risorse plurali sono supportate tramite le funzioni
pluralStringResource
. (Ib2f23, b/191375123)
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
viene ritirata. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche alle API
TextToolbar
ora accetta argomenti lambda anzichéActionCallback
. (Ib2eb9, b/197950089)- Aggiornamento della nullabilità in core e appcompat in modo che corrisponda a Tiramisu DP2 (I0cbb7)
- L'interfaccia misurata ora espone la proprietà parentData (I3313f)
Modifier.onPlaced
e l'interfacciaOnPlacedModifier
sono ora stabili. (Ib5482)- Evviva! L'animazione di composizione ora supporta l'impostazione "Scala durata animatore" delle Opzioni sviluppatore. (I5a4fc, b/161675988)
- È stato aggiunto un modificatore
BeyondBoundsLayout
locale (If8b51, b/184670295) - Testo: includeFontPadding è ora disattivato per impostazione predefinita. I problemi di
ritaglio dovuti a
includeFontPadding=false
vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808)
Correzioni di bug
ComposeContentTestRule.setContent
ora genererà unIllegalStateException
se provi a impostare contenuti quando sono già presenti. (I888a5, b/199631334)- Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- Migliora gli esempi di scorrimento della barra di scorrimento. (I6a596)
Contributo esterno
- Aggiornamento per l'utilizzo delle coroutine Kotlinx 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
viene ritirata. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono la generazione di report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per cui non è stata progettata.Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore Compose, quindi l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un'applicazione personalizzata, funzioni componibili astratte (come metodi di interfaccia), campi o variabili globali che sono espressioni lambda componibili (le variabili e i parametri locali vengono dedotti), o quando si utilizza
ComposeNode
o una funzione componibile correlata.Per gli applicatori personalizzati, le funzioni componibili che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneComposableTarget
per la funzione e per tutti i tipi di parametri lambda componibili. Tuttavia, ti consigliamo di creare un'annotazione contrassegnata conComposableTargetMarker
e di utilizzare l'annotazione contrassegnata anzichéComposableTarget
direttamente. Un'annotazione componibile contrassegnata conComposableTargetMarker
equivale a unComposbleTarget
con il nome completo della classe dell'attributo come parametro di applicazione. Per un esempio di utilizzo diComposableTargetMarker
, vedianroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
ora accetta loadingStrategy sull'API stabile. (Ief3d2)FontLoadingStrategy
è ora un'API stabile. (I1ee35, b/174162090)Supporto del caricamento asincrono dei caratteri in Text (I77057, b/214587005)
Aggiungi l'API bridge per convertire
Font.ResourceLoader
personalizzati inFontFamily.Resolver
. (Ia0060)
Correzioni di bug
- I
FontFamily.Resolver
forniti vengono passati alle composizioni secondarie come Popup. - I
Font.ResourceLoader
forniti vengono passati alle composizioni secondarie come Popup. (I48fa5)
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
viene ritirata. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche alle API
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
sono ora deprecati e non verranno chiamati. UtilizzaBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - È stato introdotto il metodo
destroyDisplayListData
nella classe stubRenderNode
(I1e659, b/216660268) - È stata aggiunta una nuova API che consente di misurare in anticipo i figli di
SubcomposeLayout
che hai precompilato. (I857ea) È stata aggiunta
movableContentOf
, che converte una funzione lambda componibile in una funzione lambda che sposta il suo stato e i nodi corrispondenti in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata alla lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta una nuova chiamata, lo stato viene rimosso definitivamente e gli osservatori vengono avvisati.Se una lambda
movableContentOf
viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, man mano che le chiamate escono dalla composizione e ne entrano di nuove, lo stato viene spostato dalle prime chiamate in uscita a quelle in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi in modo permanente. (Ib4850)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.Paragrafo e MultiParagrafo ora accettano
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
ora contiene il resolver utilizzato per questo layout, deprecatoTextLayoutResult.layoutInput.resourceLoader
in quanto non viene più utilizzato. (Id5a45, b/174162090)Supporto per il caricamento asincrono e facoltativo dei caratteri, con comportamento di fallback. Questo percorso viene utilizzato da Text e TextField ed esposto tramite FontFamilyResolver
Supporto per il precaricamento dei caratteri tramite
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
consente di impostare il contesto globale delle coroutine utilizzato per caricare i caratteri asincroni. (I87fe8, b/174162090)È stata aggiunta
AndroidFont
, una nuova API di basso livello per fornire nuovi tipi di descrittori di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico dell'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.API
Font.ResourceLoaded
estesa per supportare il caricamento dei caratteri facoltativo e asincrono. Non è consigliabile che gli sviluppatori di applicazioni utilizzino questa API direttamente. Per aggiungere nuovi tipi di caratteri, consultaAndroidFont
.La funzione di estensione
Font.AndroidResourceLoader
consente la costruzione di unFont.ResourceLoader
al di fuori della composizione.È stato aggiunto il parametro
loadingStrategy
ai caratteri basati su risorse per consentire il caricamento asincrono quando i riferimenti ai caratteri delle risorse fanno riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)Il costruttore
Typeface(FontFamily)
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza inveceFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Utilizza inveceFontFamilyResolver.preload
(If8e7c, b/174162090)Il costruttore
SubcomposeLayoutState
che accettamaxSlotsToRetainForReuse
è ora deprecato. 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)Espone le funzioni HSV e HSL in
Color
come API non sperimentali. Lo spazio colore Oklab è ora un'API pubblica. (I08fb6, b/180731008)AndroidComposeTestRule.AndroidComposeStatement
deprecato, che non doveva far parte dell'API pubblica e non ti è mai stato utile. (Ibc46b)Ridenominazione della classe kt generata internamente (Ia0b9e, b/174162090)
Rimozione di
FontLoadingStrategy.values
(I42a9d, b/174162090)Il caricatore di caratteri globale ora si chiama
FontFamilyResolver
. (I4f773, b/174162090)Utilizza il nuovo sistema di caricamento dei caratteri per il computer. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
restituisceState<Any>
(I4406c, b/174162090)
Correzioni di bug
- I campi di testo ora vengono mantenuti sopra la tastiera quando sono
selezionati e la tastiera viene mostrata, quando la modalità di inserimento soft è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Il computer utilizza la composizione locale per
FontFamily.Resolver
FontLoader
per computer è deprecato- Nuova fabbrica
createFontFamilyResolver
su computer (I6bbbb, b/174162090) - Il tipo di input della tastiera virtuale non sfarfalla più quando si sposta lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
viene ritirata. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunta di
Modifier.onRotaryScrollEvent()
eModifier.onPreRotaryScrollEvent()
per i dispositivi indossabili con un pulsante laterale rotante (I18bf5, b/210748686) - Aggiungi l'estensione sperimentale
View.createLifecycleAwareRecomposer
(I0cde6)
Contributo esterno
PointerEvent.scrollDelta.y
è ora invertito su Android (ora restituisce 1 anziché -1 se incliniamo la rotellina del mouse verso destra) (Ia9811)
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
viene ritirata. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
FontFamily.canLoadSynchronously
deprecato. Questa proprietà non ha alcun significato semantico. (Ica5ef)- È stato aggiunto il campo dell'identità a
CompositionData
per generare ID invarianti in Layout Inspector. (Ic116e) - Sono stati aggiunti ID dispositivo Wear OS all'elenco dei dispositivi di anteprima (I93232)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.ui:ui-*:1.1.1
viene ritirata. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correzione
NullPointerException
alle oreandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- RTL corretto in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
androidx.compose.ui:ui-*:1.1.0
viene ritirata. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto di overscroll di Android 12
- Miglioramenti al dimensionamento del touch target
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del target di tocco. Ad esempio, il touch target del pulsante si espanderà fino a raggiungere una dimensione minima di 48 x 48 dp, anche se imposti dimensioni più piccole per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, fornendo un comportamento coerente se combini Views e Compose. Questa modifica garantisce inoltre che, quando crei la tua UI utilizzando i componenti di Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
- Supporto stabile per la barra di spostamento
- Viene eseguito l'upgrade di una serie di API sperimentali precedenti alla versione stabile
- Supporto per le versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.ui:ui-*:1.1.0-rc03
viene ritirata. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornato per supportare Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.ui:ui-*:1.1.0-rc01
viene ritirata. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Correzione di un bug che causava la scomparsa delle azioni di scorrimento per l'accessibilità (I7cbfb)
SemanticsNodeInteraction.captureToImage()
ora funzionerà anche seHardwareRenderer.isDrawingEnabled()
èfalse
, attivandolo per la durata della chiamata (Idf3d0)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.ui:ui-*:1.1.0-beta04
viene ritirata. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornato per essere compatibile con Kotlin
1.6.0
Modifiche alle API
- È stata pulita la nullabilità in
androidx.core.view
(I7078a, b/204917439) - Sono state aggiunte API sperimentali che consentono agli utenti di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d)
- Aggiunge il supporto per gli eventi correlati alla rotellina del mouse nel livello UI. (Ia14eb, b/198214718)
- Aggiungi sovraccarichi sperimentali di
Modifier.composed
che accettano chiavi da confrontare per l'uguaglianza e per la qualificazione per l'ottimizzazione del salto. (Ice799, b/205851704) ComposeNotIdleException
ora si estende daException
anziché direttamente daThrowable
. Tieni presente che ciò significa che le clausole catch che rilevavanoException
ora potrebbero rilevareComposeNotIdleException
, cosa che non facevano in precedenza. (I9c217)
Correzioni di bug
- È stato risolto il problema a causa del quale i punti di manipolazione del testo non si spostavano quando cambiava la visibilità dell'IME. (I25f2e)
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.ui:ui-*:1.1.0-beta03
viene ritirata. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- È stato aggiunto il nuovo modificatore Modifier.onPlaced per consentire l'osservazione della modifica del posizionamento. Pertanto, è possibile apportare ulteriori modifiche all'offset del modificatore figlio in base alla modifica del posizionamento osservata. (I558fd)
- Rimossi
InjectionScope.flush()
eInjectionScope.dispose()
. Lo svuotamento di tutti gli eventi e l'eliminazione dell'ambito ora avvengono alla fine del metodo perform*Input() chiamato come prima. (I2bed8) - Rimossi
MultiModalInjectionScope.Touch
eMultiModalInjectionScope.Mouse
. Per inserire eventi di tocco e mouse per i gesti multimodali, ora puoi utilizzareMultiModalInjectionScope.touch()
eMultiModalInjectionScope.mouse()
, entrambi accettano una lambda che ha l'ambito del ricevitore di quella modalità. (Idde18)
Correzioni di bug
- Il valore predefinito di
durationMillis
inTouchInjectionScope.swipeWithVelocity
ora viene calcolato in modo che lo scorrimento sia fattibile. (I19deb)
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.ui:ui-*:1.1.0-beta02
viene ritirata. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- È 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).
- Nuove API di animazione per supportare gli strumenti. In particolare, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in una transizione. (I4116e)
Contributo esterno
- Aggiunto Modifier.pointerHoverIcon (I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-beta01
viene ritirata. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
- È 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). - Nuove API di animazione per supportare gli strumenti. In particolare, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in una transizione. (I4116e)
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
viene ritirata. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Rimuovi
ExperimentalComposeUiApi
daViewRootForInspector
eLayoutInfo.ownerViewId
(I5c2e3) - È stato aggiunto un sovraccarico senza figli per Layout, con una maggiore efficienza (Ib0d9a)
- Rimozione di
InternalCompilerApi
dai metodi Composer che devono essere chiamati tra moduli diversi (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
ora restituisce ilSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db)- È stato aggiunto CompositionLocal a LocalInputModeManager per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786)
- È stato aggiunto
viewConfiguration: ViewConfiguration
aLayoutInfo
per consentire ai consumatori di ottenere il valore corretto per elementi come il timeout della pressione prolungata. (I76ca6)- Aggiunta di
viewConfiguration: ViewConfiguration
aInjectionScope
per consentire ai test di modificare l'inserimento dell'input in base a elementi come il timeout della pressione prolungata o la tolleranza al tocco. - È stata modificata la durata predefinita della pressione prolungata e del doppio tocco per l'input da tocco e mouse in modo che si basi sui valori in
InjectionScope.viewConfiguration
.
- Aggiunta di
- Implementazione di ExposedDropdownMenu basato su ExposedDropdownMenuBox con TextField e DropdownMenu all'interno (If60b2)
- dismissOnOutsideClick è stato aggiunto a PopupProperties, sostituendo dismissOnClickOutside, che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti dell'ancora, fornendo un controllo più preciso sull'invocazione o meno di onDismissRequest. Ad esempio, può essere utile per impedire la chiusura dell'ancora quando viene toccata.
- updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo di basso livello sui flag passati dal popup a WindowManager di Android. Il parametro della funzione lambda saranno i flag calcolati dai valori PopupProperties che generano flag WindowManager, ad esempio focusable. Il risultato della lambda saranno i flag finali che verranno passati a WindowManager di Android. Per impostazione predefinita, updateAndroidWindowManagerFlags lascia invariati i flag calcolati dai parametri. Questa API deve essere utilizzata con cautela, solo nei casi in cui il popup ha requisiti di comportamento molto specifici. (I6e9f9)
Recomposer.state
è stato ritirato e sostituito daRecomposer.currentState
per modificare il suo tipo in StateFlow (Ic2ab3, b/197773820)- Aggiunta di
flush()
edispose()
aInjectionScope
. Utilizzali quando vuoi svuotare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito, rispettivamente. (Ifb73a) - È stato aggiunto
performScrollToNode(matcher: SemanticsMatcher)
che scorrono un contenitore scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8) InjectionScope
ora implementaDensity
, consentendoti di convertire facilmente tra px e dp inperformTouchInput
e altri. (I8fe1f)
Correzioni di bug
- AndroidView ora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla sua visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Correzione di un problema per cui a volte WearOS SwipeToDismissBox non gestisce gli scorrimenti. (I9387e)
- Il tempo predefinito tra gli eventi di input inseriti è stato modificato da 10 ms a 16 ms. Ciò potrebbe modificare il risultato dei test che eseguono gesti di input, come uno scorrimento specifico. (I829fd)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
viene ritirata. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- È stato aggiunto il supporto per la comunicazione tra modificatori (Id5467, b/198826874)
- Sono stati aggiunti puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Aggiunta di
density: Density
elayoutDirection: LayoutDirection
aLayoutInfo
. In questo modo, i consumatori diLayoutInfo
possono interpretare correttamente le dimensioni e la posizione esposte inLayoutInfo
. (I002f1) - È stato aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Utilizza
performMouseInput
per iniziare a inviare eventi del mouse oppure invia eventi del mouse tramite la proprietàMouse
diMultiModalInjectionScope
durante un gesto di input multimodale conperformMultiModalInput
. ConsultaMouseInjectionScope
per la documentazione dell'API disponibile. (Iaa4a8, b/190493367)
Correzioni di bug
- È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lazy che non lazy) rispetto allo scorrimento (I6cdb0)
TouchInjectionScope.swipeWithVelocity
migliorato. Ora accetta una gamma più ampia di variabili di input e suggerisce modifiche all'input se non è possibile creare uno swipe (I40fbe, b/182477143)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
viene ritirata. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
PointerEvent
ora ha unPointerEventType
per supportare gli eventi al passaggio del mouse. (I091fa)- Consentire ai bambini di accettare l'input del puntatore al di fuori dei limiti dell'input del puntatore del genitore. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
performGesture
eGestureScope
sono stati ritirati e sostituiti daperformTouchInput
eTouchInjectionScope
. (Ia5f3f, b/190493367)- È stato aggiunto
touchBoundsInRoot
aSemanticsNode
che include le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214) - Esegui di nuovo l'implementazione di inspectable (I927bc, b/191017532)
- Modificato il nome del parametro di ispezionabilità in modo che corrisponda a quello composto (I3a482, b/191017532)
Sono stati introdotti
performTouchInput
eTouchInjectionScope
in sostituzione diperformTouchInput
eTouchInjectionScope
, aprendo la strada ad altre modalità (come il mouse).TouchInjectionScope
ha gli stessi metodi diGestureScope
, con l'eccezione dimovePointerTo
emovePointerBy
, che sono stati rinominatiupdatePointerTo
eupdatePointerBy
. Tutti gli altri metodi sono gli stessi.Il comportamento di
TouchInjectionScope
è quasi identico aGestureScope
, con due piccoli dettagli:- Quando si invia un evento down mentre i puntatori sono stati spostati senza
inviare un evento move (in altre parole, è stato
utilizzato
updatePointerTo()
, ma nonmove()
, e poi viene chiamatodown()
), l'implementazione precedente avrebbe fatto avanzare l'ora dell'evento e inviato un evento move prima di inviare l'evento down. La nuova implementazione invia comunque l'evento spostamento, ma non fa avanzare l'ora dell'evento in questo scenario specifico. - Quando si invia un evento di sollevamento mentre i puntatori sono stati spostati senza inviare un evento di movimento (come sopra), l'implementazione precedente avanzava l'ora dell'evento e inviava un evento di movimento prima di inviare l'evento di sollevamento. La nuova implementazione non lo fa: le nuove posizioni dei puntatori verranno riflesse solo tramite l'evento di rilascio.
Infine,
TouchInjectionScope
introduce un nuovo metodocurrentPosition(pointerId: Int)
per ottenere la posizione attuale del puntatore specificato. (If1191, b/190493367)- Quando si invia un evento down mentre i puntatori sono stati spostati senza
inviare un evento move (in altre parole, è stato
utilizzato
Correzioni di bug
- Consenti al clip di estendere i limiti del touch target oltre la regione del clip per scopi di touch target minimo. (I43e10, b/171509422)
- È stato aggiunto il supporto per lo scorrimento eccessivo sui dispositivi Android 12. (Iccf3c, b/171682480)
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
viene ritirata. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Aggiornamento di Compose
1.1.0-alpha03
in modo che dipenda da Kotlin1.5.30
. (I74545)
Modifiche alle API
- Aggiunta di
Modifier.inspectable
per il wrapping di altri modificatori. (I1909b, b/191017532) - È stata aggiunta l'API
BlurredEdgeTreatment
per semplificare i casi d'uso della sfocatura in combinazioni più comunemente utilizzate di flag di clip e TileMode. La maggior parte dei casi d'uso prevede di lasciare che i contenuti sfocati vengano visualizzati al di fuori dei limiti dei contenuti originali e di sfocare le regioni al di fuori di questi limiti con il nero trasparente oppure di ritagliare i contenuti in base ai limiti dei contenuti campionando il bordo più vicino per i kernel di sfocatura che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547) - Aggiunto il supporto per RenderEffect in Compose for Desktop. È stato introdotto OffsetEffect e il modificatore di sfocatura come modo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia di composizione. (I0f6aa, b/166927547)
- È stata introdotta l'API RenderEffect
che può essere configurata facoltativamente su
un
Modifier.graphicsLayer
per modificare i contenuti del livello stesso. Può essere utilizzato per sfocare i contenuti di un elemento componibile e degli elementi componibili secondari all'interno di una gerarchia di composizione. (I47c4d, b/166927547) - AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- È stata aggiunta la dimensione minima del touch target a ViewConfiguration per l'utilizzo nell'input semantico e del puntatore per garantire l'accessibilità. (Ie861c)
- Aggiungi il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per RenderEffects basati sulla sfocatura. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ehasScrollToKeyAction
sono ora API stabili (I142ae, b/178483889)- È stato aggiunto un metodo di test per ottenere i limiti ritagliati. (I6b28e)
Correzioni di bug
- È stato rimosso il metodo isBounded da BlurredEdgeTreatment a favore del controllo esplicito se il parametro shape è nullo. (I85d68)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
viene ritirata. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche alle API
- PointerEvent ora supporta la lettura dello stato dei pulsanti del mouse e dello stato dei modificatori della tastiera. (I6310c, b/180075467)
- Le gesture inserite ora utilizzano l'ora di MainTestClock come
fonte di riferimento per l'ora. L'ora corrente per gli eventi inseriti in
performGesture
verrà inizializzata all'ora corrente di MainTestClock. (Ifb364, b/192064452) - Aggiunto il costruttore
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Aggiunta della classe DpSize (I7abb1, b/194219828)
Correzioni di bug
- Aggiornamento dell'analisi XML della grafica vettoriale per supportare ColorStateList come proprietà di tinta del colore principale su VectorDrawable. (I86915, b/195668138)
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
viene ritirata. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche alle API
RelocationRequester.bringIntoView
ora accetta un rettangolo come parametro, il che ci consente di visualizzare una parte di un componente componibile (Ice2c5, b/194330245)AnimatedImageVector
e le API correlate si trovano ora nel nuovo moduloandroidx.compose.animation:animation-graphics
. (I60873)- È stato aggiunto un modificatore sperimentale per gestire le richieste di trasferimento. (I65a97, b/178211874)
È stata introdotta l'API BrushPainter per supportare il disegno di un pennello arbitrario all'interno di un pittore, in modo simile a ColorPainter
Aggiornamento dell'API Brush per includere un parametro di dimensione intrinseca interrogato all'interno di BrushPainter (Ia2752, b/189466433)
Aggiornamento del metodo DrawScope#drawImage che utilizza i rettangoli di origine e destinazione per utilizzare un parametro FilterQuality facoltativo. Questa opzione è utile per la pixel art che deve essere pixelata quando viene ingrandita. Aggiornamento di BitmapPainter e del composable Image per utilizzare anche un parametro FilterQuality facoltativo (Ie4fb0, b/180311607)
Aggiunto il metodo
GestureScope.advanceEventTime
per avere un maggiore controllo sulla tempistica degli eventi in un gesto (Ibf3e2)
Correzioni di bug
- Per supportare meglio il concatenamento dei
modificatori di disegno, assicurati che l'implementazione di Modifier.paint
chiami drawsContent.
In precedenza, Modifier.paint era previsto come nodo foglia nella
catena di modificatori, ma in questo modo impedisce
di configurarlo su un contenitore componibile (ad es. box)
o di aggiungere decorazioni aggiuntive, ad esempio
Modifier.paint().border()
. Se Modifier.paint chiama drawContent dopo aver disegnato i contenuti del pittore specificato, otteniamo una maggiore coerenza del comportamento con il pattern del modificatore. (Ibb2a7, b/178201337, b/186213275) - Le finestre di dialogo ora seguono il comportamento di ridimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388) - Spostato
InfiniteAnimationPolicy
in :compose:ui (I5eb09, b/160602714) - Lo scorrimento tramite azioni semantiche per elenchi pigri e componenti di scorrimento regolari ora è animato (Id9066, b/190742024)
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.ui:ui-*:1.0.5
viene ritirata. 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.ui:ui-*:1.0.4
viene ritirata. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.ui:ui-*:1.0.3
viene ritirata. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.ui:ui-*:1.0.2
viene ritirata. La versione 1.0.2 contiene questi commit.
Aggiornato per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.ui:ui-*:1.0.1
viene ritirata. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.ui:ui-*:1.0.0
viene ritirata. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o superiore nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.ui:ui-*:1.0.0-rc02
viene ritirata. La versione 1.0.0-rc02 contiene questi commit.
Correzioni di bug
- Le finestre di dialogo ora seguono il comportamento di ridimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.ui:ui-*:1.0.0-rc01
viene ritirata. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Dividi il modulo ui-tooling in
ui-tooling
eui-tooling-preview
(Iefa28, b/190649014)
Modifiche alle API
- Rimossi i flag sperimentali
FocusManager#moveFocusIn
eFocusManager#moveFocusOut
ritirati (I227d7, b/170154986, b/186567354, b/168510304) - Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
useDefaultMaxWidth
inPopupProperties
è stato rinominato inusePlatformDefaultWidth
. (I05710)- Ora le finestre di dialogo possono utilizzare l'intera larghezza dello schermo. (I83929, b/190810877)
- È stato aggiunto il supporto sperimentale per le rappresentazioni dei colori HSV e HSL. (Id7cf8, b/180731008)
Modifiche al comportamento
- Compose
@Preview
ora fornisce unLocalActivityResultRegistryOwner
che ti consente di visualizzare l'anteprima dei composable che utilizzano API comerememberLauncherForActivityResult()
che dipendono dall'esistenza di questo proprietario. (Ib13d1, b/185693006) - Compose
@Preview
ora fornisce unLocalOnBackPressedDispatcherOwner
che ti consente di visualizzare l'anteprima dei composable che utilizzano API comeBackHandler
che dipendono dall'esistenza di questo proprietario. (Ia1c05, b/185693006)
Correzioni di bug
- Dispositivo
InfiniteAnimationPolicy
spostato suandroidx.compose.ui:ui
(I5eb09, b/160602714) - AnimatedImageVector è stato rimosso temporaneamente per modificare la struttura del modulo. (I41906, b/160602714)
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.ui:ui-*:1.0.0-beta09
viene ritirata. La versione 1.0.0-beta09 contiene questi commit.
Modifiche alle API
- Modifica enum Role e LiveRegionMode in classi inline con costruttore privato (Id1890)
- KeyboardCapitalization viene convertito in una classe inline. (Id5a1c)
- Modifica HapticFeedbackType in classe inline. (I255ec)
- Modifier.pointerInteropFilter è @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis e TextDirection sono ora classi in linea. (I212fe)
- TextOverflow viene modificato in una classe in linea. (I433af)
- FontStyle è ora una classe inline. (I9e48b)
Correzioni di bug
- Per ora, le costanti chiave sono @ExperimentalComposeUiApi. Il codice che utilizza l'API può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
- Ora è possibile eseguire test di composizione su Robolectric. Finora sono state identificate le seguenti limitazioni:
- Non esiste una bitmap nativa, quindi
ImageBitmap()
genera un'eccezione NullPointerException. - Non è presente alcun disegno, quindi
captureToImage()
attenderà indefinitamente il passaggio di disegno successivo (ovvero si blocca). - Non è stato caricato alcun carattere, quindi qualsiasi testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
ComposeTestRule.waitUntil {}
non esegue il thread principale durante l'attesa, il che lo rende di fatto uguale aComposeTestRule.mainClock.advanceTimeUntil {}
In futuro è previsto che vengano identificate ulteriori limitazioni. (I284fa)
- Non esiste una bitmap nativa, quindi
Regole del profilo aggiunte
Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
che si trova nella directorysrc/main
o in una directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile, utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole assumono una delle due forme per scegliere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
è uno o più dei 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 di destinazione. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrebbe un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametri e i tipi restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
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 con il flag
S
indica che viene chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che viene chiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.
Come funziona?
- Le librerie possono definire queste regole, che verranno incluse nei file AAR. Quando viene creata un'app che include questi artefatti, queste regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app viene installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione per migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che questa operazione non avrà alcun effetto sulle applicazioni sottoposte a debug.
Versione 1.0.0-beta08
2 giugno 2021
androidx.compose.ui:ui-*:1.0.0-beta08
viene ritirata. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
- L'enumerazione
NestedScrollSource
viene sostituita da una classe inline. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
è stato rinominato inFocusManager.clearFocus(force = true)
(Ia0c41)- È stato eseguito il refactoring degli utilizzi di enum per le classi inline per evitare problemi con le istruzioni esaustive quando vengono aggiunti nuovi valori enum. (I2b5eb)
- Vuoi rimuovere
@ExperimentalComposeUiApi
daPopupProperties
? (I01fa6) PointerType
è stato modificato da un'enumerazione a una classe inline (If5058)- Le proprietà semantiche ContentDescription e Text non sono più valori singoli, ma elenchi. In questo modo, possono essere uniti così come sono anziché concatenati. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
Modifier.focusModifier()
è deprecato e sostituito daModifier.focusTarget()
(I6c860)Modifier.onSizeChanged()
eModifier.onGloballyPositioned()
non sono più funzioni inline (I727f6, b/186109675)- L'enumerazione
KeyboardType
viene sostituita da una classe inline. (I73045, b/187055290) - Sostituito l'enum
FocusState
con un'interfacciaFocusState
(Iccc1a, b/187055290) - L'enum ImeAction viene sostituito da una classe inline. (I18be5, b/187055290)
PlaceholderVerticalAlign
viene convertito in una classe inline. (If6290)- TextUnitType è ora una classe inline. (I4cba9)
- Le funzioni
AnnotatedString.withAnnotation
ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.
Correzioni di bug
- È stato corretto il bug introdotto nella versione beta07 in cui gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica della posizione, senza dover chiamare change.consumePositionChange nei callback onDrag (I42fc4, b/185096350, b/187320697) - È stato corretto LayoutModifiers che forniva linee di allineamento. È stato corretto un bug che impediva la misurazione del genitore quando le linee di allineamento dei figli cambiavano. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno riportate. (Ieb67d, b/177926591)
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.ui:ui-*:1.0.0-beta07
viene ritirata. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- Aggiunta dell'interfaccia
ViewRootForInspector
per l'utilizzo nello strumento di controllo (Ib70df) SubcomposeLayoutState
ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di slot anziché eliminarli per riutilizzarli la prossima volta che ne avremo bisogno (Ieb981).- L'enum KeyEventType viene sostituito da una classe inline. (Id670a, b/187055290)
- L'enumerazione
FocusDirection
viene sostituita da una classe inline. (Ib6d03, b/187055290, b/184086802) - Introduce la possibilità di sollevare lo stato di SubcomposeLayout, che consente di precomporre i contenuti in un elemento slotId richiesto, il che velocizzerebbe il passaggio di misurazione successivo, in quanto la volta successiva che proviamo a eseguire la composizione secondaria con lo slotId specificato non sarà necessaria alcuna composizione. (I42580, b/184940225)
- Aggiunta maniglia di selezione dei clip (Iff80d, b/183408447)
- Sono state rimosse le API inutilizzate relative al supporto di Layout Inspector. (I2ac78)
Correzioni di bug
- LazyColumn/Row ora mantiene attivi (non eliminati) fino a due elementi precedentemente visibili anche quando sono già stati scorri. Ciò consente al componente di riutilizzare le composizioni secondarie attive quando sarà necessario comporre un nuovo elemento, migliorando le prestazioni di scorrimento. (Ie5555)
TextGeomerticTransform
eTextDecoration
suAnnotatedString
verranno applicati così come sono. (I61900, b/184760917)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.ui:ui-*:1.0.0-beta06
viene ritirata. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
- Risolvi il conflitto con il gesto di navigazione (I1145e)
@ComposeCompilerApi
non più@RequiresOptIn
(Iab690)- Sono state aggiunte API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017).
- È stato aggiunto
SemanticsActions.ScrollToIndex
per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice eSemanticsProperties.IndexForKey
per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni vengono implementate da LazyList.- Aggiunta di
SemanticsNodeInteraction.performScrollToIndex
che scorrono un elenco fino all'indice specificato eSemanticsNodeInteraction.performScrollToKey
che scorrono un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
- Aggiunta di
- Aggiunta di ownerViewId a GraphicLayerInfo (I19f62)
- Sono stati aggiunti overload di Font() per caricare i caratteri da asset, file e FileDescriptor (I5d382)
- Aggiunta dell'API di accessibilità
error
che consente di contrassegnare un nodo contenente input non validi (I12997, b/180584804, b/182142737) - Aggiunte
Font()
sovraccarichi per caricare i caratteri da asset, file e FileDescriptor (I43007) - Supporto del salvataggio di AnnotatedString in
TextFieldValue.Saver
. Aggiunte le funzioni di utilitàaddTtsAnnotation
e withAnnotation aAnnotatedString.Builder
(I8cbdc, b/178446304) - Aggiunta della funzione di costruzione TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.ui:ui-*:1.0.0-beta05
viene ritirata. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- Aggiunte le funzionalità sperimentali
FocusManager.moveFocus(In)
eFocusManager.moveFocus(Out)
(Ic5534, b/183746743) - Aggiunta dell'API sperimentale
performTextInputSelection
(I2dcbb, b/178510628) - L'interfaccia
InputEventCallback
è obsoleta. Non è stato possibile utilizzare l'interfaccia in nessuna API pubblica e non è stato utilizzato nel codice. (I34a02, b/184003208) - Funzione
TextLayoutResult/createTextLayoutResult
ritirata. È una funzione pubblica inutilizzata aggiunta per i test. La funzione non esegue alcuna operazione utilizzabile per le API di composizione del testo. La funzione è ora deprecata e verrà rimossa in un secondo momento. (I80413)
Correzioni di bug
- Correzione delle azioni di scorrimento per l'accessibilità
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Anziché scorrere fino alla fine dell'area scorrevole, ora scorrerà di una schermata nella direzione indicata. (Ieccb0) - I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
androidx.compose.ui:ui-*:1.0.0-beta04
viene ritirata. La versione 1.0.0-beta04 contiene questi commit.
Modifiche alle API
- Rinomina
hideSoftwareKeyboard
eshowSoftwareKeyboard
suSoftwareKeyboardController
inhide()
eshow()
rispettivamente.- Fornisci l'interfaccia CompositionLocal completa per LocalSoftwareKeyboardController, consentendo di impostarla (particolarmente utile nei test) (I579a6)
- È stata aggiunta l'API di accessibilità LiveRegion. Se il nodo è contrassegnato come regione in tempo reale, i servizi di accessibilità notificheranno automaticamente all'utente le modifiche (Idcf6f, b/172590946).
- Viene introdotto TextOverflow.Visible. (Ic8f89)
Correzioni di bug
- Risolto il problema per cui gli elementi di
LazyColumn
/LazyRow
posizionati sui bordi venivano posizionati in modo errato dopo lo scorrimento rapido (Ie4d13, b/183877420) AndroidViewBinding
ora rimuove correttamente i frammenti inseriti tramiteFragmentContainerView
quandoAndroidViewBinding
viene rimosso dalla gerarchia di composizione. (Ib0248, b/179915946)AndroidViewBinding
ora nidifica correttamente i frammenti gonfiati tramiteFragmentContainerView
quando il tuoComposeView
si trova all'interno di unFragment
, risolvendo i problemi relativi al salvataggio e al ripristino dello stato di questi frammenti. (I70eb0, b/179915946)- Compose ViewBinding ora dipende da
Fragment
1.3.2
e ora mostra in modo coerente i fragment visualizzati tramiteFragmentContainerView
dopo le modifiche alla configurazione. (I0743d, b/179915946)
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta03
viene ritirata. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
- Controllo posticipato delle dipendenze ViewTree di ComposeView (I8dbbf, b/182466548)
- Aggiunti parametri facoltativi
startX
/endX
estartY
/endY
alle funzioniswipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
. (I49e2d, b/182063305)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta02
viene ritirata. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I5951e, b/168778053) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I84472, b/168778053) - Sono stati rimossi i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Ha contrassegnato il seguente
SemanticsMatchers
come @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Sono stati aggiunti i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correzioni di bug
- Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
androidx.compose.ui:ui
non dipende più da AppCompat o Fragment. Se utilizzi un ComposeView nella tua applicazione e utilizzi Fragment e/o AppCompat, assicurati di utilizzare AppCompat 1.3+ / Fragment 1.3+, queste versioni sono necessarie per impostare correttamente i proprietari del ciclo di vita e dello stato salvato richiesti per ComposeView. (I1d6fa, b/161814404)- Correzione di
rememberSaveable { mutableStateOf(0) }
danneggiato quando viene utilizzato all'interno di una destinazione di navigazione-composizione. (I1312b, b/180042685, b/180701630) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I658b6, b/168778053) - È stata corretta una rara eccezione NoSuchElementException in
ComposeRootRegistry
'stearDownRegistry()
(Iddce1)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.ui:ui-*:1.0.0-beta01
viene ritirata. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 Beta.
Modifiche alle API
- È stato aggiunto il callback onStart a
detectDragGestures
(I67269, b/179995594) - I modificatori per il dimensionamento in base alle dimensioni intrinseche non sono più sperimentali. (I15744)
- MeasureBlocks è stato rinominato MeasurePolicy, che è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
è stato sostituito da[Mutable]InteractionSource
- Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
- Anziché passare
interactionState = remember { InteractionState() }
a componenti comeButton
eModifier.clickable()
, utilizzainteractionSource = remember { MutableInteractionSource() }
. - Invece di:
Interaction.Pressed in interactionState
, dovresti utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState(). - Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in CompositionLocals (I53520)
- Sono stati rimossi i metodi LayoutCoordinates ritirati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- Alias di tipo sostituiti dai tipi sottostanti:
ColorStop
è diventataPair<Float, Color>
SpanStyleRange
ora è `AnnotatedString.RangeParagraphStyleRange
è diventataAnnotatedString.Range<ParagraphStyle>
StringAnnotation
è diventataAnnotatedString.Range<String>
- (I8dd1a)
- È stata creata una nuova TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
- Placeable ora espone measuredSize, che rappresenta le dimensioni effettive misurate dal layout secondario. Queste dimensioni potrebbero non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
- Aggiungi il modificatore selectionGroup che consente di contrassegnare la raccolta di schede o pulsanti di opzione per scopi di accessibilità (Ie5c29)
Il
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
ora è obbligatorio anziché facoltativo.Questa modifica rimuove un potenziale errore di tipo per i tipi non nullabili per i quali non è stata fornita alcuna fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non annullabile.
Per i tipi che accettano valori Null, valuta la possibilità di fornire
{ null }
come factory predefinita.Sconsigliamo di utilizzare le impostazioni internazionali con tipi non annullabili, a meno che non sia possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda
defaultFactory
deve generare un'eccezione. Tuttavia, generare un'eccezione significa che i consumer del locale avranno una dipendenza implicita dalla sua fornitura che non viene applicata dal sistema di tipi. (Ifbd2a)Sono stati rimossi i metodi ritirati dai moduli UI (I646f6)
I modificatori di dimensioni sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)
Modifier.tapGestureFilter
è stato rimosso. Utilizza inveceModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Il consumo parziale è stato rimosso dal sistema di input del puntatore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)
L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è stato spostato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
imageResource e vectorResource ora sono funzioni di estensione rispettivamente per i companion ImageBitmap e ImageVector. Sono state eliminate
load{Image,Vector,Font}Resource
funzioni. (I89130)AnimationClockObservable e le relative sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
Providers è stato rinominato in CompositionLocalProvider
- Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è diventata una proprietà componibile di primo livello anziché una funzione componibile di primo livello.
- CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è diventata un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata resa un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
- Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
- I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe di file di Kotlin, la compatibilità binaria verrà interrotta, ma non quella del codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
è stato rimosso da compose:ui. Utilizza quello diandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
eLocalViewModelStoreOwner
sono stati rimossi da compose:ui. Utilizza quelli diandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scrollable anziché la classe ScrollableController (I4f5a5, b/174485541, b/175294473)
Il supporto di CustomEvens da PointerInputModifier è stato rimosso (I02707, b/175294473)
SnapshotStateObserver non è più sperimentale (Id2e6a)
Sono state eliminate alcune API ritirate in precedenza (Ice5da, b/178633932)
longPressGestureFilter e doubleClickGestureFilter sono stati rimossi. Utilizza Modifier.pointerInput con funzioni di assistenza, ad esempio detectTapGestures (I2fedf, b/175294473)
Rimossa l'API String.format Utilizzi refactoring in vari metodi toString per non sfruttare String.format internamente. (Id1290)
Rimozione delle asserzioni dp (I798d2)
Rimossa androidx.compose.runtime:runtime-dispatch (I55feb)
Le azioni di testo ora controllano automaticamente lo stato attivo (I13777, b/179648629)
Rimozione di
runBlockingWithManualClock
(I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con numeri interi (I81298)
FlingConfig è stato rinominato FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché i decadimenti predefiniti. (I02b86, b/175294473)
È stata aggiunta una funzione helper utile per impostare la stessa azione per tutti i callback ImeAction (I63447, b/179226323)
Callback SoftwareKeyboardController rimosso da tutti i campi di testo da sostituire a breve con una nuova API. (Iae869, b/168778053)
FontSpan e FontWeigthStyleSpan non vengono più utilizzati e sono stati rimossi. (Ie5b56, b/177423444)
Sono state apportate le seguenti modifiche all'API Material:
- È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione del padding predefinito.
- Riorganizzazione dei parametri in BackdropScaffold in modo che seguano le linee guida dell'API per i parametri obbligatori prima di quelli facoltativi.
- Il parametro
icon
in BottomNavigationItem è stato spostato doposelected
eonClick
. - Il parametro
alwaysShowLabels
in BottomNavigationItem è stato rinominato inalwaysShowLabel
. - È stato rinominato il parametro
bodyContent
in alcuni componenti incontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo di parametri non è cambiato, non si verificherà un errore nel codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza. - Aggiunto il parametro
secondaryVariant
adarkColors()
. Questo colore è in genere lo stesso disecondary
nel tema scuro, ma viene aggiunto per coerenza e per una maggiore personalizzazione. - Rimossi ElevationDefaults e animateElevation() dalla superficie dell'API pubblica perché non erano di uso comune / utili.
- Rinominato
onValueChangeEnd
inSlider
inonValueChangeFinished
e reso nullabile. - Il parametro
text
inSnackbar
è stato rinominato incontent
per coerenza. - È stato aggiunto il parametro
contentPadding
aDropdownMenuItem
per consentire la personalizzazione del padding predefinito econtent
è diventata un'estensione diRowScope
. ModalDrawerLayout
rinominato inModalDrawer
.BottomDrawerLayout
rinominato inBottomDrawer
.- (I1cc66)
Correzioni di bug
- È stata aggiunta un'API per utilizzare le risorse AnimatedVectorDrawable in Compose. Utilizza
animatedVectorResource per caricare un file
<animated-vector>
XML come AnimatedImageVector e animarlo con painterFor (I8ea91) - È stata aggiunta una nuova API LocalSoftwareKeyboardController di composizione locale per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
viene ritirata. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Il supporto per ViewGroups è stato rimosso da UiApplier. I composable emitView ritirati sono stati rimossi. (Ifb214)
- Modifier.pointerInput ora richiede chiavi remember per indicare quando la coroutine di rilevamento dell'input del puntatore deve essere riavviata per nuove dipendenze. (I849cd)
- CompositionReference rinominato in CompositionContext (I53fcb)
- Bounds è stato rinominato DpRect (I4b32a)
- Aggiornamento dei test: hasText() controllerà sia il testo di input sia il testo dell'etichetta/suggerimento/segnaposto nel campo di testo (Iab803)
- I composable viewModel() e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Ora, per utilizzarla, devi aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Consenti l'azione Nullable in AccessibilityAction, modifica l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction da CharSequence a String (I0dc82)
- Per adattarsi meglio alle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato BitmapPainter per essere parallelo a VectorPainter. (Iba381, b/174565889)
- API di test delle sottostringhe migliori con la sottostringa ora come argomento (Icbe78)
- È stato aggiunto un
Modifier.focusOrder()
che accetta un FocusRequester senza specificare un ordine di messa a fuoco personalizzato di una lambda. Ciò è utile quando dobbiamo specificare solo un riferimento ma non un ordine di messa a fuoco personalizzato per un elemento componibile (I4f52a, b/179180978) - ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi di destrutturazione e copy() sono stati rimossi da diverse classi in cui venivano utilizzati raramente. (I26702, b/178659281)
- Il popup è stato spostato per essere specifico della piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e
isFocusable
è stato spostato in un parametrofocusable
inPopupProperties
(Ieeea5) - La finestra di dialogo è stata spostata per essere specifica della piattaforma. È stato rinominato AndroidDialogProperties in DialogProperties. (I4ef69, b/179138130)
- LayoutNode è stato reso interno (I8a7b1, b/175103944)
- Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)
- loadFontResource è deprecato. Utilizza fontResource. Le API imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecate. Usa painterResource. (I6b809)
- Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta espressioni lambda che restituiscono valori float anziché valori float diretti. (If4a35, b/178657186)
- Aggiunta la semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per controllare la semantica (I8e07a)
- Reso interno OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944)
- toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)
- IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)
- L'API Snapshot è stata aggiornata per essere più coerente con le linee guida per le API, nonché per nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
- Sono state aggiunte azioni semantiche di espansione e compressione. Aggiunta di expand e halfExpand in ModalBottomSheetState (Ib5064)
- Modifier.dragGestureFilter è stato ritirato. Utilizza invece
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per i trascinamenti su un solo asse (I0ba93, b/175294473) - Rinominate le impostazioni di Ambienti in modo che corrispondano al nuovo nome Ambient -> CompositionLocal. Gli ambienti venivano denominati AmbientFoo, ora le variabili locali di composizione vengono denominate LocalFoo. (I2d55d)
- BaseTextField deprecato è stato rimosso. Utilizza invece BasicTextField. (I71368)
- 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 }
. Devi utilizzarerememberSaveable { mutableStateOf(0) }
, che salverà e ripristinerà automaticamente il tipo utilizzato all'interno di MutableState se può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo overload di rememberSaveable che ha il parametrostateSaver
. L'utilizzo sarà simile al seguente:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Aggiunta della semantica delle password per l'accessibilità (I231ce)
- È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
- Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d) snapshotFlow
ewithMutableSnapshot
non sono più sperimentali (I6a45f)- Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno la ricomposizione finché le coroutine secondarie di composizione non saranno completate. Recomposer.shutDown rinominato in cancel per contrastare close. (Ib6d76)
- UiSavedStateRegistry è stato rinominato SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato AmbientSaveableStateRegistry ed entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
- L'artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
- Molte API obsolete da tempo nel pacchetto ui vengono eliminate. (I2f2dc)
- L'artefatto compose:runtime-dispatch è ora ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher si trova in compose:ui. (Ib5c36)
- Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
view.captureToImage()
è stato rimosso senza alcuna sostituzione. (I7fcd2)- È stata introdotta l'API ColorMatrix utilizzata per modificare i valori RGB dei contenuti di origine. È stata eseguita la refactoring dell'API ColorFilter per renderla un'interfaccia e corrispondere all'implementazione di PathEffect. (Ica1e8)
- Aggiungi il parametro layoutDirection a createOutline di Shape. Ciò consente di creare forme che tengono conto della direzione del layout. (I57c20, b/152756983)
- onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
- È stato introdotto un elemento di contesto della coroutine
InfiniteAnimationPolicy
che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato alcun criterio, tranne quando vengono eseguiti test conComposeTestRule
. (I50ec4, b/151940543) - canDrag è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
- È stato rinominato LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre LayoutCoordinates del modificatore principale. In questo modo si otterranno casi d'uso più completi per onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
- È stato rimosso unregisterProvider di SaveableStateRegistry. Ora registerProvider() restituisce un oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739).
- rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Rimozione di CoreText e CoreTextField dall'API pubblica
- Rimozione dell'overload di SelectionContainer obsoleto
- (I99c19)
- I test in cui Compose viene utilizzato in gerarchie che vengono aggiunte/rimosse direttamente a WindowManager sono ora più stabili. (Ie81ed, b/175765614)
- È stato rimosso Recomposer.current(). [Abstract]ComposeView ora per impostazione predefinita crea Recomposer in modo differito e con ambito finestra, basati su ViewTreeLifecycleOwner per la finestra. La ricomposizione e i tick di animazione basati su withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host è interrotto. (I38e11)
- Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato di composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è ritirata. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
- EditCommands accetta AnnotatedString. Tuttavia, questa è una modifica solo dell'API e la modifica del testo in più stili non è ancora implementata. (I4c3ea)
- Uptime e Durata sono stati rimossi. (Ib9bf4, b/177420019)
- CompositionData.asTree() e le API correlate sono state spostate nel modulo ui-tooling-data separato e contrassegnate come sperimentali (Ic95b8)
- I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione da destra a sinistra. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato il mirroring automatico. (I61040, b/152756983)
L'API a cui fa riferimento il plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica binaria che causa interruzioni. (I3b922, b/169406779)
Rimozione della funzione StringBuilder.deleteAt resa pubblica per errore (Id6ed9)
Correzioni di bug
- Le ComposeView inserite nelle gerarchie di visualizzazione che sono elementi secondari di un'altra composizione ora ospitano le composizioni secondarie dei relativi elementi principali (I92883)
- È stata aggiornata l'API imageFromResource di Compose per riutilizzare la cache disegnabile delle risorse durante il caricamento degli oggetti ImageBitmap. (If3627, b/178751994)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
viene ritirata. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
- Key.DPadUp è obsoleto. Utilizza invece Key.DirectionUp. (Iab335, b/177954892)
- L'interfaccia del proprietario sarà interna d'ora in poi. (If8e35)
- È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
- Modifica PopupPositionProvider in modo che utilizzi le coordinate relative alla finestra, non quelle globali. Rinomina parentGlobalBounds in anchorBounds e modifica windowGlobalBounds in windowSize: IntSize (I2994a)
- Durata e Uptime verranno sostituiti da Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore da queste classi. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner è stato aggiunto in modo simile a AmbientLifecycleOwner e AmbientViewModelStoreOwner già esistenti (I9a3e8, b/176756365)
- API per la grafica vettoriale aggiornata per supportare l'analisi della colorazione applicata alla radice della grafica vettoriale. (Id9d53, b/177210509)
- Aggiunta di toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
- AmbientWindowManager è stato rinominato in AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Sono stati ritirati i metodi di coordinate globali e sono stati creati nuovi metodi di coordinate basati su finestre. (Iee284)
- È stato aggiunto Modifier.toolingGraphicsLayer, che aggiunge un modificatore del livello di grafica quando l'ispezione è attivata. (I315df)
- FocusRequester.createRefs è ora contrassegnato come sperimentale, in quanto potrebbe cambiare. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato con @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
- Rimozione di PointerInputData e modifica di PointerInputChange per fornire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData sono stati resi interni perché non vengono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)
- Implementazione di GraphicsLayerScope density aggiornata per supportare le conversioni di dp in pixel grezzi. (Ied528, b/176819695)
- API matrice aggiornata per seguire l'ordinamento principale delle righe e fornire costanti di indice per facilitare le conversioni tra diverse rappresentazioni della matrice in modo da corrispondere alla logica di conversione del framework tra SkMatrix e Matrix4 internamente. (I432e6)
- Rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- Sposta String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
- Rinominato TransformedText.transformedText in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
data class
è stato rimosso dai seguenti corsi:- InlineTextContent
- LocaleList (I605c7)
- Le seguenti classi non sono più classi di dati:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)
- È stato aggiunto un tipo di parametro di riferimento alla funzione (I5e1bd)
- Aggiungi i limiti trasformati a InspectorNode (Ice42f)
Correzioni di bug
- onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface
- Aggiunta di funzioni di fabbrica che iniziano con una lettera maiuscola
- Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
- Le nuove funzioni di fabbrica restituiscono FontFamily anziché sottoclassi
- Ha nascosto i costruttori delle sottoclassi, in modo che possano essere costruite solo tramite funzioni di fabbrica.
- È stato 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 te. Utilizza questo intent quando vuoi avviare l'attività durante il test, ad esempio utilizzandoActivityScenario.launch
(I9d782, b/174472899)animateAsState ora è animateFooAsState, dove Foo è il tipo di variabile animata. Ad esempio, Float, Dp, Offset e così via (Ie7e25)
Al parametro Descrizione contenuti sono state aggiunte le immagini e le icone. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c).
Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o della finestra. (I62db4)
OnSizeChanged segnalava le dimensioni dei contenuti del layout. Ora indica le dimensioni nella posizione all'interno della catena di modificatori. (I36b78, b/177562900)
L'API emit() e tutti gli overload sono stati ritirati e rinominati in ComposeNode. Le API sono identiche, ma hanno un nome diverso per rispettare le convenzioni di denominazione di Compose (I4137b).
TextFieldValue accetta AnnotatedString. Tuttavia, questa è una modifica solo dell'API e la modifica del testo in più stili non è ancora implementata.
- Rimozione di
initial
dai parametri del costruttore EditingBuffer. (I326d5)
- Rimozione di
invalidate e compositionReference() sono ora ritirati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)
AnnotatedString viene modificata per estendersi da kotlin.CharSequence. Pertanto, length e subSequence sono ora funzioni di istanza e le funzioni di estensione sono state rimosse. (Iaf429)
RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora ritirato.
RememberObserver
è un sostituto diCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati una sola volta, il che è e continua a essere la prassi consigliata. Tuttavia, se un riferimento è stato memorizzato più di una volta in una composizione,onRemembered
viene chiamato per ogni riferimento, 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 di composizione e, pertanto, non verrà mai chiamatoonRemembered
. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o la composizione viene eliminata perché lo stato per cui stava producendo una composizione non è più attuale o non è più necessario. Se l'istanza diRememberObserver
che segue il singolo suggerimento di riferimento riportato sopra monitora una risorsa esterna, siaonForgotten
cheonAbandoned
indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro iniziato o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato se viene chiamatoonRemembered
. (I02c36)Operazioni aritmetiche deprecate tra due o più TextUnit. Sono state ritirate le funzioni TextUnit.Sp e TextUnit.Em a favore delle funzioni di estensione come Int.sp e Int.em. (I48369)
Le risorse nelle librerie senza risorse pubbliche dichiarate esplicitamente (ad es. tramite public.xml) ora sono private per impostazione predefinita. (Ia1dcc, b/170882230)
ScrollableColumn/Row sono stati ritirati. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai un grande contenuto scorrevole perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per impedire agli utenti di utilizzare il metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non utilizzare il comportamento pigro e utilizzare i modificatori direttamente in questo modo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Nuovo metodo di fabbrica
items(count: Int)
per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
eitemsIndexed(items: List)
ora sono funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi overload di estensione per gli array:items(items: Array)
eitemsIndexed(Array)
(I803fc, b/175562574)Utilizza ImeAction.None anziché ImeAction.NoAction
- Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
Utilizza TestCoroutineDispatcher nei test (I532b6)
Ridenominato TextInputService.onStateUpdated come updateState (Id4853)
La transizione basata su TransitionDefinition è stata ritirata (I0ac57)
TextUnitType.Inherit viene rimosso. Utilizza invece TextUnitType.Unspecified. (I9ff64)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
viene ritirata. La versione 1.0.0-alpha10 contiene questi commit.
Modifica che provoca un errore
La ristrutturazione dell'API del compilatore interno consente di raggruppare le modifiche ai nodi generati a seguito della composizione nella fase "Applica modifiche" della composizione, dopo il completamento di tutte le funzioni
@Composable
.Si tratta di una modifica comportamentale che potrebbe influire sul codice dell'applicazione, in quanto i nodi non sono più disponibili dalle API interne ed sperimentali finché le modifiche non sono state applicate. In genere, questo problema può essere risolto racchiudendo il codice con queste dipendenze in un
SideEffect
componibile per posticipare l'esecuzione del codice fino a quando i nodi non sono stati creati e inizializzati. (I018da)
Modifiche alle API
- È stato aggiunto Modifier.focusOrder() che può essere utilizzato per specificare un ordine di attraversamento personalizzato della messa a fuoco (I90cf5, b/175899543, b/170155556, b/170155429)
- Rimozione dell'utilizzo di focusObserver deprecato. Utilizza onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
- Modifiche all'API EditOperations
- EditOperation rinominato in EditCommand
- Aggiunto il suffisso Command per le implementazioni concrete di EditOperation
- EditCommand non sono più classi di dati
- È stata rinominata la funzione EditOperation.process in applyTo
- Rinomina InputEventListener in InputEventCallback
- (I0a366)
- Sono state rimosse le unità PxSquared, PxCubed e PxInverse inutilizzate. È stato modificato Size.center() in modo che sia una proprietà. (I973f7)
- Il modulo ui-test ora sarà in grado di configurare la creazione di ricompositori per le UI in fase di test (Ibebd8)
- Modifica di Velocity per includere componenti e operazioni matematiche. (Ib0447)
@ExperimentalTesting
è stato rinominato in@ExperimentalTestApi
per essere coerente con annotazioni API sperimentali simili (Ia4502, b/171464963)- Rinominata Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
- Sono state rimosse le classi DpInverse, DpSquared e DpCubed inutilizzate. (I4d62b)
- Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
- Aggiungi un callback per inviare una notifica al proprietario quando cambiano i limiti di layoutnode. (I72fd1)
- Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi inline con una costante Unspecified. (I93f7b, b/174310811)
Espandi le API [Abstract]ComposeView per consentire il riciclo Visualizzazioni basate su Compose, eliminando la composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e l'individuazione di Recomposer e CompositionReference con ambito finestra per la creazione di composizioni secondarie.
Aggiungi ViewCompositionStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews; il comportamento predefinito è l'eliminazione al distacco della finestra. (I860ab)
Rimossa l'API pubblica Any.identityHashCode() (I025d7)
Rimossa l'API toStringAsFixed a favore dell'utilizzo diretto di String.format. (Iaba6b)
Aggiungi l'opzione di attivazione/disattivazione a foundation Strings.kt (I4a5b7, b/172366489)
nativeClass è stato spostato nel modulo ui ed è stato reso interno. Utilizzi aggiornati di nativeClass nelle implementazioni di equals per utilizzare 'is MyClass' invece. (I4f734)
Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
È stato introdotto SelectionRegistrar.notifySelectableChange per comunicare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
È stata introdotta la proprietà Outline.bounds per ottenere il rettangolo di selezione per varie implementazioni del contorno. (I16e74, b/175093504)
TestUiDispatcher deprecato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
Modifiche all'API VisualTransformation
- OffsetMap è stato rinominato OffsetMapping
- È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
- PasswordTransformation non è più una classe di dati
- OffsetMapping è stato spostato in un file separato
- (I0bdf3)
Rinomina di Position in DpOffset e rimozione di getDistance() (Ib2dfd)
Modificato fun Dp.isFinite() in val Dp.isFinite (I50e00)
Correzioni di bug
- Recomposer ora espone un flusso del suo stato attuale, consentendo di monitorare la sua attività e quella degli effetti associati. (Ifb2b9)
- Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
animate()
è ora sostituito daanimateAsState()
, che restituisce unState<T>
anziché unT
. Ciò consente prestazioni migliori, in quanto l'ambito di invalidazione può essere ristretto al punto in cui viene letto il valore State. (Ib179e)- Aggiungi l'API del ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier selezionabile, attivabile e disattivabile. Modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le animazioni.- Nuova DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale
- (I820f2, b/168014930)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
viene ritirata. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- KeyEvent.Alt deprecato è stato rimosso. Utilizza invece KeyEvent.isAltPressed. (Idd695)
- Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati. Utilizza invece Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Per la sospensione delle API di input del puntatore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
- L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
- Aggiunta di dichiarazioni di destrutturazione per creare istanze FocuSRequester (I35d84, b/174817008)
- accessibilityLabel è stato rinominato in contentDescription. accessibilityValue è stato rinominato in stateDescription. (I250f2)
- Gli eventi personalizzati sono stati rimossi dall'API di input del puntatore di sospensione (Ia54d5, b/175142755)
- Sono state introdotte diverse nuove funzioni in SelectionRegistrar ed è stato rinominato onPositionChange in notifyPositionChange. (Ifbaf7)
- Altri membri di LayoutNode contrassegnati come interni (I443c6)
- LayoutInfo è stato introdotto per essere utilizzato da strumenti e test (I9b190)
- AndroidOwner made internal (Ibcad0, b/170296980)
- Rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
- Aggiunto sistema di scorrimento nidificato. Per ulteriori dettagli, consulta Modifier.nestedScroll (I36e15, b/162408885).
- subcomposeInto(LayoutNode) è stato reso interno (Id724a)
L'interfaccia di
Applier
è stata modificata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.Un'applicazione inserisce i nodi nell'albero che sta modificando utilizzando
insertTopDown()
oinsertBottomUp()
a seconda di quale ha un rendimento migliore.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti da costruire dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserti per implementare la costruzione bottom-up, che doveva essere copiato in ogni applicatore che richiedeva la costruzione bottom-up per le prestazioni. Con questa modifica, unApplier
sostituisceinsertBottomUp()
per creare una struttura ad albero dal basso verso l'alto einsertTopDown()
per creare la struttura ad albero dall'alto verso il basso. (Icbdc2)Sono state aggiunte le proprietà dismissOnBackPress e dismissOnClickOutside a AndroidDialogProperties. Questi consentono di configurare il momento in cui verrà richiamata la lambda onDismissRequest della finestra di dialogo. (If5e17)
È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i PNG) o VectorDrawable. I consumatori non devono più determinare in anticipo il tipo di asset e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composable Image o nei modificatori di Painter. (I2c703, b/173818471)
È stato aggiunto Modifier.clearAndSetSemantics per cancellare la semantica dei discendenti e impostarne di nuove. (I277ca)
Spostato ContentDrawScope nel modulo ui-graphics per essere con DrawScope. (Iee043, b/173832789)
È stata introdotta l'API grafica PathEffect per fornire diversi pattern alle forme con tratto. Utilizzo deprecato di NativePathEffect a favore dell'implementazione prevista/effettiva di PathEffect. (I5e976, b/171072166)
Sono state aggiunte interfacce IdlingResource a Compose, come variante di Compose supportata delle risorse di inattività di Espresso. Possono essere registrati e annullati tramite ComposeTestRule (I433f3)
Rimozione della registrazione globale di ComposeIdlingResource e rimozione della registrazione globale degli orologi in ComposeIdlingResource (I32660)
Correzioni di bug
- Le espressioni lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
Sono state rimosse SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza, questi erano contrassegnati come InternalComposeAPI. Ora sono interni al modulo di composizione.
CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Queste sono pubbliche, ma non sono destinate all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c).
È stato eseguito il refactoring di ShaderBrush per creare in modo differito un'istanza dello shader quando sono disponibili le informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire gradienti che occupano i limiti di disegno completi di un elemento componibile al momento della composizione, senza dover implementare implementazioni personalizzate di DrawModifier.
API costruttori di funzioni di sfumatura deprecate a favore dei metodi di fabbrica su un oggetto sfumatura. (I511fc, b/173066799)
Ritira LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza invece LazyColumn e LazyRow (I5b48c)
BuildCompat.isAtLeastR deprecato (Idb37e)
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una AnnotatedString. Funzione di creazione di annotatedString ritirata. (Idfe0b)
Metodi di estensione rimossi su Float e Double per convertire i valori in radianti. Spostato per essere una funzione privata all'interno di PathParser che era l'unico posto in cui veniva utilizzato (I25f52)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
viene ritirata. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiungi azione semantica Ignora (I2b706)
- Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere alias di tipo/metodi helper per facilitare la migrazione dalle API deprecate a quelle attuali. (Id6044, b/173834241)
- È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer Sono state aggiornate anche le classi correlate a GraphicsLayer in base al feedback dell'API. (I0bd29, b/173834241)
- Sono stati aggiunti i nuovi metodi placeable.placeWithLayer() e placeable.placeRelativeWithLayer() che consentono ai layout personalizzati e ai modificatori di layout di posizionare un elemento secondario introducendo un livello grafico per il disegno. In questo modo possiamo prima ottimizzare i ridisegni, in modo che quando dobbiamo spostare un elemento secondario non dobbiamo ridisegnarne i contenuti. In secondo luogo, possiamo applicare le trasformazioni di disegno a un elemento secondario (Ibd8f6, b/170296989, b/171493718, b/173030831).
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)- Aggiunte API Modifier.scale/rotate
come comodità per drawLayer.
Modifier.drawOpacity
rinominato inModifier.alpha
Modifier.drawShadow
rinominato inModifier.shadow
(I264ca, b/173208140)
- I campi uptime e posizione di PointerInputData non sono più nullabili. (Id468a)
- MaterialTheme ora imposta i colori corretti per i punti di manipolazione della selezione e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
- È stato aggiunto WindowManager.isWindowFocused per verificare se la finestra host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
- API TransformOrigin aggiornata
per avere la sintassi di destrutturazione per restituire
pivotFractionX
epivotFractionY
comecomponent1
ecomponent2
(If43c4, b/173586560) - È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
Inoltre, sono state migrate alcune API utilizzando
children
come nome per la lambda finale incontent
, in base al controllo lint e alle indicazioni. (Iec48e) - È stata aggiunta un'API per verificare se sono stati premuti i tasti di modifica Alt, Ctrl, Meta o Maiusc durante l'invio di un evento di tastiera. (I50ed9)
- È stato aggiunto un nuovo sovraccarico
Modifier.drawLayer()
. Richiede un blocco lambda in un nuovo GraphicsLayerScope in cui definisci i parametri del livello in modo da saltare la ricomposizione e il ricalcolo del layout quando si verifica la modifica dello stato. DrawLayerModifier è ora interno in preparazione alla migrazione della sua logica nel metodo placeable.placeWithLayer() di LayoutModifier (I15e9f, b/173030831) - Gli Ambients ritirati denominati con
Ambient
come suffisso sono stati sostituiti con nuove proprietà con il prefisso Ambient, seguendo le altre linee guida per Ambients e API Compose. (I33440) androidx.compose.ui.text.Typeface
spostato inandroidx.compose.ui.text.font.Typeface
(Ic2b81)- L'argomento Semantica mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
- Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25)
- VectorAsset è stato rinominato ImageVector VectorAsset è stato spostato e rinominato Builder per essere una classe interna di ImageVector in conformità con le linee guida per le API. Aggiunta di un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
- ImageAsset e i metodi correlati sono stati rinominati ImageBitmap. (Ia2d99)
- Aggiungi il parametro zIndex a place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e qualsiasi layout personalizzato possa impostare zIndex per i relativi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
- Proprietà semantiche di base spostate nell'interfaccia utente (I6f05c)
- Deprecare place(Offset) e placeRelative(Offset). Utilizza invece gli overload con offset interi (I4c5e7)
- Le API precedentemente deprecate sono state rimosse: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso, utilizza Modifier.onDrawBehind. Modifier.plus è stato rimosso, utilizza Modifier.then. Color.Unset è stato rimosso, utilizza Color.Unspecified. La classe PxBounds è stata rimossa, utilizza Rect. (Ie9d02, b/172562222)
- L'interfaccia di allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
- Sono stati aggiunti il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere più facilmente i propri rilevatori di gesti. (I00807)
id
è stato rinominato inlayoutId
perLayoutIdParentData
.Measurable.id
è stato rinominato inMeasurable.layoutId
. (Iadbcb, b/172449643)- Nuovo rilevatore di gesti multitocco, inclusi helper per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
- Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1)
- Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
Aggiungi API di scorrimento basate su coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di restituire un valore. (Ie5642)
Modifier.focusable ha aggiunto il requisito in foundation. Utilizzalo per aggiungere un comportamento selezionabile a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)
Fornisci implementazioni predefinite di metodi e proprietà in AnimationClockTestRule che possono essere delegate al relativo
clock
(I7ea3d, b/173399709)AndroidComposeTestRule ora può accettare launcher di attività personalizzati (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd è deprecato. In sostituzione, TextLayoutResult.getLineEnd ora ha un nuovo parametro visibleEnd. (I73282)
API TextFieldValue aggiornata
- TextFieldValue.composition è ora di sola lettura
- rimossa l'eccezione generata per l'intervallo di selezione non valido (I4a675, b/172239032)
Supporta TtsAnnotation per il motore di sintesi vocale. (I54cc6)
Nuove API per l'esecuzione di animazioni nelle coroutine (Ied662)
Correzioni di bug
- Il parametro di allineamento di Box è stato rinominato contentAlignment. (I2c957)
- I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché State. (Ic3021, b/173594846)
- È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- È stato aggiunto il controllo lint per i parametri Modifier nelle funzioni composable. Questo controllo lint verifica la denominazione, il tipo restituito, il valore predefinito e l'ordine del parametro per garantire la coerenza con le linee guida di Compose. (If493b)
- Opzione aggiunta temporaneamente per consentire a TestAnimationClock di essere controllato da MonotonicFrameClock (I1403b, b/173402197)
- Aggiunto wrapper Android Typeface. Puoi caricare un carattere
Android tramite la funzione
typeface
, ad esempiotypeface(Typeface.DEFAULT)
. Ha anche rinominatotypefaceFromFontFamily()
intypeface()
(I52ab7) - È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica dei modificatori siano definite come estensioni del modificatore, in modo che possano essere concatenate in modo fluido. (I07981)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- Recomposer non accetta più un EmbeddingContext; le dipendenze di pianificazione richieste vengono ottenute da effectCoroutineContext. FrameManager è deprecato; le integrazioni della piattaforma devono inizializzare la propria gestione degli snapshot globali. (I02369)
- Trasferisci le informazioni sullo stile al nodo di accessibilità. (If5e8d)
- TextUnit.Inherit viene rinominato TextUnit.Unspecified per coerenza con le altre unità. (Ifce19)
Compose UI versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
viene ritirata. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendenti l'uno dall'altro per supportare i casi d'uso di scalabilità non uniforme.
- Aggiunto il metodo computeScaleFactor a ContentScale
- È stato aggiunto ContentScale.FillBounds per eseguire il ridimensionamento non uniforme per estendere i limiti dell'origine in modo da occupare completamente la destinazione.
- Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Size.
- (Ic96a6, b/172291582)
- Sono state aggiunte le fabbriche BiasAlignment e BiasAbsoluteAlignment per la creazione di allineamenti. (Iac836, b/169406772)
- Consente a uno sviluppatore di cancellare forzatamente lo stato attivo. (I90372)
- È stato corretto un bug che impediva di disegnare l'elevazione per le visualizzazioni all'interno di Compose. (If7782)
- È stata creata l'API onDrawBehind all'interno di ContentDrawScope per rispettare la convenzione di denominazione con Modifier.drawBehind. (I4fc3a, b/171955269)
- Aggiungi il supporto della distanza della videocamera per completare le trasformazioni 3D rotationX/rotationY nelle API dei livelli. (I40213, b/171492100)
- Aggiunta di SelectionContainer senza il callback (Ibfadb)
- L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- Rimossa l'opacità dal modificatore drawShadow() perché era confusa. (I82c62, b/171624638)
- MeasureResult è stato spostato fuori da MeasureScope. (Ibf96d, b/171184002)
- Diversi simboli correlati al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
- Rimozione di FocusState2 deprecato (I686cb, b/168686446)
- ZIndexModifier è ora interno (I1808b, b/171493718)
- È stato aggiornato il tipo restituito del metodo lerp sui parametri Size in modo che restituisca un valore Size non nullo per evitare boxing inutile. (Ib0044)
- È stato aggiunto TestMonotonicFrameClock per testare il codice che si basa su MonotonicFrameClock di Compose per l'attesa di eventi di frame di composizione utilizzando runBlockingTest di kotlinx-coroutines-test (I4402f)
- Rimozione di GestureScope.localToGlobal (I15299, b/171462785)
- Aggiunta dello strumento di ricerca
onAllNodesWithSubstring
(I81dd7, b/171462889) - Il modulo androidx.ui.test è deprecato. Esegui la migrazione a androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8)
Correzioni di bug
- captureToBitmap è stato spostato in captureToImage. (I86385)
- foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base e non soggettiva che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
- Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
- Rinomina KeyboardOptions come ImeOptions (I82f36)
- KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
- provideDefault è stato aggiunto come alternativa per fornire gli ambient e può essere utilizzato per specificare i valori ambient che verranno impostati solo se non è già stato fornito un valore ambient. (Id6635, b/171024925)
- BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
- Introduzione del modulo ui-test-junit4 (Ib91f8)
relativePaddingFrom
è stato rinominato inpaddingFrom
. È stato aggiunto il modificatorepaddingFromBaseline
per facilitare la specifica delle distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)- LaunchedTask è stato rinominato LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. LaunchedEffect senza parametri del soggetto non è consentito per incoraggiare le best practice. (Ifd3d4)
- Sono state introdotte risorse componibili che vengono ricomposte quando la configurazione viene aggiornata. (I6387c, b/167352819)
- Ora Recomposer richiede un CoroutineContext al momento della creazione (Ic4610)
- Somma i valori di
zIndex
quando vengono applicati piùModifier.zIndex()
. In precedenza, vinceva il primo. (Ic514c, b/170623936) - Modifiche all'implementazione interna di SlotTable che non dovrebbero influire sull'API pubblica. (If9828)
- Aggiunta dell'opzione IME di correzione automatica della tastiera (I57b8d)
- androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
- Rimossa KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45)
Contributo esterno
- Pubblicazione disabilitata dell'artefatto interno androidx.compose.ui:ui-text-android (Ib93fa)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
viene ritirata. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Recomposer è ora un CompositionReference e un elemento padre di composizione valido. Ora Explicit Recomposer è obbligatorio in meno posizioni. (I4036f)
- VectorPainter è stato ritirato a favore di rememberVectorPainter per indicare meglio che l'API componibile sfrutta internamente "remember" per rendere persistenti i dati tra le composizioni. (Ifda43)
- API Modifier.drawWithCache aggiornata per esporre ContentDrawScope come ambito ricevitore anziché DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Ciò è utile per i casi d'uso di fusione/colorazione in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di fusione corrispondente venga applicato correttamente. (Ie7ec8)
- Sposta SimpleContainer in PopupTestUtils.kt (I78c57)
- ConsumedData non è più una classe di dati. Per i dettagli, vedi https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- Fix Rtl Handle Position. (I6e1e0)
- DrawScope e
ContentDrawScope sono stati sottoposti a refactoring per essere interfacce
anziché classi astratte
- Implementazione di CanvasDrawScope di DrawScope
- Implementazioni sottoposte a refactoring di DrawScope per utilizzare CanvasScope
- Creato DrawContext per racchiudere le dipendenze per DrawScope
- Rimossi metodi obsoleti in DrawScope (I56f5e)
- Modifica che causa interruzione: è stato rimosso il valore restituito da
PointerInputFilter.onPointerEvent(...)
, dato che l'unico valore che dovrebbe poter essere modificato negli eventi puntatore sono i dati di consumo. Anziché restituire i dati daPointerInputFilter.onPointerEvent(...)
, ora puoi semplicemente modificare i dati di consumo degli eventi puntatore passati. (I6acd0) - MeasureScope e IntrinsicMeasureScope sono diventate interfacce. (I1a087, b/170461665)
- La funzione di unione per AlignmentLine è stata nascosta. (I9da1a, b/170612900, b/170611568)
- Aggiunta della possibilità di specificare le informazioni dello strumento di controllo nel modificatore composto (Idee08, b/163494569)
- Aggiunta dell'opzione Seleziona tutto nel menu di selezione (Ief02b)
- È stato aggiornato DrawTransform.rotate in modo che accetti
un parametro pivot predefinito del centro in modo che corrisponda
alla documentazione.
- Aggiornato DrawScope.rotateRad per utilizzare un offset per il punto pivot in modo che corrisponda ad altri metodi di trasformazione.
- Overload di DrawScope.rotateRad deprecato che utilizzava valori float per le coordinate x e y del pivot.
- (Iffcbb, b/170434992)
Correzioni di bug
- Il controllo lint API per MissingGetterMatchingBuilder è abilitato per androidx (I4bbea, b/138602561)
- Aggiungi test. (I6b8ae)
- Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- Aggiunta dell'opzione IME KeyboardCapitalization (I8ac38)
- È stata aggiunta l'opzione della tastiera a una sola riga a CoreTextField (I72e6d)
- Sposta SimpleContainer in PopupTestUtils.kt (I65c3e)
- È stata rinominata l'API Radius in CornerRadius per esprimere meglio il modo in cui viene utilizzata in tutto Compose. Documentazione aggiornata per indicare che i raggi d'angolo negativi sono bloccati a zero. (I130c7, b/168762961)
- Miglioramento dell'interoperabilità di Android continuando a inviare MotionEvent alle visualizzazioni Android secondarie che restituiscono false per onTouchEvent per tutte le azioni tranne
ACTION_DOWN
(I94c5a, b/170320973) - Box è stato reso una funzione in linea. (Ibce0c, b/155056091)
Contributo esterno
- Supporto di impostazioni internazionali diverse per
AnnotatedString.capitalize
eAnnotatedString.decapitalize
(I4aa7f)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiungi un DSL per specificare le informazioni dello strumento di controllo (Ic9a22)
- Sposta LongPress in Text. (Iff2bc)
- Modificatore sperimentale Modifier.pointerInput che sospende il modificatore di input (Ia77d2)
- Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
- I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata aggiunta anche l'opzione per configurare questa impostazione in modo esplicito (I64966, b/143778148, b/143778149).
I dati sul consumo sono ora modificabili. Inoltre, le chiamate alle funzioni di estensione che eseguono il consumo ora non restituiscono più un nuovo PointerInputChange, ma modificano invece il PointerInputChange fornito.
Questo è il primo passaggio di una procedura in due fasi per rendere modificabili i dati PointerEvent in modo che altri dati del puntatore non possano essere modificati dal codice utente. Il secondo passaggio sarà rimuovere il tipo di reso
List<PointerInputChange>
daPointerInputFilter.onPointerEvent(...)
. (Id067e)Disattiva Selezione nel testo e una demo. (Ie7e97)
È stata resa inline la funzione onGloballyPositioned (I15830)
OnPositionedModifier è stato rinominato in OnGloballyPositionedModifier e onPositioned() è stato rinominato in onGloballyPositioned(). (I587e8, b/169083903)
La proprietà hasPendingMeasureOrLayout è stata aggiunta a Owner per indicare se il proprietario ha lavori di layout in attesa. (I3d9f8, b/169038599)
È stata aggiunta un'API per cancellare programmaticamente lo stato attivo (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
rimosso.PointerInputFilter.onPointerEvent(...)
deve essere utilizzato al suo posto. (I6f04a)Modifiche alle dimensioni
- Rimossa Size.getFlipped
- Removed Size.rem
- Rimossa Size.truncDiv (Ief44d, b/169790720)
Nell'ambito della standardizzazione dei valori sentinella per le classi inline, rinomina Color.Unset in Color.Unspecified per coerenza con altre classi inline (I97611, b/169797763)
Viene introdotto TextOverflow.None. Quando l'overflow è None, Text non gestirà più l'overflow e segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170)
Il parametro scope all'interno di AnnotatedString.Builder.addStringAnnotation viene rinominato in tag per coerenza dell'API. (I7c8cb)
Correzioni di bug
- Le prestazioni di scorrimento di LazyColumn/Row vengono migliorate riducendo il lavoro nella composizione secondaria a ogni scorrimento. È stato aggiunto il nuovo metodo hasInvalidations() per la classe Composition. Il metodo hasPendingChanges() di Recomposer è stato rinominato hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Parametri Size.Unspecified aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Implementazioni di Painter aggiornate per il controllo rispetto a Size.Unspecified e alle dimensioni non finite. (I95a7e)
- L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno per i figli (Ibc9f6)
- Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
- Sono stati aggiunti stub per le classi Android presenti su piattaforme precedenti per evitare l'uso della reflection, se possibile. (Ia1790)
- Corretto il bug: se la tastiera software visualizzata causava la traduzione dell'app, le coordinate di input del puntatore diventavano errate. (Ic4cec, b/163077821)
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione di layout e disegno una volta che non sono più validi. (Ic4cf8)
- Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback quando il layout dei contenuti è stato misurato di nuovo e la dimensione è cambiata, rispettivamente. (I657cf, b/154108792)
- Aggiungi l'azione semantica di clic lungo (I6281b, b/156468846)
- FocusManager è stato reso privato. (I7872f)
Implementazione aggiornata per creare un'implementazione DrawCacheModifier dedicata anziché aggiungere proprietà facoltative a DrawModifier.
Documentazione aggiornata per vari metodi (Ibd166)
Rendi TextRange inline per evitare la creazione di oggetti. (Id034b)
PlacementScope#parentWidth e PlacementScope#parentLayoutDirection non possono più essere letti dal blocco di posizionamento di un layout personalizzato. (Icc1ae, b/168295623)
aggiungi AccessibilityScrollState alle proprietà semantiche. (Ifeda9)
È stato introdotto Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea in modo condizionale le dipendenze che dipendono dalle informazioni su dimensioni/stato (I376dc).
ParagraphConstraints è stato rimosso. La larghezza viene ora passata direttamente al paragrafo. (Ica712)
Correzioni di bug
- Aggiornamento di molte API grafiche
- API di trasformazione di rotazione e scalabilità aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata del punto di rotazione anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
- Rimossi i metodi Rect.expandToInclude e Rect.join
- Aggiornamento della documentazione sul raggio per indicare ovale oltre a ellittico
- È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius incorporata non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istanziati tramite i relativi costruttori di funzioni
- Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
- Rect.shift ritirato a favore di Rect.translate
- Sono state rimosse le API RoundRect.grow e Rect.shrink
- È stato rinominato RoundRect.outerRect in Rect.boundingRect
- Rimozione dei metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
- Rinominato RoundRect.longestSide in RoundRect.maxDimension
- È stato rinominato RoundRect.shortestSide in RoundRect.minDimension
- Modifica di RoundRect.center in modo che sia una proprietà anziché una funzione
- Aggiornamento del costruttore RoundRect per utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
- Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con origine in 0,0
- È stata aggiunta un'API di eliminazione a Radius
- È stata eseguita la migrazione di varie funzioni di estensione RoundRect in modo che siano invece proprietà
- (I8f5c7, b/168762961)
- foundation.Box è stato ritirato. Utilizza invece foundation.layout.Box. (Ie5950, b/167680279)
- L'elenco filtri è stato rinominato in Box. Il Box esistente verrà ritirato a favore del nuovo Box in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando ne ha più di uno. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
- I parametri di decorazione del riquadro sono stati ritirati. Se vuoi aggiungere decorazioni/spazi interni alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Aggiornamento di molte API grafiche
- API DrawScope aggiornate con metodi di trasformazione con ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
- È stata aggiornata la documentazione di clipPath in modo che faccia riferimento a Path anziché al rettangolo arrotondato
- Spaziatura fissa nella documentazione per il parametro right in clipPath
- Rinominate DrawScope.drawCanvas in drawIntoCanvas e rimosso il parametro size
- I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
- È stato aggiunto l'override dell'inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
- È stata rimossa la documentazione sul metodo di inserimento che indicava che l'inserimento sarebbe stato applicato a tutti e quattro i lati
- Documentazione aggiornata per la classe Rect
- Commenti aggiornati sui parametri Rect per corrispondere allo stile kdoc
- Rimossi Rect.join e Rect.expandToInclude
- È stato creato l'overload per Rect.translate(offset) e Rect.shift è stato ritirato
- (If086a, b/167737376)
- Annota rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendili API interne e nascondi la relativa documentazione (I554eb, b/168308412)
- Rimuovi SelectionContainer dalla parte superiore per disattivare la selezione predefinita ed evitare comportamenti imprevisti. In alternativa, puoi utilizzare un elemento SelectionContainer per racchiudere i contenuti che devono essere selezionabili. (I8dfe0, b/158459594)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
viene ritirata. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimuovi le azioni semantiche di scorrimento in avanti/indietro. Sono stati aggiunti passaggi in AccessibilityRangeInfo. (Ia47b0)
onInvalidate()
rimosso daOwner
.OwnedLayer
gestisce l'invalidazione. (Ica72b, b/162061312)Metodi dell'operatore rimossi nell'API Size che utilizzano i parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è inaspettato per queste. Ad es. la dimensione - offset deve restituire un offset o una dimensione con la differenza?
Sono stati rimossi anche i metodi ritirati nella classe Size. (Iec902, b/166514214)
Correzioni di bug
- Correzione del problema di disegno errato degli elementi di LazyColumn, che causava anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895)
- DpConstraints e le API che lo utilizzano sono state ritirate. (I90cdb, b/167389835)
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)- Gli utilizzi di gravity sono stati rinominati in modo coerente in align o alignment nelle API di layout. (I2421a, b/164077038)
- Sono stati aggiunti onNode e altri metodi globali a ComposeTestRule, in quanto quelli globali attuali verranno ritirati. (Ieae36)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- rimuovi il callback per notificare al proprietario quando cambiano i limiti di layoutnode. (If654e, b/166106882)
- È stato aggiunto il supporto per i parametri filltype nei percorsi della grafica vettoriale per supportare i ritagli delle forme in base alle regole di riempimento dei percorsi evenOdd o NonZero. (I43dd2)
- Uptime e Velocity sono ora classi inline (I48f4a)
- La durata è ora una classe inline (I565eb)
- Aggiungi un callback per inviare una notifica al proprietario quando cambiano i limiti di layoutnode. (Ic40b3)
È stato risolto il problema per cui il costruttore della funzione Rect con Offset e raggio creava il rettangolo nell'ordine sinistra, destra, alto, basso anziché sinistra, alto, destra, basso.
Sono stati rimossi i metodi companion deprecati su Rect a favore dei costruttori di funzioni.
Sono stati aggiunti test per verificare i metodi in Rect.kt (I08460, b/165822356)
Correzioni di bug
- È stato aggiunto MutableRect, un rettangolo modificabile. (I71bd2, b/160140398)
- Matrix4 è stato sostituito da Matrix. Tutte le altre parti del pacchetto vectormath sono state rimosse. (Ibd665, b/160140398)
La convenzione di chiamata per le funzioni componibili è cambiata. Si tratta di una modifica che provoca un errore binario. Tutte le librerie devono essere ricompilate per funzionare con questa versione del plug-in del compilatore Compose.
Questa modifica non crea una modifica che causa interruzioni a livello di origine, in quanto le uniche API modificate sono le API del compilatore che hanno un opt-in esplicito. (I7afd2, b/158123185)
Risolto l'arresto anomalo che poteva verificarsi quando l'invio a un PointerInputFilter poteva causare la rimozione sincrona del PointerInputFilter. (I58f25)
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev17
viene ritirata. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
emitView
è stato ritirato. Se possibile, utilizzaAndroidView
per emettere Views all'interno di Compose. Tieni presente che la composizione diretta di View e ViewGroup non sarà supportata in futuro, a meno che non si tratti di foglie nell'albero di composizione, nel qual caso è possibile utilizzare AndroidView. (I29b1e, b/163871221)FocusState2
è deprecato e sostituito daFocusState
(Ia8b79, b/160822876, b/160923332)- Gli overload di AndroidView deprecati sono stati rimossi. (I946b9, b/163802393)
- Ora le emissioni personalizzate possono dichiarare che uno o più dei relativi setter possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13)
Le classi Vector non sono più classi di dati perché la stessa istanza dell'oggetto viene utilizzata per la composizione.
È stato aggiunto il flag mutableStateOf per VectorPainter per ridisegnare in modo condizionale se i contenuti del vettore cambiano.
È stato eseguito il refactoring dell'istanza VectorComponent in modo che faccia parte di VectorPainter, in quanto viene riutilizzata in tutte le composizioni.
Aggiornamento di GroupComponent e PathComponent per rendere modificabili i campi del nome (Ieae45, b/151378808)
Rimossi
onChildPositioned
eOnChildPositionedModifier
. Gli sviluppatori devono utilizzareonPositioned
eOnPositionedModifier
nel layout secondario. (I4522e, b/162109766)L'offset è diventato una classe in linea (Iaec70)
È stato aggiunto un parametro modificatore a SelectionContainer (I4aada, b/161487952)
Rimozione di FocusModifier deprecato (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Aggiunta della lambda
mergePolicy
aSemanticsPropertyKey
. Può essere utilizzato per definire un criterio personalizzato per la semantica di mergeAllDescendants unione. Il criterio predefinito prevede l'utilizzo del valore principale se già presente, altrimenti del valore secondario. (Iaf6c4, b/161979921)Constraints è ora una classe inline (I88736)
È stato aggiunto FocusManager, che sposta la logica di messa a fuoco comune da AndroidComposeView (I528ef, b/161487952, b/162206799)
Nomi PointerEventPass aggiornati per la release alpha. (Ifda6f)
IntOffset è ora una classe inline (Iac0bf)
IntSize è ora una classe inline (I2bf42)
PlacementScope.placeAbsolute()
è stato rinominato inPlacementScope.place()
e il precedentePlacementScope.place()
è stato rinominato inPlacementScope.placeRelative()
. Di conseguenza, il metodoPlacementScope.place()
non rifletterà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizzaPlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog ora utilizza FlowRow per i pulsanti (I00ec1, b/161809319, b/143682374)
Alcune utilità di test non sono pubbliche perché non si trovano nella posizione corretta. Verrà reso pubblico in futuro. (I32ab1)
Riorganizzazione del codice di input del puntatore. (Ie3f45)
PxBounds è stato ritirato a favore di Rect. Sono stati aggiornati tutti gli utilizzi di PxBounds con rect e sono state aggiunte annotazioni di deprecazione/sostituzione appropriate per facilitare la migrazione. (I37038, b/162627058)
Rimozione di KeyEvent2 deprecato. Utilizza KeyEvent. (Ied2d0, b/162097587)
KeyEvent ha una proprietà Unicode che può essere utilizzata per ottenere il carattere Unicode generato dalla combinazione specificata di tasti e tasti meta (If3afc).
L'evento personalizzato DelayUp e le classi correlate sono diventati un'API di attivazione, in quanto è molto probabile che vengano modificati. (I56d6f)
Sono stati rimossi due PointerEventPass che non sono più necessari. (I3dd9d)
Aggiungi colore, ombra e TextDecoration al parametro Paragraph.paint. Questa funzione è utile per evitare la ricreazione non necessaria del paragrafo. (I81689)
Correzioni di bug
- Sono stati rimossi i callback onFocusChanged da TextField. Utilizza Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
Sono state rimosse le chiamate FrameManager deprecate.
Le API di composizione interne sono state modificate per ridurre la quantità di overhead per monitorare gli oggetti di stato come
mutableStateof()
(I80ba6)VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
È stato corretto un arresto anomalo che si verificava quando veniva utilizzata un'istruzione che salva lo stato all'interno del ciclo for. Ora è consentito avere la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è stata modificata in base a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Il composable
state { ... }
è ora ritirato a favore di chiamate esplicite aremember { mutableStateOf(...) }
per maggiore chiarezza. In questo modo si riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e si adatta al patternby mutableStateOf()
per la delega delle proprietà della classe. (Ia5727)RRect è stato rinominato RoundRect per adattarsi meglio ai pattern di denominazione di Compose Sono stati creati costruttori di funzioni simili a RRect e sono stati ritirati i costruttori di funzioni RRect (I5d325)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev16
viene ritirata. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
- OnChildPositioned è stato ritirato. Utilizza OnPositioned sul figlio. (I87f95, b/162109766)
- setViewContent è stato ritirato. Al suo posto deve essere utilizzato setContent. (I7e497, b/160335130)
- È stata aggiunta l'API AndroidViewBinding per gonfiare e comporre le risorse di layout, in base a ViewBinding. (I081c6)
- KeyEvent2 è sostituito da KeyEvent (I2d770, b/162097585)
- Aggiunto il supporto per il tasto hardware Alt (I9036b)
- FocusManager è deprecato. Utilizza invece Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource supporta gli attributi trimPath (I808fe)
- Sposta la finestra di dialogo nell'interfaccia utente (I47fa6)
- Sono stati rimossi due PointerEventPass che non sono più necessari. (I33ca7)
- Implementato PointerInteropModifier che offre la possibilità di ricevere MotionEvent e interagire con Compose come se fosse un'implementazione di una visualizzazione Android. (Ieb08c)
- È stato rimosso il modificatore del tag obsoleto. Utilizza invece layoutId. (Idaa05, b/162023919)
- 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)
- Supporto del ritaglio dei tracciati nella grafica vettoriale (Ie16c9, b/158188351)
- È stato aggiunto Modifier.layout() che consente di creare facilmente un modificatore di layout personalizzato (I73b69, b/161355194)
- È stata aggiunta una nuova API AndroidView e quelle esistenti sono state ritirate. (I5bcfd)
- Modifier.plus è stato ritirato, utilizza invece Modifier.then. "Poi" ha un segnale di ordinamento più forte e impedisce anche di digitare
Modifier.padding().background() + anotherModifier
, che interrompe la catena e rende più difficile la lettura (Iedd58, b/161529964) - Aggiungi sottoclassi di [Abstract]ComposeView per ospitare contenuti di Compose in una gerarchia di visualizzazioni. (I46357)
Row
eColumn
sono ora funzioni inline che riducono significativamente l'overhead del loro utilizzo. (I75c10)- Viene aggiunto SubcomposeLayout. È una primitiva di basso livello che consente di comporre i figli durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in un secondo momento durante la misurazione per la composizione del sottoalbero. Ad esempio, WithConstraints non è implementato utilizzando SubcomposeLayout. (I25cc8)
- Aggiunta di
SemanticsNode.positionInRoot
per ottenere la posizione di un SemanticsNode rispetto alla radice della gerarchia di Compose (Icdf26, b/161336532) - MotionEvents passed all the way through from Android, into Compose, and back into Android. (I14be8, b/158034713)
- Rimozione di dropdownPopup. (I00430)
- Posizione fissa del popup sui display con ritaglio. (Idd7dd)
- Aggiungi l'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
- È stato aggiunto RemeasurementModifier. Consente di misurare nuovamente il layout in modo sincrono. In generale non è mai necessario, poiché la misurazione/il layout vengono eseguiti automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
- Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Usa getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Aggiungi alcuni segni/annotazioni per motivi di best practice. (I66b20)
- esporre più API di riga in TextLayoutResult. (I79bd2)
- I convertitori vettoriali integrati per convertire le unità integrate sono ora accessibili tramite Foo.VectorConverter. Ad esempio, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273).
Correzioni di bug
- Correzioni generali dell'API Address (I077bc)
- Rimuovi l'interfaccia OffsetBase inutilizzata
- Allinea le classi Offset e IntOffset in modo da avere una superficie API coerente
- Rinomina IntOffset.Origin in IntOffset.Zero per coerenza 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 nullabilità del campo
- Rinominate le enumerazioni ClipOp in Pascal Case
- Rinominate le enumerazioni FilterQuality in Pascal Case
- Rinominate le enumerazioni StrokeJoin in Pascal Case
- Rinominate le enumerazioni PointMode in Pascal Case
- Rinominate le enumerazioni PaintingStyle in Pascal Case
- Rinomina le enumerazioni PathFillType in Pascal Case
- Rinomina gli enum StrokeCap in Pascal Case
- Implementazione di DrawCache aggiornata per non utilizzare più i parametri lateinit
- Aggiornamento di DrawScope per non utilizzare più la delega pigra per i parametri interni fillPaint e strokePaint
- Aggiornamento del composable Image per evitare l'utilizzo di Box per un overhead inferiore
- Aggiornamento della classe Outline per includere annotazioni @Immutable
- Aggiornamento di PathNode per includere annotazioni @Immutable per ogni istruzione del percorso
- Aggiornamento della composizione secondaria Vector per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
- Metodi costruttori del componente complementare rettangolare ritirati a favore dei costruttori di funzioni
- Classi Brush e costruttori di funzioni aggiornati con le API @Immutable e @Stable
- Aggiornamento dell'enumerazione VertexMode in PascalCase
- Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto sulla pittura se sono cambiati
- Aggiornamento di Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
- Consumo dell'API BlendMode di Compose aggiornato per mappare correttamente le modalità BlendMode del framework Android e PorterDuff a seconda del livello API. È stata introdotta l'API BlendMode#isSupported per fungere da query di funzionalità per determinare se BlendMode è supportato sul dispositivo prima dell'utilizzo. (I0ef42)
- È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima del contenitore, il che risolve il caso d'uso in cui l'elemento deve riempire la finestra e il modificatore normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli infiniti. (Ibd3b2, b/162248854)
SemanticsNodeInteraction.performPartialGesture
rimosso. UtilizzaSemanticsNodeInteraction.performGesture
. (Id9b62)LazyColumnItems
è stato rinominato inLazyColumnFor
.LazyRowItems
è stato rinominato inLazyRowFor
(I84f84)- Il pacchetto
foundation.shape.corner
è stato compresso infoundation.share
(I46491, b/161887429) AndroidComposeTestRule
rinominato increateAndroidComposeRule
. (I70aaf)- Sono state aggiunte altre API a
TextLayoutResult
. (Id7e04) - Material
FilledTextField
è stato rinominato inTextField
e foundationalTextField
è stato rinominato inBaseTextField
per semplificare l'individuazione e l'utilizzo dell'API desiderata (Ia6242, b/155482676) - Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.ui:ui-*:0.1.0-dev15
viene ritirata. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra nella sezione Dichiarazione delle dipendenze.
Modifiche alle API
- FocusModifier è obsoleto a favore di Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. FocusState e FocusDetailedState sono ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
- È stato aggiunto un modificatore per osservare la modifica dello stato attivo. (I05866, b/160924455, b/160923326)
- È stato aggiunto un modificatore per richiedere modifiche dello stato attivo (I8dd73, b/161182057, b/160924778)
- Regola il menu della barra degli strumenti per mostrare correttamente copia, taglia e incolla. (Id3955)
- Le proprietà semantiche a valore singolo ora utilizzano uno stile di chiamata.
Ad esempio, "semantics { hidden = true }" ora viene scritto come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - È stato aggiunto Modifier.focus che sostituisce FocusModifier. (Ib852a, b/160924778)
- Aggiungi FloatingToolbar per la selezione di TextField. (Ie8b07)
- È stata aggiunta un'annotazione API sperimentale per l'API relativa all'input della chiave (I53c0a)
- È stata aggiunta un'annotazione API sperimentale per tutte le API correlate alla messa a fuoco (I53b24, b/160903352).
- È stato aggiunto FocusState2, che sostituirà FocusDetailedState (I0a3ba, b/160822595)
- È stato aggiunto ExperimentalFocus, un'annotazione @OptIn per l'API Focus. (I1544b, b/160820961)
- È stata aggiunta una classe di unità IntBounds, che rappresenta i limiti dei pixel interi dal layout. L'API di PopupPositionProvider è stata aggiornata per utilizzarla. (I0d8d0, b/159596546)
- Applier ora richiede un metodo clear() per eliminare le composizioni (Ibe697)
- KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
- È stato aggiunto un nuovo flag facoltativo useUnmergedTree ai test finder. (I2ce48)
- API sperimentale LayoutNode (I4f2e9)
Sono stati aggiunti metodi di copia a vari tipi di classi inline, tra cui:
- Offset
- Dimensioni
- Raggio
- Movimento
TransformOrigin
Metodo dell'oggetto complementare Size.copy deprecato a favore del metodo di copia dell'istanza (Ife290, b/159905651)
Popup, finestre di dialogo e menu ora ereditano il tema Material contestuale (Ia3665, b/156527485)
TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)
Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d).
Refactor SelectionHandles per il riutilizzo. (I420e0)
Clickable è stato rimosso. Utilizza Modifier.clickable (I84bdf)
TestTag e Semantics sono stati eliminati. Utilizza invece Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
Prima di questa modifica, il plug-in del compilatore Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
Modifier.tag è stato rinominato Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la linea di allineamento richiesta non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)
Al composable AndroidView è stato aggiunto un parametro modificatore. (I48a88, b/158746303)
Semantics() è deprecato. Utilizza invece Modifier.semantics(). (I72407, b/158841414)
Aggiungi il composable viewModel() che consente di creare o ottenere ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)
Sostituito l'utilizzo di IntPx con Int. Sostituito IntPxPosition con IntOffset. IntPxSize è stato sostituito con IntSize. (Ib7b44)
Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe Size anziché PxSize. In questo modo si ottengono i vantaggi di una classe inline per sfruttare un valore long per comprimere due valori float per rappresentare larghezza e altezza rappresentate come valori float. (Ic0191)
Per consolidare il numero di classi utilizzate per rappresentare le informazioni sul posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. In questo modo, puoi sfruttare i vantaggi di una classe inline per utilizzare un valore long per comprimere due valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Eliminazione dell'intera classe Px (I3ff33)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Id3434)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)
TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
L'implementazione predefinita, no-op, di ParentDataModifier#modifyParentData è stata rimossa. Era equivalente a non implementare l'interfaccia. (I0deaa)
ScaleFit precedentemente deprecato come rimosso. Utilizza invece ContentScale. (Ifbc5b)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
È stato aggiunto il componente DropdownMenu in ui-material, un'implementazione del menu Material Design. (I9bb3d)
È stato rimosso LayoutTag(), utilizza invece Modifier.tag(). È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)
Modifier.semantics è stato ripristinato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)
Implementazioni consolidate di CanvasScope Ora sono disponibili solo DrawScope e ContentDrawScope CanvasScope è stato rinominato DrawScope. DrawScope è stato aggiornato per implementare l'interfaccia Density e fornire LayoutDirection La sottoclasse DrawScope è stata eliminata in ContentDrawScope Painter e PainterModifier sono stati aggiornati per non mantenere più una proprietà RTL in quanto DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
DoubleTapGestureFilter ora disambigua SingleTapGestureFilter nell'albero. (If92b1)
API Alignment aggiornata e aggiunto il supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto da destra a sinistra) (I38cd3)
L'API dei modificatori DrawLayer è stata modificata: outlineShape è stato rinominato in shape e ha il valore predefinito RectangleShape ed è ora non nullabile; clipToOutline è stato rinominato in clip; clipToBounds è stato rimosso perché è uguale a clip == true con RectangleShape (I7ef11, b/155075735)
API Compose di livello superiore aggiornate che espongono una tela per esporre invece CanvasScope. In questo modo i consumatori non devono più gestire i propri oggetti Paint. Per i consumatori che hanno ancora bisogno di accedere a un canvas, possono utilizzare il metodo drawCanvas dell'estensione che fornisce un callback per emettere comandi di disegno con il canvas sottostante. (I80afd)
L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del destinatario che, oltre a vincoli e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)
Rimossa l'interfaccia LayoutModifier deprecata. (I2a9d6)
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)
Gli elementi secondari Layout e LayoutModifier possono essere misurati con una direzione del layout diversa. (Ibd731)
È stato aggiunto il nuovo Modifier.zIndex() per controllare l'ordine di disegno degli elementi secondari all'interno dello stesso layout principale. La proprietà elevation di DrawLayerModifier è stata rinominata shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri di DrawShadow è cambiato: l'elevazione è ora il primo e la forma è il secondo con un RectangleShape predefinito. (I20150, b/152417501)
Sono stati rimossi onSizeChange e onPositionChange in Owner. (I5c718)
È stato aggiunto Constraints2, una copia di Constraints che supporta solo i valori di vincoli Int anziché IntPx. IntPx verrà rimosso e tutti i vincoli interi verranno considerati come pixel come in Android.
- È stato aggiunto anche IntSize, che alla fine sostituirà IntPxSize. (I4b43a)
È stato reso possibile creare istanze di Alignment con valori arbitrari. Aggiunta di allineamenti 1D. (Ia0c05)
alignToSiblings ora accetta un Measured anziché un Placeable. (I5788d)
-
- È stato cambiato il nome di ScaleFit in ContentScale
- ContentScale è stato spostato dal modulo ui-graphics al modulo ui-core per trovarsi nello stesso modulo dell'API Alignment.
- Rinominato FillMaxDimension in Crop
- Rinominato FillMinDimension in Fit
- Rinominato Adatta all'interno per una migliore corrispondenza
- ImageView.ScaleType equivalenti
- È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER Interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
Supporto RTL per i modificatori di disegno. (I0aaf9)
API rilasciata per gonfiare le visualizzazioni Android da XML. Per ulteriori dettagli, guarda la demo di ViewInCompose. (I42916)
Migliora l'API DrawModifier:
- È stato creato l'ambito del ricevitore per draw() ContentDrawScope
- Rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia di CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
Aggiunta di positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)
DrawLayerModifier e drawLayer() ora impostano clipToBounds e clipToOutline su false per impostazione predefinita. (I0eb8b, b/152810850)
LayoutResult è stato rinominato in MeasureResult. (Id8c68)
Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecazione di LayoutModifier (If32ac)
Sostituito l'operatore Modifier plus con le funzioni di estensione della fabbrica (I225e4)
Sono state aggiunte le proprietà translationX/Y per supportare l'offset dell'elenco di visualizzazione dei comandi di disegno per un determinato livello. Ciò è utile per spostare i contenuti in risposta ad animazioni o eventi di tocco. (I8641c)
Aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e il ridimensionamento intorno a un punto specifico di un livello (Icf7c3)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni componibili OnPositioned e OnChildPositioned. (I2ec8f)
Aggiunta di LayerModifier, un modificatore che consente di aggiungere un RenderNode per un layout. Consente di impostare ritaglio, opacità, rotazione, scalabilità e ombre. Questo sostituirà RepaintBoundary. (I7100d, b/150774014)
È stata propagata la direzione del layout dal nodo del layout principale ai nodi secondari. È stato aggiunto il modificatore della direzione del layout. (I3d955)
Il componente Stack supporta la direzionalità da destra a sinistra (Ic9e00)
Supporto iniziale per la direzione da destra a sinistra nel layout di Compose (Ia5519)
Density e DensityScope sono stati uniti in un'unica interfaccia. Anziché ambientDensity(), ora puoi utilizzare DensityAmbient.current. Invece di withDensity(density), usa with(density) (I11cb1)
È stato modificato LayoutCoordinates per fare in modo che providedAlignmentLines sia un set anziché una mappa e che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, è più facile per i modificatori modificare uno o più valori del set senza creare una nuova raccolta per ogni modificatore. (I0245a)
LayoutCoordinates non ha più una proprietà position. La proprietà position non ha senso se si considerano LayoutModifiers, rotazione o scalabilità. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da una LayoutCoordinate a un'altra.
LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, quindi tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)
Miglioramenti alla superficie API dei vincoli (I0fd15)
È stata creata l'API CanvasScope che racchiude un oggetto Canvas per esporre una superficie API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del destinatario e le informazioni sulle dimensioni sono anche limitate ai limiti dell'inserto corrispondente. Non richiede a un consumatore di mantenere il proprio oggetto stato Paint per configurare le operazioni di disegno.
- È stato aggiunto CanvasScopeSample ed è stata aggiornata l'app demo per includere una demo di grafica dichiarativa (Ifd86d).
Rimossa l'API MaskFilter inutilizzata in quanto ha un utilizzo limitato e non è ottimizzata per l'accelerazione hardware nella maggior parte dei casi d'uso (I54f76)
RectangleShape è stato spostato da androidx.ui.foundation.shape.* a androidx.ui.graphics.* (Ia74d5, b/154507984)
Sono stati sostituiti tutti gli utilizzi di Color che accettano valori null nell'API con valori non nulli e viene utilizzato Color.Unset al posto di null (Iabaa7)
Introduci un parametro rect facoltativo aggiuntivo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)
È stato aggiunto il colore Annulla per rappresentare un valore non impostato senza racchiudere i colori in una casella. (If901a)
Sono stati aggiunti i metodi di estensione Canvas.rotate e Canvas.scale per utilizzare le coordinate del punto di rotazione facoltative per le trasformazioni. Questi valori predefiniti si riferiscono all'angolo in alto a sinistra della traduzione corrente del canvas.
Inoltre, Canvas.rotateRad è stato spostato per essere un metodo di estensione per coerenza (Ibaca6)
È stata creata l'API PixelMap per supportare l'interrogazione delle informazioni sui pixel da un ImageAsset. (I69ad6)
Rinominate in toFrameworkRect/toFrameworkRectF in toAndroidRect/toAndroidRectF per corrispondere alla convenzione di denominazione per le conversioni di oggetti tra Compose e le API framework Android su cui sono basate. Sono state aggiornate anche le documentazioni su queste API (I86337)
È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per la grafica vettoriale. Il risultato della composizione secondaria è un oggetto VectorPainter anziché un DrawModifier. Sono stati ritirati i composable DrawVector precedenti a favore di VectorPainter.
È stata rinominata l'API Image(Painter) in PaintBox(Painter). È stato creato un composable Vector che si comporta come il composable Image, ma con un VectorAsset anziché un ImageAsset (I9af9a, b/149030271)
È stato rinominato Image in ImageAsset per distinguere meglio la differenza tra i dati Image e il composable Image in arrivo utilizzato per partecipare al layout e disegnare i contenuti. _Body:Metodo di estensione creato su android.graphics.Bitmap, Bitmap.asImageAsset(), per creare un'istanza di ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework Compose (Id5bbd)
Aggiunta di TextDirection.Content (I48f36)
Aggiunto l'operatore TextDecoration.plus (I0ad1a)
Force
viene rimosso dai valori enum TextDirectionAlgorithm (Icc944)TextDirectionAlgorithm è stato rinominato TextDirection (I75ce8)
Implementa LongPressAndDrag per la selezione di TextField. (I17919)
È stato aggiunto AnnotatedString.getStringAnnotations che restituisce tutte le annotazioni all'interno dell'intervallo. (I1fa00)
È stato modificato il nome del pacchetto per Locale e LocaleList da androidx.ui.text ad androidx.ui.intl (I8132c)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
Modifica API: AnnotatedString(builder: Builder) è stato rinominato in annotatedString(builder: Builder). (Ia6377)
Modifica API: AnnotatedString.Item viene rinominato in AnnotatedString.Range. (I2d44d)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)
Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, fornito dal callback onTextInputStarted (I8dc44, b/151860051)
È stato aggiunto l'operatore più per (Text/Paragraph/Span)Style che delega alla funzione merge(). (Ia1add)
FontWeight.lerp non esegue più lo snapping. Si tratta comunque di una classe di dati. (I521c2)
Il costruttore FontWeight ora è pubblico e non è più una classe di dati. (Id6b1f)
Aggiungi getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount a TextLayoutResult (Ibc801)
Il modulo ui-text viene rinominato ui-text-core (I57dec)
Rimossa la classe Size inutilizzata perché nel modulo ui-geometry è presente una classe Size duplicata. (I1b602)
È stato aggiunto AdapterList, un componente di elenco scorrevole che compone e dispone solo gli elementi visibili. I problemi noti al momento includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai relativi elementi secondari. (Ib351b)
Aggiungi parametri di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)
Correzioni di bug
- Callback onFocusChange nei campi di testo rinominato in onFocusChanged (Ida4a1)
- VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ScrollableColumn e ScrollableRow per un'esperienza integrata con il comportamento e i parametri di Column/Row oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleCompose
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)
- Ora l'interfaccia utente di Compose può essere composta all'interno di ViewGroup senza richiedere una nuova composizione. Per un esempio, vedi ViewInteropDemo. (I9ab0b, b/160455080)
- Aggiunta di sortWith e removeRange a MutableVector (Icccf7)
- Implementa i punti di manipolazione di selezione per modificare la selezione per TextField. (I27032)
- Rimossa la classe inline Shader che conteneva la classe prevista NativeShader NativeShader è stata rinominata Shader. La classe inline Shader wrapper non ha aggiunto nulla di utile alla superficie dell'API ed era una classe inline, quindi utilizza direttamente la classe NativeShader. (I25e4d)
È stato eseguito il refactoring di PainterModifier per non fornire più la scalabilità in base ai vincoli specificati e al parametro ContentScale. Le implementazioni di Painter devono scalare i propri contenuti di disegno in base alle dimensioni specificate del DrawScope in cui vengono disegnati.
È stato risolto il problema a causa del quale la bitmap della cache di VectorPainter aveva le dimensioni predefinite anziché le dimensioni specificate per il disegno.
Aggiornamento di ImagePainter per scalare i contenuti anziché fare affidamento su PainterModifier per farlo per suo conto. (I6ba90)
aggiungi la funzione di primo livello withFrameNanos per la durata dell'animazione (Ie34c5)
L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono anch'essi deprecati. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)
È stato risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se i filtri PointerInputFilters venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (I1f48b, b/157998762)
È stato risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se i filtri PointerInputFilters venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (Iab398, b/157998762)
È stato eseguito il refactoring della classe Radius per renderla una classe inline. Sono stati rimossi i metodi di creazione del componente aggiuntivo a favore del costruttore di funzioni con il parametro predefinito per fare in modo che il raggio lungo l'asse y corrisponda a quello del parametro del raggio dell'asse x obbligatorio.
Aggiornamento di DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori float separati per il raggio lungo gli assi x e y (I46d1b)
Il composable Recompose non è più un'astrazione utile. La maggior parte delle ricomposizioni dovrebbe avvenire in seguito alle assegnazioni di MutableState. Per qualsiasi altro elemento, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricomposizione dell'ambito corrente. (Ifc992)È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e sui tipi primitivi per i parametri dei pixel (Iede0b).
Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore di composizione trasformava le chiamate in funzioni componibili. Con questa modifica, ora trasformiamo il corpo di una funzione componibile e lasciamo invariato (per lo più) il punto di chiamata.
Ciò significa che la maggior parte della logica di comunicazione con il runtime di composizione si verifica all'inizio del corpo della funzione, anziché nel punto di chiamata.
Questa modifica dovrebbe essere compatibile con l'origine per tutto l'utilizzo di Compose. La maggior parte degli utenti di Compose non dovrà aggiornare alcun codice a seguito di questa modifica.
Per supportare questo lavoro, la firma JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta tre parametri. I parametri aggiuntivi sono il compositore, un numero intero "chiave" e un numero intero bitmask utilizzato per propagare i metadati attraverso le chiamate.
Compose ora trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un sovraccarico predefinito sintetico aggiuntivo della funzione stessa, quindi questa modifica comporterà la definizione di un numero inferiore di funzioni.
Modifiche intenzionali note del comportamento risultanti da questa operazione:
- Alcune chiamate verranno saltate, cosa che non sarebbe successa in precedenza
- Le espressioni componibili nelle espressioni degli argomenti predefiniti ora vengono gestite e sottoscritte correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti dei parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Ciò comporterà un minor numero di confronti in fase di runtime, ridurrà le dimensioni della tabella degli slot e aumenterà l'omissione di funzioni componibili che in precedenza non venivano omesse 2. I parametri che vengono considerati "statici" in fase di compilazione non vengono più confrontati o archiviati in fase di runtime. In questo modo si riduce il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e il runtime deve eseguire meno lavoro 4. I parametri di invio e ricezione inutilizzati per le funzioni non sono inclusi nella determinazione della possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.
La maggior parte delle modifiche che causano interruzioni riguardava le API a cui si rivolge direttamente il compilatore e l'utilizzo tipico di Compose non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call was deprecated 4. Gli overload non varargs di
key
sono stati rimossi. Utilizza la versionevararg
da ora in poi. 5. L'annotazione Pivotal è stata ritirata. Utilizzakey
come sostituzione. 6. ScopeUpdateScope::updateScope è stato modificato in modo da prevedere una Function3 anziché una Function1 7. restartableFunction e restartableFunctionN sono stati aggiornati per includere parametri aggiuntivi in fase di compilazione (I60756, b/143464846)Sono stati rimossi i modificatori LayoutAlign ritirati. (I10877)
Rimozione di RepaintBoundary a favore di DrawLayerModifier (I00aa4)
Button, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni parametri del pulsante sono stati rinominati o riordinati. (I54b5a)Sostituito ButtonStyle con funzioni distinte e rimosso l'overload di testo (stringa). Consulta gli esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)
Modifiche che causano interruzioni all'API ambients. Per maggiori dettagli, consulta la documentazione relativa ai log e a
Ambient<T>
(I4c7ee, b/143769776)È stato modificato il comportamento di TextDirection predefinito in modo che venga determinato da LayoutDirection. Ad esempio, se LayoutDirection è RTL, TextDirection predefinito sarà RTL. In precedenza era TextDirection.ContentOrLtr/Rtl (I4e803)
Correzione di bug: quando lo spessore e lo stile del carattere sono nidificati in una AnnotatedString, il testo non viene visualizzato correttamente. (I77a9d)
Aggiunge parametri di uso comune a Text(). Se attualmente crei uno stile di testo locale per passare un numero ridotto di questi parametri, ad esempio Text(style = TextStyle(textAlign = TextAlign.Center)), ora puoi fornire i parametri direttamente: Text(textAlign = TextAlign.Center) (I82768)
Il modulo ui-android-text è stato rinominato ui-text-android (I68cbe)