Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Consulta la documentazione di riferimento dell'API per tutti i pacchetti di 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.foundation:foundation:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.9
Versione 1.9.0-beta02
2 luglio 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02
viene ritirata. La versione 1.9.0-beta02 contiene questi commit.
Nuove funzionalità
- Supporta gli elementi intelligenti nel menu contestuale e nella barra degli strumenti di selezione.
Modifiche alle API
- È stato corretto un bug per cui alcune tastiere hardware o telecomandi TV non riescono a spostare il cursore nel nuovo
TextFields
utilizzando i tasti direzionali e passano invece a un altro componente. È stato aggiuntoComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled
per poter disattivare questa correzione per il momento se causa un comportamento indesiderato in modo irrecuperabile. (Ie1922)
Correzioni di bug
- È stato risolto il problema a causa del quale le intestazioni fisse non rimanevano fisse se era presente un elemento bloccato. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTyped
ora segue l'impostazione di sistema "TEXT_SHOW_PASSWORD". (I41c0c)- È stato corretto un bug per cui
BasicTextField
mostra erroneamente un avviso "Incolla dagli appunti" quando la barra degli strumenti di testo si apre per la prima volta. (I5fda2)
Versione 1.9.0-beta01
18 giugno 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01
viene ritirata. La versione 1.9.0-beta01 contiene questi commit.
Modifiche che provocano un errore
- I nodi modificatori
background
eborder
ora implementanoSemanticsModifierNode
. Ciò può comportare l'aggiunta di nuoviSemanticsNodes
all'albero semantico e, di conseguenza, errori nei test che fanno ipotesi sulla struttura dell'albero semantico. Ad esempio, i test che utilizzanoonChild
,onParent
,onSibling
e altri metodi simili per fare asserzioni possono non riuscire se viene aggiunto un nuovo nodo tra i nodi corrente e di destinazione. Il modo migliore per correggere questi errori è aggiungere untestTag
direttamente al nodo di destinazione. Un altro approccio consiste nell'utilizzare un matcher meno restrittivo, ad esempioonNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”))
. (I638b5)
Modifiche alle API
- Rinomina
Modifier.addTextContextMenuComponents
inappendTextContextMenuComponents
. (I4c43f) - Sono state rimosse le funzioni
AnnotatedOutputTransformation
eaddStyle
e sono state trasferite aTextFieldBuffer
.addStyle
può ancora essere chiamato solo daOutputTransformation
. (I9930a, b/417991824) - Clickable is rewritten to not use suspend pointer input as an optimization. Questa funzionalità è attivata da un flag. Puoi disattivarla se riscontri un bug nella nuova implementazione:
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled
. (I85b65) - È stato introdotto
isFlingCancellationWithNestedScrollFixEnabled
per risolvere un problema di propagazione dello scorrimento rapido nello scorrimento nidificato. In questa CL ripristiniamo il comportamento di continuazione dello scorrimento rimosso in aosp/3260391. Annulleremo comunque l'animazione di scorrimento nel caso in cui il bambino venga rimosso dalla composizione. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers
:rulersIgnoringVisibility
impostato sul valore massimo.getDisplayCutoutBounds()
è stata modificata in modo da essere una funzione di estensione diPlacementScope
.WindowInsetsAnimationProperties
è stato modificato inWindowInsetsAnimation
egetAnimationProperties()
è stato modificato ingetAnimation()
. (I3816f)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)
Correzioni di bug
- Aggiungi di nuovo l'utilizzo di
scrollAnimationSpec
inContentInViewNode
. Il comportamento è stato rimosso durante il ritiro discrollAnimationSpec
, il che ha causato l'interruzione dei casi d'uso. (I1436a, b/403301605)
Versione 1.9.0-alpha04
4 giugno 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04
viene ritirata. La versione 1.9.0-alpha04 contiene questi commit.
Modifiche alle API
PrefetchScheduler
e la personalizzazione sono stati ritirati a favore dell'implementazione interna che esegue tutto il lavoro automaticamente. (I3a9a6, b/420551535)Scrollable2DState
aggiornato per utilizzare un offset nel metodocanScroll
anziché un angolo. (I28694, b/417268474)addAnnotation
inAnnotatedOutputTransformation
sostituito conaddStyle
. (I91c6f, b/417991824)- Stabilizzato
LazyLayout
. (If5db4) - È stato stabilizzato un costruttore vuoto per
LazyLayoutPrefetchState
e il relativo metodo di pianificazioneschedulePrecomposition
eschedulePrecompositionAndPremeasure
. (I4362f, b/252853717) - È stato introdotto
ProcessTextKey
su Android utilizzato per le voci del menu contestuale aggiunte per le azioni di intentPROCESS_TEXT
. (If0ac4) - Rendere pubbliche le API del menu contestuale. Sono state esposte
Modifier.addTextContextMenuComponents
eModifier.filterTextContextMenuComponents
per aggiungere e rimuovere elementi nel menu contestuale. Inoltre, abbiamo reso pubbliche le seguenti API elementari in modo che sia possibile creare un menu contestuale personalizzato:TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
- Rendi stabile
LazyLayoutItemProvider
(Icce09, b/261565751) - Sono state introdotte le funzionalità di selezione intelligente di Android che possono essere attivate/disattivate tramite
ComposeFoundationFlags.isSmartSelectionEnabled
. Ha anche esposto uncompositionLocal
LocalTextClassifierCoroutineContext
statico che può essere utilizzato per specificare ilCoroutineContext
in cui viene avviato il jobTextClassification
. (I1dbaa, b/139321320)
Versione 1.9.0-alpha03
20 maggio 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03
viene ritirata. La versione 1.9.0-alpha03 contiene questi commit.
Modifiche alle API
- È stato aggiunto
AnnotatedOutputTransformation
che consente di aggiungere annotazioni aTextField
prima del rendering. (Ibc6f0, b/389978748) - Introduci
LazyLayoutMeasurePolicy
e rendiLazyLayoutMeasureScope
stabile. (I8c5df, b/252853717) BasicSecureTextField
ora solleva ScrollState del suoBasicTextField
interno. (I6e576)- 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) - È stato introdotto un
detectDragGestures
di sovraccarico con controllo della tolleranza al tocco e del blocco dell'orientamento. (Iadb0d) - Introduci
Modifier.scrollable2D
,Scrollable2DState
e le API companion per la creazione di stati. Sono state introdotte anche funzioni di estensione di scorrimento comuni. (Ic61c8, b/214410040) - I valori di colore a 64 bit di Compose non sono direttamente confrontabili con Android
ColorLongs
perché gli ID dello spazio colore non sono in ordine per alcuni spazi colore. Per la conversione da e verso gli spazi colore Android, vengono aggiunte due nuove API:toColorLong()
efromColorLong()
. (I36899)
Correzioni di bug
- Il testo copiato da più composable Text in un
SelectionContainer
ora avrà un separatore di riga\n
aggiunto tra il testo proveniente dai composable Text separati. (I25332, b/285036739)
Versione 1.9.0-alpha02
7 maggio 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02
viene ritirata. La versione 1.9.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato corretto il modo in cui le modifiche all'input del puntatore vengono aggiunte a
VelocityTracker
inDragGestureNode
. Questa operazione può essere controllata con il nuovo flagisOffsetPositionBeforeAddingToVelocityTrackerEnabled
. (Ic7992, b/292556787, b/236451818) - Rendere
await[Vertical/Horizontal]PointerSlopOrCancellation
pubblico (I6968b, b/298903681) AbstractComposeView.consumeWindowInsets
ora è impostato su false per impostazione predefinita.WindowInsets
verrà regolato automaticamente in base alle dimensioni e alla posizione del bambino se impostato su false, quindi non è più necessario impostarlo su true per impostazione predefinita. In questo modo viene risolto il problema per cui le visualizzazioni secondarie non ricevevano aggiornamentiWindowInsets
per impostazione predefinita. Gli sviluppatori possono disattivare l'aggiornamento impostandoComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled
su true o, preferibilmente, impostandoAbstractComposeView.consumeWindowInsets
su true in tutte le istanze della visualizzazione Compose. (I6fa0a, b/411868840)
Contributo esterno
- Correzione dell'arresto anomalo di Pager con valori beyondViewportPageCount estremamente grandi (Idb2db)
Versione 1.9.0-alpha01
23 aprile 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01
viene ritirata. La versione 1.9.0-alpha01 contiene questi commit.
Modifiche al comportamento
I controlli Lint forniti con Compose ora richiedono una versione minima di AGP 8.8.2. Se non riesci a eseguire l'upgrade di AGP, puoi eseguire l'upgrade di Lint separatamente utilizzando
android.experimental.lint.version=8.8.2
(o una versione più recente) ingradle.properties
. Per eseguire i controlli lint di Compose all'interno dell'IDE, è necessario Android Studio Ladybug o versioni successive.Modifica che causa interruzione: gli overload
clickable
,combinedClickable
,selectable
,toggleable
etriStateToggleable
senza un parametro Indication ora supportano solo le istanzeIndicationNodeFactory
fornite utilizzandoLocalIndication
. Questa modifica verrà applicata quando ricompilerai gli utilizzi di questi modificatori utilizzando questa versione di Compose. Le dipendenze binarie / transitive non sono interessate. Se fornisci un'implementazione di Indicazione deprecata aLocalIndication
e utilizzi queste API, si verificherà un arresto anomalo in fase di runtime. Questa modifica del comportamento è necessaria per migliorare il rendimento e consentire alle funzioni componibili che utilizzano questi modificatori di essere ignorate durante la ricomposizione. Puoi utilizzareComposeFoundationFlags.isNonComposedClickableEnabled=false
per disattivare temporaneamente questa modifica del comportamento, in modo da abilitare l'upgrade di Compose senza essere bloccato in questa migrazione. Questo flag verrà rimosso dopo una release stabile. Per risolvere il problema, esegui la migrazione di tutte le implementazioni di indicazioni deprecate in modo che utilizzinoIndicationNodeFactory
. Puoi anche utilizzare gli overload con un parametro Indication esplicito. Questi overload continueranno a supportare le istanze nonIndicationNodeFactory
di Indication, anche se non è consigliabile per motivi di rendimento. (I6bcdc, b/316914333)
Modifiche alle API
- Introduzione dell'API per la creazione di elenchi puntati personalizzati tramite
AnnotatedString
(I1d066, b/383269496, b/139326648) - Consenti a Compose di attivare
ViewTreeObserver.OnScrollChanged
. Questo comportamento viene introdotto con il flagisOnScrollChangedCallbackEnabled
. Abbiamo anche introdotto una funzione di estensione diDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) - I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
- È stato aggiunto il supporto per il controllo lint per
TextFieldState
per assicurarsi che venga ricordato all'interno della composizione. Prendi in considerazione l'utilizzo dirememberTextFieldState
. (I53d74) - Aggiunto il supporto del controllo lint per
FocusRequester
per assicurarsi che venga ricordato all'interno della composizione (I6bf91) - È stato aggiunto il supporto per il controllo lint per
BringIntoViewRequester
per assicurarsi che venga ricordato all'interno della composizione. (Ibfba6) - Sono stati introdotti ambiti per le chiamate
schedulePrefetch
nelle strategie di griglie ed elenchi per allinearli alle funzionalitàLazyListPrefetchState
di fornitura di informazioni su dimensioni e indice. (Iad80c) - Modifica che causa interruzione: gli overload
clickable
,combinedClickable
,selectable
,toggleable
etriStateToggleable
senza un parametro Indication ora supportano solo le istanzeIndicationNodeFactory
fornite utilizzandoLocalIndication
. Questa modifica verrà applicata quando ricompilerai gli utilizzi di questi modificatori utilizzando questa versione di Compose. Le dipendenze binarie / transitive non sono interessate. Se fornisci un'implementazione di Indicazione deprecata aLocalIndication
e utilizzi queste API, si verificherà un arresto anomalo in fase di runtime. Questa modifica del comportamento è necessaria per migliorare il rendimento e consentire alle funzioni componibili che utilizzano questi modificatori di essere ignorate durante la ricomposizione. Puoi utilizzareComposeFoundationFlags.isNonComposedClickableEnabled=false
per disattivare temporaneamente questa modifica del comportamento, in modo da abilitare l'upgrade di Compose senza essere bloccato in questa migrazione. Questo flag verrà rimosso dopo una release stabile. Per risolvere il problema, esegui la migrazione di tutte le implementazioni di indicazioni deprecate in modo che utilizzinoIndicationNodeFactory
. Puoi anche utilizzare gli overload con un parametro Indication esplicito. Questi overload continueranno a supportare le istanze nonIndicationNodeFactory
di Indication, anche se non è consigliabile per motivi di rendimento. (I6bcdc, b/316914333) - Introduci un flag per controllare il comportamento di prefetch nidificato automatico:
isAutomaticNestedPrefetchEnabled
(I8d448) - Introduci un sovraccarico per
LazyGridState
erememberLazyGridState
che richiede unLazyLayoutCacheWindow
. (I51151) - Aggiunge righelli per i margini interni della finestra. Aggiunge
DerivedRuler
per consentire il calcolo di un righello da un altro righello. ModificaPlacmentScope
per implementare la densità. (I658bc, b/359260964) - È stata aggiunta una funzione di fabbrica
WindowInsets()
con zero argomenti per creare facilmenteWindowInsets
vuoti. (I65f62, b/395311689) - Aggiunto
PaddingValues.Zero
per unPaddingValues
vuoto. (If193e, b/386255688)
Correzioni di bug
- L'overflow
state
diBasicTextField
mantiene il cursore visibile quando le sue dimensioni cambiano. (I0eb41, b/406187741) - API
onVisibleItemsUpdated
aggiornate inLazyListPrefetchStrategy
eLazyGridPrefetchStrategy
per fornire informazioni sullo stato iniziale. (If2cfa)
Versione 1.8
Versione 1.8.3
18 giugno 2025
androidx.compose.foundation:foundation-*:1.8.3
viene ritirata. La versione 1.8.3 contiene questi commit.
Versione 1.8.2
20 maggio 2025
androidx.compose.foundation:foundation-*:1.8.2
viene ritirata. La versione 1.8.2 contiene questi commit.
Correzioni di bug
- È stata introdotta una correzione che impedisce il calcolo del numero di elementi da caricare per la ricerca mirata per causare una divisione per zero. È stato applicato il controllo a tutti i layout che utilizzano
LazyLayoutBeyondBoundsState
. (8e6dc8)
Versione 1.8.1
7 maggio 2025
androidx.compose.foundation:foundation-*:1.8.1
viene ritirata. La versione 1.8.1 contiene questi commit.
Correzioni di bug
- È stato corretto un bug in
BasicText
eTextAutoSize
in cui l'utilizzo diTextOverflow.Ellipsize
comportava un testo più piccolo del necessario. (I1e1d8, b/396582066) - È stato corretto un bug in
BasicTextField
che causava arresti anomali vari quandoTextFieldDecorator
non chiamavainnerTextField
. (I2638c), b/308398612 - È stato corretto un bug in
TextField
che causava la scomparsa completa della barra degli strumenti di testo e dei punti di manipolazione di selezione quando veniva modificata l'istanza diTextFieldState
. (I8068a), b/390477786 - È stato corretto un bug in
BasicText
per cui la modifica del vincolo di larghezza minima non aggiornava il posizionamento del testo quandotextAlign
era impostato su un valore non predefinito. (I77a96), b/406305552
Versione 1.8.0
23 aprile 2025
androidx.compose.foundation:foundation-*:1.8.0
viene ritirata. La versione 1.8.0 contiene questi commit.
Versione 1.8.0-rc03
9 aprile 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03
viene ritirata. La versione 1.8.0-rc03 contiene questi commit.
Versione 1.8.0-rc02
26 marzo 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02
viene ritirata. La versione 1.8.0-rc02 contiene questi commit.
Versione 1.8.0-rc01
12 marzo 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01
viene ritirata. La versione 1.8.0-rc01 contiene questi commit.
Versione 1.8.0-beta03
26 febbraio 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03
viene ritirata. La versione 1.8.0-beta03 contiene questi commit.
Correzioni di bug
- È stata aggiunta una nuova proprietà semantica
InputText
che acquisisce il valore di un campo di testo prima che venga applicata la trasformazione dell'output. (Iae46a, b/395911609, b/176949051) - Rimossi gli overload
AutoSize
ritirati. Utilizza le APITextAutoSize
che svolgono la stessa funzione. (I2c90f) - È stato risolto un problema di memorizzazione nella cache con
TextAutoSize
per cui un secondo passaggio di layout con gli stessi vincoli poteva comportare l'utilizzo della seconda dimensione del carattere più adatta anziché della più grande. (Id367f)
Versione 1.8.0-beta02
12 febbraio 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02
viene ritirata. La versione 1.8.0-beta02 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui le implementazioni dell'overscroll che utilizzano
LayoutModifierNode
non funzionavano correttamente all'interno dei contenitori di scorrimento.
Versione 1.8.0-beta01
29 gennaio 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01
viene ritirata. La versione 1.8.0-beta01 contiene questi commit.
Modifiche alle API
SemanticsNodeInteraction.semanticsId()
è stato rimosso. Utilizza inveceSemanticsNodeInteraction.fetchSemanticsNode().id
. (Ie397a)- Riscrivi l'API
requestAutofill
in modo che esista al di fuori del gestore della compilazione automatica. (Id1929) 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 utilizzandoFlowRow
, ma riconosciamo che non è vero in generale.ContextualFlowRow
è completamente implementabile nello spazio utente ed è possibile tentare di copiarne l'implementazione e adattarla, se necessario. In futuro, speriamo di risolvere questi casi d'uso in modo diverso. (Ibafec)
Correzioni di bug
- Correzione del layout del testo con i puntini di sospensione che a volte vengono tradotti in modo errato durante le animazioni. Per saperne di più, consulta b/389707025 (Ie55b1, b/389707025)
- È stato corretto un bug in
BasicText
conTextAutoSize
emaxLines
impostati su 1. (Ic0450, b/376834366) - L'altezza intrinseca minima del testo ora tiene conto del parametro
minLines
. Ciò significa che l'altezza intrinseca minima segnalata non sarà inferiore all'altezza richiesta per soddisfare il parametrominLines
(I225f9, b/388299762).
Versione 1.8.0-alpha08
15 gennaio 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08
viene ritirata. La versione 1.8.0-alpha08 contiene questi commit.
Modifiche alle API
- AutoSize: è stato rinominato
AutoSize
inTextAutoSize
e sono state pubblicate API che consentono di creare implementazioniTextAutoSize
personalizzate. Per un esempio di implementazione della dimensione automatica del testo personalizzato, consultaTextAutoSizeSample
. (I85756) - Lo strumento di controllo delle funzionalità
DetectTapGesturesEnableNewDispatchingBehavior
è stato spostato inComposeFoundationFlags
e rinominato inisDetectTapGesturesImmediateCoroutineDispatchEnabled
. Il vecchio flag è deprecato e ora delegherà invece aComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled
. (I62932)
Correzioni di bug
- Attivato
DetectTapGesturesEnableNewDispatchingBehavior
per impostazione predefinita. Le APITapGestureDetector
ora utilizzano per impostazione predefinita il nuovo comportamento di distribuzione (invio immediato). (I9f2bc, b/369648479) - Sono stati corretti i modificatori
requiredWidth/Height/Size
per gestire correttamente le dimensioni intrinseche. (Ie3d7d, b/368113212)
Contributo esterno
BasicTooltip
è stato reso comune in foundation eBasicTooltip/Tooltip
in Material 3. (Ifc2e6)- È stata aggiunta una nuova interfaccia degli appunti e una composizione locale. (I80809)
Versione 1.8.0-alpha07
11 dicembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07
viene ritirata. La versione 1.8.0-alpha07 contiene questi commit.
Modifiche alle API
- È stato eliminato il flag
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
che ha contribuito a ripristinare la rimozione digraphicsLayer
interno daBasicText
. Se utilizzavi questo flag, comunicaci i motivi segnalando un bug. Puoi anche passareModifier.graphicsLayer()
alle chiamateBasicText
per ottenere lo stesso comportamento di prima. (Id9f90) - È stata aggiunta l'implementazione predefinita per il nuovo DSL
stickyHeader
. (I68986) - Ha
LocalAutofillHighlightColor
composizione locale che utilizza un tipo di colore. (I0e05b) OverscrollEffect#withoutDrawing
rinominato inOverscrollEffect#withoutVisualEffect
. (I1a154)
Correzioni di bug
- Correzione successiva di un problema nel calcolo del target di
AnchoredDraggable
, che poteva stabilizzarsi sull'ancora errata per determinati scorrimenti. (I23b87, b/367660226)
Contributo esterno
- Aggiungi
BringIntoViewResponderModifierNode
all'interfaccia utente, che offre un nuovo modo per implementare la funzionalità Porta in visualizzazione e consente l'implementazione a livello di piattaforma (Ia6dd8) - Stiamo modificando leggermente il modo in cui viene disegnato il cursore. Puoi utilizzare
LocalCursorBlinkEnabled
per disattivare il disegno del cursore nei test. (I4c697)
Versione 1.8.0-alpha06
13 novembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06
viene ritirata. La versione 1.8.0-alpha06 contiene questi commit.
Modifiche alle API
- Aggiunge il modificatore
stylusHoverIcon
. (Iff20a, b/331289114) confirmValueChange
diAnchoredDraggableState
deprecato. Anziché bloccare le modifiche dello stato, gli ancoraggi non consentiti non devono essere inclusi nel set di ancoraggi attivi e deve essere utilizzato unOverscrollEffect
per indicare l'indisponibilità dell'azione richiesta. (Ia717f)- Modifica la gestione della compilazione automatica in modo che diventi un'interfaccia. (I84914, b/376080755)
- Aggiunge le API
OverscrollEffect#withoutDrawing
eOverscrollEffect#withoutEventHandling
. Queste API creano un'istanza wrapper dell'effetto di overscroll fornito che non disegna / gestisce rispettivamente gli eventi, il che consente di eseguire il rendering dell'overscroll in un componente separato dal componente che distribuisce gli eventi. Ad esempio, disattivando il disegno dell'overscroll all'interno di un elenco pigro e disegnandolo separatamente in alto / altrove. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Aggiunta del supporto del completamento automatico nella barra degli strumenti di testo. (Ie6a4c)
- Depreca
OverscrollConfiguration
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 modificata la proprietà
effectModifier
inOverscrollEffect
in modo che sianode: DelegatableNode
, in linea con le altre API. (Ic0b46, b/255554340) - È stata rimossa l'API
GlobalAssertions
sperimentale. Il suo utilizzo previsto era quello di eseguire controlli di accessibilità. Per questo scopo, consultaenableAccessibilityChecks()
. (I59322)
Versione 1.8.0-alpha05
30 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05
viene ritirata. La versione 1.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Supporto del ridimensionamento automatico del testo. Passa un'istanza
AutoSize
(ad es.AutoSize.StepBased
) al tuo composable di testo preferito (comeBasicText
) e guarda le dimensioni del testo adattarsi allo spazio disponibile. (Ice7e0, b/139320827) - Aggiunge le API
OverscrollFactory
eLocalOverscrollFactory
per consentire la configurazione dell'overscroll all'interno di una gerarchia. Il valore fornito tramiteLocalOverscrollFactory
verrà utilizzato per impostazione predefinita per creare unOverscrollEffect
. Per creare e memorizzare un effetto dalla fabbrica corrente fornita, utilizzarememberOverscrollEffect()
. (I51ca4, b/255554340)
Modifiche alle API
- Introduci
CompositionLocal
che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione automatica riuscita. (I32092) ScrollableDefaults.overscrollEffect
rimosso. Utilizza invecerememberOverscrollEffect
. Verrà creata un'istanza dell'implementazione corrente dell'overscroll fornita conLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516)- Introduce una nuova interfaccia
AutofillManager
che può essere utilizzata per perfezionare il percorso di compilazione automatica degli utenti e un flagisSemanticAutofillEnabled
per attivare questa nuova versione della compilazione automatica. (I9d484) - Rimuove
CombinedClickableNode
. Questa API sperimentale è stata esposta temporaneamente per sbloccare il lavoro sulle prestazioni, ma non è più necessaria. Devi invece utilizzare direttamenteModifier.combinedClickable
come per le altre API di modifica. (I4b658) - Aggiunge overload a
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
eVerticalPager
con supporto per la specifica di unOverscrollEffect
personalizzato. IlOverscrollEffect
fornito riceverà gli eventi e verrà visualizzato nei limiti di questi componenti. Tieni presente che disegnare lo stessoOverscrollEffect
due volte non è supportato, quindi non puoi disegnare lo stessoOverscrollEffect
fornito a uno di questi componenti separatamente conModifier.overscroll
. Il caso d'uso del disegno dell'overscroll al di fuori dei limiti di questi componenti verrà trattato separatamente in futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Versione 1.8.0-alpha04
16 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04
viene ritirata. La versione 1.8.0-alpha04 contiene questi commit.
Modifiche alle API
- Aggiunge i callback
DelegatableNode#onDensityChange
eDelegatableNode#onLayoutDirectionChange
per consentire l'aggiornamento dello stato del nodo quando questi cambiano. (I04f3e, b/340662451) - Paragrafo e
ParagraphIntrinsics
ora accettano un elenco di tutte le annotazioni applicate aAnnotatedString
, mentre in precedenza avevano solo un elenco diSpanStyles
. (I12f80) - È stato introdotto
PointerInputModifierNode#touchBoundsExpansion
, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del puntatore. (Iccf02, b/335339283)
Correzioni di bug
- È stato corretto un bug per cui le soglie posizionali passate a
AnchoredDraggableDefaults.flingBehavior
non venivano prese in considerazione correttamente in alcuni scenari. (Ifdf0d, b/367660226) - È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante uno scorrimento in corso. Ora questi nodi annulleranno lo scorrimento e invieranno correttamente l'evento
onPostFling
con la velocità rimanente. Stiamo anche introducendo il flagNewNestedScrollFlingDispatchingEnabled
per controllare il comportamento in caso di regressioni. Il flag verrà rimosso prima della beta. (I05c37, b/371168883) - È stato corretto un bug per cui
OverscrollEffects
passato aModifier.anchoredDraggable
riceveva delta 2D anziché 1D. (Ie52c0)
Versione 1.8.0-alpha03
2 ottobre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03
viene ritirata. La versione 1.8.0-alpha03 contiene questi commit.
Modifiche alle API
- Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
- È stato introdotto il flag
DraggableAddDownEventFixEnabled
(I848d5) - È stato introdotto un nuovo ruolo semantico chiamato Carosello per emulare il comportamento dell'elenco nei pager per i servizi di accessibilità. (Id354b, b/354109776, b/239672673)
- È stato rimosso il modificatore implicito
graphicsLayer
dal composableBasicText
. È stato aggiunto il flag sperimentaleComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
per poter ripristinare il comportamento precedente. (Ie478d) - È stato aggiunto
Modifier.recalculateWindowInsets()
per consentire ai bambini della gerarchia di utilizzareinsetsPadding
anche se i genitori li hanno allineati senzaconsumeWindowInsets()
. (I7f9e4)
Correzioni di bug
- Implementa la selezione dei gesti in
detectDragGestures
, elementi trascinabili e scorrevoli. Ora, se un elemento trascinabile figlio abbandona un gesto, l'elemento padre ha l'opportunità di riprenderlo. Ciò consente una gestione dei gesti più continua e integrata. (Ic88fe) - Aggiorna il comportamento di annullamento dello scorrimento nei contenuti scorrevoli. Ora, se un elemento scorrevole viene lanciato e raggiunge i limiti, trasmetterà correttamente la velocità di lancio all'elemento scorrevole successivo della catena, anziché continuare a guidare il lancio. (I9326a)
Versione 1.8.0-alpha02
18 settembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02
viene ritirata. La versione 1.8.0-alpha02 contiene questi commit.
Modifiche alle API
- Ora sono disponibili
TextOverflow.StartEllipsis
eTextOverflow.MiddleEllipsis
, che consentono di posizionare i puntini di sospensione all'inizio o al centro della riga di testo a una sola riga (I38913, b/185418980).
Versione 1.8.0-alpha01
4 settembre 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01
viene ritirata. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.8
12 febbraio 2025
androidx.compose.foundation:foundation-*:1.7.8
viene ritirata. La versione 1.7.8 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo in
BasicTextField
con la trasformazione dell'input durante la sostituzione di parte del testo incollato. (I73702)
Versione 1.7.7
29 gennaio 2025
androidx.compose.foundation:foundation-*:1.7.7
viene ritirata. La versione 1.7.7 contiene questi commit.
Correzioni di bug
- È stato risolto l'arresto anomalo di
IndexOutOfBound
con l'annotazione del link. (Ic96d2) - È stata corretta la ricomposizione infinita in alcuni casi limite con i link. (I04a03)
Bug noti
- È stato identificato un bug che può causare il ritorno a capo del testo in modo imprevisto in rari scenari sul livello API Android 35. Non può essere risolto nella versione 1.7, quindi verrà risolto nella versione 1.8. (b/391378120)
Versione 1.7.6
11 dicembre 2024
androidx.compose.foundation:foundation-*:1.7.6
viene ritirata. La versione 1.7.6 contiene questi commit.
Correzioni di bug
- È stato risolto il problema relativo alla mancata visibilità dei contenuti in linea del testo per i servizi di accessibilità.
- Risolto un problema per cui
AndroidEmbeddedExternalSurface
non veniva reimpostato correttamente e rimaneva bloccato quando veniva riutilizzato in un elenco pigro.
Versione 1.7.5
30 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.5
viene ritirata. La versione 1.7.5 contiene questi commit.
Correzioni di bug
- Assicurati che gli elementi bloccati non siano composti due volte nell'area di spaziatura interna dei contenuti. (Ic6224)
Versione 1.7.4
16 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.4
viene ritirata. La versione 1.7.4 contiene questi commit.
Correzioni di bug
- Risolto un bug che causava un raro arresto anomalo nei campi di testo. (I475c6, b/313010266)
- Rimossa
ReusableContentHost
alla radice degli elementi del layout pigro. Questa era una potenziale causa principale degli arresti anomali "misura chiamata su un nodo disattivato". (Id6e60)
Versione 1.7.3
2 ottobre 2024
androidx.compose.foundation:foundation-*:1.7.3
viene ritirata. La versione 1.7.3 contiene questi commit.
Correzioni di bug
- È stata corretta una perdita di memoria con
BasicText
quando minLines è impostato su un valore non predefinito.
Versione 1.7.2
18 settembre 2024
androidx.compose.foundation:foundation-*:1.7.2
viene ritirata. La versione 1.7.2 contiene questi commit.
Correzioni di bug
- È stato risolto il problema relativo all'elemento trascinabile a cui mancavano eventi di discesa, il che causava un aspetto più lento del normale.
Versione 1.7.1
10 settembre 2024
- Nessuna modifica agli artefatti Android. Sono stati rimossi
-desktop
artefatti e sono stati aggiunti-jvmStubs
e-linuxx64Stubs
artefatti. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose.
Versione 1.7.0
4 settembre 2024
androidx.compose.foundation:foundation-*:1.7.0
viene ritirata. La versione 1.7.0 contiene questi commit.
Modifiche importanti dalla versione 1.6.0
- Il rendimento di
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
eModifier.draggable
è stato notevolmente migliorato. Nell'ambito di questo impegno, oltre alle modifiche interne, sono state apportate le seguenti modifiche all'API- È stata aggiunta una nuova API di indicazione,
IndicationNodeFactory
. Ciò porta a implementazioni di indicazioni più efficienti rispetto alla precedente APIrememberUpdatedInstance
(ora obsoleta). Per informazioni sulla migrazione, visita il sito developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
ora accetta un parametroMutableInteractionSource
che ammette valori nulli. Se è null e l'indicazione fornita è unIndicationNodeFactory
, l'indicazione può essere creata in modo differito solo quando necessario, il che migliora le prestazioni. Se non esegui l'hosting e non utilizziMutableInteractionSource
, ti consigliamo di passare null anzichéremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
è stato ritirato. Comporta una penalità di rendimento elevata e inevitabile e impedisce altre ottimizzazioni. Al suo posto, devi utilizzare la nuova APIIndicationNodeFactory
.
- È stata aggiunta una nuova API di indicazione,
BasicTextField
che utilizza unTextFieldState
è ora stabile e consigliamo a tutti i siti di chiamata di iniziare la migrazione daBasicTextField(value, onValueChange)
aBasicTextField(TextFieldState)
.ClickableText
è stato deprecato. Per aggiungere link selezionabili al testo, utilizzaBasicText
con la nuova annotazioneLinkAnnotation
nelAnnotatedString
.LinkAnnotation
consente uno stile personalizzato in base allo stato del link (ad es. attivo, al passaggio del mouse).- Ti presentiamo
ContextualFlowRow
eEnhanced FlowRow/Column
conMaxLines
eOverflow
. Siamo felici di annunciare i miglioramenti apportati alle funzionalità sperimentaliFlowRow
eFlowColumn
, che ora includono il supporto dimaxLines
e dell'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 configurazione maxLines 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, imposta l'overflow suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. EsploraContextualFlowRowSample
eFlowRowSample
per vedere esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082) - Il supporto dell'animazione di comparsa e scomparsa degli elementi è stato aggiunto a
LazyColumn
eLazyRow
. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (I2d7f7, b/150812265) - È stata implementata la compatibilità sperimentale con gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). - Le origini
NestedScroll
Drag and Fling vengono sostituite daUserInput
eSideEffect
per tenere conto della definizione estesa di queste origini che ora includono animazioni (Side Effect) e rotellina del mouse e tastiera (UserInput
). - Le richieste di prefetch
LazyLayout
possono ora essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (ID 513f). - Supportare la funzionalità di scrittura a mano libera con lo stilo sui dispositivi dopo Android U. (I002e4)
- Varie API sono state promosse a stabili
- Pager, snapping, rientri delle finestre
Versione 1.7.0-rc01
21 agosto 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01
viene ritirata. La versione 1.7.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione in cui l'arresto anomalo si verificava quando un elemento era selezionato all'interno di un elemento principale selezionabile (o cliccabile) e disattivato. (b/317561689)
Versione 1.7.0-beta07
7 agosto 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07
viene ritirata. La versione 1.7.0-beta07 contiene questi commit.
Correzioni di bug
- L'input di testo relativo alle funzioni
SemanticsNodeInteraction
performTextReplacement
,performTextInput
eperformTextClearance
ora genererà errori di asserzione quando vengono chiamate suTextFields
di sola lettura. (I4ae8f) - È stato risolto un problema di visualizzazione nei link ipertestuali. (I23311)
- È stato risolto il problema relativo al modificatore
contentReceiver
che non funzionava con alcuni IME. - Generazione della velocità: impedisci la propagazione dei valori NaN in Compose UI e Foundation.
Versione 1.7.0-beta06
24 luglio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06
viene ritirata. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05
viene ritirata. La versione 1.7.0-beta05 contiene questi commit.
Correzioni di bug
- Correzione per il trattamento dei valori NaN in
SnapFlingBehavior
e Pager.
Versione 1.7.0-beta04
26 giugno 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
viene ritirata. La versione 1.7.0-beta04 contiene questi commit.
Correzioni di bug
- Evita arresti anomali durante la misurazione di righe di testo molto lunghe (ad es.10. 000 caratteri) (8157ab)
- Corregge la misurazione di testi molto grandi che causano arresti anomali nella nuova
BasicTextField
(6b7575) - Ripristina una modifica del comportamento nella misurazione di righe/colonne che interrompe l'utilizzo del testo in determinati scenari (69e8ba)
Versione 1.7.0-beta03
12 giugno 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
viene ritirata. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
viene ritirata. La versione 1.7.0-beta02 contiene questi commit.
Modifiche alle API
- Aggiunge un'API sperimentale per configurare il comportamento di prefetch di
LazyGrids
in modo simile all'API sperimentale esistente perLazyLists
. Ciò include il supporto per il recupero preventivo degli elementi inLazyGrids
nidificati. Analogamente aLazyListPrefetchStrategy
, l'implementazione predefinita prevede il precaricamento dei primi due elementi nidificati di ogni griglia, ma questa operazione può essere configurata dalle nuove APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) SemanticsProperties.Editable
è stato rinominato inIsEditable
eSemanticsPropertyReceiver.editable
è stato modificato inisEditable
. La proprietà ora è booleana e viene sempre specificata dai campi di testo. (I8acd8)- I valori predefiniti di
basicMarquee
sono stati spostati nell'oggettoMarqueeDefaults
. (I12ff6) - Il parametro
basicMarquee
delayMillis
è stato rinominato inrepeatDelayMillis
. (I12ff6) - Aggiornamento dell'API per lo stile dei link: è stato spostato
TextLinkStyles
inTextStyle
ed è stato rimossoTextDefaults
da Material (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)- È stato rimosso "Predefinito" dalle proprietà
MarqueeDefaults
. (I1d8a0) - È stato rimosso "Marquee" dalle proprietà
MarqueeDefaults
. (Iad4f4) TextLinkStyles
è stato rimosso dal corsoTextStyle
.TextLinkStyles
fa invece parte del costruttoreLinkAnntation
e del metodoAnnotatedString.fromHtml
(I90b2b)- È stato corretto un bug per cui il pager si blocca quando viene lanciato verso un limite, dopo essersi già stabilizzato al limite. (I9f373, b/339171222)
- BTF2 ora ha i gesti di selezione del mouse corretti. (Ibe8c6)
Contributo esterno
- Invia di nuovo "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622)
- Rendi il tipo di contenuti basato sul calcolo del tempo di composizione/misurazione nel prefetch per migliorare la precisione (Ibccb1)
- Rendere disponibili i modificatori
WindowInsetsPadding
dal set di origini comuni (I070b2)
Versione 1.7.0-beta01
14 maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
viene ritirata. La versione 1.7.0-beta01 contiene questi commit.
Modifiche alle API
- È stata riaggiunta la proprietà
KeyboardOptions.shouldShowKeyboardOnFocus
come nascosta ritirata per la compatibilità binaria. (I15cfe) Modifier.anchoredDraggable
ora inverte i delta di trascinamento per impostazione predefinita per i componenti con orientamento orizzontale quando vengono utilizzati in un layout da destra a sinistra. (I3c6d9)AnnotatedString.hasEqualsAnnotations
è orahasEqualAnnotations
. (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) onDragStarted
eonDragStopped
sono stati sostituiti con callback non sospesi. (I59de8)
Correzioni di bug
- È stato corretto un bug per cui Pager si arrestava in modo anomalo quando
contentPadding
era maggiore dei vincoli in entrata. Il pager ora forza i valori negativi restituiti daPageSize
a 0. (Iba5d8, b/314008560)
Versione 1.7.0-alpha08
1° maggio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
viene ritirata. La versione 1.7.0-alpha08 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un menu contestuale con il tasto destro del mouse a
BasicTextField
eSelectionContainer
con voci per le azioni taglia, copia, incolla e seleziona tutto. (If8c93, Ia2b49, I6f268)
Modifiche alle API
- Le richieste di prefetch
LazyLayout
possono ora essere contrassegnate come urgenti, il che significa che prevediamo che questo elemento sarà necessario nel frame successivo e vogliamo ignorare il budget del frame per assicurarci di fare più lavoro in anticipo (ID 513f). isPositionedByParentWithDirectManipulation
rinominato 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)onClicked
rinominato inonClick
all'interno diLinkInteractionListener
(Iaa35c)- Modifica della lambda di azione per
getScrollViewportLength
in base al feedback del consiglio API. (Ibc74a) - Sono state rinominate le API di delega della scrittura a mano libera con stilo. (Ica45f, b/327271923)
- Rinomina
TextInclusionStrategy.isInside
inisIncluded
. Rendi il tipo restituitoParagraph/MultiParagraph#getRangeForRect()
non annullabile. (I51f26)
Correzioni di bug
- È stata aggiunta l'opzione "Seleziona tutto" a tutti i menu contestuali di testo in
SelectionContainer
. (Ib750e, b/240143283) - È stata corretta l'acquisizione di screenshot lunghi per i contenitori a scorrimento con
reverseScrolling=true
. (I7c59c) - È stato risolto un problema per cui il
currentValue
diAnchoredDraggableState
cambiava quando si avvicinava ai limiti dello stato. (Iea30b, b/333846848)
Contributo esterno
PrefetchExecutor
->PrefetchScheduler
rinominato per riflettere meglio le sue responsabilità. (Ib9154)- È stato aggiunto il supporto per il recupero preventivo degli elementi in
LazyLists
nidificati (ad es. 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.foundation:foundation-*:1.7.0-alpha07
viene ritirata. La versione 1.7.0-alpha07 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un oggetto
TextDefaults
che contiene metodi per costruire unLinkAnnotation
e analizzare una stringa con tag HTML che applicanoMaterialTheme
ai link. (I98532, b/139312671) - È stato aggiunto il supporto dell'animazione di comparsa e scomparsa degli elementi in
LazyVerticalGrid
eLazyHorizontalGrid
. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (Ib7d12, b/330510929) - Il supporto dell'animazione di comparsa e scomparsa degli elementi è stato aggiunto a
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (I69bc9, b/330511290)
Modifiche alle API
- Aggiunge
ContextMenuColors
e il relativoLocalContextMenuTheme
ProvidableCompositionLocal
. I colori del menu contestuale nei campi di testo e nel testo selezionabile possono essere modificati fornendo la composizione locale. (Ifa154) - I link di testo hanno ricevuto l'opzione di stile dello stato premuto, oltre allo stile normale, al passaggio del mouse e alla messa a fuoco. (I5f864, b/139312671)
- Introduci
ViewConfiguration.HandwritingGestureLineMargin
per i gesti di scrittura a mano libera. Supporta il gesto di scrittura a mano libera perBasicTextField
. (Ie6e13, b/325660505) - Abbiamo rimosso
DelegatableNode.scrollIntoView
per la release 1.7 perché non abbiamo avuto il tempo di completare la stabilizzazione del resto della superficie API correlata. Questa funzione verrà reintrodotta nella versione 1.8 (I6cf61, b/333421581, b/332900232) - Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato i relativi elementi secondari 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) - Presenta
requestScrollToItem
perLazyStaggeredGrid
. Per ogni misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numerorequestScrollToItem
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToItem
. (I63983) - Introduci
requestScrollToPage
in Pager. Per ogni misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numerorequestScrollToPage
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToPage
. (Ic4213) - È stato introdotto
requestScrollToItem
perLazyGrids
. Per ogni misura-pass, il cliente può ora disattivare la manutenzione dell'indice in base alla chiave chiamando il numerorequestScrollToItem
. Questo non modifica in alcun modo il comportamento esistente, a meno che non venga chiamatorequestScrollToItem
. (I0a7a0) ClickableText
è contrassegnato come deprecato. Per aggiungere link al testo, crea unAnnotatedString
con unLinkAnnotation
corrispondente al tuo link e passa questoAnnotatedString
al composableText
(I34d4b, b/323346994).UrlAnnotation
è deprecato, utilizzaLinkAnnotation.Url
. Se utilizzi i temi Material, usa l'oggettoTextDefaults
per creare l'annotazione con i temi Material applicati (I8d180, b/323346545).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 la configurazione visiva dei link quando sono selezionati e/o quando il cursore li sorvola. (I81ce4, b/139312671) - Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
LazyColumn
ora esegue il rendering corretto delle intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)- È stata stabilizzata la maggior parte delle API sperimentali rimanenti introdotte con il nuovo
BasicTextField
. (I714e2) - È stato aggiunto il parametro
textObfuscationCharacter
aBasicSecureTextField
, che controlla quale carattere utilizzare durante l'offuscamento dei contenuti. (I0588b) - 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) - Ti presentiamo
LocalBringIntoViewSpec
, un comportamento di scorrimento dello stato attivo dipendente dalla piattaforma che viene applicato al livello del modificatore Scrollable. (I27aa5, b/317453911) TextFieldCharSequence
rimosso.TextFieldBuffer.originalValues
viene sostituito daTextFieldBuffer.originalText
eTextFieldBuffer.originalSelection
. (I2c7d6)ImeOptions.hintLocales
non è più annullabile. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizzaLocaleList.Empty
. (Ic5bc4)getOffsetFractionForPage
rinominato ingetOffsetDistanceInPages
. (Ia05e2)
Correzioni di bug
- Quando
InputTransformations
vengono uniti anext
, i relativiKeyboardOptions
vengono ora uniti correttamente in base alle singole opzioni utilizzando il nuovo metodoKeyboardOptions.merge
. (Ie5304, b/295951492) AnchoredDraggableState
ditargetValue
ora non considera più le soglie di posizione. Ora ha una soglia implicita del 50%, il che significa chetargetValue
cambia a metà strada tra due punti di ancoraggio. (I82c2c)
Contributo esterno
- Ridenominazione di due API di scorrimento (I56a75)
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
viene ritirata. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- Il supporto dell'animazione di comparsa e scomparsa degli elementi è stato aggiunto a
LazyColumn
eLazyRow
. In precedenza era possibile aggiungere il modificatoreModifier.animateItemPlacement()
per supportare le animazioni di posizionamento (riordino). Abbiamo ritirato questo modificatore e introdotto un nuovo modificatore non sperimentale chiamatoModifier.animateItem()
che ti consente di supportare tutti e tre i tipi di animazione: comparsa (dissolvenza in entrata), scomparsa (dissolvenza in uscita) e riordino. (I2d7f7, b/150812265) - I clienti di
LazyColumn/LazyRow
ora possono disattivare la gestione di un indice basato sulla chiave per l'imminente misurazione chiamando unLazyListState.requestToScroll
non sospeso. (I98036, b/209652366) - 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) - È 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. Questo flag verrà rimosso prima della beta 1.7. (I2b055, b/329296471) - Introduci una nuova API
GraphicsLayer
per offrire maggiore flessibilità nel posizionamento e nel rendering delle istanzeGraphicsLayer
e supportare le funzionalità di rendering intrinseco senza dover coordinarsi con le implementazioni componibili per specificare le istanze del modificatoreGraphicsLayer
.
Modifiche alle API
- 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)outOfBoundsPageCount
rinominato inbeyondViewportPageCount
. (I129c6)fun ClipEntry.getMetadata()
è stato modificato inval ClipEntry.clipMetadata
. (I50155)TextFieldState.valueAsFlow()
rimosso. Preferisci utilizzaresnapshotFlow { state.text }
osnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629)- Parametri
InputTransformation.transformInput
riorganizzati.originalValue: TextFieldCharSequence
rimosso. OraTextFieldBuffer
riporta questo valore con lo stesso nome. È stato rimosso anche il parametrovalueWithChanges: TextFieldBuffer
.TextFieldBuffer
ora è l'ambito del ricevitore nella funzione. (I919cc) - Le varianti
BasicTextField(state)
eBasicSecureTextField
ora utilizzanoKeyboardActionHandler
anzichéKeyboardActions
per elaborare le azioni eseguite dalla tastiera software. (I58dda) - API di delega della scrittura a mano libera con lo stilo per supportare la scrittura a mano libera con lo stilo nei campi di input di testo "fittizi". (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
rinominato inshowKeyboardOnFocus
. (Ib4b7a, b/295951492)- Rimosso il parametro
hintMediaTypes
daModifier.contentReceiver
. Gli sviluppatori erano già invitati a controllare il tipo di contenuti multimediali diTransferableContent
ricevuto, in quanto potrebbe essere incompatibile conhintMediaTypes
configurato. (I82f99) - Sono stati riordinati i parametri di
BasicSecureTextField
. Sono stati rimossi i parametrikeyboardType
eimeAction
a favore della classeKeyboardOptions
completa, mantenendo gli stessi valori predefiniti appropriati perBasicSecureTextField
. È stato rimosso anche il parametroscrollState
. (Ibbfa9) - Il tipo di
TextFieldState.text
è stato modificato daTextFieldCharSequence
aCharSequence
. Pertanto, sono stati aggiuntiTextFieldState.selection: TextRange
eTextFieldState.composition: TextRange?
per leggere i valori di selezione e composizione correnti direttamente dall'oggetto stato. TextFieldState.forEachTextValue
rimosso. (Idb2a2)- Sono state rimosse le funzioni
ClipboardManager.getClipMetadata
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) ClipboardManager.setClip
ora accetta il valore null per poter cancellare gli appunti. (I7d2e9)ReceiveContentListener
viene convertito in un'interfaccia di funzione. Viene rimosso anche l'overload diModifier.receiveContent
che accetta una lambda, poichéReceiveContentListener
ora è un'interfaccia di funzione.Modifier.receiveContent
è stato rinominato inModifier.contentReceiver
. (I1e6af)TransferableContent.consumeEach
rinominato inTransferableContent.consume
. (I1e462)- L'API
rememberTextFieldState
è diventata un'API stabile. (I37999)
Correzioni di bug
- È stato corretto un bug per cui la variante
BasicTextField(state)
non funzionava con le tastiere CJK(basate sulla composizione). (I54425) - È stato corretto un bug per cui
Modifier.dragAndDropTarget()
poteva fare riferimento a dati obsoleti in determinati scenari con il riutilizzo diModifier.Node
. (I05bb1) - È stato eseguito il rollback di una recente modifica del contratto in cui le chiamate
AnchoredDraggableState#anchoredDrag
venivano interrotte al termine di un'operazioneanchoredDrag
. (I95715)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
viene ritirata. La versione 1.7.0-alpha05 contiene questi commit.
Modifiche alle API
- Rimossa la composizione locale sperimentale
LocalTextLinkStyle
per lo stile dei link ipertestuali. (Iebfa7) - È stato rimosso l'override sperimentale di
BasicText
con l'argomentoonLinkClicked
. In futuro verrà implementata un'API sostitutiva per il supporto degli hyperlink. (I107d5) - Sono stati rimossi metodi e proprietà correlati ai punti di codice in
TextFieldState
eTextFieldBuffer
. Sono stati rimossi anche i suffissiinChars
dalle API rimanenti relative alla selezione e alla composizione. (Ief7ce) AnchoredDraggable
'scurrentValue
ora si aggiornerà quando passa attraverso un punto di ancoraggio. UtilizzasettledValue
per ricevere la semantica precedente dicurrentValue
, aggiornando solo quando si stabilizza su un ancoraggio. Ora lo stato di avanzamento è esposto come funzione (che richiede un punto iniziale e un punto finale) anziché come proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
eTextFieldDecorator
sono stati promossi alla versione stabile. (I9582b)- È stato introdotto
InterceptPlatformTextInput
per facilitare la scrittura di test di basso livello relativi agli IME e di altri casi d'uso di basso livello degli IME.PlatformTextInputTestOverride
è stato ritirato. (I862ed, b/322680547) - Suddivisione di
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd)
Contributo esterno
- Sono state aggiunte due nuove API
isLastScrollForward
/isLastScrollBackward
per controllare la direzione di scorrimento dell'ultima azione di scorrimento e restituire false se non è ancora stata eseguita alcuna azione di scorrimento. (I63a0e)
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
viene ritirata. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche alle API
- Supportare la funzionalità di scrittura a mano libera con lo stilo sui dispositivi dopo Android U. (I002e4)
- È stato aggiunto
hintLocales
aKeyboardOptions
per consentire aTextFields
di suggerire IME con impostazioni internazionali specifiche per preimpostare una lingua preferita. (Id18c2) - Sono stati rimossi gli overload sperimentali
BasicTextField2
eBasicSecureTextField
che accettavano i parametrivalue: String
eonValueChange: () -> String
. (I568b4) - Aggiungi una funzione
applySemantics
facoltativa aInputTransformation
per influenzare la semantica diBasicTextField2
a cui viene applicata. (I74a2f, b/170648072) - In questo CL aggiungiamo l'azione semantica
GetScrollViewportLength
in modo da poter inviare informazioni sui componenti di cui viene eseguito lo scorrimento in Compose al sistema di accessibilità. Questa CL applica anche l'utilizzo della proprietà negli elenchi scorrevoli di base. (Ic5fa2) BasicTextField2
è stato rinominato inBasicTextField
. (Ie5713)FocusRequester.createRefs
è ora stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.scrollIntoView()
per consentire ai nodi modificatori di effettuare direttamente richiestescrollIntoView
. (I2b3b7, b/299939840) - È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi modificatori di ottenere l'attualeView
di Android senza leggere una composizione locale. (I40768) - Sono state introdotte informazioni sul layout contestuale all'interno di Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice di riga, posizione e vincoli su larghezza e altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/altezza massima possono passare alla riga successiva o essere omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)
Correzioni di bug
- È stato corretto un bug per cui, in determinate condizioni, l'attivazione/disattivazione degli attributi
enabled
oreadOnly
diTextField
causava un arresto anomalo. (Iae17b)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
viene ritirata. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- È stato introdotto
DelegatableNode.requireLayoutCoordinates()
come modo per ottenere l'Modifier.Node
attuale di 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) - Ottimizzazioni del rendimento in
DraggableAnchors
utilizzate daAnchoredDraggable
. (I89cff) BasicTextField2
e le API correlate nel pacchettoandroidx.compose.foundation.text2
vengono spostati inandroidx.compose.foundation.text
. (I9f635)BasicTextField2
non accetta più un parametroCodepointTransformation
. UtilizzaBasicSecureTextField
oOutputTransformation
. (Id34ff)- È stato aggiunto un metodo per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659) - Ti presentiamo
ContextualFlowRow
eFlowRow
/Column
avanzato conMaxLines
eOverflow
. Siamo felici di annunciare i miglioramenti apportati alle funzionalità sperimentaliFlowRow
eFlowColumn
, che ora includono il supporto dimaxLines
e dell'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)
Correzioni di bug
- L'animazione del cursore non richiede più frame tra gli stati attivo e disattivo. (Ia2253)
- I costruttori di copia deprecati di
KeyboardOptions
ora copieranno correttamente tutte le proprietà. (If12de)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
viene ritirata. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche alle API
HorizontalPager
,VerticalPager
ePagerState
vengono promossi alla versione stabile. (I67660, b/316966909)- È stata aggiunta la composizione locale
LocalTextLinkStyle
che consente di modificare lo stile dei link nel testo in tutta l'app. Se utilizzi un tema personalizzato nell'app, devi impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, il colore del link viene impostato per impostazione predefinita sul colore principale di Material. (I7eb10) - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o tramite l'azione di incolla dagli appunti. (I81b72)- Con questa modifica, sostituiamo
SnapFlingBehavior
conTargetedFlingBehavior
nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea) - Con questa modifica, le API Snapping diventano stabili. Stiamo anche ripulendo parte del codice di test e aggiungendo altri esempi a Snap. (Id8da9)
- Ti presentiamo
TargetedFlingBehavior
, unFlingBehavior
che consente di propagare informazioni sullo stato dell'animazione in corso e sul relativo offset di scorrimento di destinazione. (I6a207)
Correzioni di bug
BasicTextField2
ora mantiene il cursore in visualizzazione durante la digitazione quando è stato spostato fuori dalla visualizzazione o si sposterebbe fuori dalla visualizzazione a causa dell'input. (Ieb856, b/237190748)
Contributo esterno
- Aggiunge un'API sperimentale per configurare il comportamento di precaricamento di LazyList. (I022a4)
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
viene ritirata. La versione 1.7.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un nuovo
Indication API
,IndicationNodeFactory
. Ciò porta a implementazioni diIndication
più efficienti rispetto alla precedente APIrememberUpdatedInstance
(ora obsoleta). Per informazioni sulla migrazione, visita il sito developer.android.com. clickable / combinedClickable / selectable / toggleable
ora accetta un parametroMutableInteractionSource
che ammette valori nulli. Se è null e ilIndication
fornito è unIndicationNodeFactory
, ilIndication
può essere creato in modo differito solo quando necessario, il che migliora il rendimento. Se non esegui l'hosting e non utilizziMutableInteractionSource
, ti consigliamo di passare null.
Modifiche alle API
- Introduci
DecayAnimation
inAnchoredDraggable
. Questa modifica aggiunge un parametrodecayAnimationSpec
aAnchoredDraggable
, consentendo di utilizzare l'animazione di decadimento quando si passa a uno degli ancoraggi. La modifica include anche la ridenominazione dianimationSpec
insnapAnimationSpec
per facilitare la comprensione del caso d'uso di ogni specifica. BasicTextField2
è disponibile per l'uso sperimentale. Dovrebbe essere più o meno alla pari conBasicTextField
e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, per il momento l'API rimane sperimentale. Prima della stabilizzazione, verrà rinominato inBasicTextField
e spostato nello stesso pacchetto.- È stata introdotta la prima bozza dell'API
OutputTransformation
perBasicTextField2
. Questa API sostituisce la maggior parte dei casi d'uso diVisualTransformation
nella vecchiaBasicTextField
. Tuttavia, non è ancora completa e alcune cose non funzioneranno correttamente, ma apprezzeremmo qualsiasi feedback sull'usabilità dell'API per i tuoi casi d'uso. (aosp/2708848) - È stato introdotto
LinkAnnotation
che consente di aggiungere link e elementi cliccabili nel testo. La funzionalità dei link non è ancora completa e sono in arrivo altre modifiche all'API. - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o tramite incolla dagli appunti.KeyboardOptions.shouldShowKeyboardOnFocus
consente di disattivare il comportamento predefinito diBasicTextField
di richiedere una tastiera software quando l'elemento riceve lo stato attivo.TextInputService
eLocalTextInputService
sono ora deprecati. UtilizzaPlatformTextInputModifierNode
per l'integrazione diretta con le API IME della piattaforma. (aosp/2862698)Indication#rememberUpdatedInstance
è stato ritirato. Comporta una penalità di rendimento elevata e inevitabile e impedisce altre ottimizzazioni. Al suo posto, devi utilizzare la nuova APIIndicationNodeFactory
.
Correzioni di bug
BasicTextField
ora pre-convalida una piccola selezione di mapping degli offset quando viene passatoVisualTransformation
. In questo modo, vengono rilevati errori di codifica comuni che portano a eccezioni non recuperabili nei passaggi di misurazione o disegno successivi. Se si verifica un errore durante la composizione, è più probabile che gli sviluppatori lo vedano durante lo sviluppo, evitando così arresti anomali in produzione. (I0fd42)VisualTransformation
non genererà un errore se restituisci un indice non valido per un indice non valido (b/316401857 )
Versione 1.6
Versione 1.6.8
12 giugno 2024
androidx.compose.foundation:foundation-*:1.6.8
viene ritirata. La versione 1.6.8 contiene questi commit.
Versione 1.6.7
1° maggio 2024
androidx.compose.foundation:foundation-*:1.6.7
viene ritirata. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
androidx.compose.foundation:foundation-*:1.6.6
viene ritirata. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- È stato corretto un bug per cui, in determinate condizioni, l'attivazione/disattivazione degli attributi
enabled
oreadOnly
diTextField
causava un arresto anomalo. (Iae17b)
Versione 1.6.5
3 aprile 2024
androidx.compose.foundation:foundation-*:1.6.5
viene ritirata. La versione 1.6.5 contiene questi commit.
Correzioni di bug
- Aggiunge log di debug ai bug difficili da riprodurre in Riga/Colonna: (b/300280216 e b/297974033)
Versione 1.6.4
20 marzo 2024
androidx.compose.foundation:foundation-*:1.6.4
viene ritirata. La versione 1.6.4 contiene questi commit.
Correzioni di bug
- Un gesto di selezione con pressione prolungata e trascinamento che esce dai limiti del layout del testo nel primo frame del trascinamento non causa più arresti anomali. (Icdf90, b/325307463)
Versione 1.6.3
6 marzo 2024
androidx.compose.foundation:foundation-*:1.6.3
viene ritirata. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.2
viene ritirata. La versione 1.6.2 contiene questi commit.
Correzioni di bug
- Correggere il problema di mancato ripristino corretto di
AnimateContentSize
. (I07051) - Risolto un problema per cui
intrinsicHeight
di testo veniva memorizzato nella cache in modo eccessivo in alcune circostanze. (3cd398, b/217910352)
Versione 1.6.1
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.1
viene ritirata. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Correzione della misura della griglia sfalsata quando viene superato il limite. (bffc39)
- Aggiungi il controllo del layout con dimensioni grandi. (e74af5)
- Correggi il posizionamento degli elementi di dimensioni 0 all'inizio della griglia sfalsata. (785f94)
- Chiama il callback onRelease nello stesso ordine di onForgotten. (31ce3b)
Versione 1.6.0
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0
viene ritirata. La versione 1.6.0 contiene questi commit.
Modifiche importanti dalla versione 1.5.0
- Nuovo modificatore
Modifier.anchoredDraggable
che consente di trascinare e animare tra un insieme predefinito di punti di ancoraggio. Questo modificatore è inteso come sostituzione diModifier.swipeable
. Scopri come utilizzarlo ed eseguire la migrazione daModifier.swipeable
nella guida alla migrazione. - È stata aggiunta la funzionalità di trascinamento tra app e componenti. Per iniziare, consulta
DragAndDropTarget
,Modifier.dragAndDropSource
e altre API. Modifier.draggable2D
è il nuovo modificatore che consente un facile supporto del trascinamento 2D. Vedi Esempio.AndroidExternalSurface
eAndroidEmbeddedExternalSurface
sono stati aggiunti per semplificare l'aggiunta di componenti basati sulla superficie in Compose- Varie modifiche e miglioramenti alle API in
Pager
esnapFlingBehaviour
- Varie API per messa a fuoco, testo e inserti sono state promosse ad API stabili
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
viene ritirata. La versione 1.6.0-rc01 contiene questi commit.
Modifiche alle API
- Il costruttore di estensioni
DragAndDropTarget()
è stato rimosso. Crea una nuova istanza utilizzandoobject: DragAndDropTarget {}
. (I32318)
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03
viene ritirata. La versione 1.6.0-beta03 contiene questi commit.
Correzioni di bug
- Correzione dell'arresto anomalo che interessava testi molto grandi misurati con vincoli infiniti. (I1a7df, b/312294386)
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
viene ritirata. La versione 1.6.0-beta02 contiene questi commit.
Correzioni di bug
- Correzione del problema per cui
canScroll
non viene aggiornato dopo lo scorrimento solo del layout. (I60a86) - Correzione per
Modifier.animateItemPlacement()
eLookaheadScope
dopo piccoli scorrimenti. (I3a2b7)
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
viene ritirata. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Il modificatore
DragAndDropTarget
ora accetta 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
nello stabilimentoDragAndDropModifierNode
è stato rinominato inacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto adragAndDropTarget
Modifier
per l'accettazione da una sessione di trascinamento. Questa lambda restituisce unDragAndDropTarget
valido se ti interessa una sessione di trascinamento. Altre lambda per l'elaborazione degli eventi di trascinamento sono state sostituite da questa.È stata aggiunta una funzione di fabbrica
DragAndDropTarget
per ricevere dati dalle sessioni di trascinamento (Iebf3a)L'esposizione di
startDragImmediately
inAnchoredDraggable
consente di controllare il rilevamento dei gesti di trascinamento durante l'utilizzo. È utile impostarlo quando il widget viene animato in un ancoraggio di destinazione. Vedi Esempio. (Ie6d13, b/285139987)Le API Foundation Tooltip sono ora
@ExperimentalFoundationApi
(I30b0b)Rimossa
DragAndDropInfo
come 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)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)Il parametro
clippingEnabled
diModifier.magnifier
è stato rinominato inclip
.Il parametro
magnifierCenter
diModifier.magnifier
è reso annullabile mantenendo lo stesso comportamento predefinito. (I6aa66)Le API Material
SwipeToReveal
(per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che causa interruzioni. Consulta la demo e il codice campione per esempi su come utilizzare la nuova API. (Ia8943)
Correzioni di bug
- Implementa equals e hashcode per
PageSize.Fixed
. (Ie3ede, b/300134276) - È stato corretto un bug che impediva al layout
BasicText
di ridursi quandominWidth
cambiava eminWidth
era inferiore ai vincoli di misurazione inizialimaxWidth
(Idb19c) - Aggiungi il supporto del renderer per il gradiente radiale in
ArcLine
. (I4d5bb) - Risolvi il problema di compatibilità binaria con la modifica dell'inserimento della finestra (Iee695)
- Rimuovi il livello principale del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza. (I55555)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
viene ritirata. La versione 1.6.0-alpha08 contiene questi commit.
Nuove funzionalità
Modifier.draggable2D
è il nuovo modificatore che consente un facile supporto del trascinamento 2D. Vedi Esempio (Id95f5, b/214412658)
Modifiche alle API
- La funzione
Modifier.dragAndDrawSource
ha rinominato la lambdaonDrawDragShadow
indrawDragDecoration
e la funzioneDragAndDropInfo
ha rinominato il parametro size indragDecorationSize
. (Id0e30, b/303904810) - Il parametro
decorationBox
diBasicTextField2
viene rinominato indecorator
. Anche il tipo viene modificato in un'interfaccia divertente equivalenteTextFieldDecorator
. (I23c1c)
Correzioni di bug
- Documentazione migliorata su
BasicTextField
in merito ai requisiti dionValueChange
. (I90fc9, b/160257648)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
viene ritirata. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
- È stato introdotto
PlatformTextInputMethodTestOverride
per scrivere test per gli editor di testo personalizzati. (Id159b) GraphicsSurface
rinominato inAndroidExternalSurface
(I11680)- È 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) - Sono state aggiunte le raccolte
ColorList
eColorSet
che evitano le allocazioni. (I744bd) - Questa modifica rimuove
shortSnapVelocityThreshold
, che è diventato un dettaglio di implementazione delle implementazioni diSnapLayoutInfoProvider
. (I65f6d) - Aggiunge il modificatore
dragAndDropSource
per l'avvio delle sessioni di trascinamento e il modificatoredragAndDropTarget
per la ricezione dalle sessioni di trascinamento (Ib7828, b/286038936) - Aggiorna la documentazione e il metodo di posizionamento di
SnapPositionInLayout
. Introduci i padding dei contenuti nel metodo di posizionamento inSnapPositionInLayout
. (Id7938, b/300116110) - È stato aggiunto
UndoState
aTextFieldState
, che consente di annullare/ripetere le modifiche apportate dall'utente. (Icc024)
Correzioni di bug
- È stato risolto il problema relativo all'animazione di
basicMarquee
dopo la modifica della velocità. (Id2e77, b/297974036)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
viene ritirata. La versione 1.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Nuovi wrapper componibili per
SurfaceView
eTextureView: GraphicsSurface()
eEmbeddedGraphicsSurface()
. Si tratta di un'API sperimentale soggetta a modifiche. (I9ddb2) Modifier.magnifier()
è ora un'API stabile. È prevista la rimozione diMagnifierStyle
a favore dei parametri incorporati nel modificatore stesso. (I83bec, b/298381260, b/262367109, b/261438887)
Modifiche alle API
- Introdotti
updateCurrentPage
eupdateTargetPage
inScrollScope
, questi sono gli ultimi elementi necessari per consentire la personalizzazione dello scorrimento animato inPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Rimuovi la densità da
SnapFlingBehavior
. Tutte le implementazioni diSnapLayoutInfoProvider
hanno già un modo per accedere alla densità, l'ambito del ricevitore potrebbe essere rimosso, il che porterà a un'implementazione meno complessa diSnapFlingBehavior
eSnapLayoutInfoProviders
. (I153c3) - Altri modificatori contrassegnati come stabili. (I56af1, b/298046462)
SnapStepSize
rimosso daSnapLayoutInfoProvider
. Il calcolo deve essere eseguito utilizzando le informazioni sul layout e fornito tramite l'approccio o gli offset di snapping. (If320c)
Modifiche al comportamento
- Ora la composizione utilizza il ridimensionamento non lineare dei caratteri per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumenteranno normalmente, mentre quelle del testo già grande aumenteranno solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente per rimanere proporzionali all'altezza prevista della scala al 100%. Per saperne di più, consulta le best practice per il ridimensionamento dei caratteri. (I11518)
Correzioni di bug
- Rimuovi l'utilizzo di
rememberSaveable
per le descrizioni comando. (Icc131, b/299500338)
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
viene ritirata. La versione 1.6.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiungi overload per
BasicSecureTextField
che accettano un valore immutabile e un callback per modificare quel valore, proprio come l'APIBasicTextField
attuale. (Ia4882) - Aggiungi
Modifier.preferKeepClear()
per contrassegnare come componibile la preferenza di evitare finestre mobili su API 33 e versioni successive. (Ib51d5, b/297260115) - Le velocità di scorrimento rapido nei componenti View come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974) - Sono stati rimossi gli overload deprecati
Pager
ePagerState
. (Iea07e) - È stato aggiunto
BasicTooltipBox
acompose.foundation
e sono stati aggiornatiPlainTooltipBox
eRichTooltipBox
per utilizzareTooltipBox
con i nuovi composablePlainTooltip
eRichTooltip
. (I79e1d)
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
viene ritirata. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche alle API
- Aggiungi l'interfaccia
ReusableComposition
per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stata promossa ad API stabili. (I7ffa3)- Aggiungi overload per
BasicTextField2
che accettano un valore immutabile e un callback per modificare quel valore, proprio come l'APIBasicTextField
attuale. (I3f2b8) GridItemSpan::currentLineSpan
è ora un'API stabile. (Icc29c)- La tela che accetta
contentDescription
è ora un'API stabile. (Ib3d29) - È stato introdotto
viewportSize
inScrollState
, un modo per conoscere le dimensioniviewPort
del componente che utilizzaScrollState
dopo la misurazione. (I8b85a, b/283102682) - È stato risolto un problema per cui il recupero preliminare in Pager non corrispondeva al comportamento in Views. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
è ora stabile.- L'API
Deprecated Modifier.consumedWindowInsets
è stata rimossa. Utilizza inveceModifier.consumeWindowInsets
. (Id72bb)
- L'API
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
viene ritirata. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche alle API
- È stato aggiunto l'overload di
LazyLayout
, che accetta una lambda diLazyLayoutItemProvider
, non un oggetto semplice come in precedenza. Il precedente sovraccarico è stato ritirato. (I42a5a) - Aggiunta del supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
- Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando
readOnly
è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quandoreadOnly
viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
viene ritirata. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato introdotto
PagerLayoutInfo
con le informazioni raccolte dopo un passaggio della misurazione inPager
. È stato introdotto anchePageInfo
, le informazioni su una singola pagina misurata inPager
. (Iad003, b/283098900) - Annotazioni aggiuntive per specificare gli input consentiti per i composable (I51109)
- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più comodo e facile da scoprire per richiedere la messa a fuoco nei test. (Ie8722) - API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali.LocalSoftwareKeyboardController
ora è anche unCompositionLocal
vero e proprio. (I4c364)Modifier.transformable
ora fornisce il delta della panoramica nel parametrocanPan
per determinare la direzione della panoramica e consentirla o meno. (I692aa, b/266829800)- Aggiorna il modificatore
consumeWindowInsets
per estendere la superclasseAbstractComposeView
(Iacd74, b/269479941)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
viene ritirata. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata introdotta una nuova API
AnchoredDraggable
in Foundation. Può essere utilizzato per creare componenti che possono essere trascinati tra stati discreti, come i fogli modali. Questa API sostituisce l'APISwipeable
di Material. (I4a2ed)
Modifiche alle API
- Supporto
InputConnection#requestCursorUpdates
(I0c69b) - È stato introdotto
scrollAnimationSpec
per consentire specifiche di animazione personalizzate. ImpostazioneBringIntoViewCalculator
aggiornata aBringIntoViewScroller
. (Idb741) - Aggiungi il tipo
ResourceResolutionException
per eseguire il wrapping delle eccezioni generate durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset che non è stato caricato. (I19f44, b/230166331, b/278424788) - Sono state aggiunte proprietà e azioni semantiche per supportare la traduzione del testo. (I4a6bc)
- È stata introdotta un'API
BringIntoViewCalculator
che può essere utilizzata per personalizzare il modo in cui componenti comeScrollable
rispondono alle richiestebringIntoView
. È stato modificato l'overload di scorribile per accettare facoltativamente un'istanza diBringIntoViewCalculator
. (Iaf5af)
Correzioni di bug
- È stato aggiunto un controllo lint per avvisare se stai creando un
MutableInteractionSource
nella composizione senza ricordarlo, in modo simile ai controlli lint per la creazione di uno stato modificabile /Animatable
. (I5daae) - Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande di una parola e si riduce di un carattere. (Ic0c6c, b/180639271)
- È stata aggiunta un'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.4
viene ritirata. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.3
viene ritirata. Questa versione non presenta modifiche.
Versione 1.5.2
27 settembre 2023
androidx.compose.foundation:foundation-*:1.5.2
viene ritirata. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- È stato corretto un bug nel testo che causava arresti anomali in determinate circostanze quando la semantica veniva invalidata.
Versione 1.5.1
6 settembre 2023
androidx.compose.foundation:foundation-*:1.5.1
viene ritirata. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando
readOnly
è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quandoreadOnly
viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
androidx.compose.foundation:foundation-*:1.5.0
viene ritirata. La versione 1.5.0 contiene questi commit.
Modifiche importanti dalla versione 1.4.0
- Molti modificatori di base, tra cui
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, il modificatore di layout e altri, sono stati migrati all'APIModifier.Node
, riducendo il sovraccarico della composizione iniziale. - Miglioramenti alla stabilità dei cercapersone. Sono stati risolti molti bug.
- I parametri
pageCount
ora si trovano inPagerState
anziché nel pager stesso
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
viene ritirata. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
È disponibile un'ispezione facoltativa per consigliare la migrazione delle chiamate
mutableStateOf()
ai tipi specializzati corrispondenti per le primitive. Il suo ID lint èAutoboxingStateCreation
. In precedenza, questo controllo era abilitato per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output di lint del progetto, modifica la gravità da informativa ad avviso (o superiore) dichiarandowarning "AutoboxingStateCreation"
all'interno della configurazionebuild.gradle
obuild.gradle.kts
del modulo, come mostrato (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
viene ritirata. La versione 1.5.0-beta03 contiene questi commit.
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
viene ritirata. La versione 1.5.0-beta02 contiene questi commit.
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
viene ritirata. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Implementa
PlatformDataProvider
per fornire il battito cardiaco e i passi giornalieri. L'interfacciaSensorGateway
viene rimossa dall'API pubblica. (I55b84)
Correzioni di bug
- Ridurre le allocazioni durante le misurazioni di elenchi/griglie pigri e così via (Iaf9e2)
- Allocazioni ridotte durante l'applicazione degli snapshot (I65c09)
- Rimozione delle allocazioni dalle animazioni con effetto molla (Ie9431)
- Allocazione rimossa da
TextLayout
(I0fd11) - Rimozione di più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.foundation:foundation:1.5.0-alpha04
e androidx.compose.foundation:foundation-layout:1.5.0-alpha04
sono stati rilasciati. La versione 1.5.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Presenta un
SnapLayoutInfoProvider
che può essere utilizzato conLazyGridState
. (I92134, b/269237141, b/260914964) - È stato aggiunto
Modifier.animateItemPlacement()
sperimentale per l'ambito dell'elemento delle griglie sfalsate pigre. Puoi applicarlo agli elementi per ottenere le animazioni di modifica/riordino della posizione dell'automazione. (I4b62d, b/257034719) - Promuovi
GridCells.FixedSize
alla versione stabile.FixedSize
definisce unLazyGrid
in cui ogni cella occupa una dimensione esatta sull'asse trasversale, mentre lo spazio rimanente viene distribuito in base alla disposizione dell'asse trasversale. (I8542f) - È stato introdotto l'ambito del ricevitore
PagerScope
per Pager e una funzione di utilità per il calcolo di un determinato offset di pagina. (If2577) - Introduci
snapPositionalThreshold
quando crei un comportamento di lancio rapido. Utilizza questo parametro per specificare una soglia posizionale per lo snapping breve in Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
sostituito concalculateSnappingOffset
. In questo nuovo metodo, richiediamo semplicemente l'offset successivo a cui agganciarsi. Il calcolo dei limiti deve essere eseguito a livello di implementazione, in quanto può variare a seconda di come deve avvenire lo snapping. (I923a4)- Le API
LazyStaggeredGrid
sono state promosse a stabili. (I633a5) - Vuoi rimuovere
pageCount
daHorizontal/VerticalPager
? Deve essere fornito al momento della creazione dello stato.PagerState
erememberPagerState
aggiornati per accettare ipageCount
. (Ieb52d, b/266965072) - Vuoi rimuovere
pageCount
daHorizontal/VerticalPager
? Deve essere fornito al momento della creazione dello stato.PagerState
erememberPagerState
aggiornati per accettare ipageCount
. (Ifa3cb, b/266965072) - Presenta
shortSnapVelocityThreshold
nel pagerSnapFlingBehavior
. (I7379e, b/275579012) - Aggiunge un
FlowRowScope
e unFlowColumnScope
. (I54fe2)
Correzioni di bug
- Le chiamate per ottenere la semantica sul testo quando i vincoli non vanno più in crash
minWidth
eminHeight
. (Ibd072) - È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
e androidx.compose.foundation:foundation-layout:1.5.0-alpha03
sono stati rilasciati. La versione 1.5.0-alpha03 contiene questi commit.
Questa release attiva il nuovo stack di rendering del testo per Compose. Il nuovo stack è ottimizzato per il rendimento e non dovresti notare modifiche visibili.
Se noti modifiche nel testo sottoposto a rendering, puoi eseguire il debug impostando NewTextRendering1_5 = false
per confermare la differenza di comportamento. L'impostazione di questo valore forzerà la ricomposizione. Segnala eventuali differenze di comportamento come bug.
Il flag di debug verrà rimosso prima della release 1.5 beta01.(Iada23, b/246960758)
Modifiche alle API
- Rendi
FlowColumn/FlowRow
in linea. (Idab37)
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
e androidx.compose.foundation:foundation-layout:1.5.0-alpha02
sono stati rilasciati. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiunto il supporto per le celle di dimensioni fisse in
LazyGrid
e la loro disposizione con la disposizione dell'asse trasversale. (I83ed9, b/235121277, b/267942510) - È stato aggiunto il supporto per le corsie di dimensioni fisse in
LazyStaggeredGrid
e la loro disposizione con la disposizione dell'asse trasversale. (I7d519) - Ora è possibile aprire i
UrlAnnotation
neiAnnotatedString
tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta l'azione semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Le azioni di test correlate al testo (ad es.
performTextInput
) ora richiedono direttamente lo stato attivo, utilizzando l'azione semantica, anziché fare clic sul campo. (I6ed05) - Aggiunge il supporto per la spaziatura/disposizione degli assi incrociati utilizzando
verticalArrangement
inFlowRow
ehorizontalArrangement
inFlowColumn
. Rimuoviamo ancheverticalAlignment
ehorizontalAlignment
di primo livello inFlowRow/FlowColumn
. Gli sviluppatori possono utilizzareModifier.align
. In questo modo si riduce la confusione tra le convenzioni di denominazione diverticalAlignment
everticalArrangement
. (I87b60, b/268365538)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
e androidx.compose.foundation:foundation-layout:1.5.0-alpha01
sono stati rilasciati. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche alle API
- Il testo e
BasicText
sono stati refattorizzati per utilizzare il nuovo sistema di modificatori. Ciò comporta miglioramenti sostanziali delle prestazioni in molti casi. Non dovrebbero essere visibili modifiche. (If1d17, b/246961435) - È stata aggiunta l'azione semantica
PerformImeAction
per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)
Correzioni di bug
- Aggiornamento degli elementi interni di
Modifier.hoverable
. Il modificatorehoverable
viene visualizzato nell'inspector solo se è attivato. (I82103)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.foundation:foundation:1.4.3
e androidx.compose.foundation:foundation-layout:1.4.3
vengono rilasciati senza modifiche (solo un aumento di versione).
Versione 1.4.2
19 aprile 2023
androidx.compose.foundation:foundation:1.4.2
e androidx.compose.foundation:foundation-layout:1.4.2
sono stati rilasciati. La versione 1.4.2 contiene questi commit.
Versione 1.4.1
5 aprile 2023
androidx.compose.foundation:foundation:1.4.1
e androidx.compose.foundation:foundation-layout:1.4.1
sono stati rilasciati. La versione 1.4.1 contiene questi commit.
Versione 1.4.0
22 marzo 2023
androidx.compose.foundation:foundation:1.4.0
e androidx.compose.foundation:foundation-layout:1.4.0
sono stati rilasciati. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta l'integrazione della compatibilità con le emoji a
Text
eTextField
, nonché al paragrafo di livello inferiore. È abilitato per impostazione predefinita quando viene configurato emojicompat. EmojiCompat
può essere configurato su un testo specifico utilizzandoPlatformParagraphStyle
.- Aggiunta del supporto dell'intervallo di riga completo a
LazyStaggeredGrid
(I28252) - Aggiunta di
onHover
sperimentale aClickableText
(I6938f) - 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) FlowRow
eFlowColumn
sono ora disponibili come@ExperimentalFoundationApi
che consentono un layout più flessibile basato su righe e colonne dei componenti, che andranno a capo se non c'è spazio sufficiente sull'asse principale. (I3a7b2)Modifier.basicMarquee()
è disponibile in versione sperimentale per la visualizzazione di contenuti con effetto scorrimento. (I2df44, b/139321650)
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.foundation:foundation:1.4.0-rc01
e androidx.compose.foundation:foundation-layout:1.4.0-rc01
sono stati rilasciati. La versione 1.4.0-rc01 contiene questi commit.
Modifiche alle API
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni personalizzate di input di testo che comunicano direttamente con le API della piattaforma. (I58df4) - Aggiungi il supporto per il layout inverso a
LazyStaggeredGrid
. (I3ef4a)
Correzioni di bug
- L'azione semantica
SetText
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.foundation:foundation:1.4.0-beta02
e androidx.compose.foundation:foundation-layout:1.4.0-beta02
sono stati rilasciati. La versione 1.4.0-beta02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che consente di reimpostare alcuni stati locali per gestire correttamente il caso in 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) - Rimozione dell'API
modifierElementOf()
. Estendi direttamente daModifierNodeElement
. (Ie6d21)
Correzioni di bug
- La regolazione dei punti di manipolazione della selezione non consente più di selezionare un carattere parziale. (Idedd1)
- Correzione dell'arresto anomalo quando si preme Ctrl+Backspace su
TextField
vuoto (I0427f, b/244185537)
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.foundation:foundation:1.4.0-beta01
e androidx.compose.foundation:foundation-layout:1.4.0-beta01
sono stati rilasciati. La versione 1.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Dalla versione 1.3, è stata aggiunta l'integrazione della compatibilità con le emoji a
Text
eTextField
, nonché al livello inferiore del paragrafo. È abilitato per impostazione predefinita quando viene configurato emojicompat. EmojiCompat
può essere configurato su un testo specifico utilizzandoPlatformParagraphStyle
.
Modifiche alle API
- È stata aggiunta l'implementazione comune dell'API
PinnableContainer
utilizzata in tutti iLazyLayouts
per conservare gli elementi che escono dalla composizione, ma devono comunque rimanere attivi. (If45a4) PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)
Contributo esterno
- È stata aggiunta la proprietà
mainAxisItemSpacing
aLazyListLayoutInfo
,LazyGridLayoutInfo
eLazyStaggeredGridItemInfo
(I52fad)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
e androidx.compose.foundation:foundation-layout:1.4.0-alpha05
sono stati rilasciati. La versione 1.4.0-alpha05 contiene questi commit.
Nuove funzionalità
- Aggiunta del supporto dell'intervallo di riga completo a
LazyStaggeredGrid
(I28252) - Aggiunta di
onHover
sperimentale aClickableText
(I6938f) - 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)
Modifiche alle API
- Unisce le API pre/post di
OverscrollEffect
in funzioni combinate di "decoratore"applyToScroll
eapplyToFling
. Consulta gli esempi aggiornati nella documentazione per scoprire come implementare un effetto di overscroll con la nuova forma dell'API. (I8a9c4, b/255554340) - Più tipi/nullabilità di funzioni inline/deprecate-nascoste (I24f91)
- Le API
LineBreak
eHyphens
inTextStyle
sono state promosse alla versione stabile. (Ic1e1d)
Correzioni di bug
- Il cursore nei campi di testo continuerà a lampeggiare anche quando le animazioni sono disattivate. (I95e70, b/265177763)
Modifier.basicMarquee
ora è animato anche quando le animazioni sono disattivate nelle impostazioni di sistema. (I23389, b/262298306, b/265177763)
Contributo esterno
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non sono di nuovo deprecati. (I23a04, b/262648050)
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha04
e androidx.compose.foundation:foundation-layout:1.4.0-alpha04
sono stati rilasciati. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
FlowRow
eFlowColumn
sono ora disponibili come@ExperimentalFoundationApi
che consentono un layout più flessibile basato su righe e colonne dei componenti, che andranno a capo se non c'è spazio sufficiente sull'asse principale. (I3a7b2)Modifier.basicMarquee()
è disponibile in versione sperimentale per la visualizzazione di contenuti con effetto scorrimento marquee. (I2df44, b/139321650)
Modifiche alle API
FocusRequesterModifier
è deprecato a favore diFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Il costruttore
AndroidFont
convariationSettings
è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori di caratteri. (I5adcc, b/261565807) - È stata introdotta l'API
PinnableContainer
propagata da elenchi pigri tramite un composizione locale che consente di bloccare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando viene spostato fuori dalla visualizzazione. Ad esempio,Modifier.focusable()
bloccherà l'elemento attivo corrente tramite questo meccanismo. (Ib8881, b/259274257, b/195049010) - È stato riscritto il modo in cui gli elementi scorrevoli rispondono a
bringIntoViewRequesters
e gli elementi selezionabili per modellare meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Maggiore annullabilità del tipo restituito delle funzioni ritirate e nascoste (Ibf7b0)
- È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7) - Aggiungi
TextFieldFocusModifier
per correggere il comportamento di navigazione con la messa a fuoco per la piattaforma Android (I00303) - L'argomento
maxSize: IntSize
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)
Correzioni di bug
- Modifiche alla fisica dello snapping in
SnapFlingBehaviour
per una sensazione più naturale.
Problema noto
- Quando esegui l'aggiornamento da
androidx.compose.foundation:1.4.0-alpha03
aandroidx.compose.foundation:1.4.0-alpha04
, potresti riscontrare un errorejava.lang.NoSuchFieldError
. Qui è stato segnalato il problema originariamente. È stata inviata una correzione, che sarà disponibile nel prossimo aggiornamento di Compose. Come soluzione alternativa, aggiorna le librerieandroidx.compose.material
eandroidx.compose.material3
all'ultima versione(1.1.0-alpha04) o esegui il downgrade diandroidx.compose.foundation
alla versione 1.4.0-alpha03.
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
e androidx.compose.foundation:foundation-layout:1.4.0-alpha03
sono stati rilasciati. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni riprese durante i callback
withFrameNanos
non verranno inviate finché non saranno terminati tutti i callback dei frame. Questo comportamento corrisponde a quello della composizione in esecuzione normale. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Ciò dovrebbe influire solo sul codice che chiama 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 CL. - È 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) - Introduzione delle azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che queste sono disponibili solo a partire dall'API 29. (Ida4ab) - Introduci
HorizontalPager
eVerticalPager
, un modo per mostrare i componenti componibili in un pager. È stato introdottoPagerState
per controllare i pager e per eseguire query sulle informazioni sullo stato attuale del pager. È stato introdottoPageSize
, un modo per controllare le dimensioni della pagina di un paginatore, che può essere utilizzato per creare paginatori simili a caroselli. È stato introdottoPagerSnapDistance
, un modo per controllare il funzionamento dello snapping nel comportamento di scorrimento del pager. (I01120) - È stato introdotto un sovraccarico in
SnapFlingBehavior.performFling
per aiutare a capire dove si stabilizzerà il movimento. (I569f6) OverscrollEffect#isEnabled
rimosso. Invece di dover ricordare e impostare questo flag, non inviare eventi all'effetto overscroll nei casi in cui non vuoi che venga visualizzato (ad esempio seScrollableState#canScrollForward/backward
restituisce false). (I1a4b0, b/255554340, b/255557085)- Sono stati aggiunti
ScrollableState#canScrollForward
eScrollableState#canScrollBackward
per verificare se unScrollableState
ha spazio per scorrere in una direzione (se si trova al minimo / massimo del suo intervallo). Il valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni esistenti diScrollableState
. I consumatori possono utilizzarlo per indicare all'utente che c'è ancora spazio per scorrere e potrebbe essere utilizzato anche per evitare di inviare delta aScrollableStates
che non hanno spazio per scorrere in una determinata direzione, in modo da ridurre il lavoro non necessario. (Idf1a0, b/255557085) - È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli 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.
- Aggiorna la denominazione di
snapStepSize
in modo che sia coerente con gli altri metodi inSnapLayoutInfoProvider
. (Ife67c) - Aggiunta di
EmojiCompat
aCompose
(Ibf6f9, b/139326806) - È stato rinominato
consumedWindowInsets()
inconsumeWindowInsets()
ewithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
e sono stati resi pubblici i modificatori. (Ie44e1)
Correzioni di bug
- È stato risolto l'arresto anomalo con
Modifier.animateItemPlacement()
e le griglie pigre. Si verificava in alcune condizioni quando il conteggio dei nuovi elementi è inferiore a quello precedente. (I0bcac, b/253195989)
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha02
e androidx.compose.foundation:foundation-layout:1.4.0-alpha02
sono stati rilasciati. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
awaitFirstDown
ewaitForUpOrCancellation
ora accettano unPointerEventPass
per una maggiore flessibilità. (I7579a, b/212091796)- Ripristina l'API
beyondBoundCount
dalle API Lazy* (I12197) - È stato introdotto un parametro nelle API Lazy per comporre e posizionare gli elementi fuori dalla visualizzazione (I69e89, b/172029355)
- È stato aggiunto il parametro
minLines
aBasicText
eBasicTextField
. Consente di impostare l'altezza minima di questi composable in termini di numero di righe (I24294, b/122476634)
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.foundation:foundation:1.4.0-alpha01
e androidx.compose.foundation:foundation-layout:1.4.0-alpha01
sono stati rilasciati. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Funziona in modo simile 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)- Sono stati aggiunti
WindowInsets.imeAnimationSourc
eWindowInsets.imeAnimationTarget
per determinare l'avanzamento dell'animazione e sapere dove si troverà l'IME al termine dell'animazione. (I356f1, b/217770337)
Versione 1.3
Versione 1.3.1
9 novembre 2022
androidx.compose.foundation:foundation:1.3.1
e androidx.compose.foundation:foundation-layout:1.3.1
sono stati rilasciati. La versione 1.3.1 contiene questi commit.
Correzioni di bug
- Risolvi il problema di prestazioni in
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
non leggerà le coordinate del layout se non è collegato (aosp/2241316)
Versione 1.3.0
24 ottobre 2022
androidx.compose.foundation:foundation:1.3.0
e androidx.compose.foundation:foundation-layout:1.3.0
sono stati rilasciati. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Sono state introdotte le versioni sperimentali di
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
e altre API corrispondenti sono state aggiunte come sperimentali.Modifier.clickable
,Modifier.toggleable
eModifier.selectable
ora mostrano increspature se vengono selezionati con la tastiera o il D-pad di un telecomando.
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.foundation:foundation:1.3.0-rc01
e androidx.compose.foundation:foundation-layout:1.3.0-rc01
sono stati rilasciati. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- È stato introdotto
lowVelocityAnimationSpec
utilizzato dal passaggio di avvicinamento quando non c'è abbastanza velocità di lancio per il decadimento. (Iaeb27) - È stata aggiunta una nuova API sperimentale, Hyphens, per supportare la sillabazione automatica in Text (Iaa869)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.foundation:foundation:1.3.0-beta03
e androidx.compose.foundation:foundation-layout:1.3.0-beta03
sono stati rilasciati. La versione 1.3.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiungi opzioni per personalizzare l'interruzione di riga in Testo. (I86907)
BringIntoViewResponder
ora possono ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211)- Introduzione del supporto degli spazi tra gli elementi nella funzionalità sperimentale
Staggered Grid
(I10b82) - Introduzione del padding dei contenuti per l'esperimento
Staggered Grid
(I342ea) - Modificato l'argomento
size:IntSize
conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525) - È stato aggiunto
Modifier.withConsumedWindowInsets()
da utilizzareWindowInsets
per l'utilizzo al di fuori diwindowInsetsPadding
. - È stato aggiunto
MutableWindowInsets
per consentire la modifica semplice diWindowInsets
senza ricomposizione. (I7fd28, b/237019262, b/243119659)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.foundation:foundation:1.3.0-beta02
e androidx.compose.foundation:foundation-layout:1.3.0-beta02
sono stati rilasciati. La versione 1.3.0-beta02 contiene questi commit.
Modifiche alle API
- Versione iniziale dell'esperimento
StaggeredGrid
(Ia48be) FocusDirection.In
eFocusDirection.Out
sono stati rinominati inFocusDirection.Enter
eFocusDirection.Exit
(Ia4262, b/183746982)- È stata introdotta una scorciatoia per
rememberSnapFlingBehavior
che consente di attivare rapidamente lo snapping inLazyLists
. (Ifb48a) - Sostituita la fabbrica
snapFlingBehavior
con una classeSnapFlingBehavior
concreta. MetodiSnapLayoutInfoProvider
con ambito per la densità per semplificare le conversioni da dp a px per gli utenti dell'API. (I54a11) - Aggiorna
LazyLayoutMeasureScope.measure
per restituire l'elenco dei valori sostituibili, evidenziando l'immutabilità desiderata del valore restituito. (I48b7c) - È stato introdotto
SnapLayoutInfoProvider
, che accetta unLazyListState
per creare un'istanza diSnapLayoutInfoProvider
che può essere utilizzata per attivare uno snapFlingBehavior
perLazyLists
. (I2dd10)
Correzioni di bug
- Refactoring di
AwaitPointerEventScope#awaitLongPressOrCancellation
per corrispondere ad altre funzioni di attesa (I646e6)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.foundation:foundation:1.3.0-beta01
e androidx.compose.foundation:foundation-layout:1.3.0-beta01
sono stati rilasciati. La versione 1.3.0-beta01 contiene questi commit.
Modifiche alle API
- Rimozione di
pointerPosition
daOverscrollEffect
: gli effetti che tengono conto della posizione del puntatore possono utilizzareModifier.pointerInput { }
ineffectModifier
per ottenere la posizione attuale del puntatore. (I9f606, b/241239306) AwaitPointerEventScope#awaitLongPressOrCancellation
esposto come componente di base aggiuntivo per il rilevamento di gesti più complessi (I04374, b/181577176)- È stato introdotto
lazyListSnapLayoutInfoProvider
per attivare lo snapping negli elenchi pigri. (I3ecdf) - È stato introdotto
SnapFlingBehavior
, un comportamento di scorrimento che consente l'allineamento degli elenchi. Fornisci un'istanza diSnapLayoutInfoProvider
con informazioni sul layout di snapping. (Ie754c)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.foundation:foundation:1.3.0-alpha03
e androidx.compose.foundation:foundation-layout:1.3.0-alpha03
sono stati rilasciati. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
- I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26+). (I900dd, b/143703328)
- Supporto dei caratteri variabili in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Annotazione sperimentale rimossa da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - I campi di testo ora generano eccezioni più dettagliate quando
OffsetMapping
fornito da unVisualTransformation
restituisce indici non validi. (Ie73f9, b/229378536) - Introduci API sperimentali per condividere la logica del fornitore di elementi tra i layout pigri. (Ic891c)
ScrollableDefaults.reverseDirection()
non è più sperimentale. (Iba646)SemanticsModifier.id
è stato ritirato e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524)checkScrollableContainerConstraints()
non è più sperimentale. (I2c290)Modifier.clipScrollableContainer()
non è più sperimentale. (Ia2b44)- Depreca
TextInputService.show|hideSoftwareKeyboard
. Utilizza inveceSoftwareKeyboardController
nel codice dell'app eTextInputSession
nel codice di gestione IME. (I14e4c, b/183448615)
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.foundation:foundation:1.3.0-alpha02
e androidx.compose.foundation:foundation-layout:1.3.0-alpha02
sono stati rilasciati. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunta della funzione di estensione
drawText
suDrawScope
per fornire un modo per disegnare testo con più stili su composable e modificatori che operano su unDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898)
Correzioni di bug
- La tastiera virtuale ora verrà nascosta quando un campo di testo è disattivato mentre è attivo. (I6e3e4, b/237308379)
- Quando aggiungiamo eventi
InputEventChange
a Velocity Tracker, ora prendiamo in considerazione i delta anziché le posizioni. In questo modo, la velocità viene calcolata correttamente in tutti i casi, anche se l'elemento di destinazione si sposta (Icea9d, b/216582726, b/223440806, b/227709803). - Quando un elemento scorrevole ha un elemento secondario attivo, ora scorre correttamente per mantenere l'elemento secondario attivo in visualizzazione quando le sue dimensioni vengono ridotte, anche quando le dimensioni sono animate. (I80867, b/230756508, b/220119990)
- È stato risolto un arresto anomalo in cui
TextField
viene cancellato e riempito nuovamente mentre la selezione è attiva. (I1235b, b/208655565, b/214253689)
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.foundation:foundation:1.3.0-alpha01
e androidx.compose.foundation:foundation-layout:1.3.0-alpha01
sono stati rilasciati. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare i linkTalkBack
neiAnnotatedString
. (I1c754, b/231495122)
Correzioni di bug
BasicTextField
cursorBrush
ora può essere animato senza riavviare il timer del cursore. (I812e6, b/236383522)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.foundation:foundation:1.2.1
e androidx.compose.foundation:foundation-layout:1.2.1
sono stati rilasciati. La versione 1.2.1 contiene questi commit.
Versione 1.2.0
27 luglio 2022
androidx.compose.foundation:foundation:1.2.0
e androidx.compose.foundation:foundation-layout:1.2.0
sono stati rilasciati. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
LazyVerticalGrid
eLazyHorizontalGrid
sono ora stabili.- Ora puoi specificare un tipo di contenuti per gli elementi negli elenchi e nelle griglie pigri. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
- Le liste e le griglie pigre ora hanno il parametro
userScrollEnabled
che consente di disattivare lo scorrimento tramite i gesti dell'utente. - È stata aggiunta una nuova API sperimentale chiamata
LazyLayout
. È l'API che utilizziamo internamente per gestire elenchi e griglie pigri. - L'API
OverscrollEffect
è stata introdotta come sperimentale. Puoi definire effetti di overscroll personalizzati e aggiungere un effetto della piattaforma standard a contenitori scorrevoli personalizzati. - Sono state introdotte le API di interoperabilità dello scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e comporre gli attori dello scorrimento.
- Lo scorrimento con mouse e trackpad è stato aggiunto a tutti i contenitori di scorrimento.
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc03
e androidx.compose.foundation:foundation-layout:1.2.0-rc03
sono stati rilasciati. La versione 1.2.0-rc03 contiene questi commit.
- Nessuna modifica dalla versione 1.2.0-rc02.
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc02
e androidx.compose.foundation:foundation-layout:1.2.0-rc02
sono stati rilasciati. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc01
e androidx.compose.foundation:foundation-layout:1.2.0-rc01
sono stati rilasciati. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- È stato introdotto un
OverscrollEffect
sperimentale per consentire effetti di overscroll personalizzati, insieme agli overloadModifier.scrollable
che lo accettano. LocalOverScrollConfiguration
sperimentale è stato spostato dafoundation.gesture
al pacchetto di base e rinominato inLocalOverscrollConfiguration
(If19fb, b/204650733)- Le interfacce nelle librerie Compose ora sono create utilizzando i metodi di interfaccia predefiniti di jdk8 (I5bcf1)
- È stata introdotta un'API sperimentale
checkScrollableContainerConstraints()
che consente di verificare che non nidifichiamo contenitori scorrevoli. Puoi utilizzarlo quando crei i tuoi layout pigri scorrevoli tramiteLazyLayout
. (Id6fab, b/233352497) - Rimozione di
LazyVerticalGrid
deprecato dal pacchettoandroidx.compose.foundation.lazy
. La nuova API stabile si trova inandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Versione 1.2.0-beta03
1 giugno 2022
androidx.compose.foundation:foundation:1.2.0-beta03
e androidx.compose.foundation:foundation-layout:1.2.0-beta03
sono stati rilasciati. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiunti nuovi
IntervalList
eMutableIntervalList
sperimentali. Consente di rappresentare un elenco di valori tramite più intervalli. Sarà utile quando vuoi definire un tuo DSL simile a quello utilizzato daLazyColumn
, in cui gli elementi dell'elenco possono essere definiti tramite più chiamate di elementi. (I2d05e, b/228580728)
Correzioni di bug
- È stata chiarita la documentazione per
WindowInsets.ime
per indicare che i rientriime
vengono segnalati a partire dall'API 23, ma solo animati sulla 30+. (Ia7fc0, b/230756508) - Se premi il tasto di eliminazione in avanti quando il cursore si trova alla fine di un campo di testo, non si verifica più un arresto anomalo.
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
ora richiedono che gli argomenti del costruttore non siano negativi. (Ica8e6, b/199919707)
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta02
e androidx.compose.foundation:foundation-layout:1.2.0-beta02
sono stati rilasciati. La versione 1.2.0-beta02 contiene questi commit.
- La risoluzione dei caratteri scaricabili che non modifica le dimensioni del layout di Testo o
TextField
in precedenza non veniva ridisegnata, il che comportava la visualizzazione di caratteri obsoleti. Questa correzione di bug garantisce che il layout del testo attivi sempre il ridisegno (b/229727404). (I1d49e, b/229727404)
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta01
e androidx.compose.foundation:foundation-layout:1.2.0-beta01
sono stati rilasciati. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima release beta della versione 1.2.
Modifiche alle API
- È stato aggiunto
BeyondBoundsInterval
sperimentale che può essere utilizzato da implementazioni personalizzate diLazyList
quando dispongono gli elementi oltre i limiti visibili (Ifabfb, b/184670295) 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 valori predefiniti per i membri facoltativi dell'interfaccia
LazyLayoutItemProvider
. (Iba8a0) - Nell'API
LazyLayoutItemProvider
, anziché una factory che restituisce la lambda componibile per indice, ora abbiamo una funzione componibile più semplice Item che accetta l'indice. (Id2196) - LazyLayoutItemsProvider è stato rinominato in LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
è stato rinominato initemCount
(Id409c)- È stato aggiunto Pennello a
TextStyle
eSpanStyle
per consentire di 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) È stato aggiunto
LineHeightBehavior
ai controlliTextStyle
eParagraphStyle. LineHeightBehavior
per stabilire se l'altezza della linea viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della linea nello spazio fornito 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)È stato aggiunto il modificatore sperimentale
imeNestedScroll()
in modo che gli sviluppatori possano controllare l'IME tramite lo scorrimento. (I60759)
Correzioni di bug
- È stato corretto un problema di regressione per cui i campi di testo non nascondevano la tastiera quando venivano rimossi dalla composizione mentre erano attivi. (I7a410, b/230536793, b/225541817)
- Supporta i puntini di sospensione quando l'altezza è limitata e non contiene tutte le righe di testo (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
ora verrà sempre sospeso finché la richiesta non viene completata o interrotta da una richiesta più recente e non sovrapposta. Le richieste sovrapposte verranno messe in coda. (I43e7f, b/216790855)- Le chiamate simultanee
BringIntoViewRequester.bringIntoView
per i rettangoli completamente sovrapposti ora prendono in considerazione solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918) - Attivato per impostazione predefinita
includeFontPadding
. È possibile 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) Modifier.bringIntoViewRequester
non utilizza piùonGloballyPositioned
. (I630f5)
Contributo esterno
MouseInjectionScope.scroll(delta = someDelta)
ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
e androidx.compose.foundation:foundation-layout:1.2.0-alpha08
sono stati rilasciati. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium sulle API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 sulle API 21-28. (I380fe, b/156048036, b/226441992) - Paragraph e MultiParagraph ora accettano il parametro Constraints. Il passaggio di
Constraints.maxHeight
è un'operazione no-op al momento, ma consentirà di eseguire alcuni calcoli in futuro, ad esempio l'ellissi in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi. (Icd314)- Il consumo parziale (in basso O posizione) è stato ritirato in
PointerInputChange
. Puoi 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)- Viene introdotta una nuova API
LazyLayout
sperimentale. In questo modo puoi creare i tuoi componenti, ad esempioLazyColumn
diLazyVerticalGrid
. Tieni presente che l'API è nelle sue fasi iniziali e può essere modificata nelle versioni future. (Iba2bc, b/166591700) - Ora
AndroidFont
accettatypefaceLoader
come parametro del costruttore. (I2c971) - L'app complementare
WindowInsets
ora mostra la visibilità (se è sullo schermo, indipendentemente dal fatto che si intersechi con la finestra) e le dimensioni che potrebbe avere se è disponibile sul dispositivo, ma non è attualmente attiva. (I65182, b/217770337)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
e androidx.compose.foundation:foundation-layout:1.2.0-alpha07
sono stati rilasciati. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'API
PinnableParent
che consente agli elementi secondari dei layout pigri di impedire l'eliminazione degli elementi attualmente composti (Ibbdd0, b/184670295) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno i campibeforeContentPadding
eafterContentPadding
(I3b628, b/200920410)- È stato aggiunto
KeyboardType.Decimal
come alternativa aKeyboard.Number
per includere in modo specifico il separatore decimale nell'IME. (Iec4c8, b/209835363) - Aggiungi il nuovo descrittore di caratteri Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati nel sistema durante le catene di fallback dei caratteri. (I30468, b/219754572)
PointerEventType.Scroll
ePointerEvent.scrollDelta
sono ora API stabili (I574c5, b/225669674)- La configurazione di compatibilità temporanea aggiunta per
includeFontPadding
inTextStyle/ParagraphStyle. includeFontPadding
può essere modificata tramiteTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Si tratta di un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) FontFamily.Resolver
è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)- La proprietà di estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare l'utilizzo di WindowInsets di Android. In questo modo, i diversiComposeViews
nella gerarchia possono applicareWindowInsets
senza interferire tra loro. (I0ef08, b/220943142)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.foundation:foundation:1.2.0-alpha06
e androidx.compose.foundation:foundation-layout:1.2.0-alpha06
sono stati rilasciati. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche alle API
- Aggiunta dell'azione semantica
RequestFocus
per richiedere la messa a fuoco del target selezionabile. (I17b71) FocusOrder
è stato unito 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)WindowInsets.asPaddingValues(Density)
è stato aggiunto per consentire agli sviluppatori di eseguire la conversione senza dover essere in composizione. (I94c35)- È stata aggiornata l'analisi dei drawables vettoriali per supportare il mirroring automatico e invertire i contenuti di un
VectorPainter
se la direzione del layout corrente è da destra a sinistra. (I79cd9, b/185760237)
Correzioni di bug
- I modificatori di scorrimento (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
eModifier.scrollable()
) ora scorreranno per mantenere visibile il composable attivo se l'area di scorrimento viene ridimensionata e il composable attivo era precedentemente visibile. - I campi di testo ora vengono mantenuti sopra la tastiera quando sono selezionati e la tastiera viene mostrata, quando si trovano all'interno di un elemento scorrevole non pigro e la modalità di inserimento soft è
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
e androidx.compose.foundation:foundation-layout:1.2.0-alpha05
sono stati rilasciati. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche alle API
LazyVerticalGrid
eLazyHorizontalGrid
ora sono stabili. (I307c0)LazyGridItemInfo.Unknown
è stato sostituito daLazyGridItemInfo.UnknownRow
eLazyGridItemInfo.UnknownColumn
separati (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
e tutte le API correlate sono stati spostati nel sottopacchetto.grid
. Aggiorna le importazioni daandroidx.compose.foundation.lazy
aandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Testo:
includeFontPadding
è ora disattivato per impostazione predefinita. I problemi di ritaglio dovuti aincludeFontPadding=false
vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808) - L'interfaccia misurata ora espone la proprietà parentData (I3313f)
- È stato introdotto
Modifier.onFocusedBoundsChanged
sperimentale per consentire l'osservazione dei limiti degli elementi selezionabili secondari. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - È stato aggiunto LazyHorizontalGrid. (I61ae7, b/191238807)
- È stata aggiunta una nuova API
LazyVerticalGrid
per definire le dimensioni dell'asse trasversale (I17723) - Aggiunto il modificatore FocusGroup (I64bc0, b/213508274, b/184670295)
Correzioni di bug
WindowInsets.toString()
ora mostrerà i valori corretti. (I1585d)
Contributo esterno
- Aggiornamento per l'utilizzo delle coroutine Kotlinx 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
e androidx.compose.foundation:foundation-layout:1.2.0-alpha04
sono stati rilasciati. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
BringIntoViewResponders
non devono più inoltrare manualmente le richieste ai risponditori principali, ma devono restituire immediatamente il rettangolo che vogliono che il risponditore principale porti in visualizzazione. (I8e66a)- Supporto del caricamento asincrono dei caratteri in Text (I77057, b/214587005)
LazyVerticalGrid
ora supportaline breaking
prima degli elementi con intervallo che non rientrano nella riga corrente. (I05c40, b/207462103)excludeFromSystemGestures
rinominato insystemGesturesExclusion
(I19526)LazyVerticalGrid
ora supporta reverseLayout. (I6d7d7, b/215572963, b/211753558)- Aggiungi il metodo
WindowInsets.only()
per consentire agli sviluppatori di includere solo le dimensioni di WindowInsets. (I14c94, b/217768486) Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono 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'annotazioneCompoableTarget
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)
Correzioni di bug
- Ora è consentito passare offset di scorrimento negativi in
LazyGridState.scrollToItem()
eLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Supporta il caricamento asincrono dei caratteri per TextField. (Icc4bf, b/214587005)
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.foundation:foundation:1.2.0-alpha03
e androidx.compose.foundation:foundation-layout:1.2.0-alpha03
sono stati rilasciati. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche alle API
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
sono ora deprecati e non verranno chiamati. UtilizzaBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Sono state attivate le animazioni per gli elementi delle griglie pigre con Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
ora propaga le richieste alla visualizzazione Android di hosting. (Ia7a51)FontFamilyResolver
è ora disponibile 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)
- Sono stati aggiunti
- È stata aggiunta
AndroidFont
, una nuova API di basso livello per fornire nuovi tipi di descrittori di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico dell'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.- API
Font.ResourceLoaded
estesa per supportare il caricamento dei caratteri facoltativo e asincrono. Non è consigliabile che gli sviluppatori di applicazioni utilizzino questa API direttamente. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont. - La funzione di estensione
Font.AndroidResourceLoader
consente la costruzione di 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)
- API
- 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)
- Ora puoi specificare il tipo di contenuti per gli elementi delle funzioni
LazyVerticalGrid
- item/items suLazyGridScope
, che ora accettano questo parametro. Fornire queste informazioni aiuta la logica di riutilizzo della composizione degli elementi a renderla più efficiente e a riutilizzare solo i contenuti tra gli elementi di tipo simile. (I7b355, b/215372836) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno nuove proprietà:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Ora puoi specificare il tipo di contenuti per gli elementi delle funzioni item/items di LazyColumn/LazyRow. LazyListScope ora accetta questo parametro. Fornire queste informazioni aiuta la logica di riutilizzo della composizione degli elementi a renderla più efficiente e a riutilizzare solo i contenuti tra gli elementi di tipo simile. (I26506)
- Il costruttore
SubcomposeLayoutState
che 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) - Aggiunge modificatori per WindowInsets, sia per il padding che per il dimensionamento. In questo modo, alcuni contenuti possono estendersi nell'area di rientro, mentre i contenuti principali rimangono fuori dall'area di rientro. Ad esempio, windowInsetsPadding può essere utilizzato per aggiungere spazio interno all'area dei contenuti per evitare aree che potrebbero essere coperte completamente o parzialmente. (Id0395, b/213942085)
Correzioni di bug
- I campi di testo ora vengono mantenuti sopra la tastiera quando sono
selezionati e la tastiera viene mostrata, quando la modalità di inserimento soft è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Il computer utilizza la composizione locale per
FontFamily.Resolver
FontLoader
per computer è deprecato- Nuova fabbrica
createFontFamilyResolver
su computer (I6bbbb, b/174162090)
- Il tipo di input della tastiera virtuale non sfarfalla più quando si sposta lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
- I campi di testo non richiedono più una pressione aggiuntiva del tasto Indietro quando viene visualizzata la maniglia del cursore. (Ideb4b, b/205726883)
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato migliorato per corrispondere a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha02
e androidx.compose.foundation:foundation-layout:1.2.0-alpha02
sono stati rilasciati. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunta di
NonRestartableComposable
ai metodi che sono sovraccarichi di metodi esistenti senza logica complessa. In questo modo, si riducono i controlli di memorizzazione (equals) generati dal compilatore per tutti i parametri ripetuti nella funzione interna chiamata. (I90490) - Sono stati aggiunti modificatori
excludeFromSystemGesture
per accedere facilmente asetSystemGestureExclusionRects
di Android (I46f07)
Correzioni di bug
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato migliorato per corrispondere a quello della lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
e altri contenitori che utilizzanoModifier.scrollable
ora supportano lo scorrimento con la rotellina del mouse. (I2b5e1, b/198214718)
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha01
e androidx.compose.foundation:foundation-layout:1.2.0-alpha01
sono stati rilasciati. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto il nuovo parametro
userScrollEnabled
aLazyColumn
,LazyRow
eLazyVerticalGrid
per consentire agli utenti di disattivare temporaneamente o definitivamente lo scorrimento avviato dall'utente tramite gesti tattili o azioni di accessibilità. Lo scorrimento a livello di programmazione tramite i metodi sullo stato sarà comunque consentito. (I7eae9, b/201150093) - Aggiungi il callback
onSizeChanged
al modificatore della lente d'ingrandimento. (I6879f) - Il widget lente d'ingrandimento ora viene visualizzato quando si trascinano i punti di manipolazione della selezione in un
SelectionContainer
. (I30b38, b/139320979)
Correzioni di bug
- È stato risolto il problema relativo alla mancata scomparsa del punto di manipolazione del cursore
TextField
quando si scorre fino a non visualizzarlo più. (I14552, b/208883748)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.foundation:foundation:1.1.1
e androidx.compose.foundation:foundation-layout:1.1.1
sono stati rilasciati. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correzione
NullPointerException
alle 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.foundation:foundation:1.1.0
e androidx.compose.foundation:foundation-layout:1.1.0
sono stati rilasciati. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto di overscroll di Android 12
- Miglioramenti alle dimensioni del target tocco
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del target di tocco. Ad esempio, il touch target del pulsante si espanderà fino a raggiungere una dimensione minima di 48 x 48 dp, anche se imposti dimensioni più piccole per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, fornendo un comportamento coerente se combini Views e Compose. Questa modifica garantisce inoltre che, quando crei la tua UI utilizzando i componenti di Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
- Supporto stabile per la modalità di navigazione laterale
- Viene eseguito l'upgrade di una serie di API sperimentali precedenti alla versione stabile
- Supporto per le versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.foundation:foundation:1.1.0-rc03
e androidx.compose.foundation:foundation-layout:1.1.0-rc03
sono stati rilasciati. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornato per supportare Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.foundation:foundation:1.1.0-rc01
e androidx.compose.foundation:foundation-layout:1.1.0-rc01
sono stati rilasciati. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Ora è consentito passare offset di scorrimento negativi in
LazyListState.scrollToItem()
eLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Correzione di un bug che causava la scomparsa delle azioni di scorrimento per l'accessibilità (I7cbfb)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.foundation:foundation:1.1.0-beta04
e androidx.compose.foundation:foundation-layout:1.1.0-beta04
sono stati rilasciati. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornato per essere compatibile con Kotlin
1.6.0
Modifiche alle API
- È stata pulita la nullabilità in
androidx.core.view
(I7078a, b/204917439) - Sono state aggiunte API sperimentali che consentono di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d)
- Mostra un widget di ingrandimento quando trascini il cursore o i punti di manipolazione di selezione all'interno dei campi di testo. (I5391e, b/203781358)
Correzioni di bug
- È stato risolto il problema a causa del quale i punti di manipolazione del testo non si spostavano quando cambiava la visibilità dell'IME. (I25f2e)
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta03
e androidx.compose.foundation:foundation-layout:1.1.0-beta03
sono stati rilasciati. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- È stato aggiunto il supporto per gli intervalli orizzontali a LazyVerticalGrid. (I7e2fa, b/176758183)
È stata aggiunta la funzionalità sperimentale per animare le posizioni degli elementi degli elenchi pigri. È disponibile un nuovo modificatore all'interno di LazyItemScope chiamato
Modifier.animateItemPlacement()
. Esempio di utilizzo:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Quando fornisci una chiave tramite
LazyListScope.item
oLazyListScope.items
, questo modificatore attiva le animazioni di riordinamento degli elementi. Oltre al riordino degli elementi, verranno animate anche tutte le altre modifiche alla posizione causate da eventi come modifiche alla disposizione o all'allineamento. (I59e7b, b/150812265)
- Quando fornisci una chiave tramite
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta02
e androidx.compose.foundation:foundation-layout:1.1.0-beta02
sono stati rilasciati. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- Le increspature e le altre indicazioni verranno ora ritardate solo se si trovano all'interno di un contenitore
Modifier.scrollable()
, anziché essere sempre ritardate per un evento di interruzione. (Ibefe0, b/203141462) - È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459).
Contributo esterno
- Aggiunto
Modifier.pointerHoverIcon
(I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-beta01
e androidx.compose.foundation:foundation-layout:1.1.0-beta01
sono stati rilasciati. La versione 1.1.0-beta01 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459).
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-alpha06
e androidx.compose.foundation:foundation-layout:1.1.0-alpha06
sono stati rilasciati. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico senza figli per Layout, con una maggiore efficienza (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
ora restituisce ilSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db)- È stato aggiunto
performScrollToNode(matcher: SemanticsMatcher)
che scorrono un contenitore scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha05
e androidx.compose.foundation:foundation-layout:1.1.0-alpha05
sono stati rilasciati. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Correzioni di bug
- È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lazy che non lazy) rispetto allo scorrimento (I6cdb0)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
e androidx.compose.foundation:foundation-layout:1.1.0-alpha04
sono stati rilasciati. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
performGesture
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)
Correzioni di bug
- È stato aggiunto il supporto per lo scorrimento eccessivo sui dispositivi Android 12. (Iccf3c, b/171682480)
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha03
e androidx.compose.foundation:foundation-layout:1.1.0-alpha03
sono stati rilasciati. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Aggiornamento di Compose
1.1.0-alpha03
in modo che dipenda da Kotlin1.5.30
. (I74545)
Modifiche alle API
- È stato aggiunto l'effetto bagliore per lo scorrimento. È stata aggiunta una nuova API OverScrollConfiguration sperimentale per consentire la configurazione dell'effetto visivo di overscroll. Fornisci null per disattivare l'effetto di overscroll. (I0c304, b/171682480)
- AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- È stato aggiunto un metodo di test per ottenere i limiti ritagliati. (I6b28e)
- È stata aggiunta la dimensione minima del touch target a ViewConfiguration per l'utilizzo nell'input semantico e del puntatore per garantire l'accessibilità. (Ie861c)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.foundation:foundation:1.1.0-alpha02
e androidx.compose.foundation:foundation-layout:1.1.0-alpha02
sono stati rilasciati. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunte versioni DpSize per
Modifier.size
erequiredSize
(I3fc7e, b/194219828)
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.foundation:foundation:1.1.0-alpha01
e androidx.compose.foundation:foundation-layout:1.1.0-alpha01
sono stati rilasciati. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche alle API
- Aggiornamento del metodo
DrawScope#drawImage
che utilizza i rettangoli di origine e destinazione per utilizzare un parametro FilterQuality facoltativo. Questa opzione è utile per la pixel art che deve essere pixelata quando viene ingrandita. Aggiornamento di BitmapPainter e del composable Image per utilizzare anche un parametro FilterQuality facoltativo (Ie4fb0, b/180311607) - TextField ora cancella la selezione quando viene premuto il pulsante Indietro, in linea con il comportamento di EditText di Android. (I3ca16, b/174173645)
- Aggiungi il cursore. (I07a82, b/173016579)
Correzioni di bug
- Lo scorrimento tramite azioni semantiche per elenchi pigri e componenti di scorrimento regolari ora è animato (Id9066, b/190742024)
Contributo esterno
LazyVerticalGrid
ora accetta parametri di disposizione sia orizzontale che verticale. (If9c92)
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.foundation:foundation:1.0.5
e androidx.compose.foundation:foundation-layout:1.0.5
sono stati rilasciati. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
androidx.compose.foundation:foundation:1.0.4
e androidx.compose.foundation:foundation-layout:1.0.4
sono stati rilasciati. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.foundation:foundation:1.0.3
e androidx.compose.foundation:foundation-layout:1.0.3
sono stati rilasciati. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.foundation:foundation:1.0.2
e androidx.compose.foundation:foundation-layout:1.0.2
sono stati rilasciati. La versione 1.0.2 contiene questi commit.
Aggiornato per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.foundation:foundation:1.0.1
e androidx.compose.foundation:foundation-layout:1.0.1
sono stati rilasciati. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.foundation:foundation:1.0.0
e androidx.compose.foundation:foundation-layout:1.0.0
sono stati rilasciati. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o superiore nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc02
e androidx.compose.foundation:foundation-layout:1.0.0-rc02
sono stati rilasciati. La versione 1.0.0-rc02 contiene questi commit.
- È stato aggiornato il rendering dei bordi per le forme generiche per risolvere i problemi relativi ai percorsi definiti con dimensioni fisse. (aosp/1748871, b/191817116)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc01
e androidx.compose.foundation:foundation-layout:1.0.0-rc01
sono stati rilasciati. La versione 1.0.0-rc01 contiene questi commit.
Modifiche alle API
- Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
Correzioni di bug
- Il pulsante, la scheda, le caselle di controllo e il
Modifier.clickable(enabled=false)
disabilitati bloccheranno i clic che vengono inviati all'elemento principale. (Ic2c3b, b/183908811)
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.foundation:foundation:1.0.0-beta09
e androidx.compose.foundation:foundation-layout:1.0.0-beta09
sono stati rilasciati. La versione 1.0.0-beta09 contiene questi commit.
Modifiche alle API
ManualFrameClock
rimosso. Se devi controllare le animazioni, utilizzacomposeTestRule.mainClock
. (I3c3e8, b/189951065)- modifica dell'enumerazione Role e LiveRegionMode in classi inline con costruttore privato (Id1890)
- KeyboardCapitalization viene convertito in una classe in linea. (Id5a1c)
- TextOverflow viene modificato in una classe in linea. (I433af)
Correzioni di bug
- Ora, quando specifichi le chiavi univoche per gli elementi LazyColumn/Row, la posizione di scorrimento viene mantenuta in base alla chiave, il che significa che se aggiungi/rimuovi elementi prima dell'elemento visibile corrente, l'elemento con la chiave specificata verrà mantenuto come primo elemento visibile. (Id263f, b/184257857)
- Per ora, le costanti chiave sono @ExperimentalComposeUiApi. Il codice che utilizza l'API può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
- È stata aggiunta IdlingStrategy ad AndroidComposeTestRule, che può essere
utilizzata dai framework di test per installare un meccanismo alternativo per attendere
o raggiungere la quiescenza. Utilizza
AndroidComposeTestRule.setIdlingStrategyFactory()
prima dell'inizio del test per installare la tua strategia. (I608fa)
Regole del profilo aggiunte
Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
che si trova nella 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.foundation:foundation:1.0.0-beta08
e androidx.compose.foundation:foundation-layout:1.0.0-beta08
sono stati rilasciati. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
- L'enum NestedScrollSource viene sostituito da una classe inline. (Ie321b, b/187055290)
- È stato eseguito il refactoring degli utilizzi di enum per le classi inline per evitare problemi con le istruzioni esaustive quando vengono aggiunti nuovi valori enum. (I2b5eb)
- Aggiunge un timeout di tocco agli elementi selezionabili / attivabili per evitare di mostrare un'increspatura durante lo scorrimento / trascinamento (Ia2704, b/168524931)
- Le proprietà semantiche ContentDescription e Text non sono più valori singoli, ma elenchi. In questo modo, possono essere uniti così come sono anziché concatenati. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
Modifier.focusModifier()
è deprecato e sostituito daModifier.focusTarget()
(I6c860)- 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)
- Le funzioni
AnnotatedString.withAnnotation
ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.
- PaddingValues ora è
@Stable
anziché@Immutable
(I88c50)
Correzioni di bug
- Correzione dei blocchi della pressione prolungata dell'area vuota in un testo non vuoto. (I33ab5, b/187437299)
- Mostra la barra degli strumenti dopo SelectAll (I495d9, b/185919613)
- Correzione del ritaglio dei contenitori scorrevoli dei relativi elementi secondari sull'asse trasversale. Era facilmente riproducibile se avevi una LazyRow con elementi Card. Ora l'ombra non verrà ritagliata. (Icb635, b/186318448)
- È stato risolto un problema per cui le increspature o altre indicazioni a volte si bloccavano su un clic lungo quando si utilizzava Modifier.combinedClickable (I2298c, b/186223077)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica della posizione, senza dover chiamare change.consumePositionChange nei callback onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno riportate. (Ieb67d, b/177926591)
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta07
e androidx.compose.foundation:foundation-layout:1.0.0-beta07
sono stati rilasciati. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- È stata introdotta la logica di precaricamento dell'elemento visibile successivo per LazyColumn/Row (I8a4bc, b/184940225)
- Aggiunta maniglia di selezione dei clip (Iff80d, b/183408447)
Correzioni di bug
- LazyColumn/Row ora mantiene attivi (non eliminati) fino a due elementi precedentemente visibili anche quando sono già stati scorri. Ciò consente al componente di riutilizzare le composizioni secondarie attive quando sarà necessario comporre un nuovo elemento, migliorando le prestazioni di scorrimento. (Ie5555)
- Rimuovi paintBackground. (I38660)
- Draw Selection Background using DrawScope. (I73c61, b/186674472)
- È stata corretta una regressione beta06 che interessava la riga/colonna utilizzando le disposizioni spacedBy per disporre gli elementi secondari ponderati. (Ifaf8c, b/187326588)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta06
e androidx.compose.foundation:foundation-layout:1.0.0-beta06
sono stati rilasciati. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
- Risolvi il conflitto con il gesto di navigazione (I1145e)
- Sono state aggiunte API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017).
- È stato aggiunto
SemanticsActions.ScrollToIndex
per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice 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
- Supporto del salvataggio di AnnotatedString in TextFieldValue.Saver. Aggiunte le funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
- Sono stati aggiunti i valori predefiniti del parametro
0.dp
aPaddingValues(horizontal, vertical)
(I05571, b/181336792)
Correzioni di bug
- Gli elementi secondari di riga e colonna con
weight(fill = false)
non fanno più in modo che l'elemento principale riempia l'intero spazio disponibile dell'asse principale. (Ied94d, b/186012444, b/184355105)
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.foundation:foundation:1.0.0-beta05
e androidx.compose.foundation:foundation-layout:1.0.0-beta05
sono stati rilasciati. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- L'interfaccia FlingBehavior è ora contrassegnata come @Stable. Tutte le implementazioni devono essere conformi al contratto
@Stable
. (I93354, b/184830577)
Correzioni di bug
- Correzione delle azioni di scorrimento per l'accessibilità
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
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.foundation:foundation:1.0.0-beta04
e androidx.compose.foundation:foundation-layout:1.0.0-beta04
sono stati rilasciati. La versione 1.0.0-beta04 contiene questi commit.
Modifiche alle API
- Rinomina hideSoftwareKeyboard e showSoftwareKeyboard in
SoftwareKeyboardController rispettivamente in
hide()
eshow()
.- Fornisci l'interfaccia CompositionLocal completa per LocalSoftwareKeyboardController, consentendo di impostarla (particolarmente utile nei test) (I579a6)
- Viene introdotto
TextOverflow.Visible
. (Ic8f89) - Sono state rimosse le istanze pubbliche di
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
. (I4e83e, b/181869067)
Correzioni di bug
- Risolto il problema per cui gli elementi di
LazyColumn
/LazyRow
posizionati sui bordi venivano posizionati in modo errato dopo lo scorrimento rapido (Ie4d13, b/183877420) Prima di questa modifica, le funzioni componibili locali potevano essere ignorate in base ai loro parametri. Dopo questa modifica, nessuna funzione componibile locale verrà ignorata. Questa modifica viene apportata perché è comune e previsto che le funzioni locali acquisiscano parametri dal genitore e il loro salto è una fonte comune di bug.
Per riassumere, considera l'esempio:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Prima di questa modifica, la funzione componibile
ShowCount
veniva sempre ignorata, anche dopo l'aggiornamento del parametrocount
. Abbiamo deciso, tuttavia, di non dare seguito a questa misura. (I5648a)
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta03
e androidx.compose.foundation:foundation-layout:1.0.0-beta03
sono stati rilasciati. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
DefaultMonotonicFrameClock
è deprecato. La chiamatawithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
senzaMonotonicFrameClock
ora genereràIllegalStateException
. (I4eb0d)
Correzioni di bug
FlingBehavior.performFling()
viene ora chiamato anche quando la velocità è 0 (I0b6e5, b/181237123)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta02
e androidx.compose.foundation:foundation-layout:1.0.0-beta02
sono stati rilasciati. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- Sono state aggiunte diverse piccole ottimizzazioni nella logica di misurazione di LazyColumn (Ic6889)
- È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I5951e, b/168778053) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I84472, b/168778053)
Correzioni di bug
- Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-beta01
e androidx.compose.foundation:foundation-layout:1.0.0-beta01
sono stati rilasciati. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 Beta.
Modifiche alle API
- È stato aggiunto il callback onStart a
detectDragGestures
(I67269, b/179995594) - I modificatori per il dimensionamento in base alle dimensioni intrinseche non sono più sperimentali. (I15744)
- Rimozione delle asserzioni dp (I798d2)
- Callback SoftwareKeyboardController rimosso da tutti i campi di testo da sostituire a breve con una nuova API. (Iae869, b/168778053)
- MeasureBlocks è stato rinominato MeasurePolicy, che è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
è stato sostituito da[Mutable]InteractionSource
- Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
- Anziché passare
interactionState = remember { InteractionState() }
a componenti 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)
- Sono stati rimossi i metodi LayoutCoordinates ritirati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- È stata creata una nuova TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
- Placeable ora espone measuredSize, che rappresenta le dimensioni effettive misurate dal layout secondario. Queste dimensioni potrebbero non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
- Aggiungi il modificatore selectionGroup che consente di contrassegnare la raccolta di schede o pulsanti di opzione per scopi di accessibilità (Ie5c29)
Aggiungi LazyListState.animateScrollToItem
Questo metodo scorre in modo fluido fino a un elemento specifico dell'elenco. (I4bfd7)
ScrollableState.smoothScrollBy() è stato rinominato in animateScrollBy() LazyListState.snapToItemIndex() è stato rinominato in scrollToItem() ScrollState.smoothScrollTo() è stato rinominato in animateScrollTo() (I35ded)
Modifier.zoomable è stato sostituito da Modifier.transformable. smoothPanBy e smoothRotationBy sono stati aggiunti come funzionalità. (Ifc32b, b/175294473)
Il
defaultFactory
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)Modifica
Indication#createIndication()
inIndication#rememberUpdatedIndication(InteractionState)
e rimuove il parametroInteractionState
da IndicationInstance#drawIndication()
. IndicationInstance deve essere responsabile solo del disegno degli effetti visivi e non dell'avvio di animazioni / della scrittura dello stato in risposta alle modifiche di InteractionState. Queste animazioni e scritture di stato devono invece avvenire entrorememberUpdatedIndication()
. Anche il parametroindication
inModifier.indication
è stato modificato in modo che sia un parametro obbligatorio. (Ic1764, b/152525426)Le azioni di testo ora controllano automaticamente lo stato attivo (I13777, b/179648629)
Rimozione di
runBlockingWithManualClock
(I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con numeri interi (I81298)
I pacchetti dei metodi smoothScrollBy e scrollBy sono stati modificati in
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)FlingConfig è stato rinominato FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché i decadimenti predefiniti. (I02b86, b/175294473)
I modificatori di dimensioni sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)
defaultMinSizeConstraints è stato rinominato defaultMinSize. (I4eaae)
Modifier.tapGestureFilter è stato rimosso. Utilizza invece
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Il consumo parziale è stato rimosso dal sistema di input del puntatore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)
L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è stato spostato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
AnimationClockObservable e le relative sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
drawerState.open() e drawerState.close() sono ora funzioni di sospensione. Utilizza rememberCoroutineScope() per ottenere l'ambito della composizione per chiamarli (I16f60, b/175294473)
Providers è stato rinominato in CompositionLocalProvider
- Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è diventata una proprietà componibile di primo livello anziché una funzione componibile di primo livello.
- CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è diventata un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata resa un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione
@TestOnly
clearRoots di primo livello è stata rimossa. Non è più necessario. - Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
- I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe di file di Kotlin, la compatibilità binaria verrà interrotta, ma non quella del codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scrollable anziché la classe ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable ora accetta DraggableState anziché una semplice espressione lambda. Puoi creare lo stato tramite
rememberDraggableState { delta -> }
per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)Sono stati aggiunti i modificatori requiredWidth(IntrinsicSize) e requiredHeight(IntrinsicSize) per il dimensionamento obbligatorio alle dimensioni intrinseche. (I0a6b4)
L'API
emptyContent()
deprecata è stata rimossa. Utilizza invece{}
. (Idb33f, b/179432510)Sono state eliminate alcune API ritirate in precedenza (Ice5da, b/178633932)
Correzioni di bug
- È stata aggiunta una nuova API LocalSoftwareKeyboardController di composizione locale per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-alpha12
e androidx.compose.foundation:foundation-layout:1.0.0-alpha12
sono stati rilasciati. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Modifier.pointerInput ora richiede chiavi remember per indicare quando la coroutine di rilevamento dell'input del puntatore deve essere riavviata per nuove dipendenze. (I849cd)
- Aggiornamento dei test: hasText() controllerà sia il testo di input sia il testo dell'etichetta/suggerimento/segnaposto nel campo di testo (Iab803)
- È stato aggiunto PaddingValues.Absolute, che può essere utilizzato nelle API che accettano PaddingValues. (Ia5f30)
- onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
- Per adattarsi meglio alle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato BitmapPainter per essere parallelo a VectorPainter. (Iba381, b/174565889)
- API di test delle sottostringhe migliori con la sottostringa ora come argomento (Icbe78)
- È stato introdotto un elemento di contesto della coroutine
InfiniteAnimationPolicy
che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato alcun criterio, tranne quando vengono eseguiti test conComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo e Animatable.stop sono ora funzioni di sospensione (If4288)
- ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi di destrutturazione e copy() sono stati rimossi da diverse classi in cui venivano utilizzati raramente. (I26702, b/178659281)
È stato aggiunto il supporto delle chiavi personalizzate per LazyColumn/LazyRow. In questo modo possiamo gestire in modo più intelligente il riordino degli elementi. Pertanto, lo stato memorizzato nei blocchi remember {} si sposterà insieme all'elemento quando riordini gli elementi o rimuovi l'elemento dal centro.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
È stato modificato Indication#createInstance in modo che sia @Composable ed è stato modificato LocalIndication in modo che contenga un'indicazione, non () -> Indication. (I5eeea, b/157150564)
Constraints.enforce
è stato sostituito conConstraints.constrain
. (I8b8ea)loadFontResource è deprecato. Utilizza fontResource. Le API imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecate. Usa painterResource. (I6b809)
Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta espressioni lambda che restituiscono valori float anziché valori float diretti. (If4a35, b/178657186)
Aggiunta la semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per controllare la semantica (I8e07a)
Modifier.clickable ora non supporta il doppio clic e il clic lungo. Utilizza Modifier.combinedClickable per ottenere questa funzionalità. (Iafad1)
toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)
IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)
Modifier.dragGestureFilter è stato ritirato. Utilizza invece
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per i trascinamenti su un solo asse (I0ba93, b/175294473)Rinominate le impostazioni di Ambienti in modo che corrispondano al nuovo nome Ambient -> CompositionLocal. Gli ambienti venivano denominati AmbientFoo, ora le variabili locali di composizione vengono denominate LocalFoo. (I2d55d)
La selezione è stata spostata nella base. (I7892b)
Analogamente a come abbiamo rimosso in precedenza il composable
state { 0 }
e ora promuoviamo l'utilizzo 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)
Il tempo di riproduzione nell'animazione è ora unificato in nanosecondi (If776a)
@ComposableContract è stato ritirato a favore di tre annotazioni più specifiche.
@ComposableContract(restartable = false)
è diventato@NonRestartableComposable
@ComposableContract(readonly = true)
è diventato@ReadOnlyComposable
@ComposableContract(preventCapture = true)
è diventato@DisallowComposableCalls
@ComposableContract(tracked = true)
è stato rimosso. (I60a9d)Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d)Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno la ricomposizione finché le coroutine secondarie di composizione non saranno completate. Recomposer.shutDown rinominato in cancel per contrastare close. (Ib6d76)
Le API correlate a LazyVerticalGrid sono contrassegnate come sperimentali (Ia53e3, b/178519862)
rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
RestorableStateHolder è stato rinominato SaveableStateHolder e spostato nel pacchetto androidx.compose.runtime.saveable. Il metodo interno RestorableStateProvider è stato rinominato SaveableStateProvider. Il tipo generico è stato rimosso, quindi puoi passare Any come chiave. L'annotazione sperimentale non è più necessaria. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
L'artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
Molte API obsolete da tempo nel pacchetto ui vengono eliminate. (I2f2dc)
L'artefatto compose:runtime-dispatch è ora ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher si trova in compose:ui. (Ib5c36)
I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione da destra a sinistra. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato il mirroring automatico. (I61040, b/152756983)
canDrag è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
L'API a cui fa riferimento il plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica binaria che causa interruzioni. (I3b922, b/169406779)
Modifier.scaleGestureFilter è stato rimosso. Utilizza Modifier.zoomable. In alternativa, utilizza
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)AnimatedValue/Float è ora deprecato. Utilizza invece Animatable. (I71345, b/177457083)
- Rimozione di CoreText e CoreTextField dall'API pubblica
- Rimozione dell'overload di SelectionContainer deprecato (I99c19)
Rimozione delle funzioni di scorrimento senza sospensione deprecate In linea con le modifiche dell'ultima release, le funzioni di scorrimento senza sospensione sono state rimosse completamente. Esegui la conversione alle funzioni di sospensione con gli stessi nomi. Un ambito di coroutine può essere ottenuto tramite rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout è stato ritirato a favore di androidx.constraintlayout.compose.ConstraintLayout. Dovrai aggiungere una dipendenza da
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
Recomposer.current()
rimosso. [Abstract]ComposeView ora per impostazione predefinita crea in modo differito Recomposer con ambito finestra basati su ViewTreeLifecycleOwner per la finestra. La ricomposizione e i tick di animazione basati su withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host è interrotto. (I38e11)Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato di composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è ritirata. (If8ebe)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha11
e androidx.compose.foundation:foundation-layout:1.0.0-alpha11
sono stati rilasciati. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
Deprecate non-suspend scrollBy, remove non-suspend scrollTo
Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere che lo scorrimento termini. Nell'ambito di questa transizione, stiamo ritirando e/o rimuovendo le versioni non sospese di queste funzioni. (Ie9ced)
Ritiro di smoothScrollBy non sospeso Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere che lo scorrimento termini. Nell'ambito di questa transizione, stiamo ritirando le versioni non sospese di queste funzioni. (I12880)
Al parametro Descrizione contenuti sono state aggiunte le immagini e le icone. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c).
BasicTextField ha ricevuto un nuovo parametro chiamato "decorationBox". Consente di aggiungere decorazioni come icone, segnaposto, etichette e simili al campo di testo e di aumentare l'area target di tocco. (I16996)
Il parametro canDrag è stato rimosso da Modifier.draggable (Ic4bec, b/175294473)
AnimatedFloat.fling che accetta FlingConfig è stato rimosso. Utilizza invece suspend Animatable.animateDecay. (I4659b, b/177457083)
data class
è stato rimosso dai seguenti corsi:- InlineTextContent
- LocaleList
- (I605c7)
Gli elementi selezionabili, attivabili/disattivabili e su cui è possibile fare clic ora possono essere creati al di fuori della composizione (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row sono stati ritirati. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai un grande contenuto scorrevole perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino un metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non utilizzare il comportamento pigro e utilizzare i modificatori direttamente in questo modo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Nuovo metodo di fabbrica
items(count: Int)
per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
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) e itemsIndexed(Array) (I803fc, b/175562574)AbsoluteArrangement deprecato è stato rimosso. (Iffa96, b/177641870)
Il parametro propagateMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere passati o meno al contenuto di Box. Il valore predefinito è false. (I0125b, b/152613457)
Correzioni di bug
- onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface
- Aggiunta di funzioni di fabbrica che iniziano con una lettera maiuscola
- Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
- Le nuove funzioni di fabbrica restituiscono FontFamily anziché sottoclassi
- Ha nascosto i costruttori delle sottoclassi, in modo che possano essere costruite solo tramite funzioni di fabbrica.
- Rinominato Font.asFontFamily in Font.toFontFamily
- (I42aa7)
È stato introdotto
ComposeContentTestRule
, che 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)
La densità è ora l'ambito del destinatario per le interfacce di disposizione. (I18aad)
TextFieldValue accetta AnnotatedString. Tuttavia, questa è una modifica solo dell'API e la modifica del testo in più stili non è ancora implementata.
- Rimozione di
initial
dai parametri del costruttore EditingBuffer. (I326d5)
- 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)
Durata e Uptime verranno sostituiti da Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore da queste classi. (Ia33b2, b/175142755, b/177420019)
RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora ritirato.
RememberObserver
è un sostituto 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)Rinomina TransformedText.transformedText in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
Le seguenti classi non sono più classi di dati:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Sono stati ritirati i metodi di coordinate globali e sono stati creati nuovi metodi di coordinate basati su finestre. (Iee284)
Utilizza ImeAction.None anziché ImeAction.NoAction
- Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
FocusRequester.createRefs è ora contrassegnato come sperimentale, in quanto potrebbe cambiare. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato con @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)
Utilizza TestCoroutineDispatcher nei test (I532b6)
Rimozione di PointerInputData e modifica di PointerInputChange per fornire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData sono stati resi interni perché non vengono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)
Ridenominato TextInputService.onStateUpdated come updateState (Id4853)
Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o della finestra. (I62db4)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
e androidx.compose.foundation:foundation-layout:1.0.0-alpha10
sono stati rilasciati. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
- ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
- Modifiche all'API VisualTransformation
- OffsetMap è stato rinominato OffsetMapping
- È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
- PasswordTransformation non è più una classe di dati
- OffsetMapping è stato spostato in un file separato
- (I0bdf3)
- Modifiche all'API EditOperations
- EditOperation rinominato in EditCommand
- Aggiunto il suffisso Command per le implementazioni concrete di EditOperation
- EditCommand non sono più classi di dati
- È stata rinominata la funzione EditOperation.process in applyTo
- Rinomina InputEventListener in InputEventCallback
- (I0a366)
- Modifica di Velocity per includere componenti e operazioni matematiche. (Ib0447)
- È stata rinominata l'annotazione @ExperimentalTesting in @ExperimentalTestApi per coerenza con annotazioni API sperimentali simili (Ia4502, b/171464963)
- È stato aggiunto il metodo sperimentale stickyHeader per LazyColumn/LazyRow (I0a81d)
- Rinomina Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher deprecato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
- Aggiungi l'opzione di attivazione/disattivazione a foundation Strings.kt (I4a5b7, b/172366489)
- nativeClass è stato spostato nel modulo ui ed è stato reso interno. Utilizzi aggiornati di nativeClass nelle implementazioni di equals per utilizzare 'is MyClass' invece. (I4f734)
- FlowRow e FlowColumn sono stati ritirati. Utilizza invece un layout personalizzato. (I09027)
- Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- È stato introdotto SelectionRegistrar.notifySelectableChange per comunicare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
- Modificato
fun Dp.isFinite()
inval Dp.isFinite
(I50e00) - Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
- Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi inline con una costante Unspecified. (I93f7b, b/174310811)
Correzioni di bug
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le animazioni. Nuova DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale (I820f2, b/168014930) - È stato aggiunto il supporto per i campi di testo disattivati e di sola lettura (I35279, b/171040474, b/166478534)
animate()
è ora sostituito 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)
- Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
e androidx.compose.foundation:foundation-layout:1.0.0-alpha09
sono stati rilasciati. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
Aggiungi interfaccia scorrevole
In questo modo ScrollState e LazyListState possono essere trattati come un tipo comune, consentendo l'implementazione dello scorrimento personalizzato in entrambi i tipi.
Inoltre, sposta smoothScrollBy in una funzione di estensione su Scrollable, sfruttando questa funzionalità. (I2153b)
LazyVerticalGrid è stato aggiunto. (I17267, b/162213211)
Ritira LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza invece LazyColumn e LazyRow (I5b48c)
Per la sospensione delle API di input del puntatore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
È stato aggiunto LazyListState.layoutInfo, che espone l'elenco delle dimensioni e degli offset degli elementi attualmente visibili (If8678, b/170472532)
Rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
È stato aggiunto il supporto di InteractionState per i campi di testo. (I61d91)
Aggiungi il parametro reverseLayout per LazyColumn/Row. Quando
true
, gli elementi verranno composti dal basso verso l'alto eLazyListState.firstVisibleItemIndex == 0
significherà che il primo elemento si trova in basso. (I552ae, b/166589935)È stato aggiunto il parametro verticalArrangement per LazyColumn. È stato aggiunto il parametro horizontalArrangement per LazyRow. La disposizione ci consente di aggiungere una spaziatura tra gli elementi e specificare la disposizione degli elementi quando non ne abbiamo abbastanza per riempire l'intera dimensione minima. (Icf79a, b/170394300)
detectMultitouchGestures ora utilizza un callback con parametri combinati di centroide, panoramica, zoom e rotazione. (Ie6e1c)
Spostato ContentDrawScope nel modulo ui-graphics per essere con DrawScope. (Iee043, b/173832789)
Correzioni di bug
- Le espressioni lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
Sono state rimosse SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza, questi erano contrassegnati come InternalComposeAPI. Ora sono interni al modulo di composizione.
CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Queste sono pubbliche, ma non sono destinate all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c).
È stato eseguito il refactoring di ShaderBrush per creare in modo differito un'istanza dello shader quando sono disponibili le informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire gradienti che occupano i limiti di disegno completi di un elemento componibile al momento della composizione, senza dover implementare implementazioni personalizzate di DrawModifier.
API costruttori di funzioni di sfumatura deprecate a favore dei metodi di fabbrica su un oggetto sfumatura. (I511fc, b/173066799)
Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
Aggiunta di dichiarazioni di destrutturazione per creare istanze FocusRequester (I35d84, b/174817008)
accessibilityLabel è stato rinominato in contentDescription. accessibilityValue è stato rinominato in stateDescription. (I250f2)
Sono state introdotte diverse nuove funzioni in SelectionRegistrar ed è stato rinominato onPositionChange in notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Nuova funzione infiniteRepeatable per la creazione di un InfiniteRepeatableSpec (I668e5)
L'interfaccia di
Applier
è stata modificata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.Il metodo
insert()
è stato rinominato 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)È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i PNG) o VectorDrawable. I consumatori non devono più determinare in anticipo il tipo di asset e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composable Image o nei modificatori di Painter. (I2c703, b/173818471)
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una AnnotatedString. Funzione di creazione di annotatedString ritirata. (Idfe0b)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
e androidx.compose.foundation:foundation-layout:1.0.0-alpha08
sono stati rilasciati. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Rimosso il parametro
maxLines
daCoreTextField
. Se vuoi vincolare l'altezza del campo di testo in base al numero di righe, utilizzaBasicTextField
. (Iec002) - Modificati i metodi
await*TouchSlop()
per non rilevare il puntatore verso il basso e rinominati in*OrCancellation
. È stata rimossa anche la necessità del parametroorientationLock
. (Ie96e1) - È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
Inoltre, sono state migrate alcune API utilizzando
children
come nome per la lambda finale incontent
, in base al controllo lint e alle indicazioni. (Iec48e) - Le API
foundation:foundation-text
sono state spostate infoundation:foundation
. La struttura del pacchetto è rimasta invariata (Id3eb2) - Nuovo rilevatore di gesti multitocco, inclusi helper per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
- Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25)
- VectorAsset è stato rinominato ImageVector VectorAsset è stato spostato e rinominato Builder per essere una classe interna di ImageVector in conformità con le linee guida del consiglio API. Aggiunta di un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
- ImageAsset e i metodi correlati sono stati rinominati ImageBitmap. (Ia2d99)
- Proprietà semantiche di base spostate nell'interfaccia utente (I6f05c)
Aggiungi API di scorrimento basate su coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di restituire un valore. (Ie5642)
È stato aggiunto un parametro singeLine a BasicTextField, TextField e OutlinedTextField. Imposta questo parametro su true per fare in modo che il campo di testo sia una singola riga scorrevole orizzontalmente. (I57004, b/168187755)
Sono stati aggiunti il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere più facilmente i propri rilevatori di gesti. (I00807)
Modifier.focusable ha aggiunto il requisito in foundation. Utilizzalo per aggiungere un comportamento selezionabile a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)
Le API precedentemente deprecate sono state rimosse: il bordo è stato rimosso, utilizza invece BorderStroke. Modifier.drawBorder è stato rimosso, usa invece Modifier.border. Modifier.gravity è stato rimosso, utilizza invece Modifier.align. Lo stack è stato rimosso, utilizza invece Box (I32c2b, b/172470874)
AbsoluteArrangement è stato rinominato in Arrangement.Absolute. (If26f2)
Correzioni di bug
- Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere alias di tipo/metodi helper per facilitare la migrazione dalle API deprecate a quelle attuali. (Id6044, b/173834241)
- È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer. Sono state aggiornate anche le classi correlate a GraphicsLayer in base al feedback del consiglio API. (I0bd29, b/173834241)
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)- I campi uptime e posizione di PointerInputData non sono più nullabili. (Id468a)
- MaterialTheme ora imposta i colori corretti per i punti di manipolazione della selezione e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
- Il parametro di allineamento di Box è stato rinominato contentAlignment. (I2c957)
- I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché State. (Ic3021, b/173594846)
- È stato aggiunto WindowManager.isWindowFocused per verificare se la finestra host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
- È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- API TextFieldValue aggiornata
- TextFieldValue.composition è ora di sola lettura
- rimossa l'eccezione generata per l'intervallo di selezione non valido (I4a675, b/172239032)
- Gli Ambients ritirati denominati con
Ambient
come suffisso sono stati sostituiti con nuove proprietà con il prefisso Ambient, seguendo le altre linee guida per Ambients e API Compose. (I33440) - Aggiunto wrapper Android Typeface. Puoi caricare un carattere
Android tramite la funzione
typeface
, ad esempiotypeface(Typeface.DEFAULT)
. Ha anche rinominatotypefaceFromFontFamily()
intypeface()
(I52ab7) - È stato aggiunto un controllo lint per verificare che le fabbriche di modificatori utilizzino internamente
androidx.compose.ui.composed {}
, anziché essere contrassegnate come@Composable
. (I3c4bc) - È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica dei modificatori siano definite come estensioni del modificatore, in modo che possano essere concatenate in modo fluido. (I07981)
- L'argomento Semantica mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
- Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- TextUnit.Inherit viene rinominato TextUnit.Unspecified in modo coerente con le altre unità. (Ifce19)
- L'interfaccia di allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
- Il modulo
foundation:foundation-text
è stato unito afoundation:foundation
(Idac0f) - Deprecare place(Offset) e placeRelative(Offset). Utilizza invece gli overload con offset interi (I4c5e7)
id
è stato rinominato inlayoutId
perLayoutIdParentData
.Measurable.id
è stato rinominato inMeasurable.layoutId
. (Iadbcb, b/172449643)
Versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
e androidx.compose.foundation:foundation-text:1.0.0-alpha07
sono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- Analogamente a
Modifier.fillMaxSize[Width|Height]
, ora supportiamo le frazioni inModifier.fillParentMaxSize[Width|Height]
nell'ambito diLazyColumn/Row
(I797e2, b/166586426) KeyboardOptions.toImeOptions
è stato rimosso dall'API pubblica. (Ic2e45)- Le classi AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono state ritirate. Utilizza invece le nuove versioni disponibili nella libreria di Material. Per le applicazioni non Material, devi invece creare un tuo sistema di progettazione con ambienti di temi specifici che possono essere utilizzati nei tuoi componenti. (I74acc, b/172067770)
- foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base e non soggettiva che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
- Aggiunta di maxLines ai campi di testo (Ib2a5b)
- Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
- Aggiunta di KeyboardOptions per l'utilizzo in TextField (I9ca32)
- Aggiunge BasicText come API per il testo senza opinioni di progettazione, parallelamente a BasicTextField. (I28268)
- L'annotazione ExperimentalLazyDsl è stata rimossa. LazyColumn/LazyRow ora può essere utilizzato senza aggiungere @OptIn (Idab7a, b/166584730)
- BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
- BasicTextField è stato aggiunto in sostituzione di CoreTextField e BaseTextField (Id4cea)
- Rimuovi LazyColumnItems/LazyRowItems ritirati (I1d8a8)
- I composable obsoleti per il dimensionamento in base alle misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
- relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline, per specificare più facilmente le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
- Il parametro matchHeightConstraintsFirst è stato aggiunto al modificatore aspectRatio, che può essere utilizzato per specificare il modificatore per dimensionare in base ai vincoli di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593)
- DpConstraints deprecato è stato rimosso. (I87884, b/171702471)
Correzioni di bug
- È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendenti l'uno dall'altro per supportare i casi d'uso di scalabilità non uniforme.
- Aggiunto il metodo computeScaleFactor a ContentScale
- È stato aggiunto ContentScale.FillBounds per eseguire il ridimensionamento non uniforme per estendere i limiti dell'origine in modo da occupare completamente la destinazione.
- Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Size.
- (Ic96a6, b/172291582)
- captureToBitmap è stato spostato in captureToImage. (I86385)
- Contrassegna CoreText come @InternalTextApi. Utilizza invece BasicText. (I6aaeb)
- Rinomina KeyboardOptions come ImeOptions (I82f36)
- KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
- CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza BasicTextField (Ie2469)
- L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
- Introduzione del modulo ui-test-junit4 (Ib91f8)
- API Icon aggiornata per accettare Color.Unspecified come possibile colore di tinta che disegnerà l'asset o il pittore fornito senza un ColorFilter. In precedenza, i tentativi di ignorare la colorazione con Color.Unspecified avrebbero colorato con un colore trasparente, con il risultato di non visualizzare nulla. (I049e2, b/171624632)
- MeasureResult è stato spostato fuori da MeasureScope. (Ibf96d, b/171184002)
- Diversi simboli correlati al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
- androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- Aggiunta di SelectionContainer senza il callback (Ibfadb)
- Aggiungi test per le posizioni di SelectionHandles in SelectionContainer. (Ie93db)
- Aggiunta dell'opzione IME di correzione automatica della tastiera (I57b8d)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
e androidx.compose.foundation:foundation-text:1.0.0-alpha06
sono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Se non vuoi utilizzare la libreria Material, puoi anche utilizzare il componente / modificatore Image.paint() con un Painter. (I9f622)
- Aggiunta di interactionState a Modifier.scrollable, ScrollableColumn e LazyColumnFor (I81566, b/169509805)
- alignByBaseline è stato aggiunto a RowScope e alignWithSiblings è stato rinominato in alignBy (I06503, b/170628732)
- Box è stato reso una funzione in linea. (Ibce0c, b/155056091)
- Aggiunta di maxLines a CoreTextField (Ibee58, b/143687793)
- È stato aggiunto il soft wrap a CoreTextField. (I21a4b)
Correzioni di bug
- VectorPainter è stato ritirato a favore di rememberVectorPainter per indicare meglio che l'API componibile sfrutta internamente "remember" per rendere persistenti i dati tra le composizioni. (Ifda43)
- Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- È stata aggiunta l'opzione della tastiera a una sola riga a CoreTextField (I72e6d)
- È stata rinominata l'API Radius in CornerRadius per esprimere meglio il modo in cui viene utilizzata in tutto Compose. Documentazione aggiornata per indicare che i raggi d'angolo negativi sono bloccati a zero. (I130c7, b/168762961)
- Aggiunta della possibilità di specificare le informazioni dello strumento di controllo nel modificatore composto (Idee08, b/163494569)
- Aggiunta dell'opzione IME KeyboardCapitalization (I8ac38)
- Fix Rtl Handle Position. (I6e1e0)
- Modifica che causa interruzione: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che dovrebbe poter essere modificato negli eventi puntatore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo dei PointerEvent passati. (I6acd0)
- Aggiunta dell'opzione Seleziona tutto nel menu di selezione (Ief02b)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
e androidx.compose.foundation:foundation-text:1.0.0-alpha05
sono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- CoreTextField ora supporta la funzionalità del cursore (Id23aa)
Depreca le API contentColor() e currentTextStyle() e le sostituisce rispettivamente con gli ambient AmbientContentColor e AmbientTextStyle. Puoi accedere al valore corrente utilizzando
.current
nella proprietà ambient, come per qualsiasi altro ambient. Questa modifica è stata apportata per coerenza e per evitare di avere più modi per ottenere lo stesso risultato. Inoltre, rinomina alcune proprietà ambientali per descriverne meglio lo scopo come segue:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Correzioni di bug
- Nell'ambito della standardizzazione dei valori sentinella per le classi inline, rinomina Color.Unset in Color.Unspecified per coerenza con altre classi inline (I97611, b/169797763)
- Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Viene introdotto TextOverflow.None. Quando l'overflow è None, Text non gestirà più l'overflow e segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170)
- Parametri Size.Unspecified aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Implementazioni di Painter aggiornate per il controllo rispetto a Size.Unspecified e alle dimensioni non finite. (I95a7e)
- Aggiunti il modulo di composizione della paginazione e l'integrazione della paginazione (Ib85da)
- Modificare LazyListScope per ricevere valori nullabili (I1765b)
- OnPositionedModifier è stato rinominato in OnGloballyPositionedModifier e onPositioned() è stato rinominato in onGloballyPositioned(). (I587e8, b/169083903)
- Aggiunti esempi per LazyColumn/Row (Idc16d)
- Correzione dei metodi items e itemsIndexed per consentire emptyList (I06647)
- Aggiungi un DSL per specificare le informazioni dello strumento di controllo (Ic9a22)
- Sposta LongPress in Text. (Iff2bc)
- Disattiva Selezione nel testo e una demo. (Ie7e97)
- Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
PointerInputFilter.onPointerInput(...)
rimosso.PointerInputFilter.onPointerEvent(...)
deve essere utilizzato al suo posto. (I6f04a)
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
e androidx.compose.foundation:foundation-text:1.0.0-alpha04
sono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- L'elenco filtri è stato rinominato in Box. La classe foundation.Box esistente verrà ritirata a favore della nuova classe Box in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando ne ha più di uno. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
- I parametri di decorazione del riquadro sono stati ritirati. Se vuoi aggiungere decorazioni/spazi interni alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Aggiungi una nuova classe LazyListState. Ciò consente l'osservazione e il controllo della posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro state del componente. Attualmente, in questa versione iniziale è possibile osservare il primo elemento visibile e gli offset. (Ic7cb7, b/159307669)
- La posizione dell'elenco pigro e l'offset di scorrimento vengono ora salvati e ripristinati durante la ricreazione dell'attività (Ie045f, b/166589058)
- Aggiungi l'azione semantica di clic lungo (I6281b, b/156468846)
- Utilità MutatorMutex aggiunta per mantenere un singolo mutatore di stato condiviso nel tempo e annullare i mutatori in conflitto in base alla priorità (I3f975)
- Annota rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendili API interne e nascondi la relativa documentazione (I554eb, b/168308412)
- Rimosso il parametro inlineContent dall'input di testo con stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
- Le API di disposizione personalizzata ritirate sono state rimosse. (Ic576d, b/168297922, b/168297923)
- Il parametro
unbounded
è stato aggiunto ai modificatori wrapContentSize, il che consente di misurare l'elemento di layout con vincoli massimi infiniti. (I77951, b/158559319) - Abbiamo impedito le importazioni statiche dei contenuti degli ambiti del layout (ad es. alignWithSiblings in RowScope). Deve essere utilizzata l'alternativa di ambito esplicito:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Correzioni di bug
- Aggiornamento di molte API grafiche
- API di trasformazione di rotazione e scalabilità aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata del punto di rotazione anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
- Rimossi i metodi Rect.expandToInclude e Rect.join
- Aggiornamento della documentazione sul raggio per indicare ovale oltre a ellittico
- È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius incorporata non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istanziati tramite i relativi costruttori di funzioni
- Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
- Rect.shift ritirato a favore di Rect.translate
- Sono state rimosse le API RoundRect.grow e Rect.shrink
- È stato rinominato RoundRect.outerRect in Rect.boundingRect
- Rimozione dei metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
- Rinominato RoundRect.longestSide in RoundRect.maxDimension
- È stato rinominato RoundRect.shortestSide in RoundRect.minDimension
- Modifica di RoundRect.center in modo che sia una proprietà anziché una funzione
- Aggiornamento del costruttore RoundRect per utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
- Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con origine in 0,0
- È stata aggiunta un'API di eliminazione a Radius
- È stata eseguita la migrazione di varie funzioni di estensione RoundRect in modo che siano invece proprietà
- (I8f5c7, b/168762961)
- Ottimizzazioni delle prestazioni per lo scorrimento di LazyColumnFor/LazyRowFor evitando ricomposizioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
- È stato corretto l'arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la successiva modifica degli elementi ed è stato implementato lo scorrimento automatico verso l'alto quando l'elemento precedentemente visibile è stato rimosso, in modo da non visualizzare più spazi vuoti alla fine (I220ab, b/161480164, b/167855468)
- L'annidamento di contenitori scorrevoli nella stessa direzione come ScrollableContainer e LazyColumnFor non è più consentito. Non è mai stato supportato e interrompeva lo scorrimento e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
- Aggiornamento di molte API grafiche
- API DrawScope aggiornate con metodi di trasformazione con ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
- È stata aggiornata la documentazione di clipPath in modo che faccia riferimento a Path anziché al rettangolo arrotondato
- Spaziatura fissa nella documentazione per il parametro right in clipPath
- Rinominate DrawScope.drawCanvas in drawIntoCanvas e rimosso il parametro size
- I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
- È stato aggiunto l'override dell'inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
- È stata rimossa la documentazione sul metodo di inserimento che indicava che l'inserimento sarebbe stato applicato a tutti e quattro i lati
- Documentazione aggiornata per la classe Rect
- Commenti aggiornati sui parametri Rect per corrispondere allo stile kdoc
- Rimossi Rect.join e Rect.expandToInclude
- È stato creato l'overload per Rect.translate(offset) e Rect.shift è stato ritirato
- (If086a, b/167737376)
- aggiungi AccessibilityScrollState alle proprietà semantiche. (Ifeda9)
- Rendi TextRange inline per evitare la creazione di oggetti. (Id034b)
- ParagraphConstraints è stato rimosso. La larghezza viene ora passata direttamente al paragrafo. (Ica712)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
e androidx.compose.foundation:foundation-text:1.0.0-alpha03
sono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- InnerPadding è stato rinominato PaddingValues. (I195f1, b/167389171)
- Gli utilizzi di gravity sono stati rinominati in modo coerente in align o alignment nelle API di layout. (I2421a, b/164077038)
- È stato aggiunto un parametro di allineamento a Stack, che consente di specificare l'allineamento predefinito per tutti gli elementi secondari di Stack. (Ie80ca, b/164085265)
Correzioni di bug
- DpConstraints e le API che lo utilizzano sono state ritirate. (I90cdb, b/167389835)
- I parametri
minWidth
emaxWidth
diwidthIn
sono stati rinominati inmin
emax
. Allo stesso modo perpreferredWidthIn
,heightIn
,preferredHeightIn
. (I0e5e1, b/167389544) - Sono stati aggiunti onNode e altri metodi globali a ComposeTestRule, in quanto quelli globali attuali verranno ritirati. (Ieae36)
- Sono stati corretti i calcoli delle dimensioni e della posizione in GestureScope, che causavano, tra le altre cose, la generazione di gesti di scorrimento non validi (Iaf358, b/166589947)
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
e androidx.compose.foundation:foundation-text:1.0.0-alpha02
sono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.
Correzioni di bug
- TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
Aggiunta di
ManualFrameClock.hasAwaiters
per verificare se qualcosa è in attesa di un frame da quell'orologio;runWithManualClock
in sostituzione dirunBlocking
durante l'esecuzione di test che richiedono un ManualFrameClock;TestUiDispatcher.Main
che consente di accedere facilmente al dispatcher dell'interfaccia utente principale nei test.Ad esempio:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
e androidx.compose.foundation:foundation-text:1.0.0-alpha01
sono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
e androidx.compose.foundation:foundation-text:0.1.0-dev17
sono rilasciati. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
- È stato aggiunto l'allineamento spacedBy per riga e colonna, per consentire il posizionamento dei figli del layout con una spaziatura fissa. È stato aggiunto anche l'allineamento, per consentire di posizionare i figli del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I metodi Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange precedenti sono stati ritirati e la scrittura di disposizioni personalizzate non sarà supportata in futuro. (I6733d, b/161985975)
- L'offset è diventato una classe in linea (Iaec70)
- Sono stati rimossi i callback onFocusChanged da TextField. Utilizza Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
- VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
- Rimuovi i modificatori fillMax* contrassegnati come deprecati da LazyItemScope, in quanto rendono più difficile aggiungere correttamente questi modificatori per gli elementi che non sono figli diretti di LazyColumnFor (Ifa78d)
- È stata aggiunta l'implementazione di LazyColumn/LazyRow come DSL (I93cc6)
- Constraints è ora una classe inline (I88736)
- È stata aggiunta la possibilità di dimensionare un layout in base a una frazione dello spazio disponibile, utilizzando i modificatori fillMaxWidth, fillMaxHeight e fillMaxSize. (I945bb, b/161562591)
Correzioni di bug
- È stato aggiunto un parametro modificatore a SelectionContainer (I4aada, b/161487952)
- Aggiunta della lambda mergePolicy a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per la semantica di mergeAllDescendants unione. Il criterio predefinito prevede l'utilizzo del valore principale se già presente, altrimenti del valore secondario. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
è stato rinominato 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)- È stato rimosso il componente FilledTextField deprecato. Utilizza invece TextField per ottenere l'implementazione Material Design del campo di testo compilato. (I5e889)
- È stato aggiunto il parametro backgroundColor a LinearProgressIndicator ed è stato rimosso il padding interno da CircularProgressIndicator. È stata aggiunta la nuova costante ProgressIndicatorConstants.DefaultProgressAnimationSpec, che può essere utilizzata come AnimationSpec predefinita per l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677).
- Il composable
state { ... }
è ora ritirato a favore di chiamate esplicite 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)
- Sono stati rimossi OnChildPositioned e OnChildPositionedModifier. Gli sviluppatori devono utilizzare onPositioned e OnPositionedModifier sul layout secondario. (I4522e, b/162109766)
- IntSize è ora una classe inline (I2bf42)
- Tieni premuta l'area vuota per modificare. (Ib1e5b)
- Nascondi la barra degli strumenti mobile dopo aver toccato il testo. (If4525)
- Nascondi la barra degli strumenti mobile durante l'aggiornamento della selezione. (I8444c)
- Deseleziona Quando sfocare. (I781a2)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
e androidx.compose.foundation:foundation-text:0.1.0-dev16
sono rilasciati. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
- È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima del contenitore, il che risolve il caso d'uso in cui l'elemento deve riempire la finestra e il modificatore normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli infiniti. (Ibd3b2, b/162248854)
- Sposta la finestra di dialogo nell'interfaccia utente (I47fa6)
- Aggiunta di LazyColumnForIndexed/LazyRowForIndexed: versioni di LazyColumnFor/LazyRowFor che forniscono sia l'indice che l'elemento in itemCallback. È utile quando, oltre a un elemento corrente, devi conoscere un indice corrente. (I65ff3)
- Modifier.deternimateProgress è stato rinominato in Modifier.progressSemantics (I9c0b4)
- LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stato rinominato LazyRowFor (I84f84)
- Aggiungi alcuni segni/annotazioni per motivi di best practice. (I66b20)
- Il pacchetto foundation.shape.corner è stato compresso in foundation.share (I46491, b/161887429)
- È stato aggiunto il parametro di gravità dell'asse trasversale per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supportano il comportamento di wrapping dei contenuti. (Ib39fc)
- ZoomableState è stato rinominato in ZoomableController. È stato aggiunto il supporto della curva personalizzata per smoothScale. Sono state aggiunte le funzionalità
enabled
eonZoomStarted
(If8b8f) - Material FilledTextField è stato rinominato TextField e TextField di base è stato rinominato BaseTextField per rendere l'API più semplice da scoprire e utilizzare (Ia6242, b/155482676)
- AdapterList, precedentemente ritirato, è stato rimosso. Utilizza invece LazyColumnItems (I12b9b)
- Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
- Il vecchio DSL ConstraintLayout è stato rimosso. ConstraintSet2 è stato rinominato in ConstraintSet. (If58d1, b/162450908)
- Sono stati aggiunti Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). A differenza dei modificatori di offset, i modificatori di offset assoluto non vengono rispecchiati automaticamente nel contesto da destra a sinistra (I3aa21).
Row
eColumn
sono ora funzioni inline che riducono significativamente l'overhead del loro utilizzo. (I75c10)
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
È stato aggiunto MonotonicFrameAnimationClock, che consente di utilizzare un MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora i vecchi orologi basati su callback.
L'equivalente di ManualAnimationClock in MonotonicFrameClock è ora ManualFrameClock. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
rimosso. UtilizzaSemanticsNodeInteraction.performGesture
. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
rinominato inSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Le API per il supporto della scrittura da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
Modifier.plus è stato ritirato, utilizza invece Modifier.then. "Poi" ha un segnale di ordinamento più forte e impedisce anche di digitare
Modifier.padding().background() + anotherModifier
, che interrompe la catena e rende più difficile la lettura (Iedd58, b/161529964)Aggiunta di
isFocused()
eisNotFocused()
SemanticsMatcher. (I0b760)È stato aggiunto RemeasurementModifier. Consente agli utenti di misurare nuovamente il layout in modo sincrono. In generale, non ne hai mai bisogno perché la misurazione/il layout vengono eseguiti automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
isSystemInDarkTheme ora considera sempre l'impostazione del tema scuro a livello di sistema e ignora lo stato di risparmio energetico prima di Q, seguendo le ultime indicazioni. (I0c10c)
OnChildPositioned è stato ritirato. Utilizza OnPositioned sul figlio. (I87f95, b/162109766)
È stato rinominato AndroidComposeTestRule in createAndroidComposeRule. (I70aaf)
Aggiungi l'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
e androidx.compose.foundation:foundation-text:0.1.0-dev15
sono rilasciati. La versione 0.1.0-dev15 contiene questi commit.
Per utilizzare la versione 0.1.0-dev15
di Compose, devi:
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra nella sezione Dichiarazione delle dipendenze.
Modifiche alle API
- Analogamente al nuovo parametro in ScrollableColumn/ScrollableRow, anche LazyColumnItems/LazyRowItems ora hanno il parametro contentPadding, che consente di aggiungere un padding per i contenuti dopo che sono stati ritagliati, il che non è possibile tramite un semplice parametro modificatore. Consente inoltre di aggiungere una spaziatura solo prima del primo elemento/dopo l'ultimo elemento. (Ibc24e)
- Callback onFocusChange nei campi di testo rinominato in onFocusChanged (Ida4a1)
- VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ScrollableColumn e ScrollableRow per un'esperienza integrata con il comportamento e i parametri di Column/Row oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- Le API Modifier.draggable e Modifier.scrollable sono state rielaborate. DragDirection è stato rimosso a favore di Orientation. Lo stato richiesto per lo scorrimento è stato semplificato. ScrollableState è stato rinominato in ScrollableController (Iab63c, b/149460415)
- Le proprietà semantiche a valore singolo ora utilizzano uno stile di chiamata.
Ad esempio, "semantics { hidden = true }" ora viene scritto come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Le dimensioni degli angoli utilizzate da RoundedCornerShape e CutCornerShape ora possono essere superiori al 50% (Id2340, b/160400213)
- È stato modificato il parametro ContentScale predefinito per il composable Image da Inside a Fit. Questa operazione è stata eseguita per scalare il comportamento del pittore sottostante se le dimensioni del layout sono maggiori di quelle intrinseche del pittore, mantenendo le proporzioni. Questo comportamento corrisponde meglio alle aspettative di fornire dimensioni fisse all'immagine senza influire sul comportamento predefinito se per calcolare le dimensioni del componente componibile viene utilizzata solo la dimensione intrinseca. (I40ae3, b/159838006)
- Utilizza AnimationSpec anziché AnimationBuilder nelle API di primo livello per chiarire il concetto di specifica di animazione statica -Migliora il DSL di transizione rimuovendo il requisito lambda per creare AnimationSpec come tween e spring. ma accettano direttamente i parametri del costruttore. - Migliorare la facilità d'uso complessiva di AnimationSpec aprendo i costruttori anziché affidarsi ai builder - Modificare la durata e il ritardo per KeyFrames e Tween in Int. In questo modo si eliminano i cast di tipo e l'overload dei metodi non necessari (per supportare sia Long che Int). (Ica0b4)
- Clickable è stato rimosso. Utilizza Modifier.clickable (I84bdf)
- Aggiunta di LazyRowItems: analogo a scorrimento orizzontale di LazyColumnItems (Ibbcf7)
- Sono state introdotte API di animazione stateless di basso livello. Queste API (I63bf7)
- androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono anch'essi deprecati. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Sostituito l'utilizzo di IntPx con Int. Sostituito IntPxPosition con IntOffset. IntPxSize è stato sostituito con IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape rimosso; utilizza androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe Size anziché PxSize. In questo modo si ottengono i vantaggi di una classe inline per sfruttare un valore long per comprimere due valori float per rappresentare larghezza e altezza rappresentate come valori float. (Ic0191)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni sul posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. In questo modo, puoi sfruttare i vantaggi di una classe inline per utilizzare un valore long per comprimere due valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
- Aggiunto Modifier.zoomable per la funzionalità di pizzico per zoomare (Id5d63)
- Il componente attivabile/disattivabile è stato ritirato. Utilizza Modifier.toggleable (I35220, b/157642842)
- MutuallyExclusiveSetItem è stato ritirato. Utilizza invece Modifier.selectable. (I02b47, b/157642842)
- TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
- Aggiunge il parametro fontWeight a Text, che non era stato aggiunto in precedenza per errore (I56937)
- Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
- VerticalScroller ora fornisce Column out of the box. HorizontalScroller ora fornisce Row out of the box. (Ieca5d, b/157020670)
- È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e sui tipi primitivi per i parametri dei pixel (Iede0b).
- Modifier.indication è stato aggiunto al pacchetto di base. Utilizzalo per mostrare la pressione, il trascinamento o altre indicazioni sugli elementi interattivi personalizzati (I8425f, b/155287131).
- VerticalScroller e HorizontalScroller ora supportano lo scorrimento inverso se isReversed è impostato su ScrollerPosition (I953bd)
- Supporta l'aggiunta di composable nel layout di testo. (I1373c)
- Implementazioni consolidate di CanvasScope Ora sono disponibili solo DrawScope e ContentDrawScope CanvasScope è stato rinominato DrawScope. DrawScope è stato aggiornato per implementare l'interfaccia Density e fornire LayoutDirection La sottoclasse DrawScope è stata eliminata in ContentDrawScope Painter e PainterModifier sono stati aggiornati per non mantenere più una proprietà RTL in quanto DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
- Rimosse le API DrawBackground deprecate a favore delle API di estensione drawBackground su Modifier. È stato eseguito il refactoring delle implementazioni di colore, pennello e paint drawBackground per ridurre anche i percorsi del codice e rimuovere il requisito di creazione di Modifier come parte della composizione. (I0343a)
- API Compose di livello superiore aggiornate che espongono una tela per esporre invece CanvasScope. In questo modo i consumatori non devono più gestire i propri oggetti Paint. Per i consumatori che hanno ancora bisogno di accedere a un canvas, possono utilizzare il metodo drawCanvas dell'estensione che fornisce un callback per emettere comandi di disegno con il canvas sottostante. (I80afd)
- HorizontalScroller e VerticalScroller non ripristinano la posizione di scorrimento utilizzando lo stato dell'istanza salvato. (Ia0fae, b/155075048)
- FocusManagerAmbient è stato rimosso. Utilizza FocusModifier.requestFocus per ottenere lo stato attivo. (Ic4826)
- Il layout della tabella è stato rimosso temporaneamente e sarà nuovamente disponibile con un'API aggiornata. (Id88a7)
È stata creata l'API CanvasScope che racchiude un oggetto Canvas per esporre una superficie API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del destinatario e le informazioni sulle dimensioni sono anche limitate ai limiti dell'inserto corrispondente. Non richiede a un consumatore di mantenere il proprio oggetto stato Paint per configurare le operazioni di disegno.
È stato aggiunto CanvasScopeSample ed è stata aggiornata l'app demo per includere una demo di grafica dichiarativa (Ifd86d).
ColoredRect è stato rimosso. User Box con il modificatore drawBackground (I983c7, b/152753731)
Aggiungi la personalizzazione del colore del cursore al campo di testo (I6e33f)
Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, fornito dal callback onTextInputStarted (I8dc44, b/151860051)
TextFieldValue utilizzato con TextField ora può sopravvivere alla ricreazione dell'attività se utilizzato in questo modo:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Aggiunge parametri di uso comune a Text(). Se al momento stai creando uno stile di testo locale per trasmettere un numero ridotto di questi parametri, ad esempio
Text(style = TextStyle(textAlign = TextAlign.Center))
, ora puoi fornire i parametri direttamente:Text(textAlign = TextAlign.Center)
(I82768)Sostituito il parametro focusIdentifier di CoreTextField/TextField con FocusNode per l'integrazione con il sottosistema di messa a fuoco. (I7ea48)
Aggiornamento di TextField: nella dimensione orizzontale occuperà tutto lo spazio disponibile concesso (Ib08df, b/154638552)
Sono stati aggiunti InteractionState e Interaction, semplificando la creazione di componenti che reagiscono alle modifiche dello stato della UI, ad esempio pressione e trascinamento (Icfe25, b/152525426)
RectangleShape è stato spostato da androidx.ui.foundation.shape.* a androidx.ui.graphics.* (Ia74d5, b/154507984)
Sono stati sostituiti tutti gli utilizzi di Color che accettano valori null nell'API con valori non nulli e viene utilizzato Color.Unset al posto di null (Iabaa7)
Aggiornamento dell'API TextField: unione dei callback onFocus e onBlur in un unico callback onFocusChange(Boolean) con parametro (I66cd3)
È stato rinominato ScaleFit in ContentScale ContentScale è stato spostato dal modulo ui-graphics a ui-core per trovarsi nello stesso modulo dell'API Alignment. Rinomina FillMaxDimension in Ritaglia Rinomina FillMinDimension in Adatta Rinomina Adatta all'interno in modo che corrisponda meglio agli equivalenti di ImageView.ScaleType Aggiunta della documentazione che indica che la combinazione di Ritaglia e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER All'interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
Rimuove ProvideContentColor, utilizza invece ContentColorAmbient direttamente con
Providers
(Iee942)Aggiunge il parametro colore al testo, consentendo di ignorare il colore dello stile del testo senza doverlo unire manualmente allo stile fornito in un tema. (I41a66)
Migliora l'API DrawModifier:
- È stato creato l'ambito del ricevitore per draw() ContentDrawScope
- Rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia di CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
ColoredRect è stato ritirato. Utilizza invece
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Il sistema di temi delle forme viene aggiornato in base alla specifica di Material Design. Ora puoi fornire forme piccole, medie e grandi da utilizzare nella maggior parte dei componenti (Ifb4d1).
Sostituito l'operatore Modifier plus con le funzioni di estensione della fabbrica (I225e4)
Draggable è stato spostato nel modificatore (Id9b16, b/151959544)
Text
è stato spostato nel pacchetto androidx.ui.foundation da androidx.ui.core. (I87ce5)aggiungi il parametro
enabled
a Casella di controllo, Interruttore e Attivabile/disattivabile (I41c16)Ripple è ora un modificatore. Sebbene Clickable non sia ancora stato convertito, l'utilizzo consigliato è
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per la grafica vettoriale. Il risultato della composizione secondaria è un oggetto VectorPainter anziché un DrawModifier. Sono stati ritirati i composable DrawVector precedenti a favore di VectorPainter.
È stata rinominata l'API
Image(Painter)
inPaintBox(Painter)
È stato creato un elemento componibile Vector che si comporta come l'elemento componibile Image, ma con un VectorAsset anziché un ImageAsset (I9af9a, b/149030271)Componente componibile Created Image per gestire il dimensionamento/layout, oltre a disegnare un determinato ImageAsset sullo schermo. Questo elemento componibile supporta anche il disegno di qualsiasi istanza di Painter rispettando le sue dimensioni intrinseche, nonché il supporto di una dimensione fissa o minima (Ibcc8f).
Button, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni parametri del pulsante sono stati rinominati o riordinati. (I54b5a)È stato rinominato Image in ImageAsset per distinguere meglio la differenza tra i dati Image e il componente componibile Image in arrivo, utilizzato per partecipare al layout e disegnare i contenuti.
È stato creato un metodo di estensione su android.graphics.Bitmap,
Bitmap.asImageAsset()
, per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework Compose. (Id5bbd)Il composable DrawImage è stato rimosso. Utilizza ImagePainter per disegnare un'immagine sul layout esistente o SimpleImage per inserire un'immagine che occupa spazio (I595e1, b/149827027).
Il componente Stack supporta la direzionalità da destra a sinistra (Ic9e00)
Sono stati aggiunti Icon, IconButton e IconToggleButton, mentre AppBarIcon è stato rimosso. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, e ora avranno il touch target corretto. Consulta gli esempi per informazioni sull'utilizzo e le icone per le icone Material fornite che puoi utilizzare direttamente con questi componenti. (I96849)
Il composable DrawShape è stato rimosso. Utilizza invece il modificatore DrawBackground. (I7ceb2)
È stato aggiunto AdapterList, un componente di elenco scorrevole che compone e dispone solo gli elementi visibili. I problemi noti al momento includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai relativi elementi secondari. (Ib351b)
È stato aggiunto un componente scorrevole che consente la creazione di elenchi/scorrimento personalizzati (I5fd37)
Rinomina lo sfondo in DrawBackground e impostalo come memorizzato per impostazione predefinita (Ia0bd3)
Aggiungi parametri di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)
È stato aggiunto il componente Canvas. Questo elemento componibile occupa una parte dello spazio (fornito dall'utente) e ti consente di disegnare utilizzando CanvasScope (I0d622).
rinomina il modificatore
Border
inDrawBorder
(I8ffcc)È stato aggiunto il componente Box per combinare il layout e disegnare funzionalità comuni. (I6e2a7)
Gli scorrimenti ora mostrano il comportamento di movimento di scorrimento nativo di Android. (I922af, b/147493715)
Sostituito DrawBorder con Border Modifier (Id335a)
Modifier.tag è stato rinominato Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Il parametro percentuale durante la creazione delle linee guida ConstraintLayout è stato rinominato in frazione. (Ida2db)
Aggiunto il supporto per i margini delle barriere ConstraintLayout. (I47ffe)
È stato corretto il supporto RTL in ConstraintLayout. Sono state aggiunte API che non supportano la direzione da destra a sinistra. (I3b1c7)
È stato aggiunto un nuovo DSL per ConstraintLayout. Per maggiori dettagli, consulta gli esempi. (Icaa9a)
È stata aggiunta l'annotazione @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn ora sono contrassegnati per indicare che le relative API cambieranno. (I412a8)
È stato aggiunto
Modifier.padding(InnerPadding)
(I94985, b/157133803)Sono stati rimossi RowAlign e ColumnAlign obsoleti in Riga e Colonna. (If60d4, b/155858731)
È stato rimosso LayoutTag(), utilizza invece Modifier.tag(). È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)
È stato aggiunto il modificatore di layout offsetPx, che può essere utilizzato per definire offset (dinamici) in pixel. (I5af57)
Il composable AlignmentLineOffset è deprecato. Utilizza invece il modificatore relativePaddingFrom(). Il composable CenterAlignmentLine è stato rimosso. (I60107)
È stato aggiunto il modificatore di layout defaultMinSizeConstraints, che imposta i vincoli di dimensione sul layout di wrapping solo quando i vincoli corrispondenti in entrata non sono specificati (0 per i vincoli minimi e infinito per i vincoli massimi). (I311ea, b/150460257)
Il contenitore è stato rimosso. Utilizza Box (Ibbc2b, b/151407926)
Sono stati rimossi i modificatori LayoutWidth/Height/Size obsoleti. (Ib0bc1)
Sono stati aggiunti valori predefiniti dei parametri per il modificatore di offset. (I37f06)
È stato aggiunto il modificatore di spaziatura interna simmetrica. (I39840)
È stato rimosso il modificatore LayoutAspectRatio deprecato. (I65a74)
Sono stati rimossi i modificatori LayoutAlign ritirati. (I10877)
È stato corretto un bug nei modificatori di larghezza e altezza che causava la misurazione del layout di wrapping senza vincoli sull'asse opposto. (I210b8, b/154797971)
Sono stati aggiunti i parametri verticalGravity e horizontalGravity rispettivamente a Riga e Colonna. (I7dc5a)
Sono stati aggiornati wrapContentWidth e wrapContentHeight in modo che prevedano l'allineamento verticale o orizzontale anziché un allineamento qualsiasi. Il modificatore di gravità è stato aggiornato per accettare l'allineamento verticale o orizzontale. Riga, Colonna e Stack sono stati aggiornati per supportare gli allineamenti continui personalizzati. (Ib0728)
È stato reso possibile creare istanze di Alignment con valori arbitrari. Aggiunta di allineamenti 1D. (Ia0c05)
EdgeInsets è stato rinominato in InnerPadding. È stato rinominato il parametro innerPadding dei pulsanti Material in padding. (I66165)
alignToSiblings ora accetta un Measured anziché un Placeable. (I5788d)
Sono stati aggiunti modificatori per il dimensionamento alle misurazioni intrinseche e sono stati ritirati i componenti che svolgono questa funzione. (I8295d)
È stato aggiunto il supporto per la personalizzazione delle dimensioni dei figli di ConstraintLayout (Idb1a5)
Sono stati rimossi i composable Wrap e Center ritirati. (I29e23)
Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecazione di LayoutModifier (If32ac)
I membri di RowScope e ColumnScope sono ora accessibili al di fuori di Riga e Colonna. (I3a641)
Il container è stato ritirato. Usa Box. (I675ce, b/151407926)
È stato aggiunto il modificatore LayoutOffset per l'offset della posizione del layout (I0b8a3)
Supporto iniziale per la direzione da destra a sinistra nel layout di Compose (Ia5519)
LayoutAlign aggiornato in modo da non riempire più lo spazio disponibile (I2b14f)
Rimosso il composable AspectRatio a favore del modificatore. Eliminati i composable FlexColumn, FlexRow e il modificatore Spacing obsoleti (Iec8a7)
È stato rimosso il modificatore LayoutInflexible per riga e colonna (I0d820)
Implementa i punti di manipolazione di selezione per modificare la selezione per TextField. (I27032)
Implementa LongPressAndDrag per la selezione di TextField. (I17919)
Correzioni di bug
- FocusModifier è obsoleto a favore di Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. FocusState e FocusDetailedState sono ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
runOnIdleCompose
rinominato inrunOnIdle
(I83607)- Diverse API di test sono state rinominate per essere più intuitive. Tutte le API findXYZ sono state rinominate in onNodeXYZ. Tutte le API doXYZ sono state rinominate in performXYZ. (I7f164)
- Rimuove Modifier.ripple precedentemente ritirato. Ora Clickable utilizza l'effetto increspatura come indicatore predefinito (se hai impostato MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare Clickable e ottenere l'effetto increspatura senza costi. Se devi personalizzare il parametro colore / dimensione / delimitato per l'increspatura, puoi creare manualmente un RippleIndication e passarlo a clickable come parametro di indicazione. (I663b2, b/155375067)
- Sono state rimosse le API di test delle dimensioni obsolete. (Iba0a0)
- API sperimentale LayoutNode (I4f2e9)
- La versione 1 del blocco dell'orientamento dello scorrimento è implementata in Compose. (I1ce7a, b/150289741)
- Popup, finestre di dialogo e menu ora ereditano il tema Material contestuale (Ia3665, b/156527485)
- Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d).
- Aggiungi AbsoluteArrangement: consente di disporre gli elementi secondari all'interno della riga senza mirroring automatico in RTL (I3a1df)
- L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
- Prima di questa modifica, il plug-in del compilatore Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
- Aggiungi il componente componibile
viewModel()
che consente di creare o ottenere ViewModel già creati in modo simile a come funziona in Activity o Fragment (I5fdd1). È stato eseguito il refactoring della classe Radius per renderla una classe inline. Sono stati rimossi i metodi di creazione del componente aggiuntivo a favore del costruttore di funzioni con il parametro predefinito per fare in modo che il raggio lungo l'asse y corrisponda a quello del parametro del raggio dell'asse x obbligatorio.
Aggiornamento di DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori float separati per il raggio lungo gli assi x e y (I46d1b)
È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Eliminazione dell'intera classe Px (I3ff33)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Id3434)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
I gesti parziali non richiedono più il passaggio di un GestureToken (Id7ae5)
Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)
Modifier.semantics è stato ripristinato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)
API Alignment aggiornata e aggiunto il supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto da destra a sinistra) (I38cd3)
Gli elementi secondari Layout e LayoutModifier possono essere misurati con una direzione del layout diversa. (Ibd731)
Introduci un parametro rect facoltativo aggiuntivo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)
È stato corretto un arresto anomalo in AdapterList durante la rimozione di elementi (Ic64b0, b/153195921)
Abbiamo modificato il modo in cui misuriamo il primo layout inserito nel blocco activity.setContent { }. In precedenza era costretto a riempire l'intero schermo dell'attività, mentre ora si comporta come se avessi inserito il layout in uno Stack: può essere più piccolo di uno schermo e verrà posizionato nella parte superiore sinistra dello schermo. Se vuoi il comportamento precedente, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714)
Il modulo ui-text-compose è stato rinominato in ui-text. ui-text ora contiene i composable CoreText e CoreTextField (Ib7d47)
Il modulo ui-text viene rinominato ui-text-core (I57dec)
Sono stati spostati i composable ui-framework/CoreText e CoreTextField in ui-text-compose. Ti consigliamo di includere ui-text-compose nel tuo progetto. (I32042)
runOnIdleCompose
erunOnUiThread
sono ora funzioni globali anziché metodi di ComposeTestRule. (Icbe8f)Gli operatori delegati della proprietà [Mutable]State sono stati spostati nelle estensioni per supportare le ottimizzazioni dei delegati della proprietà di Kotlin 1.4. I chiamanti devono aggiungere le importazioni per continuare a utilizzare
by state { ... }
oby mutableStateOf(...)
. (I5312c)DrawLayerModifier e drawLayer() ora impostano clipToBounds e clipToOutline su false per impostazione predefinita. (I0eb8b, b/152810850)
LayoutResult è stato rinominato in MeasureResult. (Id8c68)
Composable Center deprecato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAlign.Center oppure con uno dei composable Box o Stack a cui sono stati applicati modificatori adatti (Idf5e0).
LayoutFlexible è stato rinominato LayoutWeight. Il parametro stretto è stato rinominato in riempimento. (If4738)
DrawVector è stata modificata da una normale funzione componibile per restituire un Modifier drawVector() che disegnerà il vettore come sfondo di un layout. (I7b8e0)
Sostituisci la funzione componibile Clip con il modificatore drawClip(). DrawClipToBounds è un modificatore pratico da utilizzare quando devi ritagliare solo i limiti del livello con una forma rettangolare. (If28eb)
La funzione composable DrawShadow è stata sostituita con il modificatore drawShadow(). Ora le ombre vengono disegnate come parte di LayerModifier. (I0317a)
androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable è stato rimosso. Era ridondante con ComponentNode. androidx.compose.ViewAdapters è stato rimosso. Non sono più un caso d'uso supportato. Compose.composeInto è stato ritirato. Utilizza invece
setContent
osetViewContent
. Compose.disposeComposition è stato ritirato. Utilizza invece il metododispose
suComposition
restituito dasetContent
. androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt è stato rinominato in ComponentNode#insertAt ComponentNode#emitRemoveAt è stato rinominato in ComponentNode#removeAt ComponentNode#emitMode è stato rinominato in ComponentNode#move (Idef00)Composable Wrap deprecato. Può essere sostituito con il modificatore LayoutAlign o con il composable Stack (Ib237f).
È stata propagata la direzione del layout dal nodo del layout principale ai nodi secondari. È stato aggiunto il modificatore della direzione del layout. (I3d955)
Rinomina Painter.toModifier in Painter.asModifier, in quanto il modificatore appena creato ha un riferimento al pittore originale che può essere condiviso tra più istanze del modificatore (I7195b)
Supportare la direzione da destra a sinistra nel modificatore LayoutPadding (I9e8da)
Density e DensityScope sono stati uniti in un'unica interfaccia. Anziché ambientDensity(), ora puoi utilizzare DensityAmbient.current. Invece di withDensity(density), usa with(density) (I11cb1)
Rimossa la classe ValueHolder. Ristrutturate le classi AnimatedValue e AnimatedFloat per rendere astratto il campo del valore dell'animazione in modo che le sottoclassi possano osservare l'aggiornamento del valore.
- Sono state aggiunte classi di modelli per AnimatedValue, AnimatedFloat e così via.
- È stato aggiunto un nuovo set di API @Composable leggere per l'animazione tra i valori.
- (I79530)
Modifiche che causano interruzioni all'API ambients. Per maggiori dettagli, consulta la documentazione relativa ai log e a
Ambient<T>
(I4c7ee, b/143769776)Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la linea di allineamento richiesta non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)
È stato corretto un bug di ConstraintLayout che causava un arresto anomalo durante le ricomposizioni. (Ibee5a, b/158164341)
L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del destinatario che, oltre a vincoli e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)
Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 ora hanno un ricevitore IntrinsicMeasureScope che fornisce l'API di query intrinseca con la direzione del layout propagata implicitamente. (Id9945)
LayoutDirectionAmbient è deprecato. Per leggere la direzione del layout definita dalle impostazioni internazionali, utilizza localeLayoutDirection su ConfigurationAmbient (I851b1)
Aggiunta di positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)
Il composable ParentData è deprecato. Devi creare un modificatore che implementi l'interfaccia ParentDataModifier o utilizzare il modificatore LayoutTag se devi semplicemente taggare i figli del layout per riconoscerli all'interno del blocco di misurazione. (I51368, b/150953183)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni componibili OnPositioned e OnChildPositioned. (I2ec8f)
Non consentire il padding negativo in LayoutPadding. LayoutOffset deve essere utilizzato invece per gli offset di posizione negativi. (Ifb5b1)
WithConstraints ha ricevuto il parametro LayoutDirection (I6d6f7)
È stato aggiornato il flag
ComposeFlags.COMPOSER_PARAM
in modo che siatrue
, il che modificherà la strategia di generazione del codice per il plug-in di composizione. A livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene passato alle chiamate @Composable successive affinché il runtime gestisca correttamente l'esecuzione. Si tratta di una modifica binaria significativa, ma dovrebbe preservare la compatibilità a livello di codice sorgente in tutti gli utilizzi approvati di Compose. (I7971c)È stato modificato LayoutCoordinates per fare in modo che providedAlignmentLines sia un set anziché una mappa e che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, è più facile per i modificatori modificare uno o più valori del set senza creare una nuova raccolta per ogni modificatore. (I0245a)
LayoutCoordinates non ha più una proprietà position. La proprietà position non ha senso se si considerano LayoutModifiers, rotazione o scalabilità. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da una LayoutCoordinate a un'altra.
LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, quindi tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)
Miglioramenti alla superficie API dei vincoli (I0fd15)
Aggiunta di TextDirection.Content (I48f36)
Regola il menu della barra degli strumenti per mostrare correttamente copia, taglia e incolla. (Id3955)
Aggiungi FloatingToolbar per la selezione di TextField. (Ie8b07)
TextDirectionAlgorithm è stato rinominato TextDirection (I75ce8)
TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)
Aggiungi HapticFeedback alla selezione di TextField. (I58050)
Aggiungi i metodi Copia, Taglia e Incolla alla selezione di TextField. (Idb70b)
TestTag e Semantics sono stati eliminati. Utilizza invece Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
Modificato il nome del pacchetto per Locale e LocaleList da androidx.ui.text a androidx.ui.intl (I8132c)
Modifica API:
AnnotatedString(builder: Builder)
viene rinominato inannotatedString(builder: Builder)
. (Ia6377)Modifica API:
AnnotatedString.Item
viene rinominato inAnnotatedString.Range
. (I2d44d)Aggiungi la barra degli strumenti per le operazioni relative al testo. (I49d53)
È ora disponibile il nuovo LifecycleOwnerAmbient. Ora un'attività che utilizzi con la UI di Compose deve estendere androidx.activity.ComponentActivity (o AppCompatActivity). setContent su android.app.Activity è ora deprecato (Idb25a, b/153141084)
Il nome del pacchetto ui-android-text (androidx.text) è stato sostituito con androidx.ui.text.platform per essere in linea con le norme androidx. (I42711)