Componi gli elementi di base
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
20 marzo 2024 | 1.6.4 | - | - | 1.7.0-alpha05 |
Struttura
Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx
. Ogni gruppo contiene un sottoinsieme specifico di funzionalità, ciascuna con il proprio set di note di rilascio.
Questa tabella illustra i gruppi e fornisce i link a ciascun insieme di note di rilascio.
Raggruppa | Descrizione |
---|---|
compose.animation | Creare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in di compilazione Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le basi per creare i componenti del tuo sistema di progettazione. |
compose.material | Crea UI di Jetpack Compose con componenti Material Design pronti per l'uso. Si tratta del punto di accesso di livello superiore di Compose, progettato per fornire componenti corrispondenti a quelli descritti su www.material.io. |
compose.material3 | Crea UI di Jetpack Compose con i componenti di Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You, come il colore dinamico, ed è progettato per essere coerente con il nuovo stile visivo e la UI di sistema di Android 12. |
compose.runtime | Componenti di base fondamentali del modello di programmazione e della gestione dello stato di Compose, nonché del runtime di base per il plug-in di Compose Compiler da utilizzare come target. |
compose.ui | Componenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input. |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza su Compose, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Trendy
dependencies { implementation "androidx.compose.foundation:foundation:1.6.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
Per ulteriori informazioni sulle dipendenze, vedi Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.7
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
viene rilasciato. La versione 1.7.0-alpha05 contiene questi commit.
Modifiche alle API
- Rimossa composizione sperimentale
LocalTextLinkStyle
locale per l'applicazione di stili ai link ipertestuali. (Iebfa7). - Rimozione dell'override sperimentale di
BasicText
con argomentoonLinkClicked
. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5) - Rimossi i metodi e le proprietà correlati ai punti di codice in
TextFieldState
eTextFieldBuffer
. Sono stati rimossi anche i suffissiinChars
dalle restanti API correlate alla selezione e alla composizione. (Ief7ce) - Il valore
currentValue
diAnchoredDraggable
verrà aggiornato quando passi attraverso un punto di ancoraggio. UsasettledValue
per ricevere la semantica delcurrentValue
precedente, aggiornandola solo quando ti affidi a un ancoraggio. L'avanzamento è ora esposto come funzione (che richiede un punto iniziale e un punto di arrivo) anziché una proprietà. (Ibe6e8, b/318707189, b/298271489, b/294991954). BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
eTextFieldDecorator
sono certificati come stabili. (I9582b)- È stato introdotto
InterceptPlatformTextInput
per facilitare la scrittura di test relativi all'IME di basso livello e altri casi d'uso di IME di basso livello. L'APIPlatformTextInputTestOverride
è stata ritirata. (I862ed, b/322680547) - Suddividi
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd)
Contributi esterni
- Sono state aggiunte 2 nuove API
isLastScrollForward
/isLastScrollBackward
per controllare la direzione di scorrimento per l'ultima azione di scorrimento. Restituisci "false" se non è ancora stata eseguita alcuna azione di scorrimento. (I63a0e).
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
viene rilasciato. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche alle API
- Supporta la funzionalità di scrittura a mano libera con lo stilo sui dispositivi con versioni successive ad Android U. (I002e4).
- È stato aggiunto
hintLocales
aKeyboardOptions
per consentire aTextFields
di suggerire una lingua preferita agli IME con impostazioni internazionali specifiche. (Id18c2) - Sono stati rimossi i sovraccarichi sperimentali
BasicTextField2
eBasicSecureTextField
che richiedevano i parametrivalue: String
eonValueChange: () -> String
. (I568b4). - Aggiungi una funzione
applySemantics
facoltativa aInputTransformation
per influenzare la semantica dell'elementoBasicTextField2
a cui viene applicata. (I74a2f, b/170648072). - In questo CL aggiungiamo l'azione semantica
GetScrollViewportLength
in modo da poter reindirizzare le informazioni sui componenti di cui viene fatto scorrere lo scorrimento nella scrittura al sistema dell'a11y. Questo CL applica anche l'utilizzo di tale proprietà negli elenchi Scorribili di base. (Ic5fa2) BasicTextField2
è stato rinominato 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) - Informazioni sul layout contestuale in Ambito riga flusso contestuale e Ambito colonna flusso contestuale, con indice di linea, posizione e vincoli relativi alla larghezza e all'altezza massime per rimanere nella posizione specificata. Gli elementi che superano la larghezza/altezza massima potrebbero passare alla riga successiva oppure essere omessi in base alle impostazioni di overflow. (Id13f8, b/292114798)
Correzioni di bug
- Risolto un bug per cui, in determinate condizioni, l'attivazione/disattivazione degli attributi
enabled
oreadOnly
diTextField
causava un arresto anomalo. (Iae17b).
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
viene rilasciato. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- È stato introdotto
DelegatableNode.requireLayoutCoordinates()
come modo per ottenere l'attualeLayoutCoordinates
diModifier.Node
senza dover sostituireonPlaced
e memorizzare le coordinate in una proprietà. (Ia8657) - È stato introdotto
DelegatableNode.currentLayoutCoordinates
come modo per ottenere l'attualeLayoutCoordinates
diModifier.Node
senza dover sostituireonPlaced
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 spostate inandroidx.compose.foundation.text
. (I9f635).BasicTextField2
non accetta più un parametroCodepointTransformation
. UsaBasicSecureTextField
oOutputTransformation
. (Id34ff)- Metodo aggiunto per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659) - Presentazione di
ContextualFlowRow
e delFlowRow
/Column
avanzato conMaxLines
eOverflow
. Siamo lieti di annunciare miglioramenti alle versioni sperimentaliFlowRow
eFlowColumn
, che ora prevedono il supportomaxLines
e extra, oltre al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cuiContextualFlow*
è ideale per un numero elevato di elementi che utilizzano una configurazionemaxLines
di dimensioni ridotte e pulsanti +N dinamici per vedere più elementi, mentreFlowRow
eFlowColumn
sono perfetti per un numero limitato di elementi, con meno di 100 elementi. Importante: per mantenere il comportamento esistente inFlowRow
oFlowColumn
, dove sono composti tutti gli elementi indipendentemente dal fatto che rientrino nel valore massimo dell'asse trasversale, impostaoverflow
suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. EsploraContextualFlowRowSample
eFlowRowSample
per vedere alcuni esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
Correzioni di bug
- L'animazione del cursore non richiede più frame tra lo stato attivo e quello disattivato. (Ia2253)
- I costruttori di copia ritirati di
KeyboardOptions
ora copieranno correttamente tutte le proprietà. (If12de)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche alle API
HorizontalPager
,VerticalPager
ePagerState
vengono promossi alla versione stabile. (I67660, b/316966909)- È stata aggiunta la composizione locale di
LocalTextLinkStyle
che consente di modificare lo stile dei link nel testo in tutta l'app. Se nell'app utilizzi un tuo tema personale, dovresti impostare questa composizione locale in base al tema. Quando utilizzi il tema Material, per impostazione predefinita il colore del link viene impostato sul colore principale Material. (I7eb10). - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o tramite l'azione di incollaggio negli appunti. (I81b72)- In questa modifica, sostituiremo
SnapFlingBehavior
conTargetedFlingBehavior
nel pager per sbloccare altri casi d'uso e offrire una maggiore flessibilità. (I762ea) - Con questa modifica stiamo rendendo stabili le API Snapping. Stiamo anche ripulindo parte del codice di test e aggiungendo altri esempi ad Snapping. (Id8da9)
- Presenta
TargetedFlingBehavior
, unFlingBehavior
che consente di propagare le informazioni sullo stato dell'animazione in corso e sull'offset di scorrimento target. (I6a207).
Correzioni di bug
BasicTextField2
ora mantiene il cursore visualizzato durante la digitazione quando viene fatto scorrere la pagina fuori dalla visualizzazione o se viene spostato fuori dalla visualizzazione a causa dell'input. (Ieb856, b/237190748).
Contributi esterni
- Aggiunge un'API sperimentale per la configurazione del comportamento di precaricamento di LazyLists. (I022a4).
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
viene rilasciato. La versione 1.7.0-alpha01 contiene questi commit.
Nuove funzionalità
- Nuovo elemento
Indication API
,IndicationNodeFactory
. Questo porta a implementazioniIndication
più performanti rispetto alla precedente APIrememberUpdatedInstance
(ora deprecata). Per informazioni sulla migrazione, visita il sito developer.android.com. clickable / combinedClickable / selectable / toggleable
ora accetta un parametroMutableInteractionSource
con valore null. Se null e il valoreIndication
fornito èIndicationNodeFactory
, è possibile creareIndication
in modo lento solo quando necessario, il che migliora le prestazioni. Se non stai sollevando e utilizzandoMutableInteractionSource
, si consiglia di passare null.
Modifiche alle API
- Con l'introduzione di
DecayAnimation
inAnchoredDraggable
, questa modifica aggiunge un parametrodecayAnimationSpec
aAnchoredDraggable
che consente di utilizzare l'animazione di decadimento durante l'impostazione di uno degli ancoraggi. La modifica include anche la ridenominazione dianimationSpec
insnapAnimationSpec
per aiutare a comprendere il caso d'uso di ogni specifica. BasicTextField2
è disponibile per l'uso sperimentale. Dovrebbe avere approssimativamente le stesse funzionalità diBasicTextField
e il comportamento dovrebbe essere pronto per la produzione. Tuttavia, per il momento l'API rimane sperimentale. Prima della stabilizzazione, il nome verrà rinominatoBasicTextField
e spostato nello stesso pacchetto.- Presentata la prima bozza dell'API
OutputTransformation
perBasicTextField2
. Questa API sostituisce la maggior parte dei casi d'uso diVisualTransformation
nella versione precedente diBasicTextField
. Tuttavia, non è ancora completo e alcune cose non funzioneranno correttamente, ma saremmo lieti di ricevere il tuo feedback sull'usabilità dell'API per i tuoi casi d'uso. (aosp/2708848) - È stata introdotta la
LinkAnnotation
che consente di aggiungere link e elementi cliccabili nel testo. La funzionalità Link non è ancora completa e sono in arrivo altre modifiche all'API. - È stato introdotto il modificatore
receiveContent
che offre agli sviluppatori un modo per ricevere contenuti avanzati in Jetpack Compose. receiveContent
si integra conBasicTextField2
per accettare contenuti avanzati forniti dalla tastiera software o incollati dagli appunti.KeyboardOptions.shouldShowKeyboardOnFocus
consente di disattivare il comportamento predefinito diBasicTextField
che prevede la richiesta di una tastiera software attiva.TextInputService
eLocalTextInputService
sono ora deprecati. UsaPlatformTextInputModifierNode
per l'integrazione diretta con le API IME della piattaforma. (aosp/2862698)- L'API
Indication#rememberUpdatedInstance
è stata ritirata. Ha un'alta inevitabile penalizzazione del rendimento e impedisce altre ottimizzazioni. Dovresti usare invece la nuova APIIndicationNodeFactory
.
Correzioni di bug
- Ora
BasicTextField
preconvaliderà una piccola selezione di mappature di offset quando viene passatoVisualTransformation
. Ciò aiuta a individuare errori di codifica comuni che generano eccezioni non recuperabili nelle operazioni di misurazione o disegno successive. Se vengono visualizzati durante la composizione, è più probabile che gli sviluppatori notino questi errori durante lo sviluppo, contribuendo a evitare arresti anomali di produzione. (I0fd42) VisualTransformation
non verrà generato se restituisci un indice non valido per un indice non valido (b/316401857 )
Versione 1.6
Versione 1.6.4
20 marzo 2024
androidx.compose.foundation:foundation-*:1.6.4
viene rilasciato. La versione 1.6.4 contiene questi commit.
Correzioni di bug
- Un gesto di selezione a lungo e poi a trascinamento che si sposta fuori dai limiti del layout del testo nel primo frame del trascinamento non si arresta più in modo anomalo. (Icdf90, b/325307463).
Versione 1.6.3
6 marzo 2024
androidx.compose.foundation:foundation-*:1.6.3
viene rilasciato. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.2
viene rilasciato. La versione 1.6.2 contiene questi commit.
Correzioni di bug
- Risolvi il problema di reimpostazione corretta di
AnimateContentSize
. (I07051) - Risolvi il problema per cui
intrinsicHeight
di testo veniva memorizzato nella cache in alcune circostanze. (3cd398, b/217910352)
Versione 1.6.1
7 febbraio 2024
androidx.compose.foundation:foundation-*:1.6.1
viene rilasciato. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Correggi la misura della griglia sfalsata quando viene eseguito lo scorrimento oltre il limite. (bffc39)
- Aggiungi un controllo per il layout con dimensioni grandi. (e74af5).
- Correggi il posizionamento degli elementi di dimensioni pari a 0 all'inizio della griglia scaglionata. (785f94)
- Call onRelease, il callback nello stesso ordine di onforgotten. (31ce3b)
Versione 1.6.0
24 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0
viene rilasciato. La versione 1.6.0 contiene questi commit.
Modifiche importanti dalla versione 1.5.0
- Nuovo modificatore
Modifier.anchoredDraggable
che sblocca la possibilità di trascinare e animare tra un insieme predefinito di ancoraggi. Questo modificatore sostituisceModifier.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.- Sono stati aggiunti
AndroidExternalSurface
eAndroidEmbeddedExternalSurface
per semplificare l'aggiunta di componenti basati sulla superficie nella scrittura - Varie modifiche e miglioramenti all'API in
Pager
esnapFlingBehaviour
- Varie API di focus, testo e inset sono state promosse ad API stabili
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.
Modifiche alle API
- Il costruttore dell'estensione
DragAndDropTarget()
è stato rimosso. Crea una nuova istanza utilizzandoobject: DragAndDropTarget {}
. (I32318)
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03
viene rilasciato. La versione 1.6.0-beta03 contiene questi commit.
Correzioni di bug
- Correggi l'arresto anomalo che ha interessato un testo di grandi dimensioni misurato con vincoli infiniti. (I1a7df, b/312294386).
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.
Correzioni di bug
- Correzione del mancato aggiornamento di
canScroll
dopo lo scorrimento solo per il relayout. (I60a86) - Correzione per
Modifier.animateItemPlacement()
eLookaheadScope
dopo scorrimenti di piccole dimensioni. (I3a2b7).
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
viene rilasciato. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Il modificatore
DragAndDropTarget
ora accetta esplicitamenteDragAndDropTarget
di ricevere e ha una funzione lambda per attivare una sessione di trascinamento. Ora sono disponibili due funzioni di fabbrica per unDragAndDropModifierNode
. Uno per la ricezione dei trasferimenti e uno per il trasferimento dei dati (I69481) - Il campo
maximumFlingVelocity
è stato aggiornato per essere rappresentato come float. Documentazione aggiornata per essere più chiara sull'unitàmaximumFlingVelocity
. (I8adc7). Il valore di
onDragAndDropStart
nella fabbrica diDragAndDropModifierNode
è stato rinominatoacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto adragAndDropTarget
Modifier
per accettare da una sessione di trascinamento. Questa funzione lambda restituisce unDragAndDropTarget
utilizzabile se è interessato a una sessione di trascinamento. Altri lambda per l'elaborazione di eventi di trascinamento sono stati sostituiti da questi valori.è stata aggiunta una funzione di fabbrica
DragAndDropTarget
per ricevere da sessioni di trascinamento (Iebf3a)L'esposizione di
startDragImmediately
inAnchoredDraggable
consente di controllare il rilevamento dei gesti di trascinamento quando viene utilizzato. È utile impostarlo quando il widget viene animato in base a un ancoraggio target. Vedi Esempio. (Ie6d13, b/285139987).Le API della descrizione comando di base ora sono
@ExperimentalFoundationApi
(I30b0b)DragAndDropInfo
rimosso come tipoDragAndDropModifierNode.drag
ora accetta parametri per lambdatransferData
, dimensioni della decorazione e decorazione a trascinamentoDrawScope
DragAndDropTarget
prevede metodi per particolari eventi di trascinamento anziché un unico metodo astrattoL'elemento
onDragAndDropEvent
nella funzione di fabbrica di unDragAndDropModifierNode
è stato rinominato inonDragAndDropStart
per comunicare meglio che il valoreDragAndDropTarget
fornito è valido solo per una determinata sessione di trascinamentoIl campo
DragAndDropEventType
è stato rimosso (I645b1)Rinominato
PlatformTextInputModifierNode.runTextInputSession
inestablishTextInputSession
. (I03cd0)Sostituisci
OriginalText
conTextSubstitution
. (Ifa5a8).Rinominato
PlatformTextInputModifierNode.textInputSession
inrunTextInputSession
. (Ie9c6b).Le entità secondarie di
SubcomposeLayout
(e i layout comeLazyColumn
che si basano su questo elemento) 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
è stato reso nullo mantenendo lo stesso comportamento predefinito. (I6aa66).Per creare questi slot, le API Material
SwipeToReveal
(per schede e chip) ora si basano su un'API basata su slot (come consigliata da Compose) anziché su istanze basate sulla classe di dati. Si tratta di una modifica che provoca un errore. Consulta la demo e il codice di esempio per trovare esempi su come utilizzare la nuova API. (Ia8943)
Correzioni di bug
- Implementa gli attributi uguali e il codice hash per
PageSize.Fixed
. (Ie3ede, b/300134276). - Risolto un bug per cui il layout
BasicText
non veniva ridotto quandominWidth
viene modificato eminWidth
in meno rispetto ai vincoli di misura inizialimaxWidth
(Idb19c) - È stato aggiunto il supporto del renderer per la funzione Sposta gradiente in
ArcLine
. (I4d5bb). - Risolvi il problema di compatibilità binaria con la modifica di Window Inset (Iee695)
- Rimuovi lo strato centrale del materiale per il chip/pulsante Material3 perché i microbenchmark mostrano prestazioni migliori senza questo chip. (I55555)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
viene rilasciato. La versione 1.6.0-alpha08 contiene questi commit.
Nuove funzionalità
Modifier.draggable2D
è il nuovo modificatore che consente un facile supporto del trascinamento 2D. Vedi Esempio (Id95f5, b/214412658)
Modifiche alle API
- La funzione lambda
onDrawDragShadow
è stata rinominata indrawDragDecoration
perModifier.dragAndDrawSource
, mentre il parametro di dimensione perDragAndDropInfo
è stato rinominatodragDecorationSize
. (Id0e30, b/303904810). - Il parametro
decorationBox
diBasicTextField2
è stato rinominato indecorator
. Anche il tipo è stato modificato in un'interfaccia divertente equivalenteTextFieldDecorator
. (I23c1c).
Correzioni di bug
- Documentazione migliorata su
BasicTextField
relativa ai requisiti dionValueChange
. (I90fc9, b/160257648)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
viene rilasciato. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
- È stato introdotto
PlatformTextInputMethodTestOverride
per scrivere test per gli editor di testo personalizzati. (Id159b) - Rinominato
GraphicsSurface
inAndroidExternalSurface
(I11680) - È stato aggiunto il flag temporaneo
DisableNonLinearFontScalingInCompose
per disattivare il ridimensionamento dei caratteri non lineari. ImpostaDisableNonLinearFontScalingInCompose = true
nei test se hai bisogno di tempo per 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 è stato trasformato in un dettaglio di implementazione delle implementazioni diSnapLayoutInfoProvider
. (I65f6d). - Aggiunge un modificatore
dragAndDropSource
per avviare le sessioni di trascinamento e un modificatoredragAndDropTarget
per ricevere da sessioni di trascinamento (Ib7828, b/286038936) - Aggiorna la documentazione e il metodo di posizione relativi a
SnapPositionInLayout
. Introduci le spaziatura interna dei contenuti nel metodo di posizionamento inSnapPositionInLayout
. (Id7938, b/300116110) - È stato aggiunto
UndoState
aTextFieldState
che consente di annullare/ripetere le modifiche apportate dall'utente. (Icc024)
Correzioni di bug
- Risolto il problema di
basicMarquee
che non animava dopo la modifica della velocità. (Id2e77, b/297974036)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
viene rilasciato. La versione 1.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Nuovi wrapper componibili per
SurfaceView
,TextureView: GraphicsSurface()
eEmbeddedGraphicsSurface()
. Si tratta di un'API sperimentale ed è soggetta a modifiche e modifiche. (I9ddb2). Modifier.magnifier()
ora è un'API stabile. Ciò include la rimozione diMagnifierStyle
a favore dei parametri incorporati nel modificatore stesso. (I83bec, b/298381260, b/262367109, b/261438887).
Modifiche alle API
- Hai introdotto
updateCurrentPage
eupdateTargetPage
inScrollScope
, questi sono gli ultimi pezzi necessari per consentire la personalizzazione dello scorrimento animato suPagerState.scroll
. (I9cad5, b/267744105, b/243786897). - Rimuovi densità da
SnapFlingBehavior
. Tutte le implementazioni diSnapLayoutInfoProvider
hanno già un modo di accedere alla densità. L'ambito del ricevitore potrebbe essere rimosso. Questa operazione comporterà 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 fornite tramite l'approccio o l'agganciamento degli offset. (If320c)
Modifiche del comportamento
- Compose ora utilizza il ridimensionamento dei caratteri non lineare per una migliore leggibilità e accessibilità. Se la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, mentre quelle già grandi aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno automaticamente regolate in modo da rimanere proporzionali all'altezza prevista della scala al 100%. Per ulteriori informazioni, consulta le best practice per la scalabilità dei caratteri (I11518).
Correzioni di bug
- Rimuovi l'utilizzo di
rememberSaveable
per le descrizioni comando. (Icc131, b/299500338)
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
viene rilasciato. La versione 1.6.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiungi sovraccarichi per
BasicSecureTextField
che accettano un valore immutabile e un callback per modificarlo, proprio come l'APIBasicTextField
corrente. (Ia4882) - Aggiungi
Modifier.preferKeepClear()
per contrassegnare come componibile come preferisci non utilizzare finestre mobili nell'API 33 e versioni successive. (Ib51d5, b/297260115). - Le velocità di scorrimento nei componenti Visualizza come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974) - Sono stati rimossi i sovraccarichi
Pager
ePagerState
deprecati. (Iea07e). - È stato aggiunto
BasicTooltipBox
acompose.foundation
e aggiornatoPlainTooltipBox
eRichTooltipBox
per l'utilizzo diTooltipBox
con i nuovi componenti componibiliPlainTooltip
eRichTooltip
. (I79e1d).
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
viene rilasciato. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche alle API
- Aggiungi l'interfaccia
ReusableComposition
per la gestione del ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stato promosso ad API stabili. (I7ffa3).- Aggiungi sovraccarichi per
BasicTextField2
che accettano un valore immutabile e un callback per modificarlo, proprio come l'APIBasicTextField
corrente. (I3f2b8). GridItemSpan::currentLineSpan
ora è un'API stabile. (Icc29c)- L'API Canvas che accetta
contentDescription
ora è un'API stabile. (Ib3d29). - È stato introdotto
viewportSize
inScrollState
per conoscere la dimensioneviewPort
del componente che utilizzaScrollState
dopo la misurazione. (I8b85a, b/283102682). - Risolto il problema per cui il precaricamento nel Pager non corrispondeva al comportamento nelle visualizzazioni. (I93352, b/289088847)
- Ora
Modifier.consumeWindowInsets(PaddingValues)
è stabile.- L'API
Deprecated Modifier.consumedWindowInsets
è stata rimossa. Usa invece il criterioModifier.consumeWindowInsets
. (Id72bb)
- L'API
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
viene rilasciato. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche alle API
- Sovraccarico di
LazyLayout
aggiunto, accetta un lambda diLazyLayoutItemProvider
, non un oggetto semplice come prima. L'overload precedente è deprecato. (I42a5a). - Aggiunto il supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
- Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando
readOnly
è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore direadOnly
era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
viene rilasciato. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata introdotta la
PagerLayoutInfo
con informazioni raccolte dopo il superamento di una misura inPager
. Sono state introdotte anche le informazioni su una singola pagina misurata inPager
,PageInfo
. (Iad003, b/283098900). - Annotazioni aggiuntive per specificare gli input consentiti per i componibili (I51109)
- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più comodo e rilevabile per richiedere l'attenzione ai test. (Ie8722) - API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808). SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali. Ora ancheLocalSoftwareKeyboardController
è unCompositionLocal
corretto. (I4c364).Modifier.transformable
ora fornisce il parametro delta della panoramica nel parametrocanPan
per aiutare a determinare la direzione della panoramica da consentire o non consentire. (I692aa, b/266829800).- Aggiorna il modificatore
consumeWindowInsets
per estendere la superclasseAbstractComposeView
(Iacd74, b/269479941)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
viene rilasciato. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stata introdotta una nuova API
AnchoredDraggable
nella piattaforma Foundation. Può essere utilizzata per creare componenti che possono essere trascinati tra stati discreti, come i fogli inferiori modali. Questa API sostituisce l'APISwipeable
di Material. (I4a2ed)
Modifiche alle API
- Assistenza per
InputConnection#requestCursorUpdates
(I0c69b) - È stato introdotto
scrollAnimationSpec
per consentire le specifiche delle animazioni personalizzate.BringIntoViewCalculator
aggiornato aBringIntoViewScroller
. (Idb741) - Aggiungi il tipo
ResourceResolutionException
ai contenuti lanciabili a capo generati durante il caricamento di asset bitmap con una descrizione del percorso dell'asset che non è stato possibile caricare. (I19f44, b/230166331, b/278424788). - Sono state aggiunte azioni e proprietà semantiche per supportare la traduzione del testo. (I4a6bc).
- È stata introdotta un'API
BringIntoViewCalculator
che può essere utilizzata per personalizzare il modo in cui componenti comeScrollable
rispondono alle richiestebringIntoView
. È stato modificato il sovraccarico di contenuti scorrevoli in modo da accettare facoltativamente un'istanza diBringIntoViewCalculator
. (Iaf5af).
Correzioni di bug
- È stato aggiunto un controllo lint per avvisare se stai creando un
MutableInteractionSource
nella composizione senza memorizzarlo, in modo simile ai controlli lint per la creazione di uno stato modificabile /Animatable
. (I5daae) - Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271).
- È stata aggiunta l'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.4
viene rilasciato. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.foundation:foundation-*:1.5.3
viene rilasciato. Questa versione non presenta modifiche.
Versione 1.5.2
27 settembre 2023
androidx.compose.foundation:foundation-*:1.5.2
viene rilasciato. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- Risolto un bug nel testo che causava arresti anomali in determinate circostanze in cui la semantica veniva invalidata.
Versione 1.5.1
6 settembre 2023
androidx.compose.foundation:foundation-*:1.5.1
viene rilasciato. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando
readOnly
è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore direadOnly
era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
androidx.compose.foundation:foundation-*:1.5.0
viene rilasciato. La versione 1.5.0 contiene questi commit.
Modifiche importanti dalla versione 1.4.0
- Molti modificatori di base, tra cui
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, modificatore di layout e altri ancora, sono stati migrati all'APIModifier.Node
, riducendo l'overhead sulla composizione iniziale. - Miglioramenti della stabilità dei cercapersone. Molti bug sono stati risolti.
- I parametri
pageCount
ora si trovano inPagerState
anziché nel Pager stesso
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
È disponibile un'ispezione facoltativa per consigliare di eseguire la migrazione delle chiamate di
mutableStateOf()
ai tipi specializzati corrispondenti per le primitive. L'ID lint èAutoboxingStateCreation
. In precedenza, questa ispezione era abilitata per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output lint del progetto, cambia la gravità da informativa ad avviso (o superiore) dichiarandowarning "AutoboxingStateCreation"
all'interno della configurazionebuild.gradle
obuild.gradle.kts
del modulo, come mostrato (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
viene rilasciato. La versione 1.5.0-beta03 contiene questi commit.
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Implementa
PlatformDataProvider
per fornire rilevazione del battito cardiaco e passi giornalieri. L'interfacciaSensorGateway
è stata rimossa dall'API pubblica. (I55b84)
Correzioni di bug
- Ridurre le allocazioni durante le misurazioni relative a elenchi, reti e così via (Iaf9e2)
- Allocazioni ridotte durante l'applicazione degli snapshot (I65c09)
- Allocazioni rimosse dalle animazioni primaverili (Ie9431)
- Allocazione rimossa da
TextLayout
(I0fd11) - Rimosse più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.foundation:foundation:1.5.0-alpha04
e androidx.compose.foundation:foundation-layout:1.5.0-alpha04
vengono rilasciati. La versione 1.5.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto l'elemento
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787). - Presenta un
SnapLayoutInfoProvider
che può essere utilizzato conLazyGridState
. (I92134, b/269237141, b/260914964) - È stato aggiunto il metodo sperimentale
Modifier.animateItemPlacement()
per l'ambito degli elementi delle griglie sfalsate. Puoi applicarlo agli elementi per ottenere le animazioni di modifica/riordinamento della posizione dell'automazione. (I4b62d, b/257034719). - Promuovi
GridCells.FixedSize
a stabile.FixedSize
definisce un valoreLazyGrid
in cui ogni cella assume dimensioni esatte su un asse trasversale, con lo spazio rimanente distribuito secondo la disposizione degli assi trasversali. (I8542f) - Sono stati introdotti l'ambito del ricevitore
PagerScope
per il Pager e una funzione di utilità per calcolare un determinato offset di pagina. (If2577) - Presenta il
snapPositionalThreshold
durante la creazione di un comportamento che si avvicini. Utilizza questo parametro per specificare una soglia di posizionamento per l'agganciamento breve nel pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
sostituito concalculateSnappingOffset
. In questo nuovo metodo, richiediamo semplicemente l'offset successivo a cui agganciarti. Il calcolo dei limiti deve essere eseguito a livello di implementazione, poiché può variare a seconda di come deve avvenire l'agganciamento. (I923a4)LazyStaggeredGrid
API è stata promossa alla versione stabile. (I633a5)- Rimuovi
pageCount
daHorizontal/VerticalPager
. Deve essere specificato al momento della creazione dello stato. Sono stati aggiornatiPagerState
erememberPagerState
per accettare ipageCount
. (Ieb52d, b/266965072). - Rimuovi
pageCount
daHorizontal/VerticalPager
. Deve essere specificato al momento della creazione dello stato. Sono stati aggiornatiPagerState
erememberPagerState
per accettare ipageCount
. (Ifa3cb, b/266965072). - Presenta
shortSnapVelocityThreshold
nel cercapersoneSnapFlingBehavior
. (I7379e, b/275579012) - Aggiunge
FlowRowScope
eFlowColumnScope
. (I54fe2).
Correzioni di bug
- Chiamate per ottenere la semantica sul testo quando i vincoli hanno
minWidth
eminHeight
non hanno più arresti anomali. (Ibd072) - È stata corretta la regressione in cui la tastiera non veniva visualizzata per i campi di testo all'interno di finestre di dialogo non create dall'elemento componibile
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
e androidx.compose.foundation:foundation-layout:1.5.0-alpha03
vengono rilasciati. La versione 1.5.0-alpha03 contiene questi commit.
Questa release attiva il nuovo stack di rendering del testo per Compose. Il nuovo stack è ottimizzato per le prestazioni, pertanto non dovresti notare modifiche visibili.
Se noti cambiamenti nel testo visualizzato, puoi eseguire il debug impostando NewTextRendering1_5 = false
per confermare la differenza di comportamento. L'impostazione di questa opzione forzerà la ricomposizione. Segnala eventuali differenze di comportamento come bug.
Il flag di debug verrà rimosso prima della release 1.5 beta01.(Iada23, b/246960758)
Modifiche alle API
- Rendi
FlowColumn/FlowRow
in linea. (Idab37)
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.foundation:foundation:1.5.0-alpha02
e androidx.compose.foundation:foundation-layout:1.5.0-alpha02
vengono rilasciati. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunto il supporto per le celle a dimensioni fisse in
LazyGrid
e la loro disposizione su assi trasversali. (I83ed9, b/235121277, b/267942510) - Aggiunto il supporto per le corsie con dimensioni fisse in
LazyStaggeredGrid
e la loro disposizione incrociata. (I7d519) - Ora è possibile aprire
UrlAnnotation
inAnnotatedString
tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081). - È stata aggiunta l'azione di semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Le azioni di test relative al testo (ad es.
performTextInput
) ora richiederanno lo stato attivo direttamente, utilizzando l'azione della semantica, invece di fare clic sul campo. (I6ed05). - Aggiunge il supporto della spaziatura/della disposizione tra gli assi utilizzando
verticalArrangement
inFlowRow
ehorizontalArrangement
inFlowColumn
. Rimuoviamo ancheverticalAlignment
ehorizontalAlignment
di primo livello inFlowRow/FlowColumn
. Gli sviluppatori possono utilizzare inveceModifier.align
. In questo modo ridurrai la confusione tra le convenzioni di denominazione diverticalAlignment
everticalArrangement
. (I87b60, b/268365538)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
e androidx.compose.foundation:foundation-layout:1.5.0-alpha01
vengono rilasciati. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche alle API
- Testo e
BasicText
sono stati sottoposti a refactoring per utilizzare il nuovo sistema di modificatori. Questo porta in molti casi a miglioramenti sostanziali del rendimento. Nessuna modifica deve essere visibile. (If1d17, b/246961435) - È stata aggiunta l'azione della semantica
PerformImeAction
per richiamare l'azione dell'IME sui nodi dell'editor di testo. (Ic606f, b/269633506).
Correzioni di bug
- Elementi interni aggiornati di
Modifier.hoverable
. Il modificatorehoverable
viene mostrato nello strumento di controllo solo se è attivato. (I82103)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.foundation:foundation:1.4.3
e androidx.compose.foundation:foundation-layout:1.4.3
vengono rilasciati senza modifiche (solo un picco di versione).
Versione 1.4.2
19 aprile 2023
androidx.compose.foundation:foundation:1.4.2
e androidx.compose.foundation:foundation-layout:1.4.2
vengono rilasciati. La versione 1.4.2 contiene questi commit.
Versione 1.4.1
5 aprile 2023
androidx.compose.foundation:foundation:1.4.1
e androidx.compose.foundation:foundation-layout:1.4.1
vengono rilasciati. La versione 1.4.1 contiene questi commit.
Versione 1.4.0
22 marzo 2023
androidx.compose.foundation:foundation:1.4.0
e androidx.compose.foundation:foundation-layout:1.4.0
vengono rilasciati. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta l'integrazione delle emoji per le emoji in
Text
eTextField
, nonché nel paragrafo di livello inferiore. È attivata per impostazione predefinita quando è configurato emojicompat. EmojiCompat
può essere configurata su un testo specifico utilizzandoPlatformParagraphStyle
.- Aggiunto il supporto dell'intervallo di linea completo a
LazyStaggeredGrid
(I28252) - Aggiunta dell'esperimento
onHover
sperimentale aClickableText
(I6938f) - Sono stati introdotti nuovi sovraccarichi sperimentali per la funzione
runComposeUiTest
e le funzionicreate*ComposeRule
che accettano i parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione di prova ed 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 verranno interrotti su una nuova riga se non c'è abbastanza spazio sull'asse principale. (I3a7b2).Modifier.basicMarquee()
è disponibile in modalità sperimentale per la visualizzazione di contenuti con un effetto testo scorrevole a scorrimento. (I2df44, b/139321650).
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.foundation:foundation:1.4.0-rc01
e androidx.compose.foundation:foundation-layout:1.4.0-rc01
vengono rilasciati. La versione 1.4.0-rc01 contiene questi commit.
Modifiche alle API
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per creare implementazioni di input di testo personalizzate che comunicano direttamente con le API della piattaforma. (I58df4). - Aggiungi il supporto del layout inverso a
LazyStaggeredGrid
. (I3ef4a).
Correzioni di bug
- L'azione della semantica
SetText
diBasicTextField
ora aggiornerà il buffer del testo utilizzando lo stesso percorso del codice degli aggiornamenti IME e delle funzioni di test (ad es.performTextReplacement
). - Le funzioni di test del testo
performTextClearance
,performTextReplacement
eperformTextSelection
ora utilizzanoSemanticsActions
. (I0807d, b/269633168, b/269624358).
Versione 1.4.0-beta02
22 febbraio 2023
androidx.compose.foundation:foundation:1.4.0-beta02
e androidx.compose.foundation:foundation-layout:1.4.0-beta02
vengono rilasciati. La versione 1.4.0-beta02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che ti consente di reimpostare lo stato locale 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) - Il parametro
BlendMode
è stato aggiunto ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di fusione quando si disegna testo su Canvas. (I57508) - API
modifierElementOf()
rimossa. Estendi direttamente daModifierNodeElement
. (Ie6d21).
Correzioni di bug
- Se modifichi i punti di manipolazione di selezione, non potrai più selezionare un carattere parziale. (Idedd1)
- Correggi l'arresto anomalo quando premi Ctrl+backspace nello spazio vuoto
TextField
(I0427f, b/244185537)
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.foundation:foundation:1.4.0-beta01
e androidx.compose.foundation:foundation-layout:1.4.0-beta01
vengono rilasciati. La versione 1.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Dalla versione 1.3, è stata aggiunta l'integrazione delle emoji per le emoji in
Text
eTextField
, oltre al paragrafo di livello inferiore. È attivata per impostazione predefinita quando è configurato emojicompat. EmojiCompat
può essere configurata 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 che devono essere ancora attivi. (If45a4) PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)
Contributi esterni
- Proprietà
mainAxisItemSpacing
aggiunta aLazyListLayoutInfo
,LazyGridLayoutInfo
eLazyStaggeredGridItemInfo
(I52fad)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
e androidx.compose.foundation:foundation-layout:1.4.0-alpha05
vengono rilasciati. La versione 1.4.0-alpha05 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto dell'intervallo di righe completo a
LazyStaggeredGrid
(I28252) - Aggiunta dell'esperimento
onHover
sperimentale aClickableText
(I6938f) - Sono stati introdotti nuovi sovraccarichi sperimentali per la funzione
runComposeUiTest
e le funzionicreate*ComposeRule
che accettano i parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione di prova ed eventuali chiamateLaunchedEffect
erememberCoroutineScope()
nella composizione. (I10614, b/265177763)
Modifiche alle API
- Unisce le API precedenti/successive di
OverscrollEffect
nelle funzioni combinate "decorator"applyToScroll
eapplyToFling
. Consulta gli esempi aggiornati nella documentazione per alcuni esempi su come implementare un effetto overscroll con la nuova forma dell'API. (I8a9c4, b/255554340). - Più tipo/nullabilità delle funzioni incorporate/deprecateed-hidden (I24f91)
- Le API
LineBreak
eHyphens
inTextStyle
sono classificate come stabili. (Ic1e1d)
Correzioni di bug
- Il cursore nei campi di testo ora continuerà a lampeggiare anche se le animazioni sono disattivate. (I95e70, b/265177763)
- Ora
Modifier.basicMarquee
si anima anche se le animazioni sono disattivate nelle impostazioni di sistema. (I23389, b/262298306, b/265177763)
Contributi esterni
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non sono stati nuovamente ritirati. (I23a04, b/262648050).
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.foundation:foundation:1.4.0-alpha04
e androidx.compose.foundation:foundation-layout:1.4.0-alpha04
vengono rilasciati. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
FlowRow
eFlowColumn
sono ora disponibili come@ExperimentalFoundationApi
che consentono un layout più flessibile basato su righe e colonne dei componenti che verranno interrotti su una nuova riga se non c'è abbastanza spazio sull'asse principale. (I3a7b2).Modifier.basicMarquee()
è disponibile in modalità sperimentale per la visualizzazione di contenuti con l'effetto testo scorrevole. (I2df44, b/139321650).
Modifiche alle API
- L'app
FocusRequesterModifier
viene ritirata a favore diFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529/5,8b/254529934b/254529934 - Il costruttore
AndroidFont
convariationSettings
è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807). - È stata introdotta l'API
PinnableContainer
propagata da elenchi lenti tramite una composizione locale che consente di fissare l'elemento corrente. Ciò significa che l'elemento non verrà eliminato quando lo fai scorrere fuori dalla visualizzazione. Ad esempio,Modifier.focusable()
bloccherà l'elemento attualmente attivo tramite questo meccanismo. (Ib8881, b/259274257, b/195049010). - È stato riscritto il modo in cui gli elementi scorrevoli rispondono a
bringIntoViewRequesters
e agli elementi attivabili per modellare meglio la complessità di queste operazioni e gestire più casi limite. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114). - Altro tipo di restituzione nulla delle funzioni deprecate nascoste (Ibf7b0)
- È stata aggiunta l'opzione
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o Animato. UtilizzaTextMotion.Animated
se il testo verrà ridimensionato, tradotto o ruotato tramite animazione. (I24dd7). - Aggiungi
TextFieldFocusModifier
per correggere il comportamento di navigazione dello stato attivo per la piattaforma Android (I00303) - Argomento
maxSize: IntSize
sostituito indrawText
consize: Size
per l'allineamento con altre funzioni diDrawScope
. Il valore predefinito disize
èSize.Unspecified
, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)
Correzioni di bug
- Regolazioni nella fisica dell'agganciamento in
SnapFlingBehaviour
per una sensazione più naturale.
Problema noto
- Quando esegui l'aggiornamento da
androidx.compose.foundation:1.4.0-alpha03
aandroidx.compose.foundation:1.4.0-alpha04
, potresti riscontrare un errorejava.lang.NoSuchFieldError
. Qui è dove in origine era stato segnalato il problema. Una correzione è stata inviata e sarà disponibile nel prossimo aggiornamento di Compose. Per risolvere il problema, aggiorna le librerieandroidx.compose.material
eandroidx.compose.material3
all'ultima versione(1.1.0-alpha04) oppure esegui il downgrade diandroidx.compose.foundation
alla versione 1.4.0-alpha03.
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
e androidx.compose.foundation:foundation-layout:1.4.0-alpha03
vengono rilasciati. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni ripristinate durante i callback
withFrameNanos
non verranno inviate fino al termine dell'esecuzione di tutti i callback dei frame. Questo corrisponde al comportamento di Scrivi quando viene eseguito normalmente. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Questo dovrebbe influire solo sul codice che chiama direttamentewithFrameNanos
owithFrameMillis
e la logica al di fuori del callback passa a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Consulta le modifiche al test dell'animazione in questo elenco di controllo per alcuni esempi. - È stato aggiunto il parametro
onPerformTraversals: (Long) -> Unit
facoltativo al costruttoreTestMonotonicFrameClock
e alla funzione di fabbrica per eseguire il codice dopowithFrameNanos
callback, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670). - Inserisci le azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che queste funzionalità sono disponibili solo dall'API 29. (Ida4ab) - Introduci
HorizontalPager
eVerticalPager
, un modo per mostrare elementi componibili sotto forma di cercapersone. È stato introdottoPagerState
per controllare i cercapersone e per eseguire query sulle informazioni relative allo stato attuale dei cercapersone. È stato introdottoPageSize
, un modo per controllare le dimensioni della pagina di un cercapersone e consentire così di creare un carosello come i cercapersone. È stato introdottoPagerSnapDistance
, un modo per controllare il funzionamento dell'agganciamento nel comportamento di scorrimento del cercapersone. (I01120) - È stato introdotto un sovraccarico in
SnapFlingBehavior.performFling
per aiutare a capire dove si stabilirà l'inversione. (I569f6) OverscrollEffect#isEnabled
rimosso. Anziché dover ricordare e impostare questo flag, non inviare eventi all'effetto overscroll nei casi in cui non vuoi che venga visualizzato l'overscroll (ad esempio, seScrollableState#canScrollForward/backward
restituisce entrambi false). (I1a4b0, b/255554340, b/255557085).- Sono stati aggiunti
ScrollableState#canScrollForward
eScrollableState#canScrollBackward
per chiedere se unScrollableState
ha spazio per scorrere in entrambe le direzioni (se si trova al minimo / massimo dell'intervallo). Questo valore predefinito è true per la compatibilità con le versioni precedenti delle implementazioni esistenti diScrollableState
. I consumatori possono usare questa funzionalità per mostrare all'utente indicazioni che c'è ancora spazio per scorrere. È possibile utilizzarlo anche per evitare di inviare delta aScrollableStates
che non hanno spazio per scorrere in una determinata direzione, in modo da ridurre il lavoro superfluo. (Idf1a0, b/255557085). - È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento dei predecessori. (I2ba9d, b/203141462)
- Utilizzato in
Clickable
per ritardare correttamente le interazioni con la pressione, quando i gesti potrebbero diventare eventi di scorrimento. - Risolto il problema di
Clickables
che non ritardava correttamente gli echi, se utilizzato all'interno di unScrollable ViewGroup
. - I cassetti e i fogli sono stati aggiornati per ritardare correttamente la pressione nel caso in cui i gesti possano diventare eventi di scorrimento.
- Aggiorna la denominazione
snapStepSize
in modo che sia coerente con gli altri metodi diSnapLayoutInfoProvider
. (Ife67c). - Aggiunto
EmojiCompat
aCompose
(Ibf6f9, b/139326806) consumedWindowInsets()
è stato rinominato inconsumeWindowInsets()
ewithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
e i modificatori sono stati resi pubblici. (Ie44e1).
Correzioni di bug
- L'arresto anomalo con
Modifier.animateItemPlacement()
e griglie lente è stato risolto. Si verificava in alcune condizioni quando il numero di nuovi elementi è inferiore a quello precedente. (I0bcac, b/253195989).
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.foundation:foundation:1.4.0-alpha02
e androidx.compose.foundation:foundation-layout:1.4.0-alpha02
vengono rilasciati. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
awaitFirstDown
ewaitForUpOrCancellation
ora accettanoPointerEventPass
per una maggiore flessibilità. (I7579a, b/212091796)- Ripristina l'API
beyondBoundCount
dalle API Lazy* (I12197) - Parametro introdotto nelle API lazy per scrivere e posizionare gli elementi all'esterno dell'area visibile (I69e89, b/172029355)
- Parametro
minLines
aggiunto aBasicText
eBasicTextField
. Consente di impostare l'altezza minima di questi componenti componibili in termini di numero di righe (I24294, b/122476634)
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.foundation:foundation:1.4.0-alpha01
e androidx.compose.foundation:foundation-layout:1.4.0-alpha01
vengono rilasciati. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Il funzionamento è simile aforEachGesture()
, ma i gesti Loop sui gesti operano interamente all'interno diAwaitPointerEventScope
, in modo che gli eventi non vadano persi tra una iterazione e l'altra. forEachGesture()
è stato ritirato a favore diawaitEachGesture()
perché consente la perdita di eventi tra gesti. (Iffc3f, b/251260206).- Sono stati aggiunti
WindowInsets.imeAnimationSourc
e eWindowInsets.imeAnimationTarget
per determinare l'avanzamento dell'animazione e sapere dove si troverà l'IME al termine dell'animazione. (I356f1, b/217770337)
Versione 1.3
Versione 1.3.1
9 novembre 2022
androidx.compose.foundation:foundation:1.3.1
e androidx.compose.foundation:foundation-layout:1.3.1
vengono rilasciati. La versione 1.3.1 contiene questi commit.
Correzioni di bug
- Risolvi il problema di prestazioni in
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
non leggerà le coordinate di layout se non viene allegato (aosp/2241316)
Versione 1.3.0
24 ottobre 2022
androidx.compose.foundation:foundation:1.3.0
e androidx.compose.foundation:foundation-layout:1.3.0
vengono rilasciati. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Sono state introdotte le versioni sperimentali di
LazyVerticalStaggeredGrid
eLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
e altre API corrispondenti sono state aggiunte come sperimentali.Modifier.clickable
,Modifier.toggleable
eModifier.selectable
ora mostrano un'eco quando l'utente fa clic con la tastiera o il D-pad su un telecomando.
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.foundation:foundation:1.3.0-rc01
e androidx.compose.foundation:foundation-layout:1.3.0-rc01
vengono rilasciati. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- È stato introdotto
lowVelocityAnimationSpec
utilizzato nella fase di approccio quando la velocità di lancio non è sufficiente per decadere. (Iaeb27). - Sono stati aggiunti nuovi trattini API sperimentali per supportare la sillabazione automatica nel testo (Iaa869)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.foundation:foundation:1.3.0-beta03
e androidx.compose.foundation:foundation-layout:1.3.0-beta03
vengono rilasciati. La versione 1.3.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiungi opzioni per personalizzare l'interruzione di riga nel testo. (I86907)
- Gli
BringIntoViewResponder
ora sono in grado di ottenere i limiti più aggiornati di una richiesta durante l'elaborazione. (If86a5, b/241591211). - Introduzione del supporto delle spaziature tra gli elementi nel modello sperimentale
Staggered Grid
(I10b82) - Introduzione della spaziatura interna dei contenuti nella versione sperimentale
Staggered Grid
(I342ea) - Argomento
size:IntSize
modificato conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525) - È stato aggiunto
Modifier.withConsumedWindowInsets()
per consumareWindowInsets
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
vengono rilasciati. La versione 1.3.0-beta02 contiene questi commit.
Modifiche alle API
- Versione iniziale dell'esperimento
StaggeredGrid
(Ia48be) FocusDirection.In
eFocusDirection.Out
rinominati inFocusDirection.Enter
eFocusDirection.Exit
(Ia4262, b/183746982)- È stato introdotto un sovraccarico di
rememberSnapFlingBehavior
che fornisce un modo rapido per attivare l'agganciamento inLazyLists
. (Ifb48a). - È stata sostituita la fabbrica
snapFlingBehavior
con una classeSnapFlingBehavior
in cemento. MetodiSnapLayoutInfoProvider
applicati alla densità per semplificare le conversioni Dp<->Px per gli utenti dell'API. (I54a11) - Aggiorna
LazyLayoutMeasureScope.measure
per restituire un elenco di elementi posizionabili, evidenziando l'immutabilità desiderata del valore restituito. (I48b7c). - È stata introdotta
SnapLayoutInfoProvider
, che richiede unLazyListState
per creare un'istanza diSnapLayoutInfoProvider
che può essere utilizzata per abilitare uno snapshotFlingBehavior
perLazyLists
. (I2dd10).
Correzioni di bug
- Esegue il refactoring di
AwaitPointerEventScope#awaitLongPressOrCancellation
in modo che corrisponda ad altre funzioni di attesa (I646e6)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.foundation:foundation:1.3.0-beta01
e androidx.compose.foundation:foundation-layout:1.3.0-beta01
vengono rilasciati. La versione 1.3.0-beta01 contiene questi commit.
Modifiche alle API
pointerPosition
rimosso daOverscrollEffect
. Per gli effetti che interessano la posizione del puntatore, è possibile utilizzareModifier.pointerInput { }
ineffectModifier
per ottenere la posizione attuale del puntatore. (I9f606, b/241239306).AwaitPointerEventScope#awaitLongPressOrCancellation
esposto come componente di base aggiuntivo per un rilevamento dei gesti più complesso (I04374, b/181577176)- È stato introdotto
lazyListSnapLayoutInfoProvider
per attivare l'agganciamento negli elenchi lenti. (I3ecdf) - È stato introdotto
SnapFlingBehavior
, un comportamento scorrevole che consente l'agganciamento degli elenchi. Fornisci un'istanza diSnapLayoutInfoProvider
con informazioni sul layout di agganciamento. (Ie754c)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.foundation:foundation:1.3.0-alpha03
e androidx.compose.foundation:foundation-layout:1.3.0-alpha03
vengono rilasciati. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
- I caratteri delle risorse ora supportano l'impostazione di impostazioni di variazione dei caratteri (API 26 e versioni successive). (I900dd, b/143703328)
- Supporto dei caratteri variabili in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Annotazione sperimentale rimossa da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - I campi di testo ora genereranno eccezioni più dettagliate quando il
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 lenti. (Ic891c)
ScrollableDefaults.reverseDirection()
non è più sperimentale. (Iba646).- È stato deprecato
SemanticsModifier.id
e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524) checkScrollableContainerConstraints()
non è più sperimentale. (I2c290).Modifier.clipScrollableContainer()
non è più sperimentale. (Ia2b44).- Ritira
TextInputService.show|hideSoftwareKeyboard
. Usa 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
vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta la funzione di estensione
drawText
suDrawScope
per fornire un modo per disegnare testo con più stili su componibili e modificatori che operano su unDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898)
Correzioni di bug
- La tastiera software viene ora nascosta quando un campo di testo viene disattivato durante lo stato attivo. (I6e3e4, b/237308379).
- Quando aggiungi eventi
InputEventChange
a Velocity Tracker considereremo ora i delta anziché le posizioni, ciò garantirà che la velocità venga calcolata correttamente in tutti i casi, anche se l'elemento target si muove (Icea9d, b/216582726, b/223440806, b/227709803) - Quando un elemento scorrevole ha un bambino attivo, ora scorrerà correttamente per mantenere visibile quello attivo quando le sue dimensioni diminuiscono, anche quando le dimensioni sono animate. (I80867, b/230756508, b/220119990)
- È stato risolto un arresto anomalo in cui
TextField
viene cancellato e ricaricato mentre la selezione è attiva. (I1235b, b/208655565, b/214253689).
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.foundation:foundation:1.3.0-alpha01
e androidx.compose.foundation:foundation-layout:1.3.0-alpha01
vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare il supporto dei linkTalkBack
inAnnotatedString
. (I1c754, b/231495122).
Correzioni di bug
- Ora
BasicTextField
cursorBrush
può essere animato senza riavviare il timer del cursore. (I812e6, b/236383522)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.foundation:foundation:1.2.1
e androidx.compose.foundation:foundation-layout:1.2.1
vengono rilasciati. La versione 1.2.1 contiene questi commit.
Versione 1.2.0
27 luglio 2022
androidx.compose.foundation:foundation:1.2.0
e androidx.compose.foundation:foundation-layout:1.2.0
vengono rilasciati. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
LazyVerticalGrid
eLazyHorizontalGrid
ora sono stabili.- Ora puoi specificare un tipo di contenuti per gli elementi negli elenchi e nelle griglie Lazy. In questo modo i componenti potranno riutilizzare gli elementi in modo più efficiente.
- Elenchi e griglie lenti ora hanno
userScrollEnabled
parametro che consente di disattivare lo scorrimento tramite i gesti degli utenti. - È stata aggiunta una nuova API sperimentale denominata
LazyLayout
. È l'API che usiamo internamente per alimentare elenchi e griglie Lazy. - L'API
OverscrollEffect
è stata introdotta come sperimentale. Puoi definire effetti di scorrimento personalizzato personalizzati e aggiungere una piattaforma standard ai contenitori scorrevoli personalizzati. - Sono state introdotte le API di interoperabilità a scorrimento nidificato per consentire l'interoperabilità tra le visualizzazioni e gli autori che eseguono lo scorrimento della scrittura.
- Lo scorrimento con il mouse e il trackpad è stato aggiunto a tutti i contenitori a scorrimento.
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc03
e androidx.compose.foundation:foundation-layout:1.2.0-rc03
vengono rilasciati. La versione 1.2.0-rc03 contiene questi commit.
- Nessuna modifica dalla versione 1.2.0-rc02.
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc02
e androidx.compose.foundation:foundation-layout:1.2.0-rc02
vengono rilasciati. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.foundation:foundation:1.2.0-rc01
e androidx.compose.foundation:foundation-layout:1.2.0-rc01
vengono rilasciati. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- È stato introdotto un
OverscrollEffect
sperimentale per consentire l'utilizzo di effetti di scorrimento personalizzato, oltre ai sovraccarichiModifier.scrollable
che lo accettano. - La versione sperimentale
LocalOverScrollConfiguration
è stata spostata dafoundation.gesture
al pacchetto di base e rinominato inLocalOverscrollConfiguration
(If19fb, b/204650733) - Le interfacce nelle librerie di scrittura ora vengono create utilizzando i metodi di interfaccia predefinita jdk8 (I5bcf1)
- È stata introdotta un'API sperimentale
checkScrollableContainerConstraints()
che consente di verificare che non nidifichiamo i container scorrevoli. Puoi usarla per creare i tuoi layout pigri a scorrimento tramiteLazyLayout
. (Id6fab, b/233352497) - Rimozione di
LazyVerticalGrid
deprecata dal pacchettoandroidx.compose.foundation.lazy
. La nuova API stabile si trova inandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Versione 1.2.0-beta03
1° giugno 2022
androidx.compose.foundation:foundation:1.2.0-beta03
e androidx.compose.foundation:foundation-layout:1.2.0-beta03
vengono rilasciati. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
- Sono state aggiunte le nuove versioni sperimentali
IntervalList
eMutableIntervalList
. Consente di rappresentare alcuni elenchi di valori tramite intervalli multipli. Questo sarà utile quando vuoi definire un file DSL personalizzato simile a quello utilizzato daLazyColumn
, in cui gli elementi dell'elenco possono essere definiti tramite più chiamate di elementi/elementi. (I2d05e, b/228580728).
Correzioni di bug
- È stata chiarita la documentazione per
WindowInsets.ime
per affermare che gli insiemi diime
vengono riportati nel passato fino all'API 23, ma solo animati per le versioni superiori a 30. (Ia7fc0, b/230756508) - Se premi il tasto Canc in avanti quando il cursore si trova alla fine di un campo di testo, non si verificherà più un arresto anomalo.
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
ora richiedono che i loro argomenti del costruttore siano non negativi. (Ica8e6, b/199919707).
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta02
e androidx.compose.foundation:foundation-layout:1.2.0-beta02
vengono rilasciati. La versione 1.2.0-beta02 contiene questi commit.
- La risoluzione dei caratteri scaricabili che non cambia le dimensioni del layout di Text o
TextField
in precedenza non verrà ridisegnata, causando la visualizzazione dei caratteri non aggiornati. Questa correzione di bug garantisce che il layout di testo attivi sempre la riscrittura (b/229727404). (I1d49e, b/229727404).
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.foundation:foundation:1.2.0-beta01
e androidx.compose.foundation:foundation-layout:1.2.0-beta01
vengono rilasciati. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima versione beta 1.2.
Modifiche alle API
- Aggiunta dell'elemento
BeyondBoundsInterval
sperimentale che può essere utilizzato con implementazioni personalizzate diLazyList
quando posizionano gli elementi oltre i limiti visibili (Ifabfb, b/184670295) - Il nome di
LineHeightBehavior
è stato rinominatoLineHeightStyle
- Il nome di
LineVerticalAlignment
è stato rinominatoLineHeightStyle.Alignment
- La ridenominazione di
LineHeightTrim
è rinominata comeLineHeightStyle.Trim
- I valori predefiniti del costruttore di
LineHeightStyle
sono stati rimossi (I582bf, b/181155707) - Sono stati aggiunti valori predefiniti per i membri facoltativi dell'interfaccia
LazyLayoutItemProvider
. (Iba8a0). - Nell'API
LazyLayoutItemProvider
, invece di un fabbrica che restituisce il codice lambda componibile per indice, ora abbiamo una funzione componibile più semplice che accetta l'indice. (Id2196) - LazyLayoutItemsProvider è stato rinominato in LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
è stato rinominato initemCount
(Id409c)- È stato aggiunto il Pennello a
TextStyle
eSpanStyle
per fornire un modo per disegnare il testo con colorazione a gradiente. (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
attributi diLineHeightBehavior
modificati in una singola enum:LineHeightTrim
.LineHeightTrim
ha valori di 4 stati definiti da due valori booleani:FirstLineTop
,LastLineBottom
, Entrambi e Nessuno (Ifc6a5, b/181155707)Se viene aggiunto
LineHeightBehavior
aiTextStyle
eParagraphStyle. LineHeightBehavior
controlli se l'altezza della riga viene applicata all'inizio della prima e alla fine dell'ultima riga. Definisce anche l'allineamento della linea nello spazio fornito daTextStyle
(lineHeight
).Ad esempio, è possibile ottenere un comportamento simile a quello che CSS definisce tramite
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.trimFirstLineTop
, le configurazioni ditrimLastLineBottom
funzionano correttamente solo quandoincludeFontPadding
è falso. (I97332, b/181155707)È stato aggiunto il modificatore sperimentale
imeNestedScroll()
per consentire agli sviluppatori di controllare l'IME tramite lo scorrimento. (I60759)
Correzioni di bug
- Correzione della regressione in cui i campi di testo non nascondevano la tastiera se rimossi dalla composizione durante lo stato attivo. (I7a410, b/230536793, b/225541817)
- Supporta i puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
- Ora
BringIntoViewRequester.bringIntoView
verrà sempre sospeso finché la richiesta non viene completata o interrotta da una nuova richiesta non sovrapposta. Le richieste sovrapposte verranno messe in coda. (I43e7f, b/216790855). - Le chiamate
BringIntoViewRequester.bringIntoView
simultanee per rettangoli completamente sovrapposti d'ora in poi verranno rispettate solo la richiesta del rettangolo più grande. (I34be7, b/216790855, b/184760918). includeFontPadding
attivata per impostazione predefinita. È possibile disattivareincludeFontPadding
utilizzando l'attributoTextStyle.platformTextStyle
. Nel prossimo futuro modificheremo il comportamento predefinito, tuttavia fino a quel momento ci consentirà di integrare meglio i miglioramenti dell'altezza delle righe (aosp/2058653) e di risolvere i problemi di ritaglio diTextField
. (I01423, b/171394808)Modifier.bringIntoViewRequester
non utilizza piùonGloballyPositioned
. (I630f5).
Contributi esterni
MouseInjectionScope.scroll(delta = someDelta)
ora è invertita su Android se scorriamo in verticale (se qualche Delta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
e androidx.compose.foundation:foundation-layout:1.2.0-alpha08
vengono rilasciati. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Visualizza tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. Nell'API 21-28 verranno utilizzati i nomi dei caratteri di riserva come senza grazie. Si tratta di una modifica del comportamento perché in precedenza solo le ponderazioni 400 e 700 erano supportate nell'API 21-28. (I380fe, b/156048036, b/226441992). - Ora è possibile usare il parametro Vincoli per Paragrafo e MultiParagrafo. Superare
Constraints.maxHeight
al momento non è una cosa da fare, ma in futuro potrai eseguire alcuni calcoli, come i puntini di sospensione in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi al suo interno. (Icd314)- Il consumo parziale (posizione abbassata OR) è stato ritirato in
PointerInputChange
. Puoi utilizzareconsume()
per completare la modifica. Puoi utilizzareisConsumed
per stabilire se qualcun altro ha già utilizzato la modifica. - Ora
PointerInputChange::copy()
crea sempre una copia superficiale. Significa che le copie diPointerInputChange
verranno consumate una volta esaurita una delle copie. Se vuoi creare un elementoPointerInputChange
non associato, utilizza invece il costruttore. (Ie6be4, b/225669674). - Viene introdotta la nuova API sperimentale
LazyLayout
. In questo modo puoi creare componenti personalizzati comeLazyColumn
diLazyVerticalGrid
. Tieni presente che l'API è nelle fasi iniziali e può essere modificata nelle versioni future. (Iba2bc, b/166591700). AndroidFont
ora richiedetypefaceLoader
come parametro del costruttore. (I2c971)- L'annuncio companion
WindowInsets
ora mostra la visibilità (se sullo schermo, indipendentemente dal fatto che si intersechino con la finestra) e le dimensioni che potrebbero avere se sono disponibili sul dispositivo, ma non attualmente attive. (I65182, b/217770337)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
e androidx.compose.foundation:foundation-layout:1.2.0-alpha07
vengono rilasciati. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'API
PinnableParent
che consente agli elementi secondari di layout pigri per impedire che gli elementi attualmente composti vengano smaltiti (Ibbdd0, b/184670295) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno i campibeforeContentPadding
eafterContentPadding
(I3b628, b/200920410)- È stato aggiunto
KeyboardType.Decimal
come alternativa aKeyboard.Number
per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363) - Aggiungi il nuovo descrittore di carattere Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati dal sistema durante le catene di riserva dei caratteri. (I30468, b/219754572)
PointerEventType.Scroll
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))
. Questa è un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) - Aggiornamento di
FontFamily.Resolver
per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7) - La proprietà dell'estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare l'utilizzo di Android WindowInset. In questo modo,ComposeViews
separati 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
vengono rilasciati. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'azione della semantica
RequestFocus
per richiedere lo stato attivo sul target attivabile. (I17b71) FocusOrder
è stato unito aFocusProperties
efocusProperties()
ora ha tutte le funzionalità difocusOrder()
.FocusOrder
efocusOrder()
sono stati deprecati. Il valorefocusOrder()
che accetta unfocusRequester
deve essere sostituito con un modificatorefocusRequester()
in combinazione confocusProperties()
. In questo modo i modificatori possono avere una maggiore separazione dei problemi. (I601b7)WindowInsets.asPaddingValues(Density)
è stato aggiunto per consentire agli sviluppatori di effettuare la conversione senza dover essere nella composizione. (I94c35).- È stata aggiornata l'analisi delle bozze di vettori per supportare il mirroring automatico in modo da capovolgere i contenuti di un elemento
VectorPainter
se la direzione corrente del layout è RTL. (I79cd9, b/185760237)
Correzioni di bug
- I modificatori di scorrimento (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
eModifier.scrollable()
) scorrono ora per mantenere visibile il componibile attivo se l'area di scorrimento viene ridimensionata e il componibile attivo era precedentemente visibile. - I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivi e la tastiera è visualizzata, quando all'interno di un elemento a scorrimento non lento e la modalità di immissione temporanea è
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
e androidx.compose.foundation:foundation-layout:1.2.0-alpha05
vengono rilasciati. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche alle API
LazyVerticalGrid
eLazyHorizontalGrid
sono ora stabili. (I307c0)- Il campo
LazyGridItemInfo.Unknown
è stato sostituito conLazyGridItemInfo.UnknownRow
eLazyGridItemInfo.UnknownColumn
separati (I56d51) LazyVerticalGrid
/LazyHorizontalGrid
e tutte le API correlate sono state spostate nel sottopacchetto.grid
. Aggiorna le importazioni daandroidx.compose.foundation.lazy
aandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Testo:
includeFontPadding
è ora disattivato per impostazione predefinita. Vengono gestiti i problemi di ritaglio dovuti aincludeFontPadding=false
e non dovrebbero verificarsi interruzioni per gli script lunghi. (I31c84, b/171394808) - L'interfaccia misurata ora espone la proprietà parentData (I3313f)
- È stata introdotto l'esperimento
Modifier.onFocusedBoundsChanged
per consentire l'osservazione dei limiti degli elementi incentrati sui bambini. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid è stato aggiunto. (I61ae7, b/191238807).
- È stata aggiunta una nuova API
LazyVerticalGrid
per definire le dimensioni dell'asse trasversale (I17723) - Aggiunto modificatore di FocusGroup (I64bc0, b/213508274, b/184670295)
Correzioni di bug
WindowInsets.toString()
mostrerà i valori corretti. (I1585d)
Contributi esterni
- Aggiornato per utilizzare Kotlinx coroutines 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
e androidx.compose.foundation:foundation-layout:1.2.0-alpha04
vengono rilasciati. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
BringIntoViewResponders
non deve più passare manualmente le richieste agli utenti che possono rispondere a un genitore e deve invece restituire immediatamente il rettangolo che vuole che venga visualizzato dal padre. (I8e66a).- Supporta il caricamento asincrono dei caratteri nel testo (I77057, b/214587005)
LazyVerticalGrid
ora supportaline breaking
prima degli elementi con intervallo non adatto all'interno della riga corrente. (I05c40, b/207462103).- Rinominato
excludeFromSystemGestures
insystemGesturesExclusion
(I19526) LazyVerticalGrid
ora supporta il layout reverseLayout. (I6d7d7, b/215572963, b/211753558).- Aggiungi il metodo
WindowInsets.only()
per consentire agli sviluppatori di includere solo le dimensioni di WindowInset. (I14c94, b/217768486). Sono stati aggiunti i criteri
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono di generare report in fase di compilazione per capire quando una funzione componibile viene chiamata come target di un'applicazione che non era stata progettata.Nella maggior parte dei casi le annotazioni possono essere dedotte dal plug-in di Composer, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni componibili astratte (ad esempio i metodi di interfaccia), campi o variabili globali che sono lambda componibili (vengono dedotte variabili e parametri locali) o l'utilizzo di
ComposeNode
o di funzioni componibili correlate.Per gli applicatori personalizzati, le funzioni componibili che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneCompoableTarget
per la funzione ed eventuali tipi di parametri lambda componibili. Tuttavia, è consigliabile creare un'annotazione che sia annotata conComposableTargetMarker
e poi utilizzare l'annotazione contrassegnata al posto direttamente diComposableTarget
. Un'annotazione componibile contrassegnata conComposableTargetMarker
equivale a unaComposbleTarget
con il nome completo della classe dell'attributo come parametro applier. Per un esempio di utilizzo diComposableTargetMarker
, consultaanroidx.compose.ui.UiComposable
. (I38f11).
Correzioni di bug
- Ora è possibile 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
vengono 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. Usa inveceBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874). - Le animazioni sono state attivate per gli elementi delle griglie lente con Modifier.animateItemPosition(). (Ib6621, b/211753218)
BringIntoViewRequester
ora propaga le richieste alla vista Android di hosting. (Ia7a51)FontFamilyResolver
è ora disponibile tramiteLocalFontFamilyResolver.current
- Sono stati aggiunti
createFontFamilyResolver(context)
ecreateFontFamilyResolver(context, coroutineScope)
per creare nuovi resolver FontFamily al di fuori dell'utilizzo di Scrivi. - Le funzionalità Paragrafo e MultiParagrafo ora richiedono
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
ora contiene il resolver utilizzato per questo layout, deprecatoTextLayoutResult.layoutInput.resourceLoader
perché 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 delle risorse carattere su Android. Ad esempio, il caricamento dei caratteri da un backend specifico per l'app, l'individuazione facoltativamente dei caratteri preinstallati sul dispositivo o il caricamento di un carattere da una risorsa non fornita dall'attuale stabilimento di produzione di caratteri.- È stata espansa l'API
Font.ResourceLoaded
per supportare il caricamento dei caratteri facoltativo e asincrono. È sconsigliato usare questa API direttamente dagli sviluppatori. Per aggiungere nuovi tipi di caratteri, vedi AndroidFont. - La funzione di estensione
Font.AndroidResourceLoader
consente la creazione di un elementoFont.ResourceLoader
al di fuori della composizione. - È stato aggiunto il parametro
loadingStrategy
ai caratteri basati sulle risorse per consentire il caricamento asincrono quando il carattere delle risorse fa riferimento ai caratteri XML scaricabili. (Ie5aea, b/174162090).
- È stata espansa l'API
- Il costruttore
Typeface(FontFamily)
è deprecato. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza inveceFontFamilyResolver.preload
- L'API
fontResource(FontFamily): Typeface
è deprecata. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Usa inveceFontFamilyResolver.preload
(If8e7c, b/174162090)
- L'API
- Ora puoi specificare il tipo di contenuti per gli elementi di
LazyVerticalGrid
. Le funzioni elemento/elementi suLazyGridScope
ora accettano questo parametro. Queste informazioni aiutano a riutilizzare la logica di riutilizzo della composizione degli articoli per renderla più efficiente e riutilizzare solo i contenuti tra articoli di tipo simile. (I7b355, b/215372836) LazyListLayoutInfo
eLazyGridLayoutInfo
ora hanno nuove proprietà:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Ora puoi specificare il tipo di contenuti per gli elementi di LazyColumn/LazyRow. Le funzioni elemento/elementi in LazyListScope ora accettano questo parametro. Queste informazioni aiutano a riutilizzare la logica di riutilizzo della composizione degli articoli per renderla più efficiente e riutilizzare solo i contenuti tra articoli di tipo simile. (I26506)
- Il costruttore
SubcomposeLayoutState
che accettamaxSlotsToRetainForReuse
è ora deprecato. Esiste invece un nuovo costruttore che accettaSubcomposeSlotReusePolicy
, una nuova interfaccia che consente un controllo più granulare su quali aree devono essere conservate per il riutilizzo futuro. (I52c4d). - Aggiunge modificatori per WindowInset, sia per la spaziatura interna che per le dimensioni. In questo modo alcuni contenuti si estendono nell'area del riquadro, mantenendo i contenuti principali fuori da questa area. Ad esempio, è possibile utilizzare windowInsetsPadding per riempire l'area dei contenuti, in modo da evitare aree che potrebbero essere completamente o parzialmente coperte. (Id0395, b/213942085)
Correzioni di bug
- I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivati e la tastiera viene visualizzata, quando la modalità di immissione flessibile è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120). - Il desktop utilizza la composizione locale per
FontFamily.Resolver
- L'app
FontLoader
per computer è deprecata - Nuovo fabbricante
createFontFamilyResolver
su computer (I6bbbb, b/174162090)
- L'app
- Il tipo di input da tastiera software non sfarfalla più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
- I campi di testo non richiedono più una pressione extra a ritroso quando viene visualizzato l'handle del cursore. (Ideb4b, b/205726883).
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato rifinito per corrispondere alla lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha02
e androidx.compose.foundation:foundation-layout:1.2.0-alpha02
vengono rilasciati. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiunto
NonRestartableComposable
ai metodi che sono sovraccarichi di metodi esistenti senza logica complessa. In questo modo vengono ridotti i controlli di memorizzazione generati dal compilatore (uguale a) per tutti i parametri che vengono ripetuti nella funzione interna chiamata. (I90490) - Sono stati aggiunti i modificatori di
excludeFromSystemGesture
per un facile accesso al dispositivosetSystemGestureExclusionRects
di Android (I46f07)
Correzioni di bug
- Il comportamento della lente d'ingrandimento per la selezione del testo è stato rifinito per corrispondere alla lente d'ingrandimento della piattaforma. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
e altri container che usanoModifier.scrollable
ora supportano lo scorrimento con la rotellina del mouse. (I2b5e1, b/198214718).
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.foundation:foundation:1.2.0-alpha01
e androidx.compose.foundation:foundation-layout:1.2.0-alpha01
vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- Il nuovo parametro
userScrollEnabled
è stato aggiunto aLazyColumn
,LazyRow
eLazyVerticalGrid
per consentire agli utenti di disattivare temporaneamente o definitivamente lo scorrimento avviato tramite gesti tattili o azioni di accessibilità. Sarà ancora possibile scorrere in modo programmatico tramite i metodi nello stato. (I7eae9, b/201150093). - Aggiungi il callback
onSizeChanged
al modificatore di ingrandimento. (I6879f) - Il widget Lente d'ingrandimento ora viene visualizzato quando trascini i punti di manipolazione di selezione in un
SelectionContainer
. (I30b38, b/139320979)
Correzioni di bug
- Consente di correggere il punto di manipolazione del cursore
TextField
non nascosto quando viene fatto scorrere fuori dalla visualizzazione. (I14552, b/208883748)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.foundation:foundation:1.1.1
e androidx.compose.foundation:foundation-layout:1.1.1
vengono rilasciati. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correggi
NullPointerException
all'indirizzoandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- RTL corretto in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
androidx.compose.foundation:foundation:1.1.0
e androidx.compose.foundation:foundation-layout:1.1.0
vengono rilasciati. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto scorrimento orizzontale di Android 12
- Miglioramenti alle dimensioni del touch target
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio di layout in modo da rispettare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante si espanderà fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo Compose Material allo stesso comportamento dei componenti di Material Design, offrendo un comportamento coerente se combini le visualizzazioni e Compose. Inoltre, questa modifica garantisce che quando crei la tua UI utilizzando i componenti di Compose Material, verranno soddisfatti i requisiti minimi per l'accessibilità del touch target.
- Supporto stabile per Navigazione
- Assegna una serie di API precedentemente sperimentali alla versione stabile
- Supporto per versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.foundation:foundation:1.1.0-rc03
e androidx.compose.foundation:foundation-layout:1.1.0-rc03
vengono rilasciati. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornato per supportare Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.foundation:foundation:1.1.0-rc01
e androidx.compose.foundation:foundation-layout:1.1.0-rc01
vengono rilasciati. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Ora è possibile passare offset di scorrimento negativi in
LazyListState.scrollToItem()
eLazyListState.animateScrollToItem()
. (Iceb90, b/184252837). - Risolto un bug che causava la mancanza di azioni di scorrimento di accessibilità (I7cbfb)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.foundation:foundation:1.1.0-beta04
e androidx.compose.foundation:foundation-layout:1.1.0-beta04
vengono rilasciati. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornato per essere compatibile con Kotlin
1.6.0
Modifiche alle API
- È stata eseguita la pulizia di nulla in
androidx.core.view
(I7078a, b/204917439) - Sono state aggiunte API sperimentali che consentono di utilizzare PointerInputchange nel suo complesso o di verificare se è stato consumato o meno. (I2e59d).
- Mostra un widget ingrandimento quando trascini il cursore o i punti di manipolazione di selezione all'interno dei campi di testo. (I5391e, b/203781358)
Correzioni di bug
- Correggi i punti di manipolazione del testo che non si spostano quando la visibilità dell'IME cambia. (I25f2e).
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta03
e androidx.compose.foundation:foundation-layout:1.1.0-beta03
vengono rilasciati. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- In LazyVerticalGrid è stato aggiunto il supporto delle sezioni orizzontali. (I7e2fa, b/176758183).
È stata aggiunta la funzionalità sperimentale per animare le posizioni degli elementi degli elenchi lenti. In LazyItemScope è disponibile un nuovo modificatore chiamato
Modifier.animateItemPlacement()
. Esempio di utilizzo:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Quando fornisci un tasto tramite
LazyListScope.item
oLazyListScope.items
, questo modificatore attiva le animazioni di riordinamento degli elementi. Oltre al riordinamento degli elementi, vengono animate anche tutte le altre modifiche di posizione causate da eventi quali modifiche della disposizione o dell'allineamento. (I59e7b, b/150812265).
- Quando fornisci un tasto tramite
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.foundation:foundation:1.1.0-beta02
e androidx.compose.foundation:foundation-layout:1.1.0-beta02
vengono rilasciati. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- Onde e altre indicazioni verranno ora ritardate solo se si trovano all'interno di un container
Modifier.scrollable()
, invece di essere sempre ritardate per un evento inattivo. (Ibefe0, b/203141462). - È stata aggiunta l'API sperimentale BringIntoView che ti consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)
Contributi esterni
- Aggiunto
Modifier.pointerHoverIcon
(I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-beta01
e androidx.compose.foundation:foundation-layout:1.1.0-beta01
vengono rilasciati. La versione 1.1.0-beta01 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'API sperimentale BringIntoView che ti consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.foundation:foundation:1.1.0-alpha06
e androidx.compose.foundation:foundation-layout:1.1.0-alpha06
vengono rilasciati. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico senza figli per Layout, con maggiore efficienza (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
ora restituisce loSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db).- È stato aggiunto un elemento
performScrollToNode(matcher: SemanticsMatcher)
che fa scorrere un container scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha05
e androidx.compose.foundation:foundation-layout:1.1.0-alpha05
vengono rilasciati. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti i puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305).
Correzioni di bug
- Corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lenti che non lenti) in relazione allo scorrimento (I6cdb0)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
e androidx.compose.foundation:foundation-layout:1.1.0-alpha04
vengono rilasciati. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
performGesture
eGestureScope
deprecati, che sono stati sostituiti daperformTouchInput
eTouchInjectionScope
. (Ia5f3f, b/190493367).- È stato aggiunto
touchBoundsInRoot
aSemanticsNode
che include le dimensioni minime del touch target, in modo che gli sviluppatori possano garantire che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214).
Correzioni di bug
- Sui dispositivi Android 12 è stato aggiunto il supporto dell'overscroll per la funzionalità stretching. (Iccf3c, b/171682480).
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.foundation:foundation:1.1.0-alpha03
e androidx.compose.foundation:foundation-layout:1.1.0-alpha03
vengono rilasciati. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Scrittura
1.1.0-alpha03
aggiornata in modo che dipendesse da Kotlin1.5.30
. (I74545)
Modifiche alle API
- È stato aggiunto l'effetto incandescenza per lo scorrimento. È stata aggiunta la nuova API sperimentale OverScorriConfiguration per consentire la configurazione dell'effetto visivo overscroll. Specifica un valore null per disattivare l'effetto di scorrimento orizzontale. (I0c304, b/171682480).
- AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- È stato aggiunto un metodo di test per ottenere i limiti tagliati. (I6b28e).
- Aggiunta la dimensione minima del touch target a ViewConfiguration per l'uso nella semantica e nell'input del puntatore per garantire l'accessibilità. (Ie861c)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.foundation:foundation:1.1.0-alpha02
e androidx.compose.foundation:foundation-layout:1.1.0-alpha02
vengono rilasciati. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche alle API
- 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
vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiornato il metodo
DrawScope#drawImage
che utilizza i registri di origine e di destinazione per utilizzare un parametro FilterQualità facoltativo. Questo è utile per la Pixel Art, che deve essere pixelata quando viene ridimensionata per la grafica basata su pixel. Aggiornamento di BitmapPainter + Immagine componibile per utilizzare anche un parametro facoltativo tipoFilterQualità (Ie4fb0, b/180311607) - TextField ora cancella la selezione quando viene premuto il pulsante Indietro, in base al comportamento di Android EditText. (I3ca16, b/174173645).
- Aggiungi punto di manipolazione del cursore. (I07a82, b/173016579).
Correzioni di bug
- Lo scorrimento tramite azioni di semantica per elenchi lenti e componenti a scorrimento regolare ora è animato (Id9066, b/190742024)
Contributi esterni
LazyVerticalGrid
ora accetta i parametri di disposizione orizzontale e verticale. (If9c92).
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.foundation:foundation:1.0.5
e androidx.compose.foundation:foundation-layout:1.0.5
vengono rilasciati. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- Risolto il problema di monitoraggio degli arresti anomali delle istanze derivateStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
androidx.compose.foundation:foundation:1.0.4
e androidx.compose.foundation:foundation-layout:1.0.4
vengono rilasciati. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.foundation:foundation:1.0.3
e androidx.compose.foundation:foundation-layout:1.0.3
vengono rilasciati. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.foundation:foundation:1.0.2
e androidx.compose.foundation:foundation-layout:1.0.2
vengono rilasciati. La versione 1.0.2 contiene questi commit.
Aggiornato per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.foundation:foundation:1.0.1
e androidx.compose.foundation:foundation-layout:1.0.1
vengono rilasciati. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipende da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.foundation:foundation:1.0.0
e androidx.compose.foundation:foundation-layout:1.0.0
vengono rilasciati. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Questa è la prima release stabile di Compose. Consulta il blog ufficiale di Compose Release per ulteriori dettagli.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24+ nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc02
e androidx.compose.foundation:foundation-layout:1.0.0-rc02
vengono rilasciati. La versione 1.0.0-rc02 contiene questi commit.
- Aggiornamento del rendering dei bordi per forme generiche al fine di risolvere i problemi relativi a percorsi definiti con dimensioni fisse. (aosp/1748871, b/191817116)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.foundation:foundation:1.0.0-rc01
e androidx.compose.foundation:foundation-layout:1.0.0-rc01
vengono rilasciati. La versione 1.0.0-rc01 contiene questi commit.
Modifiche alle API
- Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
Correzioni di bug
- Pulsante, scheda, caselle di controllo e
Modifier.clickable(enabled=false)
complessivi disattivati impediranno ai clic di arrivare all'elemento principale. (Ic2c3b, b/183908811).
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.foundation:foundation:1.0.0-beta09
e androidx.compose.foundation:foundation-layout:1.0.0-beta09
vengono rilasciati. La versione 1.0.0-beta09 contiene questi commit.
Modifiche alle API
ManualFrameClock
rimosso. Se devi controllare le animazioni, usa invececomposeTestRule.mainClock
. (I3c3e8, b/189951065).- cambia enum Role e LiveRegionMode in classi incorporate con costruttore privato (Id1890)
- L'uso delle maiuscole della tastiera viene convertito in una classe incorporata. (Id5a1c)
- TextOverflow viene modificato in una classe incorporata. (I433af)
Correzioni di bug
- Ora, quando specifichi le chiavi univoche per gli elementi LazyColumn/Row, la posizione di scorrimento verrà mantenuta in base alla chiave, il che significa che se aggiungi o rimuovi elementi prima dell'elemento visibile corrente, l'elemento con la chiave specificata verrà mantenuto come primo visibile. (Id263f, b/184257857)
- Per il momento, le costanti chiave sono @experimentComposeUiApi. L'utilizzo del codice può dichiarare le costanti private prima della stabilizzazione. (Ia5d48).
- È stata aggiunta IdlingStrategy ad AndroidComposeTestRule che può essere utilizzato dai framework di test per installare un meccanismo alternativo di attesa o di quiescenza. Utilizza
AndroidComposeTestRule.setIdlingStrategyFactory()
prima di iniziare il test per installare la tua strategia. (I608fa)
Regole del profilo aggiunte
In questa release sono state aggiunte regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.materiale
- androidx.compose.materiale-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una libreria sono specificate in un file di testo
baseline-prof.txt
che si trova insrc/main
o nella directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi della libreria. La sintassi di queste regole è un soprainsieme del formato del profilo ART leggibile che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole assumono una delle due forme per il targeting di metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola di classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
contiene uno o più caratteriH
,S
eP
per indicare se il metodo deve essere contrassegnato o meno come "Hot", "Startup" o "Post Startup".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrà un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametro e i tipi restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono includere caratteri jolly (
**
,*
e?
) in modo che una singola regola includa più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "ad accesso frequente" e deve essere compilato in anticipo.Un metodo con il flag
S
indica che si tratta di un metodo che viene richiamato all'avvio e deve essere compilato in anticipo per evitare i costi di compilazione e interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che si tratta di un metodo che viene richiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare i costi di caricamento della classe.
Come funziona?
- Le librerie possono definire queste regole che verranno pacchettizzate in artefatti AAR. Quando viene creata un'app che include questi artefatti, queste regole vengono unite e le regole unite vengono utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi utilizzare questo profilo quando l'app è installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che ciò non avrà alcun effetto sulle applicazioni di cui è possibile eseguire il debug.
Versione 1.0.0-beta08
2 giugno 2021
androidx.compose.foundation:foundation:1.0.0-beta08
e androidx.compose.foundation:foundation-layout:1.0.0-beta08
vengono rilasciati. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
- L'enumerazione NestedscrollSource è sostituita da una classe in linea. (Ie321b, b/187055290).
- È stato eseguito il refactoring degli utilizzi delle enum in classi in linea per evitare problemi con l'enumerazione esaustiva di istruzioni quando vengono aggiunti nuovi valori di enumerazione. (I2b5eb)
- Aggiunge un timeout del tocco a cliccabile/attivabile per impedire la visualizzazione di un'onde durante lo scorrimento o il trascinamento (Ia2704, b/168524931)
- Le proprietà della semantica del testo e ContentDescription non sono più valori singoli, ma elenchi. Ciò consente di unirli in quanto si tratta di una concatenazione. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
- L'istruzione
Modifier.focusModifier()
è deprecata e sostituita daModifier.focusTarget()
(I6c860) - L'enumerazione KeyboardType è sostituita da una classe incorporata. (I73045, b/187055290)
- Enum
FocusState
sostituita con interfacciaFocusState
(ICC1a, b/187055290) - L'enumerazione ImeAction è sostituita da una classe in linea. (I18be5, b/187055290).
- Le funzioni
AnnotatedString.withAnnotation
ora sono SperimentaliTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType è ora ExampleTextAPI anziché ExperimentalComposeApi.
- PaddingValues ora è
@Stable
anziché@Immutable
(I88c50)
Correzioni di bug
- Sono stati corretti gli arresti anomali dovuti alla pressione prolungata nell'area vuota nel testo non vuoto. (I33ab5, b/187437299)
- Mostra barra degli strumenti dopo Seleziona tutto (I495d9, b/185919613)
- Correzione per i container scorrevoli che tagliavano gli elementi secondari sull'asse trasversale. Era facilmente riproducibile se hai un elemento LazyRow with Card, ora l'ombra non verrà tagliata. (Icb635, b/186318448)
- Risolto il problema per cui a volte echi / altre indicazioni rimanevano bloccati su un clic lungo quando si utilizza Modifier.combinedClickable (I2298c, b/186223077)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica di posizione. Non è necessario chiamare change.consumePositionChange nei callback onTrascina (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
è stato modificato per indicare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo aver applicato tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verrebbero riportate. (Ieb67d, b/177926591).
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta07
e androidx.compose.foundation:foundation-layout:1.0.0-beta07
vengono rilasciati. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- Viene introdotta la logica di precaricamento degli elementi visibili successiva per LazyColumn/Row (I8a4bc, b/184940225)
- Aggiunto il punto di manipolazione per la selezione dei clip (Iff80d, b/183408447)
Correzioni di bug
- LazyColumn/Row ora manterrà attivi fino a 2 elementi precedentemente visibili (non eliminati) anche quando l'elemento viene già fatto scorrere. In questo modo il componente può riutilizzare le sottocomposizioni attive quando dovremo comporre un nuovo elemento per migliorare le prestazioni dello scorrimento. (Ie5555)
- Rimuovi paintBackground. (I38660)
- Disegna lo sfondo della selezione con DrawScope. (I73c61, b/186674472)
- È stata corretta una regressione beta06 che interessava riga/colonna utilizzando le disposizioni SpacedBy per gli elementi secondari ponderati del layout. (Ifaf8c, b/187326588).
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.foundation:foundation:1.0.0-beta06
e androidx.compose.foundation:foundation-layout:1.0.0-beta06
vengono rilasciati. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
- Risolvi il conflitto con il gesto di navigazione (I1145e)
- Sono state aggiunte le API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017)
- È stato aggiunto
SemanticsActions.ScrollToIndex
per far scorrere un elenco con elementi indicizzati all'elemento con un determinato indice eSemanticsProperties.IndexForKey
per ottenere l'indice di un elemento di un elenco con elementi a chiave. Entrambe le azioni sono implementate da LazyList.- È stato aggiunto
SemanticsNodeInteraction.performScrollToIndex
che fa scorrere un elenco nell'indice specificato eSemanticsNodeInteraction.performScrollToKey
che fa scorrere un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524).
- È stato aggiunto
- Supporto del salvataggio di AnnotatedString in TextFieldValue.Saver. Sono state aggiunte le funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
- I valori parametro
0.dp
predefiniti sono stati aggiunti aPaddingValues(horizontal, vertical)
(I05571, b/181336792)
Correzioni di bug
- Le righe e le colonne secondarie con
weight(fill = false)
non fanno più in modo che l'elemento principale riempia l'intero spazio disponibile dell'asse principale. (Ied94d, b/186012444, b/184355105).
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.foundation:foundation:1.0.0-beta05
e androidx.compose.foundation:foundation-layout:1.0.0-beta05
vengono rilasciati. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- L'interfaccia FlingBehavior ora è contrassegnata come @Stable. Tutte le implementazioni devono essere conformi al contratto
@Stable
. (I93354, b/184830577)
Correzioni di bug
- Sono state corrette le azioni di scorrimento per l'accessibilità
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Invece di scorrere fino alla fine, il dispositivo ora scorrerà di una schermata nella direzione specificata. (Ieccb0) - I file AndroidManifest di ui-test-manifest e ui-tooling-data sono ora compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
androidx.compose.foundation:foundation:1.0.0-beta04
e androidx.compose.foundation:foundation-layout:1.0.0-beta04
vengono rilasciati. La versione 1.0.0-beta04 contiene questi commit.
Modifiche alle API
- Rinomina hideSoftwareKeyboard e showSoftwareKeyboard su
SoftwareKeyboardController rispettivamente in
hide()
eshow()
.- Fornisce l'interfaccia ComposeLocal completa per LocalSoftwareKeyboardController, consentendone l'impostazione (particolarmente utile nei test) (I579a6)
- Presentazione di
TextOverflow.Visible
. (Ic8f89) - Le istanze pubbliche di
RowScope
,ColumnScope
,BoxScope
eBoxWithConstraintsScope
sono state rimosse. (I4e83e, b/181869067).
Correzioni di bug
- Risolto il problema per cui gli elementi di
LazyColumn
/LazyRow
situati sui bordi venivano posizionati in modo errato dopo l'avvio rapido (Ie4d13, b/183877420) Prima di questa modifica, le funzioni componibili locali erano ignorabili in base ai relativi parametri. Dopo questa modifica, le funzioni componibili locali non verranno ignorate. Questa modifica è stata apportata perché è normale che le funzioni locali acquisiscano i parametri dall'elemento padre, il che causa un numero maggiore di bug.
Per riassumere, considera l'esempio:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Prima di questa modifica, la funzione componibile
ShowCount
veniva sempre ignorata, anche dopo l'aggiornamento del parametrocount
. Abbiamo deciso, tuttavia, di non dare seguito a questa misura. (I5648a).
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta03
e androidx.compose.foundation:foundation-layout:1.0.0-beta03
vengono rilasciati. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
- L'API
DefaultMonotonicFrameClock
è deprecata. La chiamata awithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
senzaMonotonicFrameClock
ora genereràIllegalStateException
. (I4eb0d).
Correzioni di bug
- Ora
FlingBehavior.performFling()
è chiamato anche quando la velocità è 0 (I0b6e5, b/181237123)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.foundation:foundation:1.0.0-beta02
e androidx.compose.foundation:foundation-layout:1.0.0-beta02
vengono rilasciati. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- Sono state aggiunte diverse ottimizzazioni di piccole dimensioni nella logica di misurazione LazyColumn (Ic6889)
- È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I5951e, b/168778053) - È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I84472, b/168778053)
Correzioni di bug
- Applicare restrizioni all'uso pubblico delle API sperimentali (I6aa29, b/174531520)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-beta01
e androidx.compose.foundation:foundation-layout:1.0.0-beta01
vengono rilasciati. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 beta.
Modifiche alle API
- Il callback onStart è stato aggiunto a
detectDragGestures
(I67269, b/179995594) - I modificatori per le dimensioni intrinseche non sono più sperimentali. (I15744)
- Asserzioni DP rimosse (I798d2)
- È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per sostituirlo a breve con una nuova API. (Iae869, b/168778053).
- MeasureBlocks è stato rinominato in MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
è stato sostituito con[Mutable]InteractionSource
- Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
- Anziché passare
interactionState = remember { InteractionState() }
a componenti comeButton
eModifier.clickable()
, utilizzainteractionSource = remember { MutableInteractionSource() }
. - Invece di
Interaction.Pressed in interactionState
, dovresti usare le funzioni di estensione su InteractionSource, come InteractionSource.collectIsPressedAsState(). - Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per saperne di più, consulta la documentazione e gli esempi di InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Rimossi i metodi LayoutCoordinates ritirati, usa la funzione invece della proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- È stato creato un nuovo TextInputSession per le sessioni di input da componenti di testo di basso livello, come CoreTextField. (I8817f, b/177662148)
- Placeable ora mostra MeasurementSize, che rappresenta le dimensioni effettivamente misurate dal layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608).
- Aggiungi il modificatore selectGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
Aggiungi LazyListState.animateScorriToItem
Questo metodo consente di scorrere facilmente fino a un elemento specifico dell'elenco. (I4bfd7)
scrollableState.smoothScorriBy() è stato rinominato in animatescrollBy() LazyListState.snapToItemIndex() è stato rinominato in scrollToItem() ScorriState.smoothscrollTo() è stato rinominato in animatescrollTo() (I35ded)
Modifier.zoomable è stato sostituito da Modifier.Transformable. smoothPanBy, "Liscia rotazioneBy" è stata aggiunta come funzionalità. (Ifc32b, b/175294473).
I
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
sono ora obbligatori anziché facoltativi.Questa modifica rimuove un potenziale errore di tipo per i tipi non null in cui non è stato fornito alcun valore di fabbrica predefinito. In precedenza, veniva fornito un riferimento nullo per un tipo non nullo.
Per i tipi di valori null, ti consigliamo di fornire
{ null }
come valore di fabbrica predefinito.Non è consigliabile utilizzare locali con tipi non null, a meno che non sia possibile specificare un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda
defaultFactory
dovrebbe generare un'eccezione. Tuttavia, la generazione di un'eccezione significa che i consumatori locali avranno una dipendenza implicita dal fatto che l'eccezione non è applicata dal sistema dei tipi. (Ifbd2a).Il parametro
Indication#createIndication()
è stato modificato inIndication#rememberUpdatedIndication(InteractionState)
e viene rimosso il parametroInteractionState
da IndicationInstance#drawIndication()
. IndicationInstance deve essere responsabile solo del disegno di effetti visivi e non dell'avvio di animazioni / scrittura dello stato in risposta alle modifiche di InteractionState. Queste animazioni e scritture dello stato devono avvenire all'interno dirememberUpdatedIndication()
. Anche il parametroindication
inModifier.indication
è stato modificato in un parametro obbligatorio. (Ic1764, b/152525426).Le azioni di testo ora controllano automaticamente lo stato attivo (I13777, b/179648629)
runBlockingWithManualClock
rimosso (I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalScorri()/HorizontalSlide() è rappresentata ora con Ints (I81298)
I pacchetti dei metodi smoothSlideBy e scrollBy sono stati modificati in
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)FlingConfig è stato rinominato in FlingBehavior ora e consente la personalizzazione dell'animazione di sospensione anziché dei Decadimenti predefiniti. (I02b86, b/175294473).
I modificatori di dimensione sono stati rinominati. Modifier.width/height/size sono stati rinominati come requiredwidth/requiredHeight/requiredSize. Modifier.preferredwidth/preferredHeight/preferredSize da è stato rinominato in larghezza/altezza/size. (I5b414)
defaultMinSizeConstraints è stato rinominato in defaultMinSize. (I4eaae).
L'elemento Modifier.tapGeFilter è stato rimosso. Usa invece il criterio
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)il consumo parziale è stato rimosso dal sistema di input del puntatore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScorri. (Ie9c9b).
L'orientamento è stato spostato nel pacchetto di base. VelocirtTracker spostato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473).
AnimationClockObservable e le sottoclassi sono state rimosse. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
frameState.open() e frameState.close() ora sospendeno le funzioni. Utilizza keepCoroutineScope() per ottenere l'ambito della composizione per chiamarli (I16f60, b/175294473)
I fornitori sono stati rinominati in ComposeLocalProvider
- Il costruttore Composizione non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è stata trasformata in una proprietà componibile di primo livello invece che in una funzione componibile di primo livello.
- ComposeData e ResolutionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è stata trasformata in un'interfaccia anziché in una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata trasformata in un'interfaccia anziché in una classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione ClearRoots di primo livello
@TestOnly
è stata rimossa. Non è più necessario. - Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
- i metodi isjoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Varie API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe dei file di Kotlin, questo compromette la compatibilità binaria, ma non la compatibilità delle origini, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490).
Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia scrollable anziché la classe scrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable ora accetta DraggableState invece di un semplice lambda. Puoi creare lo stato tramite
rememberDraggableState { delta -> }
per ottenere lo stesso comportamento di prima (Ica70f, b/175294473)Per il dimensionamento richiesto alle dimensioni intrinseche, sono stati aggiunti i modificatori requiredLarghezza(DimensioneIntrinseca) e Altezza richiesta(Dimensione intrinseca). (I0a6b4).
L'elemento
emptyContent()
deprecato è stato rimosso. Usa invece il criterio{}
. (Idb33f, b/179432510).Eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)
Correzioni di bug
- È stata aggiunta la nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.foundation:foundation:1.0.0-alpha12
e androidx.compose.foundation:foundation-layout:1.0.0-alpha12
vengono rilasciati. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Modifier.pointerInput ora richiede di ricordare i tasti per indicare quando la coroutine di rilevamento dell'input del puntatore deve riavviarsi per nuove dipendenze. (I849cd)
- Test dell'aggiornamento: hasText() controllerà sia i testi di input che di etichetta/suggerimento/placeholder nel campo di testo (Iab803)
- PaddingValues.Unique è stato aggiunto e può essere utilizzato nelle API che accettano PaddingValues. (Ia5f30).
- L'API onImeActionPerformed è deprecata. Usa invece KeyboardActions (If0bbd, b/179071523)
- Per abbinare meglio le convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stata rinominata in BitmapPainter in VectorPainter parallelo. (Iba381, b/174565889).
- Migliori API per il test delle sottostringhe ora come argomento (Icbe78)
- È stato introdotto un elemento di contesto coroutine
InfiniteAnimationPolicy
che verrà applicato in animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando si eseguono test conComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo e Animatable.stop sono ora funzioni di sospensione (If4288)
- ComponenteActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi di distruzione e copy() sono stati rimossi da diverse classi in cui erano usati raramente. (I26702, b/178659281)
È stato aggiunto il supporto delle chiavi personalizzate per LazyColumn/LazyRow. In questo modo possiamo gestire in modo più intelligente il riordinamento degli articoli. Quindi lo stato memorizzato nei blocchi {} si sposterà insieme all'elemento quando riordini gli elementi o rimuovi l'elemento dal centro.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
- (Ia50ef, b/164901852).
Changed Indication#createInstance in @Composable e modificato LocalIndication in modo che contenga un'indicazione, non () -> Indication. (I5eeea, b/157150564).
Constraints.enforce
è stato sostituito conConstraints.constrain
. (I8b8ea).L'elemento loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Usa pittoreResource. (I6b809)
Per motivi di prestazioni, la semantica di scrollAxisRange ora utilizza lambda che restituiscono valori in virgola mobile anziché valori Float diretti. (If4a35, b/178657186).
Aggiunta della semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificare la semantica (I8e07a)
Ora Modifier.clickable non supporta più il doppio clic lungo. Per ottenere questa funzionalità, utilizza Modifier.combinedClickable. (Iafad1).
toIntPx() è stato rinominato in roundToPx() (I9b7e4, b/173502290).
IntBounds è stato rinominato IntRect e l'API è stata migliorata. (I1f6ff).
L'API Modifier.dragGeFilter è stata ritirata. Usa invece il criterio
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per i trascinamento su un asse (I0ba93, b/175294473)La ridenominazione degli ambienti Ambient è stata rinominata -> ComposeLocal. Gli ambienti un tempo si chiamavano AmbientFoo, ora i ComposeLocals si chiamavano LocalFoo. (I2d55d).
La selezione è stata spostata negli elementi di base. (I7892b)
Analogamente a come in precedenza abbiamo rimosso il componibile
state { 0 }
e ora promuoviamo l'utilizzo comeremember { mutableStateOf(0) }
, rimuoveremosavedInstanceState { 0 }
componibile. Dovresti usarerememberSaveable { mutableStateOf(0) }
, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno di MutableState può essere archiviato nel bundle. Se prima stavi passando un oggetto salvaschermo personalizzato, ora devi utilizzare un nuovo sovraccarico di ricordoSaveable che ha il parametrostateSaver
. L'utilizzo sarà simile a questo:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Aggiunta della semantica delle password per l'accessibilità (I231ce)
Aggiunta ProgressBarRangeInfo.Indeterminata per contrassegnare barre di avanzamento indeterminate per l'accessibilità (I6fe05)
Il tempo di riproduzione nell'animazione è ora disponibile in nanosecondi (If776a)
@ComposableContract è stato ritirato e sostituito con tre annotazioni più specifiche.
@ComposableContract(restartable = false)
è diventato@NonRestartableComposable
@ComposableContract(readonly = true)
è diventato@ReadOnlyComposable
@ComposableContract(preventCapture = true)
è diventato@DisallowComposableCalls
@ComposableContract(tracked = true)
è stato rimosso. (I60a9d)Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate in quanto non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d)Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno a ricomporre fino al completamento delle coroutine secondarie della composizione. Recomposer.shutDown è stato rinominato per annullare il contrasto con la chiusura. (Ib6d76).
Le API correlate a LazyVerticalGrid sono contrassegnate come sperimentali (Ia53e3, b/178519862)
Il servizio ricordo di istanzaState() è stato rinominato in "RicordaSaveable()" e il nome è stato spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004).
RestorableStateholder è stato rinominato in SaveableStateholder e spostato nel pacchetto androidx.compose.runtime.saveable. Il metodo interno RestorableStateProvider è stato rinominato in SaveableStateProvider. Il tipo generico è stato rimosso, quindi puoi passare semplicemente "Qualsiasi" come chiave. L'annotazione sperimentale non è più necessaria. (I0902e, b/174598702).
Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
L'elemento androidx:compose:runtime:runtime-saving-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
Molte API ritirate da tempo nel pacchetto UI vengono eliminate. (I2f2dc).
L'artefatto composito:runtime-dispatch è ora deprecato. MonotonicFrameClock è ora disponibile in Composer:runtime e AndroidUiDispatcher in Composer:ui. (Ib5c36).
I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione rtl. UniqueRounderCornerShape e UniqueCutCornerShape sono stati introdotti per i casi in cui il mirroring automatico non è desiderato. (I61040, b/152756983)
canTrascina è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
L'API target del plug-in di compilazione Compose è stata modificata in modo da utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non usa più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che provoca un errore binario. (I3b922, b/169406779)
Il filtro Modifier.scaleGeFilter è stato rimosso. Usa invece Modifier.zoomable. In alternativa, utilizza
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)LivelyValue/Float è ora deprecata. Usa invece Animabili. (I71345, b/177457083)
- CoreText e CoreTextField rimossi dall'API pubblica
- Rimosso l'overload SelectionContainer deprecato (I99c19)
Rimuovi le funzioni di scorrimento deprecate e non sospese Per continuare con le modifiche apportate dall'ultima release, quelle non sospese vengono rimosse completamente. Converti alle funzioni di sospensione con gli stessi nomi. Un ambito coroutine può essere ottenuto tramite rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout è stato deprecato a favore di androidx.constraintlayout.compose.ConstraintLayout. Dovrai aggiungere una dipendenza su
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)TapGeFilter, doubleTapgestFilter, longPress tredescherFilter e pressIndicaiton praticheFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTaparmas. (I6baf9, b/175294473).
Recomposer.current()
rimosso. [Abstract]ComposeView ora utilizza per impostazione predefinita ricompositori con ambito a finestre creati in modo lento e gestiti dal ViewTreeLifecycleOwner per la finestra. I segni di graduazione dell'animazione basati su Ricomposizione e conFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host viene interrotto. (I38e11).Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è deprecata. (If8ebe)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha11
e androidx.compose.foundation:foundation-layout:1.0.0-alpha11
vengono rilasciati. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
Depreca scrollBy non sospesi, rimuovi scrollTo non sospesi
Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere il termine dello scorrimento. Nell'ambito di questa transizione, stiamo ritirando e/o rimuovendo le versioni non sospese di queste funzioni. (Ie9ced)
Ritiro di smoothScorriBy non sospesi Ora consigliamo di utilizzare le funzioni di sospensione per controllare lo scorrimento e attendere il termine dello scorrimento. Nell'ambito di questa transizione, ritireremo le versioni non sospese di queste funzioni. (I12880)
Il parametro per la descrizione dei contenuti è stato aggiunto all'immagine e all'icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)
BasicTextField ha ricevuto un nuovo parametro chiamato "decorationBox". Consente di aggiungere decorazioni come icone, segnaposto, etichetta e simili al campo di testo, aumentandone l'area di destinazione. (I16996)
Il parametro canTrascina è stato rimosso da Modifier.draggable (Ic4bec, b/175294473)
È stato rimosso AnimatedFloat.fling che accetta FlingConfig. Usa invece sospendi Animatable.animateDecay. (I4659b, b/177457083)
data class
rimosso dai seguenti corsi:- ContenutiTestoInline
- Elenco impostazioni internazionali
- (I605c7)
Cliccabile, attivabile e selezionabile può essere creato al di fuori della composizione ora (I0a130, b/172938345, b/175294473)
ScorribiliColumn/Riga sono stati deprecati. L'utilizzo di scrollableColumn è meno efficiente rispetto a LazyColumn quando hai molti contenuti a scorrimento perché con LazyColumn possiamo solo comporre/misurare/disegnare elementi visibili. Per evitare che gli utenti vadano in modo inefficiente, abbiamo deciso di ritirare scrollableColumn e scrollableRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere che non hanno bisogno di un comportamento lento e usare i modificatori direttamente in questo modo: Column(Modifier.verticalscroll(rememberscrollState())) (Ib976b, b/170468083)
Nuovo metodo di fabbrica
items(count: Int)
per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
eitemsIndexed(items: List)
sono ora funzioni di estensione, quindi devi importarle manualmente quando vengono utilizzate. Nuovi sovraccarichi di estensione per Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)L'oggetto TotalArrangement ritirato è stato rimosso. (Iffa96, b/177641870).
Il parametro propagaMinConstraints è stato aggiunto a Box per specificare se i vincoli minimi in entrata devono essere trasferiti o meno al contenuto di Box. Il valore predefinito è false. (I0125b, b/152613457)
Correzioni di bug
- onCommit, onDispose e onActive sono stati deprecati a favore delle API SideEffect e DisposableEffect (If760e)
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in Foundation.layout. (I9420b, b/173387208)
Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface
- Funzioni di fabbrica aggiunte che iniziano con una lettera maiuscola
- Funzioni di fabbrica precedenti deprecate con prime lettere minuscole
- Le nuove funzioni di fabbrica restituiscono la proprietà FontFamily anziché le sottoclassi
- ha nascosto i costruttori delle sottoclassi, in modo che possano essere create solo tramite funzioni di fabbrica.
- Font.asFontFamily rinominato in Font.toFontFamily
- (I42aa7).
È stato introdotto
ComposeContentTestRule
, che si estendeComposeTestRule
e definiscesetContent
, che è stato rimosso daComposeTestRule
. È stato aggiunto un metodo di fabbricacreateEmptyComposeRule()
che restituisceComposeTestRule
e non avvia un'attività per te. Usa questa opzione quando vuoi avviare l'attività durante il test, ad esempio utilizzandoActivityScenario.launch
(I9d782, b/174472899)animateAsState ora è animatoFooAsState, dove Foo è il tipo di variabile in fase di animazione, ad es. Float, Dp, Offset e così via (Ie7e25)
La densità è ora l'ambito del ricevitore per le interfacce di Arrangement. (I18aad)
TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo per l'API e la modifica di testo multistile non è ancora implementata.
initial
rimosso dai parametri del costruttore di EditingBuffer. (I326d5).
invalidate e comScoreReference() ora sono deprecati a favore di currentRecomposeScope e promemoriaComposeReference. (I583a8)
AnnotatedString modificata per estendersi da kotlin.CharSequence. Di conseguenza, lunghezza e sottosequenza sono ora funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429).
Durata e Uptime verranno sostituiti con Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore su quelle classi. (Ia33b2, b/175142755, b/177420019).
RicordaOsservatore sostituisce ComposeLifecycleObservationr e ResolutionLifecycleEventsr che ora sono deprecati.
RememberObserver
sostituisceCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, cosa che è e continua a essere la pratica consigliata. Tuttavia, se un riferimento è stato ricordato più di una volta in una composizione,onRemembered
viene chiamato per ogni riferimento doveonEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, ad esempioWithConstraints
eScaffold
, rendendo la singola chiamataonEnter
garantita inaffidabile ed è stato rimosso perRememberObserver
.RememberObserver
aggiungeonAbandoned
che viene chiamato se l'istanzaRememberObserver
viene restituita dal callback passato aremember
ma non è stato memorizzato nello stato di composizione e, di conseguenza, non riceverà mai la chiamataonRemembered
. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o se la composizione viene eliminata perché lo stato sta producendo una composizione non è più attuale o non è più necessaria. Se l'istanza diRememberObserver
che segue il suggerimento di riferimento singolo riportato sopra monitora una risorsa esterna,onForgotten
eonAbandoned
indicano entrambi che la risorsa non è più necessaria. Se l'oggetto sta monitorando i lavori avviati o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato in quanto non verrà chiamato con la chiamata dionRemembered
. (I02c36).TransformedText.TransformedText rinominato in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
Le seguenti classi non sono più classi di dati:
- AnnotatedString
- Stile paragrafo
- Stile intervallo
- Stile testo
- Spessore carattere
- Decorazione Testo
- TrasformazioneGeometrica
- Indice di testo
- Risultato layout testo
- InputLayoutTesto (Iaff99)
Metodi sperimentali monotonicFrameAnimationClockOf rimossi (Ib753f, b/170708374)
Deprecati metodi di coordinate globali e creati nuovi metodi di coordinate basati su finestre. (Iee284).
Utilizza ImeAction.None anziché ImeAction.NoAction.
- Usa ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
FocusRequester.createRefs è ora contrassegnato come sperimentale in quanto potrebbe cambiare. (I2d898, b/177000821)
SemanticsPropertyRicevir.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stata rinominata ProgressBarRangeInfo. stateDescriptionRange è stata rinominata progressBarRangeInfo. AccessibilityScorriState è stata rinominata in scrollAxisRange. HorizontalAccessibilityscrollState è stato rinominato in HorizontalscrollAxisRange. verticalAccessibilityScorriState è stato rinominato in verticalscrollAxisRange. (Id3148)
Modifica di VisualTransformation in un'interfaccia funzionale (I3bba4)
Utilizza TestCoroutineDispatcher nei test (I532b6)
Rimozione di PointerInputData e modifica di PointerInputChange per inserire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData interni perché non sono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)
Rinominato TextInputService.onStateUpdated come updateState (Id4853)
Rimuovi displaySize come da evitare. In genere, è meglio utilizzare almeno la dimensione onRoot() o la dimensione della finestra. (I62db4)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
e androidx.compose.foundation:foundation-layout:1.0.0-alpha10
vengono rilasciati. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
- ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
- Modifiche all'API VisualTransformation
- OffsetMap rinominato in OffsetMapping
- OffsetMapping.identityOffsetMap rinominato in OffsetMapping.Identity
- PasswordTransformation non è più una classe dati
- OffsetMapping spostato nel proprio file
- (I0bdf3)
- Modifiche all'API EditOperations
- Il nome EditOperation è stato rinominato EditCommand
- Aggiunto suffisso del comando per le implementazioni concrete di EditOperation
- Gli elementi EditCommand non sono più classi di dati
- Funzione EditOperation.process rinominata per applyTo
- InputEventListener rinominato in InputEventCallback
- (I0a366)
- Velocità modificata per includere parti dei componenti e operazioni matematiche. (Ib0447)
- Rinominato @SperimentaleTesting in @SperimentaleTestApi per essere coerente con annotazioni simili di API sperimentali (Ia4502, b/171464963)
- Aggiunto il metodo persistente sperimentale per LazyColumn/LazyRow (I0a81d)
- Ranamed Color.useOrElse() a Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher obsoleto. Utilizza Dispatchers.Main (Ic171f, b/175385255)
- Aggiungi Pulsante a Strings.kt di base (I4a5b7, b/172366489)
- L'elemento nativeClass è stato spostato nel modulo dell'interfaccia utente e lo ha reso interno. Sono stati aggiornati gli utilizzi di nativeClass in modo uguale a implementazioni e usare invece "is MyClass". (I4f734)
- FlowRow e FlowColumn sono state deprecate. Utilizza invece un layout personalizzato. (I09027)
- Modifier.focus() e Modifier.focusRequester() sono deprecati. Usa invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- È stato introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti Selectable a SelectionManager. (I6ff30, b/173215242).
fun Dp.isFinite()
modificato inval Dp.isFinite
(I50e00)- Constraints#formatBy è stato rinominato in isSatisfiedBy. (I9cf5c).
- È stato aggiunto isspecified, isUnspecified e useOrElse per le classi incorporate con una costante non specificata. (I93f7b, b/174310811).
Correzioni di bug
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le sue animazioni. Nuova DecayAnimationSpec per supportare le animazioni di decadimento multidimensionali (I820f2, b/168014930) - Aggiunto il supporto per i campi di testo disattivati e di sola lettura (I35279, b/171040474, b/166478534)
animate()
è ora sostituito conanimateAsState()
, che restituisceState<T>
anzichéT
. Ciò consente prestazioni migliori, poiché l'ambito di annullamento della convalida può essere limitato al punto in cui viene letto il valore State. (Ib179e)- Aggiungi l'API del ruolo Semantics e aggiungi Role come parametro per SemanticsModifier cliccabile, selezionabile e attivabile. È stato modificato Modifier.progressSemantics in modo che anche Slider possa utilizzarlo. (I216cd)
- È ora possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
e androidx.compose.foundation:foundation-layout:1.0.0-alpha09
vengono rilasciati. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
Aggiungi interfaccia scorrevole
In questo modo scrollState e LazyListState vengono considerati come un tipo comune, consentendo l'implementazione dello scorrimento personalizzato in entrambi i tipi.
Questa operazione sposta anche smoothScorriBy in una funzione di estensione su scrollable, usufruendo di questa funzionalità. (I2153b)
LazyVerticalGrid è stato aggiunto. (I17267, b/162213211)
Depreca LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)
Per sospendere le API di input del puntatore, rinominati HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() a awaitPointerEventScope(). (Idf0a1, b/175142755)
È stato aggiunto LazyListState.layoutInfo che mostra l'elenco di dimensioni e offset degli elementi attualmente visibili (If8678, b/170472532)
Rimossa annotazione SperimentalePointerInput (Ia7a24)
È stato aggiunto il supporto InteractionState per i campi di testo. (I61d91)
Aggiungi il parametro reverseLayout per LazyColumn/Riga. quando
true
elementi saranno composti dal basso verso l'alto eLazyListState.firstVisibleItemIndex == 0
il primo elemento si troverà in basso. (I552ae, b/166589935).È stato aggiunto il parametro verticalArrangement per LazyColumn. È stato aggiunto il parametro HorizontalArrangement per LazyRow. La disposizione ci consente di aggiungere uno spazio tra gli elementi e di specificare la disposizione degli elementi quando non ne abbiamo abbastanza per riempire l'intera dimensione minima. (Icf79a, b/170394300).
L'opzione DetectMultitouchTouchs ora usa un callback con parametri combinati di centroid, panoramica, zoom e rotazione. (Ie6e1c).
Abbiamo spostato ContentDrawScope nel modulo UI-Graphic per usare DrawScope. (Iee043, b/173832789).
Correzioni di bug
- I lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755).
Sono stati rimossi SlotTable, SlotReader e SlotWriter dall'API pubblica. Questi sono stati contrassegnati come InternalComposeAPI in precedenza. Ora sono interne al modulo Compose.
ComposeData e ResolutionGroup sono stati aggiunti come sostituzione dell'API ui-toolsing da utilizzare per estrarre le informazioni di composizione. Questi sono pubblici, ma non sono destinati a essere utilizzati al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c)
È stato eseguito il refactoring di ShaderBrush per creare lentamente un'istanza dello ShaderBrush quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire i gradienti che occupano tutti i limiti di disegno di un componibile al momento della composizione, senza dover implementare implementazioni di DrawModifier personalizzate.
API del costruttore di funzioni gradiente deprecate a favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)
Modifier.focusHighlightr è deprecato. Usa invece Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
Aggiunta di dichiarazioni di distruzione per creare istanze FocusRequester (I35d84, b/174817008)
AccessibilityLabel è stata rinominata in contentDescription. accessibilityValue è stata rinominata in stateDescription. (I250f2)
Sono state introdotte diverse nuove funzioni in SelectionRegistrar e si è anche rinominato onPositionChange per notificationPositionChange. (Ifbaf7)
AndroidProprietario inviato come interno (Ibcad0, b/170296980)
Nuova funzione infiniteRipetiable per la creazione di una InfiniterepeatableSpec (I668e5)
L'interfaccia di
Applier
è cambiata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.Un applicatore inserisce nodi nella struttura ad albero modificata utilizzando
insertTopDown()
oinsertBottomUp()
a seconda di quale ha il rendimento migliore.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti da costruire dal basso verso l'alto. Prima di questa modifica, era necessario uno stack di inserti per implementare il modello dal basso verso l'alto, che doveva essere copiato in ogni applicatore che richiedeva una costruzione dal basso verso l'alto per migliorare le prestazioni. Con questa modifica, unApplier
esegue l'override diinsertBottomUp()
per creare un albero dal basso verso l'alto einsertTopDown()
per creare l'albero dall'alto verso il basso. (Icbdc2)È stata aggiunta l'API Painter per gestire il caricamento in modo opaco degli oggetti Painter da formati di asset rasterizzati (come PNG) o VectorDrawables. I consumatori non devono più determinare il tipo di asset in anticipo e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare negli elementi componibili di immagini o nei modificatori del pittore. (I2c703, b/173818471).
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una stringa AnnotatedString. Funzione del generatore annotatedString deprecata. (Idfe0b)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
e androidx.compose.foundation:foundation-layout:1.0.0-alpha08
vengono rilasciati. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Parametro
maxLines
rimosso daCoreTextField
. Se vuoi limitare l'altezza del campo di testo al numero di righe, utilizzaBasicTextField
. (Iec002) - I metodi
await*TouchSlop()
sono stati modificati in modo da non rilevare il puntatore verso il basso e sono stati rinominati*OrCancellation
. È stato inoltre rimosso il 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.
È stata anche eseguita la migrazione di alcune API utilizzando
children
come nome del lambda finale incontent
, secondo le indicazioni e il controllo del lint. (Iec48e). foundation:foundation-text
API spostate infoundation:foundation
. La struttura del pacchetto è rimasta la stessa (Id3eb2)- Nuovo rilevatore di gesti multi-touch, con strumenti per rilevare la rotazione, lo zoom e la panoramica. (Ic459d)
- Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25).
- VectorAsset rinominato in ImageVector Spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida del consiglio API. Aggiunto l'alias di tipo VectorAssetBuilder per il collegamento a ImageVector.Builder per la compatibilità. (Icfdc8)
- ImageAsset e i relativi metodi sono stati rinominati in ImageBitmap. (Ia2d99).
- Proprietà della semantica di base spostate nell'UI (I6f05c)
Aggiungi API di scorrimento basate sulla coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothscrollBy, oltre alle API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il termine dello scorrimento prima di tornare. (Ie5642)
È stato aggiunto un parametro singeLine in BasicTextField, TextField e OutlineTextField. Imposta questo parametro su true per rendere il campo di testo una singola riga scorrevole orizzontalmente. (I57004, b/168187755)
I rilevatori di gesti per le indicazioni di tocco, doppio tocco, pressione prolungata e pressione sono stati aggiunti utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere i propri rilevatori di gesti. (I00807)
Modifier.focusable deve essere aggiunto negli elementi di base. Utilizzalo per aggiungere comportamenti attivabili a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824).
Le API deprecate in precedenza sono state rimosse: il bordo è stato rimosso. Usa invece BorderStroke. Modifier.drawBorder è stato rimosso, usa invece Modifier.Border. Modifier.gravity è stato rimosso. Usa invece Modifier.align. Lo stack è stato rimosso. Utilizza Box (I32c2b, b/172470874)
TotalArrangement è stato rinominato in Arrangement.assoluta. (If26f2)
Correzioni di bug
- API DrawModifier spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. Creato il file DrawModifier Deprecato.kt per includere i metodi typealiases/helper al fine di facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
- Rinominato Modifier.drawlayer in Modifier.graphics Layer Aggiornato anche le classi correlate in Graphicslayer in base ai feedback del consiglio delle API. (I0bd29, b/173834241).
- L'elemento
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Puoi utilizzarla senza specificare un tipo ora. (Ib60c8). - Rendere non null sui campi di uptime e posizione di PointerInputData. (Id468a)
- MaterialTheme ora imposta i colori corretti per i punti di manipolazione di selezione e lo sfondo di selezione. Le app che non includono materiali possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907).
- Il parametro di allineamento di Box è stato rinominato in contentAllineament. (I2c957)
- i modificatori offsetPx sono stati rinominati in offset. Ora utilizzano i parametri lambda anziché State. (Ic3021, b/173594846).
- Sono stati aggiunti WindowManager.isWindowFocused per controllare se la finestra host è in stato attivo e un WindowFocus rispettanor che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874).
- Parametro resetInput aggiunto a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- API TextFieldValue aggiornata
- reso di sola lettura TextFieldValue.composition
- viene generata un'eccezione rimossa per l'intervallo di selezione non valido (I4a675, b/172239032)
- Gli Ambient obsoleti hanno come suffisso il nome
Ambient
e sono stati sostituiti con nuove proprietà con prefisso Ambient, in base ad altre linee guida relative all'API Ambient e Compose. (I33440) - Aggiunto wrapper per il carattere tipo di Android. Puoi caricare un tipo di carattere Android tramite la funzione
typeface
, ad esempiotypeface(Typeface.DEFAULT)
. AnchetypefaceFromFontFamily()
è stato rinominatotypeface()
(I52ab7) - È stato aggiunto un controllo lint per verificare che le fabbriche di modificatori utilizzino
androidx.compose.ui.composed {}
internamente, anziché essere contrassegnate come@Composable
. (I3c4bc) - È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica del Modificatore siano definite come estensioni su Modificatore, in modo che possano essere concatenate fluentemente. (I07981)
- L'argomento semantico mergeAllDescendants è stato rinominato mergeDescendants. (Ib6250)
- Il controllo temporale nei test (TestAnimationClock e relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- TextUnit.Inherit viene rinominata in TextUnit.Unspecified in linea con le altre unità. (Ifce19).
- L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
foundation:foundation-text
modulo è stato unito infoundation:foundation
(Idac0f)- Depreca luogo(Offset) e placeRELATIVE(Offset). Utilizza invece sovraccarichi con offset int (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
vengono rilasciati. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- Analogamente a
Modifier.fillMaxSize[Width|Height]
, ora sono supportate le frazioni inModifier.fillParentMaxSize[Width|Height]
nell'ambito diLazyColumn/Row
(I797e2, b/166586426) KeyboardOptions.toImeOptions
rimosso dall'API pubblica. (Ic2e45).- Gli elementi di base AmbientTextStyle, ProvideTextStyle e AmbientContentColor sono stati ritirati. Utilizza invece le nuove versioni disponibili nella libreria Material. Per le applicazioni non Material, dovresti invece creare un tuo sistema di progettazione per ambienti a tema che può essere utilizzato nei tuoi componenti. (I74acc, b/172067770)
- Foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base non limitata che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb).
- Aggiunti maxLines ai campi di testo (Ib2a5b)
- Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
- Aggiunta KeyboardOptions per l'utilizzo nei campi di testo (I9ca32)
- Aggiunge BasicText come API senza progettazione per il testo, parallela a BasicTextField. (I28268)
- L'annotazione sperimentaleLazyDsl è stata rimossa. Ora è possibile utilizzare LazyColumn/LazyRow senza aggiungere @OptIn (Idab7a, b/166584730)
- BaseTextField è stato ritirato. Utilizza BasicTextField. (I896eb)
- BasicTextField è stato aggiunto in sostituzione di CoreTextField e BaseTextField (Id4cea)
- Rimuovi LazyColumnItems/LazyRowItems obsoleto (I1d8a8)
- Gli elementi componibili ritirati per il dimensionamento secondo misurazioni intrinseche sono stati rimossi. (I18537, b/171811496)
- relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per semplificare la specifica delle distanze dai limiti del layout alle basi del testo. (I0440a, b/170633813).
- Il parametro matchHeightConstraintsFirst è stato aggiunto al modificatore proporzioni, che può essere utilizzato per specificare il modificatore di dimensioni in base ai vincoli di altezza prima di provare i corrispondenti di larghezza. (Ie7c43, b/155290593).
- I DpConstraints ritirati sono stati rimossi. (I87884, b/171702471)
Correzioni di bug
- È stata introdotta la classe in linea ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro e per supportare casi d'uso di scalabilità non uniforme.
- È stato aggiunto il metodo computeScaleFactor a ContentScale
- Sono stati aggiunti ContentScale.FillBounds per eseguire una scalabilità non uniforme in modo da estendere i limiti src per occupare completamente la destinazione.
- Sono stati aggiunti metodi dell'operatore per calcolare i parametri ScaleFactor con i parametri per le dimensioni.
- (Ic96a6, b/172291582).
- CaptureToBitmap spostato in CaptureToImage. (I86385)
- Contrassegna CoreText come @InternalTextApi. Utilizza BasicText. (I6aaeb)
- Rinomina KeyboardOptions come ImeOptions (I82f36)
- Spostamento di KeyboardType e ImeAction in KeyboardOptions (I910ce)
- CoreTextField è stato contrassegnato come @InternalTextApi. Utilizza invece BasicTextField (Ie2469)
- L'annotazione sperimentaleSubcomposeLayoutApi è stata rimossa. Ora è possibile utilizzare SubcomposeLayout senza aggiungere @OptIn (I708ad)
- Introduci il modulo ui-test-junit4 (Ib91f8)
- API Icona aggiornata in modo da acquisire Color.Non specificato come possibile colore di tinta che consente di disegnare l'asset o il disegno fornito senza ColorFilter. In precedenza, tenta di ignorare la colorazione con Colore.Non specificato potrebbe applicare un colore trasparente alla fine senza alcun rendering. (I049e2, b/171624632).
- MeasureResult è stato rimosso da MeasureScope. (Ibf96d, b/171184002)
- Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424).
- androidx.ui.test spostato in androidx.compose.ui.test (I9ffdb)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- Aggiunto SelectionContainer senza il callback (Ibfadb)
- Aggiungi test per le posizioni di SelectionHandles in SelectionContainer. (Ie93db)
- Aggiunta l'opzione IME di correzione automatica della tastiera (I57b8d)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
e androidx.compose.foundation:foundation-text:1.0.0-alpha06
vengono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Il dominio androidx.compose.foundation.Icon è stato spostato in androidx.compose.material.Icon. Puoi anche usare il componente Immagine / Modifier.paint() con un pittore se non vuoi usare la libreria Material. (I9f622).
- Aggiunto lo stato di interazione a Modifier.scrollable, ScorribileColumn e LazyColumnFor (I81566, b/169509805)
- allineareByBaseline è stato aggiunto a RowScope e allineaWithSiblings è stato rinominato in allineatoBy (I06503, b/170628732)
- Box è stato impostato come funzione in linea. (Ibce0c, b/155056091).
- Aggiunto maxLines a CoreTextField (Ibee58, b/143687793)
- È stato aggiunto il softwrap a CoreTextField. (I21a4b).
Correzioni di bug
- Ritira VectorPainter in favore di promemoria per ricordareVectorPainter per indicare meglio che l'API componibile sfrutta internamente la funzionalità "ricorda" di rendere i dati persistenti in più composizioni. (Ifda43)
- Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- Aggiunta dell'opzione per la tastiera a riga singola a CoreTextField (I72e6d)
- L'API Radius è stata rinominata CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. È stata aggiornata la documentazione per indicare che i raggi degli angoli negativi sono fissati a zero. (I130c7, b/168762961).
- Aggiungi la possibilità di specificare le informazioni sullo ispettore nel modificatore composto (Idee08, b/163494569)
- Aggiunta l'opzione IME KeyboardCapitalization (I8ac38)
- Correggi la posizione della maniglia RTL. (I6e1e0).
- Modifica che provoca un errore: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che può essere modificato negli eventi puntatore sono i dati relativi al consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora è sufficiente modificare i dati di consumo degli eventi PointerEvents trasmessi. (I6acd0).
- Aggiunta dell'opzione SelectAll nel menu di selezione (Ief02b)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
e androidx.compose.foundation:foundation-text:1.0.0-alpha05
vengono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- CoreTextField ora supporta la funzionalità cursore (Id23aa)
Depreca le API contentColor() e currentTextStyle() e le sostituisce rispettivamente con gli ambienti AmbientContentColor e AmbientTextStyle. Puoi accedere al valore corrente usando
.current
nella proprietà Ambient, come con qualsiasi altro Ambient. Questa modifica è stata introdotta per garantire la coerenza e evitare di avere più modi per ottenere lo stesso risultato. Inoltre, rinomina alcune proprietà Ambient per descriverne meglio lo scopo, come segue:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Correzioni di bug
- Nell'ambito della standardizzazione dei valori sentinel per le classi in linea, cambia il nome Color.Unset.Unset.Unspecified per la coerenza con altre classi in linea (I97611, b/169797763)
- Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Viene introdotto TextOverflow.None. Quando l'overflow è impostato su Nessuno, il testo non gestirà più l'overflow e ne segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170).
- I parametri non specificati sono stati aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per confrontarle con le dimensioni.Non specificate e quelle non finite. (I95a7e).
- Aggiunto il modulo Scrittura per le pagine e l'integrazione del paging (Ib85da)
- Modifica LazyListScope per ricevere valori nullable (I1765b)
- OnPositionedModifier è stata rinominata OnGloballyPositionedModifier e onPositioned() è stata rinominata onGloballyPositioned() (I587e8, b/169083903).
- Esempi aggiunti per LazyColumn/Row (Idc16d)
- Correzione degli elementi e dei metodi itemsIndexed per consentire l'uso di emptyList (I06647)
- Aggiungi una DSL per specificare le informazioni del controllore (Ic9a22)
- Sposta Premi a lungo nel testo. (Iff2bc).
- Disabilita selezione nel testo e una demo. (Ie7e97)
- È supportato la conversione da AnnotatedString a SpannableString per l'accessibilità. (Ief907)
PointerInputFilter.onPointerInput(...)
rimosso. Al suo posto, deve essere utilizzatoPointerInputFilter.onPointerEvent(...)
. (I6f04a).
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
e androidx.compose.foundation:foundation-text:1.0.0-alpha04
vengono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- Lo stack è stato rinominato in Box. Il formato Foundation.Box precedentemente esistente verrà ritirato e sostituito con il nuovo Box in Composer.foundation.layout. Il comportamento del nuovo Box è quello di impilare gli elementi secondari uno sopra un altro quando sono presenti più elementi secondari. Questo è diverso dal precedente riquadro, che si comportava in modo simile a quello di una colonna. (I94893, b/167680279)
- I parametri per la decorazione della casella sono stati ritirati. Se vuoi includere decorazioni/spaziature sulla scatola, usa i modificatori (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279)
- Aggiungi una nuova classe LazyListState. Ciò consente di osservare e controllare la posizione di scorrimento dei componenti LazyRow e LazyColumn. Le istanze possono essere create utilizzando rememberLazyListState() e passate al parametro di stato del componente. Attualmente, il primo elemento visibile e gli offset possono essere osservati in questa versione iniziale. (Ic7cb7, b/159307669).
- La posizione dell'elenco lento e l'offset di scorrimento vengono ora salvati e ripristinati nella ricreazione attività (Ie045f, b/166589058)
- Aggiungi un'azione di semantica dei clic lunghi (I6281b, b/156468846)
- Utilità Mutatormux aggiunta per mantenere un singolo mutatore di stato condiviso nel tempo e annullare mutatori in conflitto in base alla priorità (I3f975)
- rootAnimationClockIndustry, TransactionsEnabled, blinkingCursorEnabled e textInputServiceService con @VisibileForTesting con annotazioni, impostali come API interna e nascondi il relativo file kdoc (I554eb, b/168308412)
- Parametro inlineContent rimosso dal testo con input di stringa. Non verrà utilizzato perché inlineContent deve funzionare con AnnotatedString. (Ief403)
- Le API Arrangement personalizzate ritirate sono state rimosse. (Ic576d, b/168297922, b/168297923).
- Il parametro
unbounded
è stato aggiunto ai modificatori wrapContentSize, che consentono di misurare l'elemento del layout con vincoli massimi infiniti. (I77951, b/158559319) - Abbiamo impedito le importazioni statiche dei contenuti degli ambiti del layout (ad es. allineatoWithSiblings in RowScope). Usa invece l'alternativa con ambito esplicito:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Correzioni di bug
- Aggiornamento di molte API grafiche.
- Le API di scala e trasformazione della rotazione sono state aggiornate per utilizzare un singolo parametro di offset per rappresentare la coordinata pivot invece di parametri float separati per le coordinate x/y in DrawScope e DrawTransform
- Rimossi i metodi Rect.expandToInclude e Rect.join
- La documentazione relativa al raggio è stata aggiornata per indicare ovale oltre che ellittica
- È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius in linea non deve essere chiamato direttamente, ma dovrebbe invece essere creato un'istanza degli oggetti Raggio tramite i rispettivi costruttori delle funzioni
- Rimosse le API RoundRect per eseguire query su topRight, bottomRight, belowCenter e così via.
- Rect.shift obsoleto a favore di Rect.translate
- Rimosse le API RoundRect.grow e Rect.shrink
- RoundRect.outerRect rinominato in Rect.boundingRect
- Metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium rimossi
- Rinominato RoundRect.longestSide in RoundRect.maxDimensione
- RoundRect.shortestSide rinominato in RoundRect.minDimensione
- RoundRect.center modificato in una proprietà anziché una funzione
- Il costruttore RoundRect è stato aggiornato per utilizzare le proprietà Raggio anziché i parametri singoli per i valori del raggio x/y
- Rimosse le API per le dimensioni che presupponevano che fosse un rettangolo con origine pari a 0,0
- È stata aggiunta un'API di distruzione a Radius
- Migrato varie funzioni di estensione RoundRect in proprietà in proprietà
- (I8f5c7, b/168762961).
- Ottimizzazioni delle prestazioni per LazyColumnFor/LazyRowPer lo scorrimento evitando ricomposizioni non necessarie durante ogni scorrimento (I64f65, b/168293643, b/167972292, b/165028371)
- È stato risolto l'arresto anomalo in LazyColumnFor/LazyRowFor dopo lo scorrimento e la modifica degli elementi e dopo aver implementato lo scorrimento automatico verso l'alto quando l'elemento precedentemente visibile era stato rimosso, in modo da non mostrare più spazi vuoti alla fine (I220ab, b/161480164, b/167855468)
- La nidificazione di contenitori scorrevoli nella stessa direzione, come ScorribileContainer e LazyColumnFor, non è più consentita. Non era mai supportato e stava rompendo l'avventura e tutta la pigrizia di comporre gli elementi di LazyColumnFor (I6e101)
- Aggiornamento di molte API grafiche.
- Sono state aggiornate le API DrawScope con metodi di trasformazione basati sull'ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo che il callback è stato richiamato.
- La documentazione di clipPath è stata aggiornata per fare riferimento al percorso invece che al rettangolo arrotondato
- Spaziatura fissa nella documentazione per il parametro corretto in clipPath
- Rinominato DrawScope.drawCanvas inDrawScope.drawCanvas e rimosso il parametro di dimensione
- Parametri dx/dy rinominati nel metodo inset in orizzontale e verticale
- Aggiunto un sovraccarico che fornisce lo stesso valore di inserimento a tutti e 4 i limiti
- È stata rimossa la documentazione sul metodo inset che indica che il riquadro sarebbe applicato a tutti e 4 i lati
- Documentazione aggiornata per la classe Rect
- Commenti aggiornati sui parametri rettangolari in modo che corrispondano allo stile kdoc
- Rimossi Rect.join e Rect.expandToInclude
- Sovraccarico creato per Rect.translate(offset) e deprecato Rect.shift
- (If086a, b/167737376).
- aggiungere AccessibilityScorriState alle proprietà semantiche. (Ifeda9).
- Rendi TextRange in linea per evitare la creazione di oggetti. (Id034b)
- ParagraphConstraints rimosso. Ora la larghezza viene passata direttamente al paragrafo. (Ica712)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
e androidx.compose.foundation:foundation-text:1.0.0-alpha03
vengono rilasciati. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- InnerPadding è stato rinominato in PaddingValues. (I195f1, b/167389171).
- Gli usi della gravità sono stati costantemente rinominati per allineare o allineare nelle API di layout. (I2421a, b/164077038).
- È stato aggiunto un parametro di allineamento allo stack, che consente di specificare l'allineamento predefinito per tutti gli elementi secondari dello stack. (Ie80ca, b/164085265).
Correzioni di bug
- I DpConstraint e le API che lo utilizzano sono stati deprecati. (I90cdb, b/167389835).
- I parametri
minWidth
emaxWidth
diwidthIn
sono stati rinominati inmin
emax
. Analogamente perpreferredWidthIn
,heightIn
,preferredHeightIn
. (I0e5e1, b/167389544). - Sono stati aggiunti onNode e altri metodi globali su ComposeTestRule perché quelli globali attuali verranno ritirati. (Ieae36).
- Sono stati corretti i calcoli della posizione e delle dimensioni in Gestoscopio, che causavano, tra le altre, la generazione di gesti di scorrimento non validi (Iaf358, b/166589947)
- Elementi
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
e androidx.compose.foundation:foundation-text:1.0.0-alpha02
vengono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.
Correzioni di bug
- TestUiDispatcher è contrassegnato come sperimentale (Iae99d, b/161247083)
È stato aggiunto
ManualFrameClock.hasAwaiters
per vedere se c'è 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 supervisore dell'interfaccia utente principale nei tuoi test.Ecco alcuni esempi:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
(I0a85b, b/161247083).
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
e androidx.compose.foundation:foundation-text:1.0.0-alpha01
vengono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
e androidx.compose.foundation:foundation-text:0.1.0-dev17
vengono rilasciati. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
- È stata aggiunta la disposizione SpacedBy per Riga e Colonna, in modo da attivare gli elementi secondari del layout di posizionamento con una spaziatura fissa. È stato aggiunto anche il layout allineato, per consentire il posizionamento degli elementi secondari del layout uno accanto all'altro e allineati nella riga/colonna in base a un allineamento. I precedenti metodi Arrangement.Vertical#arrange e Arrangement.Horizontal#arrange sono stati ritirati e la scrittura di arrangiamenti personalizzati non sarà più supportata in futuro. (I6733d, b/161985975)
- L'offset è diventato una classe in linea (Iaec70)
- Rimossi i callback onFocusChanged da TextField. Al suo posto utilizza Modifier.focusObservationr. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Usa invece Modifier.Border. La classe dei dati di confine è stata sostituita da BorderStroke (I4257d, b/158160576)
- VerticalScorrier e HorizontalSlideer sono stati rimossi. Utilizza invece SlideableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
- Rimuovi i modificatori FillMax* contrassegnati come deprecati da LazyItemScope, in quanto rendono più difficile l'aggiunta corretta di questi modificatori per gli elementi che non sono elementi secondari diretti di LazyColumnFor (Ifa78d)
- aggiunta dell'implementazione LazyColumn/LazyRow come DSL (I93cc6)
- I vincoli sono ora una classe integrata (I88736)
- È stata aggiunta la possibilità di ridimensionare un layout per una frazione dello spazio disponibile, utilizzando i modificatori FillMaxLarghezza, FillMaxHeight e FillMaxSize. (I945bb, b/161562591).
Correzioni di bug
- È stato aggiunto un parametro di modifica a SelectionContainer (I4aada, b/161487952)
- È stato aggiunto il comando lambda mergePolicy a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per l'unione della semantica mergeAllDescendants. Il criterio predefinito prevede l'utilizzo del valore padre se già presente, altrimenti il valore figlio. (Iaf6c4, b/161979921).
PlacementScope.placeAbsolute()
è stato rinominato inPlacementScope.place()
, mentre il precedentePlacementScope.place()
è stato rinominato inPlacementScope.placeRelative()
. Di conseguenza, il metodoPlacementScope.place()
non esegue più automaticamente il mirroring della posizione in contesti da destra a sinistra. Se vuoi, utilizzaPlacementScope.placeRelative()
. (I873ac, b/162916675)- Rimosso il componente FilledTextField obsoleto. Al suo posto, utilizza TextField per ottenere l'implementazione di Material Design del campo di testo compilato. (I5e889).
- È stato aggiunto il parametro backgroundColor a LinearProgressIndicator e è stato rimosso la spaziatura interna interna da CircolareProgressIndicator. Sono stati aggiunti nuovi valori ProgressIndicatorCosts.DefaultProgressAnimationSpec che possono essere utilizzati come AnimationSpec predefinita durante l'animazione dell'avanzamento tra i valori (If38b5, b/161809914, b/161804677)
- Per chiarezza, l'elemento componibile
state { ... }
è stato ritirato a favore di chiamate esplicite aremember { mutableStateOf(...) }
. In questo modo si riduce la superficie API complessiva e il numero di concetti per la gestione dello stato e corrisponde al patternby mutableStateOf()
per la delega delle proprietà di classe. (Ia5727) - Ridenominazione di RRect in RoundRect per adattarsi meglio ai pattern di denominazione della composizione Creazione di costruttori di funzioni simili a RRect e costruttori di funzioni RRect deprecati (I5d325)
- Rimosso onChildPositioned e OnChildPositionedModifier. Gli sviluppatori dovrebbero usare onPositioned e OnPositionedModifier nel layout secondario. (I4522e, b/162109766).
- IntSize ora è una classe in linea (I2bf42)
- Premi a lungo l'area vuota per modificarla. (Ib1e5b).
- Nascondi FloatingToolbar dopo aver toccato il testo. (If4525)
- Nascondi FloatingToolbar durante l'aggiornamento della selezione. (I8444c)
- Deseleziona quando sfoca. (I781a2)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
e androidx.compose.foundation:foundation-text:0.1.0-dev16
vengono rilasciati. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
- LazyItemScope è stato aggiunto per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima dell'elemento, che risolve il caso d'uso in cui l'elemento deve riempire l'area visibile e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854).
- Sposta la finestra di dialogo nell'UI (I47fa6)
- Sono state aggiunte LazyColumnForIndexed/LazyRowForIndexed: versioni di LazyColumnFor/LazyRowFor che fornisce sia indice che elemento nell'elementoCallback. È utile quando, oltre a un elemento corrente, hai bisogno di conoscere un indice corrente. (I65ff3)
- Modifier.deternimateProgress è stato rinominato Modifier.progressSemantics (I9c0b4)
- LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stata rinominata in LazyRowFor (I84f84)
- Aggiungi alcuni segni/annotazioni come motivo di best practice. (I66b20)
- Il pacchetto Foundation.shape.corner è appiattito a Foundation.share (I46491, b/161887429)
- Aggiunto il parametro di gravità сrossaxis per LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ora supporta il comportamento a capo dei contenuti. (Ib39fc)
- ZoomableState è stato rinominato ZoomableController. È stato aggiunto il supporto delle curve personalizzate per smoothScale. Sono state aggiunte le funzionalità
enabled
eonZoomStarted
(If8b8f) - Material FilledTextField è stato rinominato TextField e il Foundational TextField è stato rinominato BaseTextField per rendere più semplice l'individuazione e l'utilizzo dell'API desiderata (Ia6242, b/155482676)
- L'elenco AdapterList deprecato in precedenza è stato rimosso. Utilizza LazyColumnItems (I12b9b)
- Modifier.drawBackground è stato rinominato Modifier.background (I13677)
- La versione DSL precedente di ConstraintLayout è stata rimossa. ConstraintSet2 è stato rinominato ConstraintSet. (If58d1, b/162450908)
- Sono stati aggiunti Modifier.absoluteOffset() e Modifier.absoluteOffsetPx(). A differenza dei modificatori di offset, i modificatori di offset assoluto non eseguono il mirroring automatico nel contesto da destra a sinistra (I3aa21)
Row
eColumn
sono ora funzioni incorporate per ridurre in modo significativo l'overhead associato al loro utilizzo. (I75c10)
Correzioni di bug
- Risolvi i problemi generici dell'API (I077bc)
- Rimuovi l'interfaccia OffsetBase inutilizzata
- Allinea le classi Offset e IntOffset per avere una superficie API coerente
- Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
- Spostamento del metodo nativeCanvas dall'interfaccia Canvas per supportare i consumatori nella creazione
- È stata creata la classe SvuotaCanvas dello stub per refactoring DrawScope in modo che sia un parametro non null anziché lateinit e garantire che il campo non sia nullo
- Enum ClipOp rinominate in Pascal Case
- Le enumerazioni del campo Qualità dei filtri sono state rinominate in Pascal Case
- Enumerazioni Strokejoin rinominate in Pascal Case
- Le enumerazioni di PointMode sono state rinominate in Pascal Case
- Le enumerazioni PaintingStyle rinominate in Pascal Case sono state rinominate
- Le enumerazioni PathFillType rinominate in Pascal Case sono state rinominate
- Le enumerazioni di StrokeCap rinominate in Pascal Case sono state rinominate
- L'implementazione di DrawCache è stata aggiornata per non usare più i parametri lateinit
- Aggiornamento di DrawScope per non usare più la delega lazy per i parametri interni di FillPaint e StrikePaint
- Aggiornata l'immagine componibile per evitare l'uso di Box con meno overhead
- Classe Outline aggiornata in modo che abbia annotazioni @Immutable
- PathNode aggiornato per avere annotazioni @Immutable per ogni istruzione del percorso
- La sottocomposizione vettoriale è stata aggiornata per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
- Metodi del costruttore companion rettangoli deprecati a favore di costruttori di funzioni
- Sono stati aggiornati i costruttori di funzioni e le classi Brush con le API @Immutable e @Stable
- È stata aggiornata l'enumerazione di VertexMode in PascalCase
- Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto nel dipinto se sono
- Dimensione aggiornata per aggiungere l'API distruttiva, rinomina UnspecifiedSize in Non specificato e rimosso i metodi inutilizzati
È stato aggiunto MonotonicFrameAnimationClock che consente di utilizzare MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora i vecchi orologi basati su callback.
L'equivalente MonotonicFrameClock di ManualAnimationClock è ora ManualFrameClock. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
rimosso. Usa inveceSemanticsNodeInteraction.performGesture
. (Id9b62)Rinominato
SemanticsNodeInteraction.getBoundsInRoot()
inSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Le API per il supporto da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
Modifier.plus è stato ritirato. Usa invece Modifier.then. "Quindi" ha un segnale di ordinamento più forte, mentre vieta di digitare
Modifier.padding().background() + anotherModifier
, il che spezza la catena e più difficile da leggere (Iedd58, b/161529964)Aggiunti
isFocused()
eisNotFocused()
SemanticsMatcher. (I0b760)RemeasurementModifier è stato aggiunto. Consente agli utenti di rimisurare il layout in modo sincrono. In generale, non è mai necessario poiché la nuova misurazione/il relayout avviene automaticamente, ma li utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
Ora isSystemInDarkTheme ora considera sempre l'impostazione del tema scuro a livello di sistema e ignora lo stato di risparmio energetico prima del giorno Q, seguendo le indicazioni più recenti. (I0c10c)
L'API OnChildPositioned è stata ritirata. Usa invece OnPositioned per il riquadro secondario. (I87f95, b/162109766).
Il nome AndroidComposeTestRule è stato rinominato in createAndroidComposeRule. (I70aaf)
Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
e androidx.compose.foundation:foundation-text:0.1.0-dev15
vengono rilasciati. La versione 0.1.0-dev15 contiene questi commit.
Per utilizzare la versione 0.1.0-dev15
di Compose, devi:
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.
Modifiche alle API
- Analogamente al nuovo parametro in scrollableColumn/scrollableRow LazyColumnItems/LazyRowItems ora dispone anche il parametro contentPadding che consente di aggiungere una spaziatura interna per i contenuti dopo l'eliminazione del tag, cosa che non è possibile solo tramite un parametro di modifica. Inoltre, consente di aggiungere una spaziatura solo prima del primo/dopo l'ultimo. (Ibc24e).
- Callback onFocusChange nei campi di testo rinominati onFocusChanged (Ida4a1)
- VerticalScorrier e HoriziontalScorrier sono stati ritirati. Utilizza scrollableColumn e scrollableRow per usufruire di un'esperienza integrata con il comportamento e i parametri di colonne/riga oppure con Modifier.verticalscroll e Modifier.Horizontalscroll per il tuo elemento. Allo stesso modo, scrollerPosition è stato ritirato a favore di scrollState" (I400ce, b/157225838, b/149460415, b/154105299)
- Le API Modifier.draggable e Modifier.scrollable sono state rielaborate. È stata rimossa la direzione di trascinamento a favore dell'orientamento. Lo stato richiesto per l'opzione Scorribile è stato semplificato. scrollableState è stato rinominato in scrollableController (Iab63c, b/149460415)
- Le proprietà della semantica a valore singolo ora utilizzano uno stile di chiamata.
Ad esempio, l'attributo 'semantics {hidden = true }" è ora scritto come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412). - Le dimensioni degli angoli utilizzate da RoundedCornerShape e CutCornerShape possono ora essere superiori al 50% (Id2340, b/160400213)
- È stato modificato il parametro predefinito ContentScale per l'immagine componibile da Inside a Fit. Questo avviene per ottenere un comportamento che faccia lo scale up della pittura sottostante se la dimensione del layout è superiore a quella intrinseca del pittore, mantenendo al contempo le proporzioni. Questo comportamento corrisponde meglio alle aspettative di fornire dimensioni fisse all'immagine, senza influire sul comportamento predefinito, se per calcolare le dimensioni dell'elemento componibile viene utilizzata solo la dimensione intrinseca. (I40ae3, b/159838006).
- Usa AnimationSpec invece di AnimationBuilder nelle API di primo livello per chiarire il concetto di specifica dell'animazione statica -Migliora la transizione DSL rimuovendo il requisito lambda per creare AnimationSpecs come tween, spring. ma prendono direttamente i parametri del costruttore. - Migliorare la facilità d'uso complessiva di AnimationSpec aprendo i costruttori invece di affidarsi ai costruttori -Modificare la durata e il ritardo di KeyFrames e Tween to Int. Ciò consente di eliminare cast di tipi non necessari e il sovraccarico del metodo (per il supporto sia di Long che di Int). (Ica0b4).
- L'opzione Cliccabile è stata rimossa. Usa Modifier.clickable (I84bdf)
- Aggiunto LazyRowItems, analogico a scorrimento orizzontale di LazyColumnItems (Ibbcf7)
- Introduzione delle API di animazione stateless di basso livello. Queste API (I63bf7)
- androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i componibili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- È stato sostituito l'utilizzo di IntPx con l'opzione IntPxPosition sostituita con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44).
- androidx.ui.foundation.shape.RettangoloShape rimosso; usa androidx.ui.graphics.RettangoloShape (I94939, b/154507984)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe size anziché di PxSize. Ciò offre i vantaggi di una classe in linea di utilizzare una classe long per comprimere 2 valori in virgola mobile per rappresentare la larghezza e l'altezza rappresentate come valori in virgola mobile. (Ic0191)
- Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché di PxPosition. Ciò offre i vantaggi di una classe in linea di sfruttare una long per comprimere 2 valori in virgola mobile per rappresentare gli offset x e y rappresentati come valori in virgola mobile. (I3ad98)
- Aggiunta di Modifier.zoomable per la funzionalità Pizzica per lo zoom (Id5d63)
- Il componente attivabile è deprecato. Utilizza Modifier.toggleable (I35220, b/157642842)
- L'API MutuallyEsclusivaSetItem è stata ritirata. Utilizza Modifier.selectable. (I02b47, b/157642842).
- Il tag TestTag è stato ritirato. Al suo posto, utilizza Modifier.testTag. (If5110, b/157173105)
- Aggiunge il parametro fontWeight a Text, che non era stato aggiunto per errore in precedenza (I56937)
- Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I19d02)
- VerticalScorrier ora fornisce Colonna fin dall'inizio. HorizontalSlideer ora offre Row per impostazione predefinita. (Ieca5d, b/157020670).
- Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (Iede0b)
- Modifier.indication è stata aggiunta al pacchetto di base. Utilizzala per mostrare indicazioni di pressione/trascina o altre indicazioni sugli elementi con cui è possibile interagire personalizzati (I8425f, b/155287131).
- VerticalScorrier e Horizontalscroller ora supportano lo scorrimento invertito. IsReversed è impostato su scrollerPosition (I953bd)
- Supporto dell'aggiunta di elementi componibili al layout di testo. (I1373c)
- ha consolidato le implementazioni di CanvasScope, quindi ora sono disponibili solo DrawScope e ContentDrawScope rinominata CanvasScope in DrawScope. Aggiornamento di DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. La sottoclasse DrawScope eliminata in ContentDrawScope Painter e PainterModifier è stata aggiornata in modo da non mantenere più una proprietà RTL, in quanto DrawScope lo fornisce già senza fornirla manualmente (I1798e)
- È stata rimossa l'API DrawBackground deprecata a favore delle API di estensione DrawBackground su Modifier. Il refactoring delle implementazioni di disegnoBackground di colori, pennelli e colori per ridurre i percorsi di codice e rimuovere il requisito della creazione di Modificatore come parte della composizione. (I0343a)
- Sono state aggiornate le API di composizione di livello superiore che espongono CanvasScope per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che devono comunque accedere a Canvas possono utilizzare il metodo dell'estensione disegnoCanvas, che offre un callback per inviare i comandi di disegno con Canvas sottostante. (I80afd)
- HorizontalScorrier e VerticalScorrier non ripristina la posizione di scorrimento utilizzando lo stato dell'istanza salvata. (Ia0fae, b/155075048).
- FocusManagerAmbient è stato rimosso. Utilizza FocusModifier.requestFocus per ottenere lo stato attivo. (Ic4826)
- Il layout della tabella è stato rimosso temporaneamente finché non lo renderemo di nuovo disponibile con un'API aggiornata. (Id88a7)
Creazione dell'API CanvasScope che esegue il wrapping di un oggetto Canvas per esporre una superficie API di disegno dichiarativo e stateless. Le trasformazioni sono contenute all'interno del loro ambito di ricezione e le informazioni sulle dimensioni hanno anche l'ambito dei corrispondenti limiti inseriti. Non richiede che un consumer mantenga il proprio oggetto stato Paint per configurare le operazioni di disegno.
È stato aggiunto CanvasScopeSample e è stata aggiornata l'app demo per includere una demo di grafica dichiarativa (Ifd86d)
L'elemento ColoredRect è stato rimosso. Casella utente con modificatore disegnoBackground (I983c7, b/152753731)
Aggiungi la personalizzazione del colore del cursore al campo di testo (I6e33f)
Ora è possibile nascondere/mostrare la tastiera del software utilizzando SoftwareKeyboardController, fornito da onTextInputStarted callback (I8dc44, b/151860051)
TextFieldValue utilizzato con TextField ora può essere sopravvissuto alla ricreazione dell'attività quando utilizzato nel seguente modo:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Aggiunge parametri di uso comune a Text(). Se stai creando uno stile di testo locale per passare un numero ridotto di questi parametri, ad esempio
Text(style = TextStyle(textAlign = TextAlign.Center))
, ora puoi fornire direttamente i parametri:Text(textAlign = TextAlign.Center)
(I82768)Il parametro CoreTextField/TextField focusIdentifier è stato sostituito con FocusNode per l'integrazione con il sottosistema di focus. (I7ea48).
Aggiornamento di TextField: nella dimensione orizzontale occuperà tutto lo spazio disponibile che gli è stato concesso (Ib08df, b/154638552)
Aggiunte InteractionState e Interaction, per semplificare la creazione di componenti che reagiscono ai cambiamenti dello stato dell'UI, come la pressione e il trascinamento (Icfe25, b/152525426)
RettangoloShape spostato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984).
Sostituiti tutti gli utilizzi di colori con valori null nell'API con valori non null e utilizza Color.Unset anziché null (Iabaa7)
Aggiornamento dell'API TextField: i callback onFocus e onBlur sono stati uniti in un unico callback onFocusChange(Boolean) con parametro (I66cd3)
Ridenominazione di ScaleFit a ContentScale. Spostato ContentScale da interfaccia grafica a modulo ui-core per risiedere nello stesso modulo dell'API Allineamento. Rinominato FillMaxDimensione in Ritaglia Rinominato FillMinDimensione per Adatta Rinominato Adatta a interno per una migliore corrispondenza Equivalente ImageView.ScaleType È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e Allineamento.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato conline.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER.
Rimuove ProvideContentColor, ma è sufficiente utilizzare ContentColorAmbient direttamente con
Providers
(Iee942)Aggiunge un parametro di colore al testo, consentendo di sostituire il colore dello stile di testo senza dover unire manualmente lo stile fornito in un tema. (I41a66).
Migliora l'API DrawModifier:
- È stato impostato l'ambito del destinatario perDraw() ContentDrawScope
- Rimossi tutti i parametri in disegno()
- DrawScope ha la stessa interfaccia del precedente CanvasScope
- ContentDrawScope ha il metodoDrawContent() (Ibaced, b/152919067)
L'API ColoredRect è stata ritirata. Usa invece il criterio
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731).Il sistema di temi delle forme viene aggiornato in base alle specifiche di Material Design. Ora puoi fornire forme piccole, medie e grandi da utilizzare per la maggior parte dei componenti (Ifb4d1)
Operatore di Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)
L'elemento trascinabile è stato spostato nel modificatore (Id9b16, b/151959544)
Text
spostato nel pacchetto androidx.ui.foundation da androidx.ui.core. (I87ce5)aggiungi il parametro
enabled
a Casella di controllo, Interruttore e Attivabile (I41c16)Onde è ora un modificatore. Anche se l'opzione Cliccabile non è stata ancora convertita, l'utilizzo consigliato è
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)È stata aggiunta l'API VectorPainter per sostituire l'API di sottocomposizione esistente per le grafiche vettoriali. Il risultato della sottocomposizione è un oggetto VectorPainter anziché un DrawModifier. Ritirati dei precedenti componibili DrawVector a favore di VectorPainter.
API
Image(Painter)
rinominata inPaintBox(Painter)
Created Vector composable che si comporta come l'immagine componibile tranne con un VectorAsset invece di un ImageAsset (I9af9a, b/149030271)Creazione dell'immagine componibile per gestire dimensioni/layout oltre a disegnare un determinato asset immagine sullo schermo. Questo componibile supporta anche il disegno di qualsiasi istanza di Painter arbitraria che rispetti le sue dimensioni intrinseche, oltre a supportare una determinata dimensione fissa o minima (Ibcc8f)
Pulsante, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni parametri di Button sono stati rinominati o riordinati. (I54b5a).È stata rinominata l'immagine in ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e l'imminente componibile componibile utilizzato per partecipare al layout e disegnare i contenuti.
È stato creato un metodo di estensione su android.graphics.Bitmap,
Bitmap.asImageAsset()
, per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di app Android tradizionali con il framework di scrittura. (Id5bbd)Il componibile DrawImage è stato rimosso. Utilizza ImagePainter per disegnare immagini su layout esistenti oppure SimpleImage per introdurre un'immagine che occupa spazio (I595e1, b/149827027)
Il componente Stack supporta la direzionalità da destra a sinistra (Ic9e00)
Aggiunti Icon, IconButton e IconToggleButton, rimuovendo AppBarIcon. Puoi sostituire direttamente gli utilizzi esistenti di AppBarIcon con IconButton, che ora avranno il touch target corretto. Consulta gli esempi per informazioni sull'utilizzo e vedi le icone per le icone material fornite che puoi utilizzare direttamente con questi componenti. (I96849)
L'elemento componibile DrawShape è stato rimosso. Usa il modificatore DrawBackground. (I7ceb2).
Aggiunto AdapterList, un componente di elenco a scorrimento che solo compone e dispone gli elementi visibili. I problemi attualmente noti includono il fatto che l'estensione è solo verticale e non gestisce completamente tutti i casi di modifiche agli elementi secondari. (Ib351b)
È stato aggiunto il componente Scorrevole, che consente la creazione di scorrimenti/elenchi personalizzati (I5fd37)
Lo sfondo è stato rinominato in DrawBackground e deve essere memorizzato per impostazione predefinita (Ia0bd3)
Aggiungi il parametro di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)
Componente Canvas aggiunto. Questo componibile occupa alcune dimensioni (fornite dall'utente) e ti consente di disegnare utilizzando CanvasScope (I0d622)
rinomina il modificatore
Border
inDrawBorder
(I8ffcc)Componente Box aggiunto per combinare layout e funzionalità di disegno comuni. (I6e2a7).
Gli scorrimenti ora mostrano un comportamento di scorrimento nativo di Android. (I922af, b/147493715)
DrawBorder sostituito a favore del modificatore di bordo (Id335a)
Modifier.tag è stato rinominato Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Il parametro percentuale durante la creazione delle linee guida di ConstraintLayout è stato rinominato in frazione. (Ida2db)
Aggiunto il supporto per i margini delle barriere di ConstraintLayout. (I47ffe)
Risolto il supporto RTL in ConstraintLayout. Sono state aggiunte le API inconsapevoli RTL. (I3b1c7).
È stato aggiunto un nuovo DSL per ConstraintLayout. Per ulteriori dettagli, guarda gli esempi. (Icaa9a).
È stata aggiunta l'annotazione @ExperimentalLayout. ConstraintLayout, FlowRow e FlowColumn ora sono associati a questi tag per contrassegnare le loro API che cambieranno. (I412a8)
Aggiunta di
Modifier.padding(InnerPadding)
(I94985, b/157133803)Rimosso RowAllinea, ColumnAllinea in Riga e Colonna rimossi. (If60d4, b/155858731).
Rimosso LayoutTag() deprecato. Usa invece Modifier.tag(). Rimosso il metodo Modifier.matchParent() deprecato. Usa invece Modifier.matchParentSize(). (If8044)
È stato aggiunto il modificatore di layout offsetPx, che può essere utilizzato per definire gli offset (dinamici) in pixel. (I5af57).
L'elemento componibile allineatoLineOffset è deprecato. Usa invece il modificatore relativePaddingFrom(). L'elemento componibile CenterAllineamentLine è stato rimosso. (I60107)
È stato aggiunto il modificatore di layout defaultMinSizeConstraints, che imposta i vincoli di dimensione nel layout aggregato solo quando i vincoli corrispondenti in entrata non sono specificati (0 per i vincoli minimi e infinito per i vincoli massimi). (I311ea, b/150460257).
Il container è stato rimosso. Utilizza Box invece (Ibbc2b, b/151407926)
Sono stati rimossi i modificatori di larghezza/altezza/dimensione del layout ritirati. (Ib0bc1).
Sono stati aggiunti i valori predefiniti dei parametri per il modificatore di offset. (I37f06).
Aggiunto il modificatore di spaziatura interna simmetrica. (I39840)
È stato rimosso il modificatore di LayoutAspetto obsoleto. (I65a74)
Sono stati rimossi i modificatori LayoutAllineati deprecati. (I10877)
È stato corretto un bug nei modificatori di larghezza e altezza che causava la misurazione del layout aggregato senza vincoli di asse opposto. (I210b8, b/154797971)
Sono stati aggiunti i parametri verticalGravity e HorizontalGravity rispettivamente a Row e Column. (I7dc5a)
Sono stati aggiornati i valori di wrapContentLarghezza e wrapContentAltezza per l'allineamento verticale o orizzontale, anziché dell'allineamento. Il modificatore di gravità è stato aggiornato in modo da accettare l'allineamento verticale o orizzontale. Righe, colonne e stack sono stati aggiornati per supportare gli allineamenti continui personalizzati. (Ib0728)
Allineamento reso istantaneo con valori arbitrari. Aggiunta degli allineamenti 1D. (Ia0c05).
La denominazione di EdgeInset è stata rinominata InnerPadding. Il parametro innerPadding di Material Buttons è stato rinominato in paddding. (I66165)
allineaToSiblings ora accetta un valore Misurato anziché un valore Posizionabile. (I5788d)
Sono stati aggiunti modificatori per il dimensionamento rispetto alle misurazioni intrinseche e hanno ritirato i componenti destinati a questo scopo. (I8295d)
Aggiunto il supporto per la personalizzazione delle dimensioni degli elementi secondari di ConstraintLayout (Idb1a5)
Sono stati rimossi gli elementi componibili Wrap e Center deprecati. (I29e23).
Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecata LayoutModifier (If32ac)
I membri RowScope e ColumnScope ora sono accessibili all'esterno di Row e Column. (I3a641)
Il container è stato deprecato. Utilizza Box. (I675ce, b/151407926)
Aggiunto il modificatore LayoutOffset per la compensazione della posizione del layout (I0b8a3)
Supporto iniziale per RTL nel layout di Compose (Ia5519)
Aggiornamento di LayoutAllinea per non occupare più lo spazio disponibile (I2b14f)
Rimosso il formato componibile Proporzioni a favore del modificatore. Eliminati elementi componibili FlexColumn, FlexRow e modificatore di spaziatura (Iec8a7) eliminati
Rimosso il modificatore layoutInflessibile per riga e colonna (I0d820)
Implementa i punti di manipolazione di selezione con trascinamento per modificare la selezione per TextField. (I27032)
Implementa LongPressAndTrascina per la selezione di campi di testo. (I17919)
Correzioni di bug
- FocusModifier è stato ritirato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObservationr. FocusState e FocusDetailsState sono deprecati a favore di FocusState2 (I46919, b/160822875, b/160922136)
runOnIdleCompose
rinominato inrunOnIdle
(I83607)- Diverse API di test sono state rinominate per essere più intuitive. Tutte le API FindXYZ sono state rinominate onNodeXYZ. Tutte le API doXYZ sono state rinominate performXYZ. (I7f164).
- Rimuove il file Modifier.ripple deprecato in precedenza. Clickable ora utilizza Ripple come indicazione predefinita (se hai impostato un valore MaterialTheme {} nella tua applicazione), quindi nella maggior parte dei casi puoi semplicemente utilizzare l'indicatore cliccabile e ottenere senza costi l'indicazione dell'ondulazione. Se hai bisogno di personalizzare il parametro di colore / dimensione / parametro per l'onda, puoi creare manualmente un valore RippleIndication e passarlo a cliccabile come parametro di indicazione. (I663b2, b/155375067)
- Rimosse le API obsolete per i test delle dimensioni. (Iba0a0).
- API sperimentale Made LayoutNode (I4f2e9)
- La versione 1 del blocco dell'orientamento di scorrimento è implementata in Compose. (I1ce7a, b/150289741).
- Popup, finestre di dialogo e menu ora ereditano il tema contestuale del MaterialTheme (Ia3665, b/156527485)
- Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d)
- Aggiungi assolutaArrangement: consente di disporre gli elementi secondari all'interno della riga senza mirroring automatico in RTL (I3a1df)
- L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
- Prima di questa modifica, il plug-in di compilazione di Composer intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se esistesse un (I5205a, b/158123804)
- Aggiungi l'elemento componibile
viewModel()
per creare o ottenere un ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1) La classe Raggio è stata sottoposta a refactoring in modo che sia in linea. Sono stati rimossi i metodi di creazione companion a favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio sull'asse y corrisponda a quello del parametro obbligatorio del raggio dell'asse x.
È stato aggiornato DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori mobili separati per il raggio lungo l'asse x e y (I46d1b).
È stato sostituito l'uso della classe Px in varie classi di composizione nell'ambito dell'ampio sforzo di refactoring, che prevedeva l'uso solo di DP e di tipi primitivi per i parametri pixel. Classe Px eliminata completamente (I3ff33)
Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I086f4)
Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su DP e tipi primitivi per i parametri pixel (Id3434)
Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I97a5a)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
I gesti parziali non richiedono più il trasferimento di un TrackingToken (Id7ae5)
Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I57bff)
Modifier.semantics non è stato deprecato per consentire l'utilizzo di componenti di alto livello. (I4cfdc)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e).
È stata aggiornata l'API Guidelines e aggiunto supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto Rtl) (I38cd3)
È possibile misurare gli elementi secondari Layout e LayoutModifier con una direzione del layout diversa. (Ibd731)
Introduci un parametro rettangolo facoltativo aggiuntivo a ImagePainter per supportare il disegno di una sottosezione dell'asset ImageAsset sottostante (I0ea9e)
Risolto il problema di arresto anomalo in AdapterList durante la rimozione degli elementi (Ic64b0, b/153195921)
Abbiamo cambiato il modo in cui misuriamo il primo layout che inserisci nel blocco activity.setContent { }. In precedenza era costretto a riempire l'intera schermata delle attività, mentre ora si comporta come se il layout fosse stato inserito in uno stack: può essere più piccolo di uno schermo e verrà posizionato nella schermata in alto a sinistra. Se vuoi utilizzare il vecchio comportamento, puoi applicare Modifier.fillMaxSize() al layout. (Ie88a7, b/153453714).
Il modulo ui-text-compose è stato rinominato ui-text. ui-text ora contiene elementi componibili CoreText e CoreTextField (Ib7d47)
il modulo ui-text viene rinominato come ui-text-core (I57dec)
Spostato ui-framework/CoreText, componibili CoreTextField in ui-text-compose. Potresti voler includere ui-text-compose nel tuo progetto. (I32042)
runOnIdleCompose
erunOnUiThread
sono ora funzioni globali anziché metodi su ComposeTestRule. (Icbe8f)[Mutable]Gli operatori delegati per le proprietà statali sono stati spostati nelle estensioni per supportare le ottimizzazioni dei delegati di proprietà Kotlin 1.4. I chiamanti devono aggiungere importazioni per continuare a utilizzare
by state { ... }
oby mutableStateOf(...)
. (I5312c)DrawlayerModifier e disegno Layer() ora prevedono il valore predefinito di clipToBounds e clipToOutline su false. (I0eb8b, b/152810850).
Rinominato LayoutResult in MeasureResult. (Id8c68)
Elemento componibile Center deprecato. Deve essere sostituito con il modificatore LayoutSize.Fill + LayoutAllinea.Center o con uno dei componenti componibili Box o Impila con i modificatori adatti applicati (Idf5e0)
È stato cambiato il nome LayoutFlessibile in LayoutWeight. Rinominato parametro stretto per riempire. (If4738)
DrawVector è stata modificata da una funzione componibile regolare alla restituzione di una funzione di modifica disegnoVector() che disegna il vettore come sfondo di un layout. (I7b8e0).
Sostituisci la funzione componibile Clip con il modificatore drawClip(). DrawClipToBounds è un modificatore utile da usare quando devi agganciare i margini del livello con una forma rettangolare. (If28eb).
Funzione componibile DrawShadow sostituita con il modificatore DrawShadow(). Le ombre sono ora disegnate come parte del Modificatore di livello. (I0317a)
androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable rimosso. È stato ridondante con ComponentiNode. androidx.compose.ViewAdapters è stato rimosso. Non rappresentano più un caso d'uso supportato. Compose.composeInto è stato deprecato. Usa invece
setContent
osetViewContent
. Compose.disposeCompose è stato deprecato. Usa invece il metododispose
sulComposition
restituito dasetContent
. androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponenteNode#emitInsertAt è stato rinominato in ComponenteNode#insertAt ComponenteNode#emitRemoveAt è stato rinominato in ComponenteNode#removeAt ComponenteNode#emitModeComponibile a capo deprecato. Può essere sostituito con il modificatore LayoutAllinea o con lo stack componibile (Ib237f)
La direzione del layout è stata propagata dal nodo del layout principale ai nodi secondari. Modificatore di direzione del layout aggiunto. (I3d955)
Rinomina Painter.toModifier in Painter.asModifier poiché il Modificatore appena creato include un riferimento al Painter originale che può essere condiviso tra più istanze di Modificatore (I7195b)
Supporto della direzione da destra a sinistra nel modificatore LayoutPadding (I9e8da)
Density e DensityScope sono stati uniti in un'unica interfaccia. Al posto di ambientDensity(), ora puoi utilizzare DensityAmbient.current. Invece di withDensity(density) solo with(density) (I11cb1)
Classe Valueholder rimossa. Ha riorganizzato le classi AnimatedValue, AnimatedFloat per rendere astratto il campo del valore dell'animazione in modo che le sottoclassi possano osservare l'aggiornamento del valore.
- Sono state aggiunte classi di modello per AnimatedValue, AnimatedFloat e così via.
- È stato aggiunto un nuovo set di API @Composable leggera per l'animazione dei valori.
- (I79530)
Interruzione delle modifiche all'API Ambient. Per informazioni dettagliate, consulta la documentazione relativa al log e a
Ambient<T>
(I4c7ee, b/143769776)Le posizioni Int della riga di allineamento restituite da Placeable#get(ExactmentLine) sono ora non null. Se manca la linea di allineamento oggetto della query, verrà restituito Guidelines.Unspecified. (I896c5, b/158134875)
Risolto un bug di ConstraintLayout che causava un arresto anomalo nelle ricomposizioni. (Ibee5a, b/158164341).
L'API WithConstraints finale lambda è stata modificata. Ora, invece di due parametri, ha un ambito ricevitore che, oltre a vincoli e layoutDirection, fornisce le proprietà minwidth, maxwidth, minHeight e maxHeight in Dp (I91b9a, b/149979702).
È stato rinominato LayoutModifier2 in LayoutModifier. (Id29f3)
Le funzioni di misurazione intrinseche in Layout e LayoutModifier2 ora dispongono di un ricevitore IntrinsicMeasureScope che fornisce un'API di query intrinseca con una direzione del layout propagata implicitamente. (Id9945)
LayoutDirectionAmbient è stato ritirato. Per leggere la direzione del layout definita dalle impostazioni internazionali, utilizza linguaLayoutDirection su ConfigurationAmbient (I851b1)
Aggiunti positionInParent e boundsInParent per leCoordinate di Layout. (Icacdd, b/152735784)
L'elemento componibile ParentData è deprecato. Devi creare un modificatore che implementi l'interfaccia ParentDataModifier oppure utilizzare il modificatore LayoutTag se devi semplicemente taggare gli elementi secondari del layout per riconoscerli all'interno del blocco di misura. (I51368, b/150953183)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni componibili OnPositioned e OnChildPositioned. (I2ec8f).
Non consentire spaziatura interna negativa in LayoutPadding. Per gli offset di posizione negativi, utilizza LayoutOffset. (Ifb5b1)
Parametro WithConstraints ottenuto da LayoutDirection (I6d6f7)
È stato aggiornato il flag
ComposeFlags.COMPOSER_PARAM
in modo che siatrue
. Questa operazione cambierà la strategia di generazione del codice per il plug-in di composizione. A livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene trasmesso alle successive chiamate @Composable per consentire al runtime di gestire correttamente l'esecuzione. Si tratta di una modifica significativa che provoca un'interruzione del programma binario, tuttavia dovrebbe garantire la compatibilità a livello di origine in tutti gli utilizzi sanzionati di Compose. (I7971c)Modificato LayoutCoordinates per rendere providedAllineamentLines un insieme anziché Mappa e in modo che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, i modificatori possono modificare più facilmente uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a).
LayoutCoordinates non ha più una proprietà di posizione. La proprietà "position" non ha senso quando si considerano i modificatori di layout, la rotazione o la scalabilità. Invece, gli sviluppatori dovrebbero usare parentCoordinates e childToLocal() per calcolare la trasformazione da LayoutCoordinate a un altro.
LayoutCoordinates utilizza IntPxSize per la proprietà delle dimensioni anziché PxSize. I layout utilizzano dimensioni in pixel interi per i layout, pertanto tutte le dimensioni devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)
Miglioramenti alla superficie API dei vincoli (I0fd15)
Aggiunta di TextDirection.Content (I48f36)
Modifica il menu della barra degli strumenti per visualizzare le opzioni di copia, taglia e incolla. (Id3955)
Aggiungi FloatingToolbar per la selezione del campo di testo. (Ie8b07)
TextDirectionAlgorithm è rinominato TextDirection (I75ce8)
TextDirection viene rinominata ResolvedTextDirection (I3ff38)
Aggiungi HapticFeedback alla selezione del campo di testo. (I58050)
Aggiungi i metodi Copia, Taglia e Incolla alla selezione TextField. (Idb70b)
TestTag e Semantics sono stati eliminati. Usa invece Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
Il nome del pacchetto per Impostazioni internazionali e LocaleList è stato modificato da androidx.ui.text ad androidx.ui.intl (I8132c)
Modifica dell'API:
AnnotatedString(builder: Builder)
è stato rinominato inannotatedString(builder: Builder)
. (Ia6377)Modifica dell'API:
AnnotatedString.Item
è stato rinominato inAnnotatedString.Range
. (I2d44d).Aggiungi la barra degli strumenti per operazioni correlate al testo. (I49d53).
Il nuovo LifecycleOwnerAmbient è ora disponibile. Ora un'attività che utilizzi con l'interfaccia utente di Compose dovrebbe estendere androidx.activity.ComponenteActivity (o AppCompatActivity). setContent su android.app.Activity è ora deprecato (Idb25a, b/153141084)
Nome del pacchetto ui-android-text (androidx.text) sostituito con androidx.ui.text.platform per allinearsi con il criterio androidx. (I42711)