UI di composizione
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Consulta la documentazione di riferimento per l'API per tutti i pacchetti di scrittura)
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
17 aprile 2024 | 1.6.6 | - | - | 1.7.0-alpha07 |
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.ui:ui:1.6.6" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.12" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.6") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.12" } 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-alpha07
17 aprile 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
viene rilasciato. La versione 1.7.0-alpha07 contiene questi commit.
Modifiche alle API
ClickableText
è contrassegnato come deprecato. Per aggiungere link al testo, crea unAnnotatedString
conLinkAnnotation
corrispondente al tuo link e trasmetti questoAnnotatedString
al componibile Testo. (I34d4b, b/323346994).- Presenta
ViewConfiguration.HandwritingGestureLineMargin
per i gesti di scrittura a mano libera. Supporta il gestoJoinOrSplit
perBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
eFocusProperties.exit
non sono più sperimentali.FocusDirection.Enter
eFocusDirection.Exit
non sono più sperimentali.FocusRequester.Cancel
non è più sperimentale (I461a1, b/261564106)- Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato gli elementi secondari utilizzandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Analogamente, un layout che cambia spesso la posizione dei relativi elementi secondari può ora inserirli utilizzandowithDirectManipulationPlacement
(ad esempio Scorrimento, implementato per impostazione predefinita). In questo modo, le animazioni basate suapproachLayout
sono più intuitive, avendo ora la possibilità di distinguere quale offset animare e cosa applicare direttamente quando si decide di animare il loro approccio. (I60ec7) - Il flag funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
LazyColumn
ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635).- Le origini
NestedScroll
con trascinamento sono state sostituite daUserInput
eSideEffect
per includere la definizione estesa di queste sorgenti, che ora includono animazioni (effetto collaterale), rotellina del mouse e tastiera (UserInput
). (I40579) ApproachLayoutModifierNode
eModifier.approachLayout
sono ora stabili, con i nuoviisMeasurementApproachInProgress()
eisPlacementApproachInProgress()
che sostituiranno rispettivamente le precedentiisMeasurementApproachComplete()
eisPlacementApproachComplete()
.- Modificatore
intermediateLayout
obsoleto rimosso. (I3e91c). - Rinomina
GraphicsLayer#buildLayer
per registrare in modo da eseguire il mirroring dei metodi start/endRecording delle API supportate da Displaylist comeRenderNode
e Picture. - Aggiornamento di
rememberGraphicsLayer
per l'utilizzo dirememberObserver
eseguito. (I312c1, b/288494724, b/330758155). - L'elemento
UrlAnnotation
è deprecato. Usa il tokenLinkAnnotation.Url
. Se utilizzi i temi Material, usa l'oggettoTextDefaults
per creare l'annotazione con i temi Material (I8d180, b/323346545) - Per i link di testo è stata attivata l'opzione di stile per lo stato premuto, oltre allo stile normale, è stata spostata il mouse sopra il video e messo a fuoco (I5f864, b/139312671)
String.parseAsHtml
rinominato inAnnotatedString.Companion.fromHtml
. (I43dcd)- Sono stati aggiunti argomenti di stile (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e un listener di interazioni tramite link al metodoparseAsHtml
. Durante l'analisi della stringa con tag HTML con i tag<a>
, il metodo crea unLinkAnnotation.Url
per ogni tag di questo tipo e trasmette gli oggetti di stile e il listener di interazioni con il link a ogni annotazione. (I7c977) LinkAnnotation
ora accetta gli argomenti di stile basati sullo stato e unLinkInteractionListener
. Aggiungi questa annotazione aAnnotatedString
per ottenere un link ipertestuale. Se trasmettifocusedState
e/ohoveredState
, puoi definire ilconfiguration
visivo per i link quando lo stato attivo e/o il passaggio del mouse sono passati. (I81ce4, b/139312671).ImeOptions.hintLocales
non è più null. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizzaLocaleList.Empty
. (Ic5bc4).
Correzioni di bug
- Gestisce in modo controllato i dati degli eventi di input storici non validi/corrotti (ignora i dati di offset errati).
- Corregge gli eventi di puntamento imprevisti quando un modificatore di input del puntatore viene aggiunto in modo dinamico prima di un altro modificatore di input del puntatore durante lo stream di eventi di input del puntatore attivo (ad esempio, tra l'invio del passaggio del mouse e l'uscita al passaggio del mouse [mouse/stilo]).
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
viene rilasciato. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- Aggiunto il metodo
parseAsHtml
per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML inAnnotatedString
. Tieni presente che non tutti i tag sono supportati; ad esempio, non potrai ancora visualizzare elenchi puntati. (I84d3d, I30626, b/139326648) - È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivata per impostazione predefinita. Per attivare l'opzione, imposta il flagComposeFeatureFlag_LongScreenshotsEnabled
su true. (I2b055, b/329296471).
Modifiche alle API
fun ClipEntry.getMetadata()
cambiato inval ClipEntry.clipMetadata
. (I50155)- Funzioni
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
rimosse. Usa il criterioclipEntry.getMetadata()
per leggere i metadati della voce attuale del clip. Controlla anche il risultato diClipboardManager.getClip
se è nullo o meno per capire se negli appunti è presente un clip corrente. (I50498) - Ora puoi passare oggetti
GraphicsLayer
nelle funzioniplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
ora accetta un valore null per poter cancellare gli appunti. (I7d2e9).- Aggiunti ID risorse per l'assistenza per nascondere le viste utilizzate come dettagli di implementazione negli strumenti di creazione (I99531)
- Metodo di sospensione
GraphicsLayer#toImageBitmap
aggiunto per supportare il rendering dei contenuti di una bitmap in unGraphicsLayer
. Si tratta di un'operazione di rendering con accelerazione hardware a livello API 22 o versioni successive (incluso) che supporta oltre il 99% di tutti i dispositivi Android. Nel livello API Android 21 questo tipo di operazione si basa sul rendering software. (I9e114). - Metodo di supporto per convertire un Android da
RectF
inComposeRect
(I39925, b/325660505) - Tutti i parametri
KeyboardOptions
ora hanno un valore non specificato per impostazione predefinita. MetodoKeyboardOptions.merge
aggiunto. - Il nome
KeyboardOptions.autoCorrect
è stato rinominato inautoCorrectEnabled
e l'elemento è nullo, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492). - La variante
BasicTextField(state)
eBasicSecureTextField
ora usanoKeyboardActionHandler
anzichéKeyboardActions
per elaborare le azioni intraprese dalla tastiera software. (I58dda)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
viene rilasciato. La versione 1.7.0-alpha05 contiene questi commit.
Nuove funzionalità
- Presenta la nuova API
GraphicsLayer
per registrare i comandi di disegno in un elenco di visualizzazione, oltre a proprietà aggiuntive che influenzano il rendering dell'elenco di visualizzazione. Ciò fornisce un limite di isolamento per dividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a unGraphicsLayer
possono essere eseguite senza registrare di nuovo l'elenco di visualizzazione. A differenza diModifier.graphicsLayer
,GraphicsLayer
consente il rendering di contenuti componibili altrove ed è utile nei casi d'uso animati in cui è previsto che i contenuti vengano visualizzati in scene diverse.
Modifiche alle API
GraphicsLayer.draw(Canvas)
non è più un'API pubblica. Utilizza la funzione di estensioneDrawScope.drawLayer(GraphicsLayer)
per disegnare il livello. (I7a7c0).- Suddividi
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd) - È stato introdotto lo stub di
HardwareCanvas
per l'utilizzo di Android L (I1c3b5, b/288494724) - Aggiorna il framework di Compose per esporre una composizione
GraphicsContext
locale, oltre all'aggiornamento del proprietario,DelegateableNode
edrawWithCache
delle implementazioni del modificatore per esporre l'accesso alleGraphicsContext
per l'accesso con ambito, che pulirà automaticamenteGraphicsLayer
le istanze quando i modificatori vengono scomposti. (I64a2f, b/288494724). - È 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) GraphicsLayer.setOutline(Outline)
funzione di estensione è stata aggiunta. (Ib81f4)- Presenta il costruttore di funzioni
GraphicsContext
per creare una fabbrica per creare istanzeGraphicsLayer
(Ib98d6, b/288494724) - L'API
GraphicsLayer
esposta per offrire agli sviluppatori una flessibilità definita nell'acquisizione di comandi di disegno che possono essere utilizzati per disegnare altrove e anche per applicare diversi effetti visivi al risultato finale. (I80245, b/288494724) - Inserisci
Paragraph#getRangeForRect
che restituisce un intervallo di testo coperto da una determinata area del rettangolo. (Iee516, b/325660505) - Rimozione dell'override sperimentale di
BasicText
con argomentoonLinkClicked
. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)
Correzioni di bug
- È stata aggiunta la definizione API di
GraphicsLayer
prevista/effettiva per supportare l'acquisizione e la riproduzione di comandi di disegno con trasformazioni e effetti visivi di compositing facoltativi. Presenta l'interfacciaGraphicsContext
per contenere le dipendenze grafiche, incluse la creazione e la gestione delle istanzeGraphicsLayer
. (I4a8d6, b/288494724). - Risolto un problema di interoperabilità con la ricerca dell'elemento attivo 1D in cui lo stato attivo rimaneva bloccato in un elemento
ComposeView
incorporato tra le altre viste. (I08fd4)
Contributi esterni
LocalLifecycleOwner
è stata spostata dalla UI di Compose alifecycle-runtime-compose
in modo che le sue API helper basate su Compose possano essere utilizzate al di fuori dell'UI di Compose. Ringraziamo Jake Wharton per il suo contributo. (I6c41b, b/328263448).- Mostra costantemente le proprietà del floating di bias su tutti i sottotipi di allineamento basati su bias. (I69f0f, b/328088992).
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
viene rilasciato. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche alle API
- Supporto della funzionalità di scrittura a mano libera con stilo per BasicTextField2 sui dispositivi con versioni successive ad Android U. (I002e4).
- 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) FocusRequester.createRefs
è ora stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi modificatori di ottenere l'attualeView
di Android senza leggere una composizione locale. (I40768) - Nuova API
Path.reverse()
per invertire la direzione di un percorso (I36348) - È stato aggiunto
hintLocales
aKeyboardOptions
per consentire aTextFields
di suggerire una lingua preferita agli IME con impostazioni internazionali specifiche. - Esponi la proprietà
platformLocale
daLocale
che restituisce l'oggetto della piattaforma sottostante, ad esempiojava.util.Locale
. (I921c6)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
viene rilasciato. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- Introduzione di
ContextualFlowRow
e delleFlowRow
/Column
avanzate con MaxLines e Overflow. Siamo lieti di annunciare miglioramenti alle versioni sperimentaliFlowRow
eFlowColumn
, che ora prevedono il supporto maxLines e gli 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) - Aggiungi la proprietà semantica
maxTextLength
che deve essere impostata sui campi di testo che filtrano il numero massimo di caratteri consentito. (I24d9f, b/170648072). - Il wrapper
Modifier.inspectable
è stato ritirato. Questa API creerà più invalidazioni del modificatore del necessario, quindi il suo utilizzo è ora sconsigliato. Consigliamo agli sviluppatori di implementare il metodoinspectableProperties()
suModifierNodeElement
se vogliono esporre le proprietà di modifica agli strumenti. (Ib3236) - Nuovo costruttore per
PopupProperties
che consente il controllo completo sui flagWindowManager.LayoutParams
. (Ibb33e, b/312485503). - È 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) BasicTextField2
e le API correlate nel pacchettoandroidx.compose.foundation.text2
vengono spostate inandroidx.compose.foundation.text
. (I9f635).- È stata aggiunta una nuova API
ApproachLayoutModifierNode
per supportare la creazione di una logica di approccio personalizzata in un nodo modificatore esplicito. È stata inoltre aggiunta una nuova APIDeferredTargetAnimation
sperimentale per le animazioni il cui target è sconosciuto al momento della creazione di un'istanza. (I60745) - Nuove API
Path
per eseguire query sulla direzione di un percorso e per estrarre i contorni da unPath
. (I63d04). - Sono stati aggiunti
PathHitTest
ePath.contains(Offset)
per verificare se un elementoPath
contiene un punto specifico. (I3b218) TextLayoutResult
ora espone il metodogetLineBaseline(lineIndex)
. Ciò consente di leggere la base di riferimento di una riga arbitraria del testo oltre alle proprietà di convenienza esistentifirstBaseline
elastBaseline
. (Ide4e8, b/237428541).- Metodo aggiunto per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659)
Correzioni di bug
- Risolto un problema di compatibilità con le versioni precedenti di
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche alle API
- Risolto un problema di compatibilità del programma binario con
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Il costruttore
PopupProperties
che richiede un parametrousePlatformDefaultWidth
non è più sperimentale. (I8f8d2). - È stato aggiunto un sovraccarico di
ComposeTestRule.waitUntil
che richiede una descrizione stringa della condizione da includere nel messaggio di timeout. (I9413e) - Nuova API semantica
unset()
per rimuovere le proprietà semantiche aggiunte nella stessa catena di modificatori. Nuova proprietà semanticaisOpaque
. (I8c583, b/317966058, b/246056649). originalEventPosition
rimosso dal metodo di copia nell'API pubblica diPointerInputChange
. (i7bead)
Correzioni di bug
- Risolto il bug di accessibilità che consentiva di fare clic sui pulsanti non schede o non di opzione quando selezionati. (I2181c)
VelocityTracker
ora avrà la correzione per l'aggiunta di punti attiva per impostazione predefinita. La correzione può comunque essere disattivata impostandoVelocityTrackerAddPointsFix
su false in caso di problemi. (Ib3877, b/269487059)- Correzione dell'incompatibilità binaria con le versioni precedenti in
TextStyle
eParagraphStyle
. (I179f0, b/320819734).
Contributi esterni
- È stato aggiunto un nuovo costruttore
DialogProperties
senza parametri specifici della piattaforma. (I45829) - È stato aggiunto un nuovo costruttore
PopupProperties
senza parametri specifici della piattaforma. (I9a038).
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
viene rilasciato. La versione 1.7.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato espanso
ClipboardManager
aggiungendoClipEntry
eClipMetadata
per supportare contenuti arbitrari come le immagini. - Aggiunge l'API
DeviceConfigurationOverride
aui-test
per consentire la sostituzione locale del comportamento dei contenuti sottoposti a test, ad esempio per specificare dimensioni, impostazioni internazionali, direzione del layout, scala dei caratteri o tema disponibili.
Versione 1.6
Versione 1.6.6
17 aprile 2024
androidx.compose.ui:ui-*:1.6.6
viene rilasciato. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- Corregge un arresto anomalo raro di
BasicTextField
.
Versione 1.6.5
3 aprile 2024
androidx.compose.ui:ui-*:1.6.5
viene rilasciato. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
androidx.compose.ui:ui-*:1.6.4
viene rilasciato. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
androidx.compose.ui:ui-*:1.6.3
viene rilasciato. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.ui:ui-*:1.6.2
viene rilasciato. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
Rilascio del 7 febbraio 2024
androidx.compose.ui:ui-*:1.6.1
. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Risolto un problema di compatibilità con le versioni precedenti di
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946). - I layout ora generano un errore durante la misurazione quando vengono restituite dimensioni insolitamente grandi. Questo tipo di errore si verifica in genere quando la misurazione utilizza direttamente i vincoli massimi senza controllare
Constraints.Infinity
. Questo controllo aiuterà gli sviluppatori a rilevare problemi relativi a layout con dimensioni errate anziché in un layout che lo contiene. (I339a9)
Versione 1.6.0
24 gennaio 2024
androidx.compose.ui:ui-*:1.6.0
viene rilasciato. La versione 1.6.0 contiene questi commit.
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.ui:ui-*:1.6.0-rc01
viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.
Correzioni di bug
- Implementazione di grafica vettoriale ottimizzata per migliorare le prestazioni riducendo al minimo le ricomposizioni aggiuntive.
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.ui:ui-*:1.6.0-beta03
viene rilasciato. La versione 1.6.0-beta03 contiene questi commit.
Nuove funzionalità
- Ora è possibile scollegare un
LayoutCoordinates
senza che il nodo venga scollegato. Mettiti in guardia da Compose Layout Inspector (If693)
Correzioni di bug
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)- Sono state corrette le ricomposizioni a valle aggiuntive causate dal fatto che per
LocalSoftwareKeyboardController
eLocalTextInputService
venivano forniti nuovi valori ogni volta che una radice ricomposta. (I42190, b/310510985)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta02
viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta01
viene 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). onDragAndDropStart
nella fabbricaDragAndDropModifierNode
è stato rinominato inacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto al ModificatoredragAndDropTarget
per accettare da una sessione di trascinamento. Questa funzione lambda restituisce unDragAndDropTarget
utilizzabile se è interessato a una sessione di trascinamento. Altre lambda per l'elaborazione di eventi di trascinamento sono state sostituite da questa. È stata aggiunta una funzione di fabbricaDragAndDropTarget
per ricevere da sessioni di trascinamento (Iebf3a)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)Migliora i nomi delle API dei nodi attraversabili per renderli più comprensibili. (Ia4474)
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 restanti API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981).Le
FocusDirection.In
eFocusDirection.Out
rimosse utilizzano inveceFocusDirection.Enter
eFocusDirection.Exit
(I2f660)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)Il costruttore
FontStyle(int)
è deprecato. UsaFontStyle.Normal
oFontStyle.Italic
. (I66610)Interfaccia
FontScalable
rinominata inFontScaling
(Ie804a)
Correzioni di bug
SoftwareKeyboardController.show()
non mostrerà più la tastiera software se non è attivo alcun editor di testo. (I2165a, b/301477279)- Gli eventi relativi alle chiavi hardware che non hanno ricevuto un evento Freccia giù nella stessa visualizzazione Compose ora verranno ignorati. (Ib37b4, b/305518328).
- È stato aggiunto il supporto del renderer per la funzione Sposta gradiente in
ArcLine
. (I4d5bb). - Implementa gli attributi uguali e il codice hash per
PageSize.Fixed
. (Ie3ede, b/300134276). - 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)
- I
TestDispatcher
superati come testeffectContext
per Compose verranno ora utilizzati per creare i clock di test e frame. (Ia7178)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
viene rilasciato. La versione 1.6.0-alpha08 contiene questi commit.
Modifiche alle API
- La funzione lambda
onDrawDragShadow
è stata rinominata indrawDragDecoration
perModifier.dragAndDrawSource
, mentre il parametro di dimensione perDragAndDropInfo
è stato rinominatodragDecorationSize
. (Id0e30, b/303904810). - Presenta
SemanticsNodeInteraction.isDisplayed()
eSemanticsNodeInteraction.isNotDisplayed()
per verificare se un nodo corrispondente è visibile o meno senza aver ricevuto anche un'affermazione. (I2c196, b/302100809). - È stato introdotto un valore
Unspecified
speciale per i campiTextAlign
,TextDirection
,Hyphens
eLineBreak
delParagraphTextStyle
in sostituzione dinull
. Poiché queste classi sono in linea, sostituendo nullable con il valore Unspecified, evitiamo il boxing di tipo primitivo. Costruttori, getter e altri metodi inTextStyle
e stile paragrafo sono stati aggiornati in modo da accettare i parametri menzionati come tipi non null. (I4197e, b/299490814) - Aggiungi un sovraccarico di
GoogleFont
per la lettura di un fileGoogleFont
da XML. (If8f59) LoremIpsum
PreviewParameterProvider
è stato un corso aperto. (I41bf5, b/266918816, b/300116360).
Correzioni di bug
FontFamilyResolver
ora utilizzaDispatchers.Main
per le coroutine di gestione della cache. (Ie8dd9).AndroidViewBinding
ora rimuove in modo sincrono le istanzeFragment
gonfiate includendo unFragmentContainerView
nel tuo layout come parte dionRelease
utilizzandocommitNow
(anziché ilcommit
che utilizzava in precedenza), risolvendo i problemi relativi al metodo della modifica dal vivo con la sostituzione della composizione al momento delle modifiche. (I58fbf)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.ui:ui-*: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) - Aggiunge un modificatore
dragAndDropSource
per avviare le sessioni di trascinamento e un modificatoredragAndDropTarget
per ricevere da sessioni di trascinamento. (Ib7828, b/286038936). - Sono state aggiunte le raccolte
ColorList
eColorSet
che evitano le allocazioni. (I744bd) - È stato aggiunto il flag temporaneo
DisableNonLinearFontScalingInCompose
per disattivare il ridimensionamento 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)
Correzioni di bug
- Analisi del disegno di vettore XML ottimizzato. (Ibb015)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
viene rilasciato. La versione 1.6.0-alpha06 contiene questi commit.
Modifiche alle API
- Ottimizzazioni aggiuntive per le icone Material. (I3e08d).
- Aggiunge la possibilità di attraversare l'albero dei modificatori su/giù per trovare nodi simili. (I2d234).
- È stato aggiunto il callback
onRestoreFailed()
al modificatorefocusRestorer()
(Ie1d43) - Sono state aggiunte annotazioni Androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro. (Id65c8, b/290950582) - Aggiungi
showSystemUi=true
alla definizione diPreviewScreenSizes
(Ib61d3)
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).
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
viene rilasciato. La versione 1.6.0-alpha05 contiene questi commit.
Modifiche alle API
- Attiva l'acquisizione dei contenuti in
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - 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) - Aggiunge uno scaffolding iniziale per supportare le API drag and drop delle piattaforme. (If84ce)
- Aggiungi
deviceId
inRotaryScrollEvent
(Iba3bf) - L'API
ui-tooling
Devices è stata aggiornata per includere i dispositivi più recenti (Ib25b4)
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
viene rilasciato. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo per disattivare
ReusableComposition
, rimuovendo le osservazioni, ma mantenendo i nodi. La composizione disattivata può essere riattivata chiamandosetContent
. (Ib7f31). - 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).- Sono state aggiunte annotazioni Androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro. (I70487, b/290950582) - È stata aggiornata l'API
ColorFilter
in modo che abbia tipi di sottoclassi concrete per una migliore ispezionabilità dei parametri. (I5fe29). - Introduci la libreria di anteprima relativa agli strumenti di Wear per elencare i dispositivi indossabili validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
- È stata creata l'interfaccia
FontScalable
per gestire la parte relativa al ridimensionamento dei caratteri dell'interfaccia Density. (I2cf3f).
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
viene rilasciato. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche alle API
- Nuovo tipo di transizione di entrata/uscita che adatta i contenuti in base alle dimensioni del contenitore animato durante l'animazione di entrata e uscita.
LookaheadScope
Il divertimento e l'interfaccia componibile ora sono stabili. (Ifb2ce). - Aggiunto il supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
- Ora
PopupPositionProvider.calculatePosition
aggiornerà automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547) - Sono stati corretti i campi di testo che 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) - Estensione dell'applicazione delle asserzioni globali nei test dell'UI. (I1f90d)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
viene rilasciato. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'interfaccia di localizzazione dei servizi che può essere implementata dagli implementatori della composizione che consente un'implementazione della composizione che delega a un'altra ricerca di servizi del delegato della composizione alla composizione originale. Questo non deve essere chiamato "directy" e viene utilizzato per abilitare la creazione di API sperimentali nel runtime che è possibile trovare nelle versioni con wrapping del compositore, come nel modulo UI. (I296b9)
- API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808). SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali. Ora ancheLocalSoftwareKeyboardController
è unCompositionLocal
corretto. (I4c364).LookaheadLayout
eLookaheadLayoutScope
sono stati ritirati per alcune release e ora sono stati rimossi. Le API sostitutive sonoLookaheadScope
che possono funzionare con qualsiasi layout. (I12ac3)- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più comodo e rilevabile per richiedere l'attenzione ai test. (Ie8722) - Aggiungi API sperimentali per registrare le asserzioni globali, da utilizzare in futuro per testare i framework. (I12d77)
Correzioni di bug
- La prima chiamata del callback
update
diAndroidView
verrà ora differita fino a quando la vista non viene collegata, anziché essere eseguita quando viene applicata la composizione che introduceAndroidView
. Questo corregge un bug per cui il callbackupdate
non veniva invalidato se lo stato letto veniva modificato immediatamente da un effetto. (Ie9438, b/291094055)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
viene rilasciato. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Supporta Lookahead in
LazyList
. Ciò consente aLazyList
nel passaggio Lookahead di ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi,AnimatedVisibility
e così via) e di calcolare le dimensioni e la posizione del Lookahead per tutti gli elementi secondari. Dopo il passaggio del Lookahead, i bambini diLazyList
hanno potuto animarsi in modo indipendente nella realtà, come mostrato nel passaggio.
Modifica del comportamento: includeFontPadding ora è false per impostazione predefinita in Compose
Ora in Compose includeFontPadding
è impostato su false (21d806).
includeFontPadding
è un attributo precedente che controlla se includere o meno una spaziatura interna aggiuntiva nella prima riga e nell'ultima riga del testo per contenere eventuali caratteri che si estendono sopra o sotto le basi del testo.
L'aggiornamento di questa versione di Compose modificherà il modo in cui tutti i testi vengono visualizzati nell'interfaccia utente, rimuovendo la spaziatura interna aggiuntiva nella parte superiore della prima e nell'ultima riga di ogni testo visualizzato.
A seconda dei requisiti dell'interfaccia utente e delle metriche relative ai caratteri utilizzati, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare blocchi quali: - Test degli screenshot non funzionanti. Se necessario, correggi l'interfaccia utente e rigenera le immagini finali. - Il testo è leggermente disallineato. Rimuovi eventuali spaziature negative personalizzate o aggiungi spaziatura interna se necessario.
Puoi attivare includeFontPadding
utilizzando PlatformTextStyle
per ogni messaggio:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Puoi attivare includeFontPadding
per tutti i tuoi testi configurando gli stili del materiale. Tieni presente che i nomi dei parametri variano tra M2 e M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Puoi trovare ulteriori informazioni su Compose includeFontPadding
nella documentazione per gli sviluppatori e in questo post del blog.
Se riscontri problemi relativi a questa modifica, segnala un bug utilizzando Issue Tracker.
Modifiche alle API
- Assistenza per
InputConnection#requestCursorUpdates
(I0c69b) - Aggiunti
FocusRequester.saveFocusedChild
eFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - 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). - Accessibilità ottimizzata per le prestazioni e le allocazioni della memoria. (Iede48).
- Sono state aggiunte azioni e proprietà semantiche per supportare la traduzione del testo. (I4a6bc).
- Nuova proprietà in
IntrinsincMeasureScope
e relative implementazioni (ad es.MeasureScope
) per indicare se l'attuale passaggio di misura è un pass Lookahead. (I7a812) - È stata aggiornata l'API
DrawScope
per introdurre la possibilità di eseguire il retargeting del rendering in un canvas diverso con densità/layout e dimensioni alternative. - Aggiornamento di
DrawContext
per supportare la configurazione della densità e della direzione del layout, nonché per la configurazione del canvas configurabile. (Ie1f9b, b/225408150). Paragraph#fillBoundingBoxes
aggiunto per calcolare i riquadri di delimitazione dei caratteri. (If30ee)- È stato aggiunto un insieme di
MultiPreviews
comuni (Ia5a27)
Correzioni di bug
- È stata aggiunta l'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e) - Parametri
fallback*
nel costruttoreTextMeasurer
rinominati indefault*
. (I940a5) - Rinominato
SemanticsPropertyReceiver.performImeAction
inonImeAction
eSemanticsActions.PerformImeAction
inOnImeAction
. (I8e841). - Aggiunge la rotellina per distinguere uno scorrimento del mouse da uno trascinamento nello scorrimento nidificato (nello specifico, in
NestedScrollConnection
). (Ie57e4) - È stata aggiunta l'API
asComposePaint
per sostituiretoComposePaint
perché l'oggetto restituito esegue il wrapping dell'elementoandroid.graphics.Paint
originale (I22b4c) - Ritira
SemanticsProperties.imeAction
e sostituiscilo con un nuovo parametro inSemanticsActions.performImeAction
. (I4a587). - 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).
- I metodi
Paragraph
che prima generavanoAssertionError
per gli offset fuori intervallo ora generanoIllegalArgumentException
allo stesso modo diMultiParagraph
. (I549d3, b/243338896).
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.ui:ui-*:1.5.4
viene rilasciato. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.ui:ui-*:1.5.3
viene rilasciato. La versione 1.5.3 contiene questi commit.
Correzioni di bug
- (b/301209788) A volte
TextField
applicava erroneamente i comandi precedenti durante l'impostazione e l'inserimento dell'input coreano, causando la perdita di caratteri.
Versione 1.5.2
27 settembre 2023
androidx.compose.ui:ui-*:1.5.2
viene rilasciato. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- È stata aggiunta una soluzione alternativa per gli arresti anomali quando è stato eseguito l'accesso all'API Accessibility scroll dal thread in background.
- Correggi i nodi non collegati che vengono aggiunti all'albero della semantica.
Versione 1.5.1
6 settembre 2023
androidx.compose.ui:ui-*: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.ui:ui-*:1.5.0
viene rilasciato. La versione 1.5.0 contiene questi commit.
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.ui:ui-*:1.5.0-rc01
viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto il problema di arresto anomalo che si verificava quando
SubcomposeLayout
viene utilizzato all'interno dimovableContentOf()
.
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta03
viene rilasciato. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'interfaccia di FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6)
- Risolto il problema relativo ai componibili di finestre di dialogo e popup che causava il mancato ridimensionamento della finestra secondaria come previsto quando
usePlatformDefaultWidth=true
. (I112ee)
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta02
viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
asComposePaint
per abilitare l'utilizzo di un'istanzaandroid.graphics.Paint
da utilizzare in Compose
Correzioni di bug
- È stata aggiunta l'API
asComposePaint
per sostituiretoComposePaint
perché l'oggetto restituito esegue il wrapping dell'elementoandroid.graphics.Paint
originale (I22b4c)
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.ui:ui-*:1.5.0-beta01
viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Allocazioni rimosse nella ricomposizione, nelle animazioni a colori e in
AndroidComposeView
(Ib2bfa) - Aggiunge un divertente
CacheDrawModifierNode()
aiutante per consentire la delega (Icf8f9) - Introduzione della proprietà
isLookingAhead
, accessibile daMeasureScope
, per osservare i risultati lookahead e influenzare il passaggio principale, se necessario. (Ibf4c3) - Nuova proprietà della semantica
traversalIndex
, un numero in virgola mobile utilizzato per riordinare i nodi nell'attraversamentoTalkBack
(i valori più bassi vengono prima). (I9a81b, b/186443263). - Ridenominazione della proprietà semantica
isContainer
inisTraversalGroup
(I121f6) ColorProducer
ora haoperator fun invoke
anzichéproduce
(I4a9a2)- Aggiungi l'API Transform
Path
per applicare le trasformazioni di traslazione/scalabilità/rotazione agli oggetti del percorso. (I23434, b/233772232) - Il metodo di
ColorProducer
è chiamatoproduce
. (I78bde) - Rinomina
toFrameworkColorSpace
intoAndroidColorSpace
(I4f547) - Rinomina
ColorLambda
inColorProducer
. (I73b1a). - Introduci le API per convertire i tipi di spazio colore Android e Compose. (Ie7db4, b/279979665).
- È stato aggiunto un parametro di colore a
BasicText
per consentire l'animazione o l'impostazione del colore del testo in modo efficiente. (Iffd88, b/246961787) - Rinominato
TextRange.constrain
inTextRange.coerceIn
. (I31be2). - È stato aggiunto l'elemento
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787). - Sono state stabilizzate molte API di testo, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
eMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPadding
non è deprecato. Il nostro scopo originale era rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, rimuovendo la deprecazione dal campo (I98e96, b/277703184)- Metodo
TextRange.constrain
pubblico aggiunto. (I97912) - 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) - Il costruttore
LineHeightStyle.Alignment(topRatio)
viene promosso ad API stabile. (I79c32, b/261565383). TextMeasurer
e le API correlate non sono più sperimentali. (I74647, b/261581753)- È stata aggiunta l'azione della semantica
PerformImeAction
per richiamare l'azione dell'IME sui nodi dell'editor di testo. (Ic606f, b/269633506). - Le API di
PlatformTextInput
non sono più sperimentali per Android. (I668eb) - nome del parametro del valore per
Enum.valueOf
modificato (Ia9b89) - altre eccezioni generate da enum valueOf (I818fe)
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per creare implementazioni di input di testo personalizzate che comunicano direttamente con le API della piattaforma. (I58df4). - 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) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. Solo ridenominazione. (I07af5). - Valori DPI aggiornati dei dispositivi di riferimento
@Preview
(Id6151, b/254528382) - Aggiungi i parametri
brush
ealpha
aBasicText
per consentire l'animazione o l'impostazione del pennello di testo in modo efficiente. - Definisci i tipi lambda senza caselle per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)
Correzioni di bug
- Rimosse più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
- Allocazioni ridotte nella gestione dell'input di layout e puntatore (I5333a)
- Ottimizza l'utilizzo della memoria vettoriale e il rendering dei primi frame (I2f3c6)
- Allocazioni rimosse quando si tracciano linee e punti con Canvas (I9f535)
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Contributi esterni
- Prestazioni migliorate e riduzione delle allocazioni nelle API Vector (I906cb)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
viene rilasciato. La versione 1.5.0-alpha04 contiene questi commit.
Nuove funzionalità
- Miglioramenti della delega
Modifier.Node
È stata aggiunta una possibilità avanzata di delegare altre istanzeModifier.Node
da unDelegatingNode
. Per farlo, puoi usare le APIdelegate
eundelegate
. Prima di questa modifica, ogni API del nodo delega doveva essere delegata esplicitamente al nodo delegato. Dopo questa modifica, le interfacce dei nodi verranno delegate in modo implicito, a meno cheDelegatingNode
non le sostituisca esplicitamente. (67352bc)
Modifiche alle API
- Presenta
NestedScrollModifierNode
, unNestedScroll Modifier.Node
a cui è possibile delegare. (I69513) - Sono stati aggiunti i parametri
onReset
eonRelease
al componibileAndroidViewBinding
, eseguendo il mirroring del componibileAndroidView
e attivando il supporto del riutilizzo delle visualizzazioni conViewBinding
. (I00b1e, b/276802519). - L'API Compose Path è stata aggiornata per supportare le operazioni di riavvolgimento e supportare casi d'uso di manipolazione frequente del percorso con un riutilizzo più rapido. (I7b797)
- È stato aggiunto l'elemento
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787). - Sono state stabilizzate molte API di testo, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
eMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPadding
non è deprecato. Il nostro scopo originale era rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, rimuovendo la deprecazione dal campo (I98e96, b/277703184)
Correzioni di bug
- È 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.ui:ui-*:1.5.0-alpha03
viene rilasciato. La versione 1.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- Il nuovo comportamento predefinito per
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
che non ha aree condizionali (ad es.TabRow
,Scaffold
,BoxWithConstraints
e così via) ora funziona correttamente con le animazioni lookahead.
Modifiche alle API
- Il nuovo
intermediateMeasurePolicy
predefinito che riutilizza il criterio di misurazione dal pass Lookahead consente ai sottotipiSubcomposeLayout
senza slot condizionali comeScaffold
,TabRow
eBoxWithConstraints
di funzionare con Lookahead per impostazione predefinita. (Id84c8) - Il ricompositore creato per una finestra Android bloccherà ora le chiamate a
withFrameNanos
anziché a tutte le composizioni quando riceve una notificaON_STOP
. Questo significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante diwithFrameNanos
verranno bloccate. (Id9e7f, b/240975572). - Modifica
motionEventSpy
in stabile. (Ic5ec4, b/261560988). - Metodo
TextRange.constrain
pubblico aggiunto. (I97912) - L'API
PlatformTextStyle.includeFontPadding
non è più deprecata per incoraggiare gli sviluppatori a usare questa API di compatibilità per cambiare e testare l'impostazioneincludeFontPadding
false. (I98e96, b/277703184).
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
viene rilasciato. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche alle API
- Nuova API
SubcomposeLayout
che richiede un criterio di misurazione intermedio aggiuntivo per gestire la logica di misurazione/layout durante le animazioni basate sul lookahead. (I017d3) - PointerInput ora è lento e utilizza Modifier.Node per migliorare le prestazioni (scopri di più sulla piccola modifica del comportamento). (15dab9)
- Modifica le API sperimentali in stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368).
- Modifica le API sperimentali in stabili in
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Aggiunge un modo per creare un'istanza
SuspendingPointerInputModifierNode
per implementazioniModifier.Node
più complesse. (Ic4933) - Ora è possibile aprire
UrlAnnotation
inAnnotatedString
tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081). - È stata aggiunta un'API per intercettare le chiavi hardware prima che vengano inviate alla tastiera software (I4f4c6, b/186800395)
- È 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).
Correzioni di bug
- Le azioni di test del testo ora richiedono l'attivazione dei campi di testo. (Iab328)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
viene rilasciato. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche alle API
- Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misura in intermediLayout ha IntermediateMeasureScope come ricevitore, che offre pratiche funzionalità per CoroutineScope, LookaheadScope e MeasureScope.(Ibe2e5)
- LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti per bambini e ragazzi in un LookaheadScope possono essere controllati direttamente dal criterio MeasurePolicy del genitore. (Ibe2e5).
- Aggiunge
Modifier.Node#coroutineScope
per consentire a Modifier.Nodes di avviare le coroutine. (I76ef9). - Consenti a Modifier.Nodes di leggere ComposeLocals implementando l'interfaccia ComposeLocalConsumerModifierNode. (Ib44df)
- Propagazione della classe @Deprecata alla proprietà. (I882d1)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.ui:ui-*:1.4.3
viene rilasciato. La versione 1.4.3 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
AndroidView
potrebbe non essere impostato correttamente quando utilizzato con alcuni modificatori. (I4dc77, b/274797771) - Risolto il bug nella ricerca 2D Focus che interessava i menu di
DropDown
(b/276811828) - Risolto il bug nelle proprietà di ingresso/uscita con stato attivo personalizzato che eseguiva solo il blocco Invio/uscita la prima volta che la funzione lambda è stata richiamata (b/277234245)
- È stata corretta una regressione nel sistema di messa a fuoco che ha causato un arresto anomalo durante la lettura di
focusProperties
. (b/271324781, b/274897776)
Versione 1.4.2
19 aprile 2023
androidx.compose.ui:ui-*:1.4.2
viene rilasciato. La versione 1.4.2 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
AndroidView
non riutilizzava correttamente i modificatori, causando un potenziale comportamento imprevisto e arresti anomali. (Ib67ee, b/275919849) - Correzione della 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.4.1
5 aprile 2023
androidx.compose.ui:ui-*:1.4.1
viene rilasciato. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Risolvi un problema con
ParentDataModifier
che non interessaAndroidView
(b/274797771)
Versione 1.4.0
22 marzo 2023
androidx.compose.ui:ui-*:1.4.0
viene rilasciato. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco lento, in modo che non vengano eliminati quando vengono passati al di fuori dei limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010). - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/128}12184b/25184b/72840 - Aggiunta nella proprietà semantica di
IsContainer
sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379) - È stato aggiunto un nuovo ruolo di accessibilità
DropdownList
. Questa opzione può essere utilizzata per replicare il comportamento diTalkBack
durante l'impostazione diandroid.widget.Spinner
. (I177e5, b/236159001). - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806). - Ora i test dell'interfaccia utente di Android Compose eseguiranno i passaggi per il layout di ogni frame durante l'esecuzione di frame per diventare inattivi (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che eseguono l'affermazione sui singoli frame delle animazioni del layout. (I8ea08, b/222093277). - È 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).
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.ui:ui-*:1.4.0-rc01
viene rilasciato. La versione 1.4.0-rc01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico di
AndroidView
funzione componibile, che accetta il parametroonReset
. Consente di riutilizzare le istanze View quando il relativo nodo nella composizione viene eliminato e riutilizzato in modo compatibile. Ciò è particolarmente utile perLazyRows
eLazyColumns
delle visualizzazioni. (I3f10d, b/230099236). - È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per creare implementazioni di input di testo personalizzate che comunicano direttamente con le API della piattaforma. (I58df4).
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.ui:ui-*:1.4.0-beta02
viene rilasciato. La versione 1.4.0-beta02 contiene questi commit.
Modifiche alle API
- API
modifierElementOf()
rimossa. Estendi direttamente daModifierNodeElement
. (I2256b) - È 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)
Correzioni di bug
- L'algoritmo dell'ordine di impostazione dello stato attivo per l'accessibilità è migliorato. Ad esempio, le barre superiore e inferiore vengono lette più spesso all'inizio e all'ultimo (74e9c5)
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.ui:ui-*:1.4.0-beta01
viene rilasciato. La versione 1.4.0-beta01 contiene questi commit.
Modifiche alle API
PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)- Sono stati aggiunti
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
ewaitUntilDoesNotExist
come API sperimentali aComposeTestRule
, estendendo l'APIwaitUntil
per accettare qualsiasi matcher e qualsiasi numero di nodi. ConsultaComposeTestRule
per ulteriore documentazione. (Ifa1b9, b/226934294). - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. (I07af5). - È stato rimosso
GoogleFont.Provider.AllFontsListUri
e lo è stato collegato in ktdoc. (I16f29).
Correzioni di bug
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
viene rilasciato. La versione 1.4.0-alpha05 contiene questi commit.
Modifiche alle API
- 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) - Aggiungi una nuova API per monitorare la velocità unidimensionale (If5a82)
FocusRequester
è ora contrassegnato come@Stable
. (I580ee)- Rimuovi un'annotazione sperimentale dal costruttore
DialogProperties
che utilizza un parametrousePlatformDefaultWidth
. (Ic4048) - È stata aggiunta una funzione alla posizione di calcolo e alla tangente a una distanza su un percorso, con
PathMeasure.getPosition()
ePathMeasure.getTangent()
(I3b47c) - Impostatore pubblico esposto per errore su
PlatformParagraphStyle
. (I07f47) - Più tipo/nullabilità delle funzioni incorporate/deprecateed-hidden (I24f91)
- Aggiungi
AnnotatedString.hasStringAnnotations
alla query sulle annotazioni con zero allocazioni. (I94dfe, b/246960758). - È stato aggiunto un nuovo sovraccarico per la funzione
TextMeasurer.measure
che accetta unString
come testo. (I47b2d, b/242705342). - Le API
LineBreak
eHyphens
in TextStyle sono passate alla versione stabile. (Ic1e1d)
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.ui:ui-*:1.4.0-alpha04
viene rilasciato. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco lento, in modo che non vengano eliminati quando vengono passati al di fuori dei limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010). - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/128}12184b/25184b/72840 - Aggiunta nella proprietà semantica di
IsContainer
sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379) - È stato aggiunto un nuovo ruolo di accessibilità
DropdownList
. Questa opzione può essere utilizzata per replicare il comportamento diTalkBack's
durante l'impostazione diandroid.widget.Spinner
. (I177e5, b/236159001). - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806). - Ora i test dell'interfaccia utente di Android Compose eseguiranno i passaggi per il layout di ogni frame durante l'esecuzione di frame per diventare inattivi (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che eseguono l'affermazione sui singoli frame delle animazioni del layout. (I8ea08, b/222093277). - È 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).
Modifiche alle API
- 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) - Rimosso il costruttore di caratteri sperimentale obsoleto. (I8a724, b/261435386).
- La classe di dati degli strumenti dell'interfaccia utente
Group
ora include un campo,isInline
, che indica se il gruppo è destinato a una chiamata a una funzione componibile in linea. SeisInline
ètrue
, la chiamata è a una funzione componibile in linea. Tuttavia, il valore potrebbe essere false per le chiamate a funzioni componibili in linea che provengono da moduli compilati con una versione del plug-in di compilazione Composer che non genera le informazioni sulla funzione in linea. (Idb846) - Miglioramento di un certo numero di API sperimentali precedentemente in versione stabile
- L'API Rotary Scorri Event è ora stabile (I42ad3, b/261561229)
- L'API
FontVariation
è ora stabile (I8779f, b/241016309) - Tutti i costruttori
Font()
sono ora API stabili (I5948b, b/261435386) DeviceFontFamilyName
è ora stabile (I8b640, b/261435386)- Il costruttore
AndroidFont
convariationSettings
è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807). - L'API
createFontFamilyResolver
è ora stabile. Consente di rilevare le eccezioni non rilevate durante il caricamento asincrono dei caratteri. (Ibb481, b/261435386). - L'API
Font.loadingStrategy
è ora stabile. (I5937c, b/261435386). - L'API
GoogleFont
è ora stabile. (Ic90b0, b/261435386). TextUnit(float, TextUnitType)
è ora un'API stabile. (I90c84, b/261561612).pluralStringResource
è ora un'API stabile. (I09849, b/261439703)
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
viene rilasciato. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimozione di
ExperimentalComposeUiApi
daPointerIcon
(I23af8) - Inserisci le azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che queste funzionalità sono disponibili solo dall'API 29. (Ida4ab) - Aggiornata la vista parametro
rememberNestedScrollConnection
dalla visualizzazione principale a quella host. (Ia5200) - È 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.
- Rinominato
CompositingStrategy.Always
inOffscreen
per indicare che il rendering digraphicsLayer
verrà sempre eseguito in un buffer intermedio (I47dc1) - Il sovraccarico del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
- Sono state aggiunte le nuove API sperimentali
PerfettoTrace.record {}
ePerfettoTraceRule
per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di ispezionare il comportamento e le prestazioni del test. (I3ba16) - 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. Per alcuni esempi, consulta le modifiche al test dell'animazione in questo CL. - È 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). - Aggiunta di EmojiCompat a Compose (Ibf6f9, b/139326806)
- È stato aggiunto un nuovo parametro di sfondo a
@Preview
per il supporto dei colori dinamici (I9f512)
Correzioni di bug
- Le notifiche di applicazione istantanea vengono ora inviate dopo che
Recomposer
ha completato l'applicazione delle modifiche. (Iad6c0, b/222093277). - Sono state apportate modifiche in
captureToImage
per consentire l'acquisizione di screenshot multi-finestra. Questa funzionalità è utile per i test di screenshot che utilizzano popup di composizione. (I169c5).
Aggiornamenti delle dipendenze
- L’UI di Compose e Compose Material ora dipendono dal ciclo di vita 2.5.1. (I05ab0, b/258038814).
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
viene rilasciato. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiornato il campo
GraphicsLayerScope
per esporre le dimensioni attuali digraphicsLayer
. Questo è utile per calcolare le trasformazioni digraphicsLayer
in funzione della dimensione componibile. (If8c43,b/181387080) - È stato introdotto
CompositingStrategy
per determinare quando utilizzare un livello di compositing fuori schermo per il rendering dei contenutigraphicsLayer
. Automaticamente mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato un livello alpha o un elementoRenderEffect/Overscroll
. Introdurrà sempre un buffer fuori schermo in cuiModulateAlpha
eviterà di utilizzare un buffer fuori schermo e modulerà invece ciascuna delle istruzioni di disegno registrate all'interno digraphicsLayer
. L'utilizzo diModulateAlpha
continuerà a sfruttare un buffer fuori schermo per gli utilizzi diRenderEffect/Overscroll
(I25e82, b/256382834) invalidateSubtree()
è stato aggiunto aModifier.Node
per consentire la validità di intere gerarchie per layout e disegno. (I4bd90)- Promuovi
rememberNestedScrollInteropConnection
a stabile. È stata introdotta la possibilità di passare una visualizzazione root arememberNestedScrollInteropConnection
. In questo modo la visualizzazione personalizzata può reagire meglio ai vincoli di scorrimento, soprattutto nelle visualizzazioni non standard (ad es.ModalBottomSheetDialog
). (I9e107) - Aggiunta dell'interfaccia
ObserverNode
che può essere utilizzata dalle implementazioniModifier.Node
che devono ricevere una notifica quando un valore già letto in precedenza è cambiato (I5728b, b/247716483) - È stato aggiunto un nuovo costruttore a
Paint
che accetta unandroid.graphics.Paint
nativo. È stata aggiunta anche una funzione di estensionetoComposePaint()
che converte un oggetto Paint nativo esistente in Compose Paint. (Ica91b) - Aggiungi nuova
FontFamily.Resolver.resolveAsTypeface
da usare su Android. (I8950b) - Aggiungi
ToolingState
per consentire agli strumenti di modificare gli stati interni del componibile (Ie6614) - Strumenti di refactoring per supportare meglio le nuove animazioni aggiunte (I8677b)
- Aggiunto il parametro
minLines
nei testi material3 e material3,TextField
eOutlinedTextField
che consente di impostare l'altezza minima del componente in termini di numero di righe (I4af1d)
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
viene rilasciato. 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).- Ritiro del riciclo degli oggetti di accessibilità in Androidx. Abbiamo riscontrato che le variazioni del rendimento sono trascurabili anche nelle versioni supportate meno recenti. (I0a961)
DrawStyle
è stato aggiunto come attributo sperimentale aTextStyle
eSpanStyle
per consentire di tracciare i contorni del testo. (If24b8, b/155421273)AnnotatedString.Builder
ora implementakotlin.text.Appendable
. (I1a061, b/231030444).AnnotatedString.Builder
ora dispone di un metodoappend(AnnotatedString, start: Int, end: Int)
per aggiungere una sottostringa diAnnotatedString
e gli stili di intersezione.- È stato aggiunto il parametro
DrawStyle
alle funzioni di disegnoParagraph
eMultiParagraph
che consentono di disegnare i contorni del testo. (Ic8102, b/155421273).
Contributi esterni
- Grazie per
vighnesh
per aver aggiunto dispositivi TV alle anteprime (Ie15cd)
Versione 1.3
Versione 1.3.3
11 gennaio 2023
androidx.compose.ui:ui-*:1.3.3
viene rilasciato. La versione 1.3.3 contiene questi commit.
Correzioni di bug
- Correzione di un arresto anomalo che a volte si verificava su Android 9 durante il salvataggio dello stato della visualizzazione Scrittura in Attività. (I0b755, b/260322832)
Versione 1.3.2
7 dicembre 2022
androidx.compose.ui:ui-*:1.3.2
viene rilasciato. La versione 1.3.2 contiene questi commit.
Correzioni di bug
- Aggiornato per utilizzare Profobuf 3.21.8, che evita un avviso di sicurezza in
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Versione 1.3.1
9 novembre 2022
androidx.compose.ui:ui-*:1.3.1
viene rilasciato. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
androidx.compose.ui:ui-*:1.3.0
viene rilasciato. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Nuova suite API sperimentale
LookaheadLayout
(attivazione di comportamenti di animazione precedentemente impossibili) - Nuova suite di API sperimentale
Modifier.Node
(alternativa aModifier.composed
con prestazioni più elevate) - Supporto migliorato dei riquadri delle finestre.
- Supporto della messa a fuoco per i D-Pad e la tastiera hardware nelle LazyList.
- L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica del comportamento che provoca un errore di rotta per alcuni sistemi di progettazione personalizzati - razionale nelle note di rilascio beta01)
- Molti miglioramenti secondari e inediti all'API
- Numerose correzioni di bug e miglioramenti delle prestazioni
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.ui:ui-*:1.3.0-rc01
viene rilasciato. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti nuovi trattini API sperimentali per supportare la sillabazione automatica nel testo (Iaa869)
Correzioni di bug
- I caratteri
DeviceFontFamilyName
non configureranno le impostazioni delle variantiwght
eital
per impostazione predefinita, ma verranno utilizzate le impostazioni della piattaforma per il fileTypeface
caricato. (Ia7a6d, b/246989332). - Risolto il problema di perdita di memoria di
LazyColumn
:onModifierLocalsUpdated
non veniva chiamata con il valore predefinito quando i modificatori venivano riutilizzati (b/230168389)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta03
viene rilasciato. La versione 1.3.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiungi opzioni per personalizzare l'interruzione di riga nel testo. (I86907)
- Argomento
size:IntSize
modificato conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525)
Correzioni di bug
- L'API
BackHandler
di AndroidX Activity ora funziona all'interno di un componibileDialog
. (I35342)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta02
viene rilasciato. La versione 1.3.0-beta02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico sperimentale per Layout che accetta un elenco di molteplici lambda di contenuti componibili, che consente di misurare le minacce inserite in diversi lambda di contenuti in modo diverso (Ic1b4e)
Modifiche alle API Focus sperimentali:
- I criteri
FocusDirection.In
eFocusDirection.Out
sono deprecati e sostituiti daFocusDirection.Enter
eFocusDirection.Exit
. (Ia4262, b/183746982). - Sono state aggiunte due nuove proprietà dello stato attivo di entrata e di uscita per specificare un comportamento personalizzato per
FocusManager.moveFocus(Enter)
eFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982). - Ora puoi utilizzare
FocusRequester.Cancel
per annullare uno spostamento dello stato attivo.FocusRequester.Cancel
può essere utilizzato in una qualsiasi delle seguenti proprietà dello stato attivo: su, giù, sinistra, destra, avanti, precedente, inizio, fine, invio e uscita. (Ib300f)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.ui:ui-*:1.3.0-beta01
viene rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Refactoring dei nodi del modificatore
Il livello che gestisce le istanze Modifier/Modifier.Element
e ne coordina il comportamento su LayoutNodes
è stato sottoposto a un importante refactoring. Allo stato attuale, si è trattato di un refactoring che non ha influito sull'API pubblica di nessuno dei numerosi modificatori in Compose e può essere visto come una modifica solo per l'implementazione. Nonostante ciò, si tratta di un cambiamento importante per vari motivi. (Ie4313)
Riepilogo delle modifiche
Le API sperimentali Modifier.Node
aggiunte forniscono un'astrazione che consente di mantenere lo stato in un'istanza, che verrà conservata per il ciclo di vita del nodo di layout e verrà allocata per nodo layout e per utilizzo del Modifier.Element
corrispondente che lo ha prodotto.
In generale, questa astrazione fornisce un meccanismo alternativo per produrre modificatori stateful senza fare affidamento sui meccanismi dell'API Modifier.composed
.
Rischio
Questa modifica è strettamente compatibile in modo binario con le release precedenti ed è pensata per essere compatibile con le versioni precedenti in termini di comportamento osservabile per quanto più pratico e ragionevole. Detto questo, ci sono pochi sottosistemi di composizione che questo refactoring non ha toccato ed è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e che non sono ancora stati trovati e corretti.
Esegui l'upgrade a questa release con cautela. Se ritieni che si sia verificato un problema, non esitare a comunicarcelo.
API sperimentali
Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "nodo di modifica". I nodi vengono creati come risultato
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Modifica che provoca un'interruzione del comportamento
L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp.
L'elevazione massima supportata per le finestre di dialogo e i popup di Compose è stata ridotta da 30 dp a 8 dp. Questa modifica interessa le finestre di dialogo e i popup personalizzati dell'UI e del materiale. Questa modifica viene apportata per mitigare un bug relativo all'accessibilità nelle versioni di Android precedenti alla S e per garantire che i servizi di accessibilità all'interno di queste finestre siano in grado di interagire con i contenuti all'interno della finestra di dialogo o del popup.
Questa modifica ti riguarda solo se stai creando un'implementazione di finestre di dialogo o popup personalizzate con un'elevazione impostata su livelli superiori a 8 dp. Valuta la possibilità di ridurre l'elevazione della finestra di dialogo o del popup. Se devi disattivare questo nuovo comportamento, valuta la possibilità di biforcare la finestra di dialogo o il popup con l'elevazione impostata. Questa opzione è sconsigliata, perché l'accessibilità potrebbe risentirne e spetta allo sviluppatore assicurarsi che la parte inferiore della finestra di dialogo o del popup sia interagisci e leggibile dai servizi di accessibilità.
Modifiche alle API
- Risolto il problema per cui
painterResource
non si aggiornava in seguito alle modifiche alla configurazione (I58e73, b/228862715) rememberTextMeasurer
non richiede più i parametriFontFamily.Resolver
,Density
oLayoutDirection
. Utilizza il costruttoreTextMeasurer
per fornire valori personalizzati per questi parametri. (Ia1da3).- È stata aggiunta la proprietà
DialogProperties.decorFitsSystemWindows
per consentire alle finestre di dialogo di supportareWindowInsets
. (I57742, b/229378542) - I costruttori dei caratteri sono stati riportati nel file kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3).
- È stato rimosso l'operatore non necessario da diverse definizioni uguali. Questo non ha alcun effetto. (I6c309)
FontVariation.Setting
è un'interfaccia sigillata, per consentire future API di blocco. (I11021, b/143703328)- Aggiungi
CompositionGroup.findParameters
aSlotTree.kt
. In questo modo gli strumenti possono recuperare i parametri per un elementoCompositionGroup
senza dover analizzare l'intera tabella degli slot. (I124fe)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
LayoutCoordinates.findRootCoordinates()
ora è pubblico (I7fa37, b/204723384)- È stata aggiunta l'API sperimentale per ottenere
LayoutCoordinates
inPlacementScope
. In questo modo gli sviluppatori possono sapere dove posizionare gli elementi secondari rispetto alla loro posizione nel layout corrente. (I5482b, b/238632578) - È stato aggiunto
LayoutCoordinates.transformFrom
per completare la trasformazione di Matrix daLayoutCoordinates
a un altro. (Ic5ab1, b/238632578). - È stato deprecato
SemanticsModifier.id
e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524) - 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) - I costruttori dei caratteri ora accettano un elenco di
FontVariation.Setting
per la configurazione dei caratteri variabili sui dispositivi O+. (I11a9d, b/143703328). - Aggiungi l'API
FontVariation
per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328). - Il costruttore
LineHeightStyle.Alignment
è ora pubblico (sperimentale) (I4bbbe, b/235876330) - Il paragrafo è ora previsto|effettivo e definito per Android e desktop. (Id387e, b/239962983)
- L'interfaccia Paragrafo ora si chiama Paragarph, l'interfaccia sigillata. Non è possibile usare il paragrafo per la sottoclassificazione. Ti consigliamo di contattarci se questa modifica ti interessa. (If5247, b/239962983)
- Annotazione sperimentale rimossa da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - Ritira
TextInputService.show|hideSoftwareKeyboard
. Usa inveceSoftwareKeyboardController
nel codice dell'app eTextInputSession
nel codice di gestione IME. (I14e4c, b/183448615). - Aggiunta di una nuova API per i tipi di animazione esistenti (I26179)
Correzioni di bug
- È stato aggiunto l'elemento
@RequiresPermission
alle API che richiedono la concessione dell'autorizzazionePOST_NOTIFICATIONS
su SDK 33 e versioni successive. (Ie542e, b/238790278).
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta una nuova proprietà
PointerInputChange#pressure
per recuperare la pressione. (I45a5e, b/205164819). - È stato aggiunto
rememberTextMeasurer
per creare e ricordare facilmenteTextMeasurer
istanze nella composizione. (I8d66e). Rect
,RoundRect
eMutableRect
ora supportano la sintassiin
di Kotlin per la chiamata della funzionecontains
. (Ie42b0, b/238642990).- Rimuovi le funzioni non necessarie da
KeyInjectionScope
, poiché possono essere facilmente implementate con parti più semplici dell'API. Le funzioni rimosse includonopressKeys
,keysDown
ekeysUp
. (I81d77) - È stato eseguito il refactoring dei nomi dei parametri e della costante in
KeyInjectionScope
per includere il suffisso "Millis", dove le unità di tali costanti e parametri sono in millisecondi. (Iabef5). - Metodo
toStringForLog()
aggiunto aEditCommand
per contribuire a risolvere i problemi di modifica del testo. (I53354, b/228862731) - È 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) - Introduci una nuova API sperimentale denominata
TextMeasurer
che consente il calcolo del layout di testo arbitrario che genera risultati identici a quelli diBasicText
, indipendentemente dal runtime di Compose. (I17101) - Aggiungi
mapTree
aSlotTree.kt
. In questo modo gli strumenti possono esaminareSlotTree
senza prima creare una copia in memoria come fa Albero. Per Layout Inspector, ciò migliora le prestazioni di circa un fattore 10. (I5e113). - Anteprima di Compose modificata per essere archiviata in file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni
MultiPreview
dalle librerie. (I85699, b/233511976)
Correzioni di bug
- Quando aggiungi eventi
InputEventChange
al trackerVelocity
considereremo ora i delta anziché le posizioni, in modo da garantire che la velocità venga calcolata correttamente in tutti i casi, anche se l'elemento target si muove (Icea9d, b/216582726, b/223440806, b/227709803) - Correggi gli NPE causati da
AnnotatedString.toUpperCase
quando sono presenti annotazioni. (I0aca2, b/210899140).
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Nuovo elemento
LookaheadLayout
che supporta un passaggio Lookahead prima della misura/del layout effettivi. In questo modo è possibile precalcolare il layout quando viene modificato, consentendo al contempo alla misura/layout post-lookahead di utilizzare la dimensione/posizione precalcolata per animare le dimensioni e le posizioni verso il target.SubcomposeLayouts
non sono ancora supportati, ma lo saranno in una versione futura. (I477f5) - Aggiungi il parametro alfa facoltativo al sapore del pennello di
TextStyle
eSpanStyle
per modificare l'opacità dell'interoText
. (Ic2fac, b/234117635). - È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare il supporto dei linkTalkBack
inAnnotatedString
. (I1c754, b/231495122). - Spostamento delle funzionalità dell'utilità al runtime (I4f729)
Correzioni di bug
TextLayoutResult.getLineForOffset
non tira. (Idc5d6, b/235876324).
Contributi esterni
- È stata aggiunta una nuova API
WindowInfo.keyboardModifiers
per osservarne lo stato all'interno delle funzioni componibili o tramite snapshotFlow (Icdb8a)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.ui:ui-*:1.2.1
viene rilasciato. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- Corretto il puntatore null nello strumento di controllo (b/237987764)
- Correzione dell'eccezione di trasmissione della classe durante il promemoria nello strumento di controllo (b/235526153)
Versione 1.2.0
27 luglio 2022
androidx.compose.ui:ui-*:1.2.0
viene rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
Miglioramenti dell'attraversamento dello stato attivo:
- Ora lo scorrimento basato sullo stato attivo degli elenchi Lazy funziona con la nuova API
BeyondBoundsLayout
di base - Nuove API per la personalizzazione del comportamento in
FocusOrder
eFocusProperties
- Miglioramento del comportamento della tastiera fisica o del telecomando della TV
- Ora lo scorrimento basato sullo stato attivo degli elenchi Lazy funziona con la nuova API
Nuove API per:
- Pannelli per finestre
- Primitive di base per animazioni infinite e layout basate su gesti
GraphicsLayer
funzionalità, tra cuiRenderEffect
Numerose correzioni di bug e miglioramenti delle prestazioni
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc03
viene rilasciato. La versione 1.2.0-rc03 contiene questi commit.
- Nessuna modifica dalla versione 1.2.0-rc02.
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc02
viene rilasciato. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc01
viene rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Le interfacce nelle librerie di scrittura ora vengono create utilizzando i metodi di interfaccia predefinita jdk8 (I5bcf1)
- Sono state aggiunte funzioni di ordine superiore a
KeyInjectionScope
per l'inserimento della pressione dei tasti mentre gli altri tasti vengono tenuti premuti o attivati. Queste funzioni includonowithKeysDown
,withKeysToggled
e così via. Sono state aggiunte anche proprietà che consentono di verificare se un determinato meta tasto è inattivo, ad esempioisCtrlDown
per verificare se uno dei tasti di controllo è stato premuto. ConsultaKeyInjectionScope
per la documentazione su ciascuna funzione. (I9f6cd, b/229831515). - È 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) - Rinomina
runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
, in modo da allinearlo acreateEmptyComposeRule()
(I6fed7)
Versione 1.2.0-beta03
1° giugno 2022
androidx.compose.ui:ui-*:1.2.0-beta03
viene rilasciato. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
pressKeyTimes
, così comeisCapsLockOn
e amici aggiunti aKeyInjectionScope
. Inoltre, l'API ora supporta pattern di iniezione combinati di mouse e tastiera, ad esempio il clic su un pulsante del mouse con un meta tasto premuto. (I4c8da, b/229831515).- Aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Usa
performKeyInput
per inviare eventi chiave o inviali tramite la proprietàkey
diMultiModalInjectionScope
durante un gesto di input multimodale conperformMultiModalInput
. ConsultaKeyInjectionScope
per la documentazione dell'API. (Ic5000, b/229831515) - Aggiungi nuovo
GoogleFont.Provider.AllFontsListUri
per recuperare la sorgente internet canonica di Google Fonts supportata da Android. - Migliora i messaggi di errore che vengono visualizzati di nuovo quando GoogleFonts non viene caricato in modalità di scrittura. (I0416c)
Correzioni di bug
- Quando aggiungi eventi
InputEventChange
al 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 (I51ec3, b/216582726, b/223440806, b/227709803) - L'impostazione
Show Layout Bounds
verrà ora applicata ai componibili subito dopo l'attivazione/disattivazione dal riquadro delle impostazioni rapide, senza dover uscire e rientrare nell'attività. (I843d5, b/225937688) - La ricerca delle stringhe di accessibilità non attiva il caricamento dei caratteri. In precedenza, provava a caricare i caratteri per
StyleSpans
, causando arresti anomali seFontFamily.Resolver
fosse stato sovrascritto. (I4609d) - 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.ui:ui-*:1.2.0-beta02
viene rilasciato. La versione 1.2.0-beta02 contiene questi commit.
Modifiche alle API
- Riutilizzo della funzionalità in altri tipi di anteprima (I19f39)
Correzioni di bug
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
è stato rinominato inDisposeOnDetachedFromWindowOrReleasedFromPool
per riflettere meglio il momento in cui si verificano cessioni, piuttosto che semplicemente quando non si verificano. (If15ca)
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.ui:ui-*:1.2.0-beta01
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima versione beta 1.2.
Modifiche alle API
- Aggiunta dell'esperimento
BeyondBoundsInterval
sperimentale che può essere utilizzato dalle implementazioni personalizzate diLazyList
quando il layout degli elementi supera i limiti visibili (Ifabfb, b/184670295) - Le versioni con chiave di
Modifier.composed
ora sono API stabili (Ie65e4, b/229988420) - Semplificato l'API
rememberNestedScrollConnection
per utilizzare locali della composizione al fine di acquisire le informazioni di visualizzazione correnti (I67ca7) - Ora è possibile utilizzare l'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
nell'ambito del file utilizzando il prefisso@file
. Se utilizzi un'annotazione di destinazione nell'ambito del file, il compilatore presumerà che tutte le funzioni componibili nel file siano destinate all'applicatore associato. Ad esempio, l'uso di@file:UiComposable
dichiara che tutte le funzioni@Composable
hanno come target l'applicatore dell'interfaccia utente di Compose. Una funzione che deve scegliere come target un altro applicatore deve fornire esplicitamente l'annotazione dell'indicatore di destinazione per l'applicatore desiderato. (I40804) Introdotta una nuova API sperimentale, indipendente dalla piattaforma, di test:
interface ComposeUiTest
efun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, che possono essere utilizzate per eseguire test Ui di Compose senza bisogno di unTestRule
. Per eseguire un test senzaComposeTestRule
, supera il test come lambda arunComposeUiTest
e utilizza i metodi e i membri nell'ambito del ricevitoreComposeUiTest
, che sono gli stessi diComposeContentTestRule
.Vengono aggiunti
interface AndroidComposeUiTest
efun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
specifici per Android per fornire l'accesso all'attività sottostante, come perAndroidComposeTestRule
. Per un controllo ancora maggiore, puoi creare un'istanza diclass AndroidComposeUiTestEnvironment
autonomamente.L'implementazione per desktop è
class DesktopComposeUiTest
, ma al momento non sono offerte funzioni di esecuzione specifiche per desktop.La migrazione di un test da
ComposeTestRule
aComposeUiTest
può essere eseguita in questo modo (esempio per Android). Da:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Segui le istruzioni per eseguire le operazioni indicate:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Al momento
ComposeContentTestRule
eComposeTestRule
non si estendono daComposeUiTest
, il che significa che non è ancora possibile chiamare le funzioni dell'estensione suComposeUiTest
nell'interfaccia diTestRule
. QuandoComposeUiTest
passerà all'API stabile, i valoriComposeContentTestRule
eComposeTestRule
verranno modificati in modo da estendersi daComposeUiTest
. (Ib4e90)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)È stato aggiunto
Brush
aTextStyle
eSpanStyle
per fornire un modo per disegnare il testo con la 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)Elemento
LineHeightBehavior
aggiunto aTextStyle
eParagraphStyle
.LineHeightBehavior
consente di stabilire se applicare l'altezza della riga all'inizio e alla fine della prima 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)Le funzioni
PlatformParagraphStyle.lerp
ePlatformSpanStyle.lerp
sono state modificate in funzioni di primo livello (I9a268)
Correzioni di bug
- La documentazione di
PointerInputChange::copy
ora indica correttamente che si tratta di una copia superficiale. (I182f5). - Supporta i puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
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)
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.ui:ui-*:1.2.0-alpha08
viene rilasciato. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Le funzioni
pluralStringResource
sono state contrassegnate come sperimentali per consentire l'evoluzione e supportare una migliore internazionalizzazione in futuro. (If24e4). - Ora è possibile usare il parametro Vincoli per Paragrafo e MultiParagrafo. Al momento non è possibile superare
Constraints.maxHeight
, ma è possibile eseguire alcuni calcoli in futuro, ad esempio 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)- PointerIcon è ora un'interfaccia
@Stable
(I9dafe) - 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). - Attiva l'interoperabilità di Scorrimento nidificato tra Scrivi e Visualizza nella direzione Scrittura > Visualizza. Ciò significa che un elemento principale di scrittura potrà ricevere delta di scorrimento nidificati da una visualizzazione di scorrimento nidificata. (If7949, b/174348612)
- Il nuovo
SemanticsProperty testTagsAsResourceId
, che può essere utilizzato per rendere Compose conforme ai test UIAutomator progettati per il sistema View. (I39c20). - 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). - Gli insegnanti di paragrafi e multiparagrafo hanno riordinato gli argomenti posizionali prima degli argomenti facoltativi. (Idafaa)
AndroidFont
ora utilizza typefaceLoader come parametro del costruttore. (I2c971)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
viene rilasciato. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- La nuova funzione
Snapshot.withoutReadObservation { ... }
è stata aggiunta. Consente agli utenti di eseguire il lambda passato senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potrebbe esserti utile nei casi d'uso in cui vuoi trarre vantaggio dalla scrittura/lettura sicura per i thread basata su snapshot, ma vuoi poter leggere il valore senza causare una ricomposizione o una nuova misurazione inutili. (I9f365, b/214054486). - La proprietà dell'estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare l'utilizzo di AndroidWindowInsets
. In questo modo,ComposeViews
separati nella gerarchia possono applicareWindowInsets
senza interferire tra loro. (I0ef08, b/220943142). - È stato aggiunto
KeyboardType.Decimal
come alternativa aKeyboard.Number
per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363) PointerEventType.Scroll
ePointerEvent.scrollDelta
sono ora API stabili (I574c5, b/225669674)- Abilita l'interoperabilità di Scorrimento nidificato tra View e Compose per la collaborazione delle classi di visualizzazione. Ciò significa che l'opzione Compose è ora in grado di inviare delta di scorrimento a un'entità principale di tipo View (cooperativa). (I5d1ac, b/174348612).
- Aggiornamento di
FontFamily.Resolver
per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7) - L'elemento
Font(AssetManager, String, ...)
è deprecato ed è stato sostituito conFont(String, AssetManager, ...)
. Questa è un'API sperimentale. (I1c7a4) - Aggiungi un nuovo descrittore di caratteri
Font(DeviceFontFamilyName)
per cercare facoltativamente i caratteri installati dal sistema durante le catene di riserva dei caratteri. (I30468, b/219754572) - È stata aggiunta la configurazione di compatibilità temporanea per
includeFontPadding
in TextStyle/ParagraphStyle.includeFontPadding
può essere modificato tramiteTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Questa è un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) - Aggiungi l'estensione
GoogleFont.Provider.isAvailableOnDevice
per ricevere assistenza per il debug. (I64e31). - Aggiungi il costruttore
GoogleFont.Provider
da utilizzare con@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
ora si chiamaFont(GoogleFont)
, altrimenti l'API rimane stabile. (I125f2).
Correzioni di bug
- È stato aggiunto il controllo lint sul materiale/scaffold per garantire che venga utilizzata la spaziatura interna interna (Ifb111)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
viene rilasciato. 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) - È 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) Sono stati aggiornati i colori shadow/ambient in modo che siano i parametri finali di
Modifier.graphicsLayer
per la compatibilità dell'API (I3f864, b/160665122)Sono state aggiunte implementazioni predefinite a shadow/ambient color su
GraphicsLayerScope
per garantire modifiche significative all'APIOra evento aggiunta agli eventi RSB (Ief8ae)
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)L'upgrade di
RecyclerView
eCompose
ora migliorerà le prestazioni dello scorrimento per gli oggetti RecyclerView con visualizzazioni Compose come elementi secondari.Aggiungi
ViewCompositionStrategy.Default
come metodo per recuperare la strategia predefinita integrataAggiungi
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, che è la nuova strategia predefinita e gestisce correttamente i container in pool come RecyclerView. (If7282)Aggiunto il supporto per l'annotazione delle classi di annotazioni con @Preview come primo passaggio per l'aggiunta della funzionalità Anteprima multipla. Queste annotazioni potrebbero essere utilizzate per annotare metodi componibili o altre classi di annotazioni, che potrebbero quindi essere considerate come annotate indirettamente con l'elemento @Preview specificato. (I12eff).
Dispositivi di riferimento aggiunti all'elenco Dispositivi per @Anteprima (I071c9)
Correzioni di bug
- Sono state aggiornate le API di grafica Vector in modo che utilizzino l'annotazione componibile corretta @VectorComposable anziché @UiComposable (I942bc)
- Rimuovi in linea da
AnnotatedString.Builder.withStyle
(If84d5)
Contributi esterni
- Composer-ui: aggiungi proprietà
ambientShadowColor
espotShadowColor
aGraphicsLayerScope
(I1ba1a, b/160665122) - Le risorse plurali sono ora supportate tramite le funzioni
pluralStringResource
. (Ib2f23, b/191375123).
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
viene rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche alle API
TextToolbar
ora accetta gli argomenti lambda anzichéActionCallback
. (Ib2eb9, b/197950089).- Valore nulla aggiornato nel core e nell'appcompat per corrispondere a Tiramisu DP2 (I0cbb7)
- L'interfaccia misurata ora espone la proprietà parentData (I3313f)
Modifier.onPlaced
e l'interfacciaOnPlacedModifier
sono ora stabili. (Ib5482)- Evviva! L'animazione di Scrivi ora supporta l'impostazione "Scala della durata dell'animazione" nelle Opzioni sviluppatore. (I5a4fc, b/161675988).
- È stato aggiunto un modificatore
BeyondBoundsLayout
locale (If8b51, b/184670295) - Testo: l'opzione includiFontPadding ora è disattivata per impostazione predefinita. Vengono gestiti
i problemi di ritaglio dovuti a
includeFontPadding=false
e non dovrebbero verificarsi interruzioni per gli script lunghi. (I31c84, b/171394808)
Correzioni di bug
ComposeContentTestRule.setContent
ora genererà unIllegalStateException
se tenti di impostare contenuti quando ne sono già presenti. (I888a5, b/199631334)- È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- Migliora gli esempi di scorrimento RSB. (I6a596)
Contributi esterni
- Aggiornato per utilizzare Kotlinx coroutines 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
viene rilasciato. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
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'annotazioneComposableTarget
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).Font(resId, ...)
ora supporta il caricamento della strategia su un'API stabile. (Ief3d2).FontLoadingStrategy
è ora un'API stabile. (I1ee35, b/174162090)Supporta il caricamento asincrono dei caratteri nel testo (I77057, b/214587005)
Aggiungi l'API bridge per convertire il valore
Font.ResourceLoader
personalizzato inFontFamily.Resolver
. (Ia0060)
Correzioni di bug
- I valori
FontFamily.Resolver
forniti vengono passati a sottocomposizioni come Popup. - I valori
Font.ResourceLoader
forniti vengono passati a sottocomposizioni come Popup. (I48fa5).
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
viene rilasciato. 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). - Introduzione del metodo
destroyDisplayListData
nella classe stubRenderNode
(I1e659, b/216660268) - È stata aggiunta una nuova API che consente di premisurare gli elementi secondari di
SubcomposeLayout
che hai precomposto. (I857ea) È stato aggiunto un elemento
movableContentOf
, che converte un lambda componibile in un lambda che sposta lo stato e i nodi corrispondenti in qualsiasi nuova località chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata al lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta alcuna nuova chiamata, lo stato viene rimosso definitivamente e ricorda che gli osservatori vengono avvisati.Se una lambda
movableContentOf
viene chiamata più volte nella stessa composizione, vengono creati un nuovo stato e nodi per ogni chiamata e, man mano che le chiamate escono dalla composizione e entrano nuove chiamate, lo stato viene spostato dalla prima chiamata in uscita a quella in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi definitivamente. (Ib4850)FontFamilyResolver
è ora disponibile tramiteLocalFontFamilyResolver.current
Sono stati aggiunti
createFontFamilyResolver(context)
ecreateFontFamilyResolver(context, coroutineScope)
per creare nuovi resolver FontFamily al di fuori dell'utilizzo di scrittura.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)Supporto per il caricamento asincrono e facoltativo dei caratteri, con comportamento di riserva. Questo percorso è utilizzato da Text e TextField ed è esposto tramite FontFamilyResolver
Supporto del precaricamento dei caratteri tramite
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
consente di impostare il contesto globale della coroutine utilizzato per caricare i caratteri asincroni. (I87fe8, b/174162090)È stata aggiunta
AndroidFont
, una nuova API di basso livello per fornire nuovi tipi di descrittori 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, consultaAndroidFont
.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).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. Usa 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)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).Espone le funzioni HSV e HSL in
Color
come API non sperimentale. Lo spazio colore Oklab ora è un'API pubblica. (I08fb6, b/180731008).AndroidComposeTestRule.AndroidComposeStatement
deprecato, che non era pensato per essere nell'API pubblica e non ha fatto nulla per te in ogni caso. (Ibc46b)Rinominazione della classe kt generata internamente (Ia0b9e, b/174162090)
FontLoadingStrategy.values
rimossa (I42a9d, b/174162090)Il caricatore globale di caratteri ora si chiama
FontFamilyResolver
. (I4f773, b/174162090)Usa un nuovo sistema di caricamento dei caratteri per i computer. (I9ce5c, b/174162090).
FontFamily.Resolver.resolve
restituisceState<Any>
(I4406c, b/174162090)
Correzioni di bug
- I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivati e la tastiera viene visualizzata, quando la modalità di immissione flessibile è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120). - Il desktop utilizza la composizione locale per
FontFamily.Resolver
- L'app
FontLoader
per computer è deprecata - Nuovo fabbricante
createFontFamilyResolver
su computer (I6bbbb, b/174162090) - Il tipo di input da tastiera software non sfarfalla più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiunti
Modifier.onRotaryScrollEvent()
eModifier.onPreRotaryScrollEvent()
per dispositivi indossabili con pulsante laterale rotante (I18bf5, b/210748686) - Aggiungi l'estensione
View.createLifecycleAwareRecomposer
sperimentale (I0cde6)
Contributi esterni
PointerEvent.scrollDelta.y
ora è invertito su Android (ora restituisce 1 anziché -1 se incliniamo la rotellina del mouse verso destra) (Ia9811)
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- Deprecato
FontFamily.canLoadSynchronously
. Questa proprietà non ha significato semantico. (Ica5ef). - Aggiunto campo identità a
CompositionData
per la generazione di ID invarianti in Layout Inspector. (Ic116e) - ID dispositivi Wear OS aggiunti all'elenco dei dispositivi in anteprima (I93232)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.ui:ui-*:1.1.1
viene rilasciato. 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.ui:ui-*:1.1.0
viene rilasciato. 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 rotaia di 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.ui:ui-*:1.1.0-rc03
viene rilasciato. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornato per supportare Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.ui:ui-*:1.1.0-rc01
viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un bug che causava la mancanza di azioni di scorrimento di accessibilità (I7cbfb)
- Ora
SemanticsNodeInteraction.captureToImage()
funzionerà anche seHardwareRenderer.isDrawingEnabled()
èfalse
, abilitandolo per tutta la durata della chiamata (Idf3d0)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.ui:ui-*:1.1.0-beta04
viene rilasciato. 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 agli utenti di utilizzare PointerInputchange nel suo complesso o di verificare se è stato consumato o meno. (I2e59d).
- Aggiunge il supporto per gli eventi della rotellina di scorrimento del mouse nel livello UI. (Ia14eb, b/198214718).
- Aggiungi sovraccarichi
Modifier.composed
sperimentali che accettano chiavi per il confronto per l'uguaglianza e sono idonei a ignorare le ottimizzazioni. (Ice799, b/205851704) ComposeNotIdleException
ora si estende daException
anziché direttamente daThrowable
. Tieni presente che questo significa che le clausole catch che catturanoException
ora potrebbero rilevareComposeNotIdleException
, dove non lo avrebbero fatto in precedenza. (I9c217).
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.ui:ui-*:1.1.0-beta03
viene rilasciato. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- È stato aggiunto il nuovo modificatore Modifier.onPlaced per consentire di osservare le modifiche al posizionamento. Pertanto, è possibile apportare ulteriori modifiche all'offset del modificatore secondario in base alla modifica del posizionamento osservata. (I558fd)
InjectionScope.flush()
eInjectionScope.dispose()
rimossi. Il lavaggio di tutti gli eventi e l'eliminazione dell'ambito avvengono ora alla fine del metodo perform*Input() chiamato come prima. (I2bed8)MultiModalInjectionScope.Touch
eMultiModalInjectionScope.Mouse
rimossi. Per inserire eventi tocco e mouse per gesti multimodali, ora puoi usareMultiModalInjectionScope.touch()
eMultiModalInjectionScope.mouse()
, che accettano entrambi una funzione lambda che ha l'ambito del ricevitore di questa modalità. (Idde18)
Correzioni di bug
- Il valore predefinito di
durationMillis
inTouchInjectionScope.swipeWithVelocity
viene ora calcolato in modo che sia possibile scorrere. (I19deb)
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.ui:ui-*:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- È 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)
- Nuove API di animazione per il supporto degli strumenti. In particolare, consentono agli strumenti di esaminare le animazioni e le relative configurazioni nelle transizioni. (I4116e).
Contributi esterni
- Aggiunto Modifier.pointerHoverIcon (I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-beta01
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
BringIntoView
sperimentale che ti consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare l'elemento (Ib918d, b/195353459) - Nuove API di animazione per il supporto degli strumenti. In particolare, consentono agli strumenti di esaminare le animazioni e le relative configurazioni nelle transizioni. (I4116e).
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
viene rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Rimuovi
ExperimentalComposeUiApi
daViewRootForInspector
eLayoutInfo.ownerViewId
(I5c2e3) - È stato aggiunto un sovraccarico senza figli per Layout, con maggiore efficienza (Ib0d9a)
InternalCompilerApi
rimosso dai metodi Composer che devono essere chiamati cross-module (I1aa0b)SemanticsNodeInteraction.performSemanticsAction
ora restituisce loSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db).- Aggiunta la composizione LocalInputModeManager per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786).
- È stato aggiunto
viewConfiguration: ViewConfiguration
aLayoutInfo
per consentire ai consumatori di ricevere il valore corretto per aspetti come il timeout per pressione prolungata. (I76ca6)- È stato aggiunto
viewConfiguration: ViewConfiguration
aInjectionScope
per consentire ai test di regolare l'inserimento dell'input in base a fattori quali il timeout della pressione prolungata o la perdita al tocco. - È stata modificata la durata predefinita della pressione prolungata e del doppio tocco per l'input sia del tocco che del mouse in base ai valori in
InjectionScope.viewConfiguration
.
- È stato aggiunto
- Implementazione di ExposedMenuBox basato su ExposedMenuBox con TextField e Menu a discesa all'interno (If60b2)
- IgnoraOnOutsideClick è stato aggiunto a PopupProperties, sostituendo launchOnClickOutside, che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti dell'ancoraggio, fornendo un controllo più preciso sull'eventuale richiamo di onDismissRequest. Ciò può essere utile, ad esempio, per evitare che il cursore venga rimosso se tocchi l'elemento.
- updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo di basso livello sui flag trasmessi dal popup a WindowManager di Android. Il parametro della funzione lambda sarà il flag calcolati dai valori PopupProperties che generano i flag di WindowManager: ad esempio, focusable. Il risultato della funzione lambda sarà l'ultimo flag che verrà passato ad Android WindowManager. Per impostazione predefinita, updateAndroidWindowManagerFlags lascia invariati i flag calcolati dai parametri. Questa API deve essere utilizzata con cautela, solo nei casi in cui il popup abbia requisiti di comportamento molto specifici. (I6e9f9).
Recomposer.state
è stato deprecato e sostituito daRecomposer.currentState
per cambiare il proprio tipo in StateFlow (Ic2ab3, b/197773820)- Aggiunte
flush()
edispose()
aInjectionScope
. Utilizzale quando vuoi eliminare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito. (Ifb73a) - È stato aggiunto un elemento
performScrollToNode(matcher: SemanticsMatcher)
che fa scorrere un container scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8) InjectionScope
ora implementaDensity
, che ti consente di convertire facilmente da px e dp inperformTouchInput
e amici. (I8fe1f)
Correzioni di bug
- AndroidView ora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla propria visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- È stato risolto un problema che a volte non consente di gestire gli scorrimenti in WearOS. (I9387e)
- Il tempo predefinito tra gli eventi di input inseriti è stato modificato da 10 ms a 16 ms. Questo potrebbe modificare il risultato dei test che eseguono gesti di input, come uno scorrimento specifico. (I829fd)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
viene rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiunto il supporto per la comunicazione tra modificatori (Id5467, b/198826874)
- Sono stati aggiunti i puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305).
- Aggiunte
density: Density
elayoutDirection: LayoutDirection
aLayoutInfo
. Ciò consente ai consumatori diLayoutInfo
di interpretare correttamente le dimensioni e la posizione esposta inLayoutInfo
. (I002f1). - Aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Usa
performMouseInput
per iniziare a inviare eventi del mouse o invia eventi del mouse tramite la proprietàMouse
diMultiModalInjectionScope
durante un gesto di input multimodale conperformMultiModalInput
. VediMouseInjectionScope
per la documentazione dell'API disponibile. (Iaa4a8, b/190493367).
Correzioni di bug
- Corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lenti che non lenti) in relazione allo scorrimento (I6cdb0)
TouchInjectionScope.swipeWithVelocity
migliorato. Ora accetta una gamma più ampia di variabili di input e suggerirà modifiche all'input se non è possibile creare uno scorrimento (I40fbe, b/182477143)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
viene rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
- Ora
PointerEvent
ha unPointerEventType
per supportare gli eventi di passaggio del mouse. (I091fa) - Consenti agli elementi secondari di accettare l'input del puntatore al di fuori dei limiti di input del puntatore del padre. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
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). - Ripeti l'implementazione di inspectable (I927bc, b/191017532)
- Nome del parametro ispezionabile modificato per creare una corrispondenza composta (I3a482, b/191017532)
Sono stati introdotti
performTouchInput
eTouchInjectionScope
come sostituzione diperformTouchInput
eTouchInjectionScope
, aprendo la strada ad altre modalità (come il mouse).TouchInjectionScope
ha gli stessi metodi diGestureScope
, ad eccezione dimovePointerTo
emovePointerBy
, che sono stati rinominati inupdatePointerTo
eupdatePointerBy
. Tutti gli altri metodi sono gli stessi.Il comportamento di
TouchInjectionScope
è quasi identico aGestureScope
, con due piccoli dettagli:- Quando si inviava un evento down mentre i cursori sono stati spostati senza inviare un evento di spostamento (in altre parole, è stato utilizzato
updatePointerTo()
, ma nonmove()
, quindi viene chiamatodown()
), l'implementazione precedente faceva avanzare l'ora dell'evento e inviava un evento di spostamento prima di inviare l'evento down. La nuova implementazione invia comunque l'evento di spostamento, ma non avanza l'ora dell'evento in questo scenario specifico. - Quando si inviava un evento up mentre i puntatori sono stati spostati senza inviare un evento di spostamento (simile a quanto sopra), l'implementazione precedente faceva avanzare l'ora dell'evento e inviava un evento di spostamento prima di inviare l'evento up. La nuova implementazione non comporta nessuna delle due: le nuove posizioni dei puntatori si rifletteranno solo tramite l'evento up.
Infine,
TouchInjectionScope
introduce un nuovo metodocurrentPosition(pointerId: Int)
per ottenere la posizione corrente del puntatore dato. (If1191, b/190493367)- Quando si inviava un evento down mentre i cursori sono stati spostati senza inviare un evento di spostamento (in altre parole, è stato utilizzato
Correzioni di bug
- Consenti al clip di estendere i limiti del touch target oltre l'area del clip per scopi minimi del touch target. (I43e10, b/171509422)
- 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.ui:ui-*:1.1.0-alpha03
viene rilasciato. 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
Modifier.inspectable
per il wrapping di altri modificatori. (I1909b, b/191017532) - È stata aggiunta l'API
BlurredEdgeTreatment
per semplificare i casi d'uso della sfocatura nelle combinazioni più utilizzate di flag dei clip e TileModes. La maggior parte dei casi d'uso prevede il rendering dei contenuti sfocati al di fuori dei limiti dei contenuti originali e la sfocatura delle regioni al di fuori di questi limiti con un nero trasparente, oppure il ritaglio dei contenuti ai limiti dei contenuti che campionano il bordo più vicino per sfocare i kernel che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547) - Aggiunto il supporto per RenderEffect nel desktop di composizione. Sono stati introdotti gli effetti Offset e il modificatore di sfocatura come metodo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia di composizione. (I0f6aa, b/166927547).
- Introdotta API RenderEffect
che può essere facoltativamente configurata su
un
Modifier.graphicsLayer
per modificare i contenuti del livello stesso. Questa opzione può essere utilizzata per sfocare i contenuti di un elemento componibile e di un elemento componibile secondario all'interno di una gerarchia di composizione. (I47c4d, b/166927547) - AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Aggiunta la dimensione minima del touch target a ViewConfiguration per l'uso nella semantica e nell'input del puntatore per garantire l'accessibilità. (Ie861c)
- Aggiungi il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per gli effetti di rendering basati sulla sfocatura. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ehasScrollToKeyAction
sono ora API stabili (I142ae, b/178483889)- È stato aggiunto un metodo di test per ottenere i limiti tagliati. (I6b28e).
Correzioni di bug
- È stato rimosso il metodo isBounded da sfocaturaEdgeTreatment per favorire il controllo esplicito del parametro di forma null. (I85d68)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
viene rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche alle API
- PointerEvent ora supporta la lettura dello stato del pulsante del mouse e dello stato di modifica della tastiera. (I6310c, b/180075467)
- I gesti inseriti utilizzano ora l'ora di MainTestClock come fonte attendibile per il tempo. L'ora attuale degli eventi inseriti in
performGesture
verrà inizializzata sull'ora attuale di MainTestClock. (Ifb364, b/192064452). - Costruttore
DpRect(DpOffset, DpSize)
aggiunto (I2cf16, b/194219828) - Aggiunta della classe DpSize (I7abb1, b/194219828)
Correzioni di bug
- È stata aggiornata l'analisi del file XML delle grafiche vettoriali per supportare ColorStateLists come proprietà della tinta dei colori principali in VectorDrawables. (I86915, b/195668138)
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche alle API
RelocationRequester.bringIntoView
ora accetta un rettangolo come parametro che ci consente di visualizzare una parte di un componibile (Ice2c5, b/194330245)AnimatedImageVector
e le API correlate sono ora disponibili nel nuovo moduloandroidx.compose.animation:animation-graphics
. (I60873)- È stato aggiunto un modificatore sperimentale per gestire le richieste di trasferimento. (I65a97, b/178211874)
È stata introdotta l'API BrushPainter per supportare il disegno di un pennello arbitrario in un dipinto, simile a ColorPainter
L'API Brush è stata aggiornata per avere un parametro di dimensione intrinseco su cui viene eseguita una query in BrushPainter (Ia2752, b/189466433)
È stato aggiornato il metodo DrawScope#drawImage che utilizza i registri di origine e di destinazione per utilizzare un parametro facoltativo FiltraQualità. 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)
Aggiunto il metodo
GestureScope.advanceEventTime
per offrire un maggiore controllo sulla tempistica degli eventi in un gesto (Ibf3e2)
Correzioni di bug
- Per supportare meglio il concatenamento dei modificatori di disegno, assicurati che l'implementazione di Modifier.paint richiami il disegno DrawsContent.
In precedenza, Modifier.paint era destinato a un nodo foglia nella catena dei modificatori, ma così facendo ne impedisce la configurazione su un contenitore componibile (ad es. una scatola) o l'aggiunta di decorazioni aggiuntive come
Modifier.paint().border()
. Quando Modifier.paint chiama disegnoContent dopo aver disegnato i contenuti del pittore specificato, si ottiene una maggiore coerenza del comportamento con il pattern di modifica. (Ibb2a7, b/178201337, b/186213275). - Le finestre di dialogo ora seguono il comportamento relativo alle dimensioni della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388) InfiniteAnimationPolicy
spostato in :compose:ui (I5eb09, b/160602714)- Lo scorrimento tramite azioni di semantica per elenchi lenti e componenti a scorrimento regolare ora è animato (Id9066, b/190742024)
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.ui:ui-*:1.0.5
viene rilasciato. 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.ui:ui-*:1.0.4
viene rilasciato. 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.ui:ui-*:1.0.3
viene rilasciato. 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.ui:ui-*:1.0.2
viene rilasciato. La versione 1.0.2 contiene questi commit.
Aggiornato per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.ui:ui-*:1.0.1
viene rilasciato. 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.ui:ui-*:1.0.0
viene rilasciato. 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.ui:ui-*:1.0.0-rc02
viene rilasciato. La versione 1.0.0-rc02 contiene questi commit.
Correzioni di bug
- Le finestre di dialogo ora seguono il comportamento relativo alle dimensioni della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.ui:ui-*:1.0.0-rc01
viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Suddividi il modulo degli strumenti ui in
ui-tooling
eui-tooling-preview
(Iefa28, b/190649014)
Modifiche alle API
- Rimosse le versioni sperimentali
FocusManager#moveFocusIn
eFocusManager#moveFocusOut
deprecate (I227d7, b/170154986, b/186567354, b/168510304) - Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
useDefaultMaxWidth
inPopupProperties
è stato rinominato inusePlatformDefaultWidth
. (I05710)- Le finestre di dialogo ora possono utilizzare l'intera larghezza dello schermo. (I83929, b/190810877)
- Aggiunto il supporto sperimentale per le rappresentazioni dei colori HSV e HSL. (Id7cf8, b/180731008)
Modifiche del comportamento
- Compose
@Preview
ora fornisce unLocalActivityResultRegistryOwner
che ti consente di visualizzare l'anteprima dei componibili che utilizzano API comerememberLauncherForActivityResult()
che dipendono dal proprietario esistente. (Ib13d1, b/185693006). - Compose
@Preview
ora fornisce unLocalOnBackPressedDispatcherOwner
che ti consente di visualizzare l'anteprima dei componibili che utilizzano API comeBackHandler
che dipendono dal proprietario esistente. (Ia1c05, b/185693006).
Correzioni di bug
- Elemento
InfiniteAnimationPolicy
spostato inandroidx.compose.ui:ui
(I5eb09, b/160602714) - LivelyImageVector è stato temporaneamente rimosso per modificare la struttura del modulo. (I41906, b/160602714)
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.ui:ui-*:1.0.0-beta09
viene rilasciato. La versione 1.0.0-beta09 contiene questi commit.
Modifiche alle API
- Cambia enum Role e LiveRegionMode in classi in linea con il costruttore privato (Id1890)
- L'uso delle maiuscole della tastiera viene convertito in una classe incorporata. (Id5a1c)
- Modifica HapticFeedbackType in una classe in linea. (I255ec)
- Modifier.pointerInteropFilter è @alloComposeUiApi. (Iede6c).
- TextAllinea, FontSynthesis e TextDirection sono ora classi incorporate. (I212fe)
- TextOverflow viene modificato in una classe incorporata. (I433af)
- FontStyle è ora una classe incorporata. (I9e48b).
Correzioni di bug
- Per il momento, le costanti chiave sono @experimentComposeUiApi. L'utilizzo del codice può dichiarare le costanti private prima della stabilizzazione. (Ia5d48).
- Ora i test Compose possono essere eseguiti su Robolectric. Finora sono state identificate le seguenti limitazioni:
- Non esiste una bitmap nativa, quindi
ImageBitmap()
genera un'eccezione NullPointer. - Non c'è nessun disegno, quindi
captureToImage()
attenderà a tempo indeterminato il prossimo pareggio (ad esempio con deadlock). - Non è stato caricato alcun carattere, quindi il testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
ComposeTestRule.waitUntil {}
non esegue il thread principale durante l'attesa, il che significa che è equivalente aComposeTestRule.mainClock.advanceTimeUntil {}
. Si prevede di identificare ulteriori limitazioni in futuro. (I284fa)
- Non esiste una bitmap nativa, quindi
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.ui:ui-*:1.0.0-beta08
viene rilasciato. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
- L'enumerazione
NestedScrollSource
è sostituita da una classe incorporata. (Ie321b, b/187055290). FocusManager.clearFocus(forcedClear = true)
è stato rinominato inFocusManager.clearFocus(force = true)
(Ia0c41)- È 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)
- Rimuovi
@ExperimentalComposeUiApi
daPopupProperties
. (I01fa6) PointerType
è stata modificata da enum a una classe in linea (If5058)- 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) Modifier.onSizeChanged()
eModifier.onGloballyPositioned()
non sono più funzioni integrate (I727f6, b/186109675)- 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).
PlaceholderVerticalAlign
viene convertita in una classe incorporata. (If6290)- TextUnitType è ora una classe in linea. (I4cba9).
- Le funzioni
AnnotatedString.withAnnotation
ora sono SperimentaliTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType è ora ExampleTextAPI anziché ExperimentalComposeApi.
Correzioni di bug
- Risolto il bug introdotto nella versione beta07, a causa del quale gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica di posizione. Non è necessario chiamare change.consumePositionChange nei callback onTrascina (I42fc4, b/185096350, b/187320697) - I Modificatori di layout che forniscono linee di allineamento sono stati corretti. È stato corretto un bug che causava la mancata misurazione del genitore quando le linee di allineamento degli elementi secondari stavano cambiando. (I4401f, b/174315652).
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.ui:ui-*:1.0.0-beta07
viene rilasciato. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'interfaccia
ViewRootForInspector
per l'utilizzo nello strumento di ispezione (Ib70df) SubcomposeLayoutState
ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di slot invece di smaltirli per poter riutilizzare lo slot la prossima volta che ne avremo bisogno (Ieb981)- L'enumerazione KeyEventType viene sostituita da una classe in linea. (Id670a, b/187055290)
- L'enumerazione
FocusDirection
è sostituita da una classe incorporata. (Ib6d03, b/187055290, b/184086802). - Introduci la possibilità di istruire lo stato SubcomposeLayout che consente di precomporre il contenuto in un slotId richiede, in modo da rendere più veloce la prossima misura, in quanto la prossima volta che proveremo a sottocomporre con lo slotId specificato non ci sarà più bisogno di una composizione. (I42580, b/184940225)
- Aggiunto il punto di manipolazione per la selezione dei clip (Iff80d, b/183408447)
- Sono state rimosse le API inutilizzate relative al supporto di Layout Inspector. (I2ac78).
Correzioni di bug
- LazyColumn/Row ora 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)
TextGeomerticTransform
eTextDecoration
suAnnotatedString
verranno applicati come specificato. (I61900, b/184760917)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.ui:ui-*:1.0.0-beta06
viene rilasciato. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
- Risolvi il conflitto con il gesto di navigazione (I1145e)
@ComposeCompilerApi
non è più@RequiresOptIn
(Iab690)- Sono state aggiunte 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
- Il proprietarioViewId aggiunto a Graphic LayerInfo (I19f62)
- Sono stati aggiunti sovraccarichi Font() per caricare i caratteri da asset, File e FileDescriptor (I5d382)
- Aggiunta l'API Accessibility
error
che consente di contrassegnare un nodo che contiene input non validi (I12997, b/180584804, b/182142737) - Sono stati aggiunti sovraccarichi di
Font()
per caricare i caratteri da asset, File e FileDescriptor (I43007) - Supporto del salvataggio di AnnotatedString in
TextFieldValue.Saver
. Aggiunta delle funzioni di utilitàaddTtsAnnotation
e withAnnotation aAnnotatedString.Builder
(I8cbdc, b/178446304) - Aggiunta della funzione di costruttore TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.ui:ui-*:1.0.0-beta05
viene rilasciato. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- Aggiunta dell'esperimento sperimentale
FocusManager.moveFocus(In)
eFocusManager.moveFocus(Out)
(Ic5534, b/183746743) - Aggiunta dell'API sperimentale
performTextInputSelection
(I2dcbb, b/178510628) - L'interfaccia di
InputEventCallback
è deprecata. Non è stato possibile utilizzare l'interfaccia in nessuna API pubblica e non è stata utilizzata nel codice. (I34a02, b/184003208). - Funzione
TextLayoutResult/createTextLayoutResult
deprecata. È una funzione pubblica inutilizzata che è stata aggiunta per i test. La funzione non esegue alcuna azione utilizzabile per le API di testo Compose. La funzione è ora deprecata e verrà rimossa in un secondo momento. (I80413)
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.ui:ui-*:1.0.0-beta04
viene rilasciato. La versione 1.0.0-beta04 contiene questi commit.
Modifiche alle API
- Rinomina
hideSoftwareKeyboard
eshowSoftwareKeyboard
suSoftwareKeyboardController
rispettivamente inhide()
eshow()
.- Fornisce l'interfaccia ComposeLocal completa per LocalSoftwareKeyboardController, consentendone l'impostazione (particolarmente utile nei test) (I579a6)
- È stata aggiunta l'API LiveRegion Accessibility. Se il nodo è contrassegnato come regione attiva, i servizi di accessibilità informeranno automaticamente l'utente delle modifiche (Idcf6f, b/172590946)
- Viene introdotto TextOverflow.Visibile. (Ic8f89)
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) AndroidViewBinding
ora rimuove correttamente i frammenti con un aumento artificioso tramiteFragmentContainerView
quandoAndroidViewBinding
viene rimosso dalla gerarchia di scrittura. (Ib0248, b/179915946).- Ora
AndroidViewBinding
nidifica correttamente i frammenti gonfiati tramiteFragmentContainerView
quandoComposeView
si trova all'interno di unFragment
, risolvendo i problemi di salvataggio e ripristino dello stato di quei frammenti. (I70eb0, b/179915946). - Compose ViewBinding ora dipende da
Frammento
1.3.2
e ora mostra sempre i frammenti aumentati tramiteFragmentContainerView
dopo le modifiche alla configurazione. (I0743d, b/179915946).
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta03
viene rilasciato. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
- Controllo differito delle dipendenze ViewTree di ComposeView (I8dbbf, b/182466548)
- Sono stati aggiunti i parametri facoltativi
startX
/endX
estartY
/endY
alle funzioniswipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
. (I49e2d, b/182063305).
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta02
viene rilasciato. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- È 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) - Sono stati rimossi i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Il seguente
SemanticsMatchers
è stato contrassegnato come @SperimentaleTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Sono stati aggiunti i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correzioni di bug
- Applicare restrizioni all'uso pubblico delle API sperimentali (I6aa29, b/174531520)
androidx.compose.ui:ui
non dipende più da AppCompat o Fragment. Se utilizzi ComposeView nell'applicazione e Fragment e/o AppCompat, accertati di utilizzare AppCompat 1.3+ / Fragment 1.3+: queste versioni sono necessarie per impostare correttamente i proprietari del ciclo di vita e dello stato salvato necessari per ComposeView. (I1d6fa, b/161814404).- Correzione del problema di
rememberSaveable { mutableStateOf(0) }
quando utilizzato all'interno di una destinazione di navigazione-compose. (I1312b, b/180042685, b/180701630) - È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I658b6, b/168778053) - È stata corretta la rara NoSuchElementException in
tearDownRegistry()
diComposeRootRegistry
(Iddce1)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.ui:ui-*:1.0.0-beta01
viene rilasciato. 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)
- 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)
- Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in ResolutionLocals (I53520)
- Rimossi i metodi LayoutCoordinates ritirati, usa la funzione invece della proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- Alias tipo sostituiti dai tipi sottostanti:
ColorStop
ora èPair<Float, Color>
SpanStyleRange
ora è "AnnotatedString.RangeParagraphStyleRange
ora èAnnotatedString.Range<ParagraphStyle>
StringAnnotation
ora èAnnotatedString.Range<String>
- (I8dd1a).
- È 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)
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).I metodi deprecati dai moduli dell'UI sono stati rimossi (I646f6)
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)
Il partner
Modifier.tapGestureFilter
è stato rimosso. Usa invece il criterioModifier.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).
imageResource e vectorResource sono ora funzioni di estensione rispettivamente nelle creatività companion ImageBitmap e ImageVector.
load{Image,Vector,Font}Resource
funzioni sono state eliminate. (I89130)AnimationClockObservable e le sottoclassi sono state rimosse. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
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 di primo livello @TestOnly ClearRoots è 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).
ComponentActivity.setContent()
è stato rimosso da Composer:ui. Usa quello diandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
eLocalViewModelStoreOwner
sono stati rimossi da Composer:ui. Usa quelli diandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia scrollable anziché la classe scrollableController (I4f5a5, b/174485541, b/175294473)
Il supporto di Custom Evens da PointerInputModifier è stato rimosso (I02707, b/175294473)
SnapshotStateObservationr non è più sperimentale (Id2e6a)
Eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)
longPressIntentFilter e doubleClickIntentFilter sono stati rimossi. Usa Modifier.pointerInput con funzioni helper, ad esempio detectTapTrackings (I2fedf, b/175294473)
La rimozione dell'API String.format ha eseguito il refactoring degli utilizzi in vari metodi toString per non utilizzare String.format internamente. (Id1290)
Asserzioni DP rimosse (I798d2)
Rimozione di androidx.compose.runtime:runtime-dispatch (I55feb)
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)
FlingConfig è stato rinominato in FlingBehavior ora e consente la personalizzazione dell'animazione di sospensione anziché dei Decadimenti predefiniti. (I02b86, b/175294473).
È stata aggiunta una funzione helper che è utile per impostare la stessa azione per tutti i callback ImeAction (I63447, b/179226323)
È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per sostituirlo a breve con una nuova API. (Iae869, b/168778053).
FontSpan e FontWeigthStyleSpan non vengono più utilizzati e rimossi. (Ie5b56, b/177423444).
Apportate le seguenti modifiche all'API Material:
- È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione della spaziatura interna predefinita.
- I parametri in BackdropScaffold sono stati riordinati in modo da seguire le linee guida dell'API per i parametri obbligatori che devono precedere i parametri facoltativi.
- Parametro
icon
spostato in BottomNavigatorItem perché sia successivo aselected
eonClick
. - Parametro
alwaysShowLabels
rinominato in BottomNavigatorItem inalwaysShowLabel
. - Parametri
bodyContent
rinominati in alcuni componenti incontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo dei parametri non è cambiato, questo non causerà un errore nel tuo codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza. - Parametro
secondaryVariant
aggiunto adarkColors()
. Questo colore solitamente corrisponde asecondary
nel tema scuro, ma garantisce coerenza e un'ulteriore personalizzazione. - Sono stati rimossi ElevationDefaults e animazioniElevation() dalla piattaforma API pubblica perché non erano di uso comune / non utili.
- Il nome
onValueChangeEnd
inSlider
è stato rinominato inonValueChangeFinished
e l'elemento è nullo. - Parametro
text
rinominato inSnackbar
incontent
per coerenza. - Il parametro
contentPadding
è stato aggiunto aDropdownMenuItem
per consentire la personalizzazione della spaziatura interna predefinita e ha resocontent
un'estensione suRowScope
. - Rinominato
ModalDrawerLayout
inModalDrawer
. - Rinominato
BottomDrawerLayout
inBottomDrawer
. - (I1cc66)
Correzioni di bug
- È stata aggiunta l'API per utilizzare le risorse AnimatedVectorDrawable in Compose. Utilizza
animatedVectorResource per caricare un file XML
<animated-vector>
come AnimatedImageVector e animarlo con PaintFor (I8ea91) - È 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.ui:ui-*:1.0.0-alpha12
viene rilasciato. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Il supporto per ViewGroups è stato rimosso da UiApplier. Gli elementi componibili emitView deprecati sono stati rimossi. (Ifb214)
- 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)
- ComposizioneReference rinominato in ComposeContext (I53fcb)
- La funzionalità Bounds è stata rinominata DpRect (I4b32a)
- Test dell'aggiornamento: hasText() controllerà sia i testi di input che di etichetta/suggerimento/placeholder nel campo di testo (Iab803)
- viewModel() composable e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Ora dovrai aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 per utilizzarlo. (I7a374)
- Consenti l'azione con valore null in AccessibilityAction, cambia l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction daCharSequence a String (I0dc82)
- 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 aggiunto un elemento
Modifier.focusOrder()
che accetta FocusRequester senza specificare un ordine di focus personalizzato con lambda. Questa funzionalità è utile quando dobbiamo solo specificare un riferimento, ma non un ordine di interesse personalizzato per un componibile (I4f52a, b/179180978) - 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)
- Popup spostato per essere specifico per la piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e
isFocusable
è stato spostato in un parametrofocusable
inPopupProperties
(Ieeea5) - Finestra di dialogo spostata per essere specifica per la piattaforma. Il nome AndroidDialogProperties è stato rinominato DialogProperties. (I4ef69, b/179138130).
- Fatto LayoutNode interno (I8a7b1, b/175103944)
- Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea).
- L'elemento loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Usa pittoreResource. (I6b809)
- Per motivi di prestazioni, la semantica di scrollAxisRange ora utilizza lambda che restituiscono valori in virgola mobile anziché valori Float diretti. (If4a35, b/178657186).
- Aggiunta della semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificare la semantica (I8e07a)
- Esecuzione interna di proprietariStorage/OwnerScope/OwnerSnapshot Analyzerr (I4ffaf, b/175103944)
- toIntPx() è stato rinominato in roundToPx() (I9b7e4, b/173502290).
- IntBounds è stato rinominato IntRect e l'API è stata migliorata. (I1f6ff).
- L'API Snapshot è stata aggiornata per essere più coerente con le linee guida dell'API, oltre a nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
- Aggiunta di azioni di espansione e compressione relative alla semantica. Aggiunta espandi e dimezzata in ModalBottomSheetState (Ib5064)
- 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).
- Il campo BaseTextField ritirato è stato rimosso. Utilizza BasicTextField. (I71368)
- 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 in precedenza stavi passando un oggetto salvaschermo personalizzato, ora devi utilizzare un nuovo sovraccarico di saveSaveable 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)
- Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate in quanto non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d) snapshotFlow
ewithMutableSnapshot
non sono più sperimentali (I6a45f)- 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).
- Il nome di UiSavedStateRegistry è stato rinominato SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato AmbientSaveableStateRegistry ed entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
- 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).
- Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
view.captureToImage()
rimosso senza alcuna sostituzione. (I7fcd2).- Introdotta API ColorMatrix utilizzata per modificare i valori RGB del contenuto di origine. Refactoring dell'API ColorFilter per essere un'interfaccia e corrispondere all'implementazione di PathEffect. (Ica1e8).
- Aggiungi il parametro layoutDirection al parametro createOutline di Shape. Consente di creare forme basate sulle indicazioni del layout. (I57c20, b/152756983).
- L'API onImeActionPerformed è deprecata. Usa invece KeyboardActions (If0bbd, b/179071523)
- È 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) - canTrascina è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
- È stato rinominato LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre il valore LayoutCoordintes del modificatore principale. Ciò rende più completi i casi d'uso di onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
- TapGeFilter, doubleTapgestFilter, longPress tredescherFilter e pressIndicaiton praticheFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTaparmas. (I6baf9, b/175294473).
- L'elemento unregisterProvider di SaveableStateRegistry è stato rimosso. Al posto di registerProvider() ora restituisce l'oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739)
- Il servizio ricordo di istanzaState() è stato rinominato in "RicordaSaveable()" e il nome è stato spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004).
- CoreText e CoreTextField rimossi dall'API pubblica
- Rimosso l'overload SelectionContainer deprecato
- (I99c19)
- I test in cui Compose viene utilizzato nelle gerarchie aggiunti/rimosse direttamente in WindowManager ora sono più stabili. (Ie81ed, b/175765614)
- Rimosso Recomposer.current(). [Abstract]ComposeView ora utilizza per impostazione predefinita i 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)
- Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
- I comandi EditCommands accettano AnnotatedString. Tuttavia, si tratta di una modifica solo per l'API e la modifica di testo multistile non è ancora implementata. (I4c3ea).
- I valori di Uptime e Durata sono stati rimossi. (Ib9bf4, b/177420019)
- ComposizioneData.asTree() e API correlate spostate in un modulo ui-tooling-data separato e contrassegnato come sperimentale (Ic95b8)
- I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione rtl. UniqueRounderCornerShape e UniqueCutCornerShape sono stati introdotti per i casi in cui il mirroring automatico non è desiderato. (I61040, b/152756983)
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)
Rimuovi la funzione StringBuilder.deleteAt pubblica involontariamente (Id6ed9)
Correzioni di bug
- I componenti ComposeView posizionati nelle gerarchie di visualizzazioni secondarie di un'altra composizione ora ospitano composizioni secondarie dei relativi predecessori (I92883)
- È stata aggiornata l'API imageFromResource per riutilizzare la cache disegnabile delle risorse durante il caricamento di oggetti ImageBitmap. (If3627, b/178751994)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
viene rilasciato. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in Foundation.layout. (I9420b, b/173387208)
- L'API Key.DPadUp è deprecata. Usa invece Key.DirectionUp. (Iab335, b/177954892)
- Interfaccia proprietario d'ora in poi interna. (If8e35).
- È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
- Modifica PopupPositionProvider in modo che utilizzi le coordinate relative alla finestra, non le coordinate globali. Rinomina parentGlobalBounds in anchorBounds e cambia windowGlobalBounds in windowSize: IntSize (I2994a)
- 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).
- AmbientSaveStateRegistryOwner è stato aggiunto in modo simile ai già esistenti AmbientLifecycleOwner e AmbientViewModelStoreOwner (I9a3e8, b/176756365)
- L'API di grafica vettoriale è stata aggiornata per supportare l'analisi della colorazione applicata alla radice delle grafiche vettoriali. (Id9d53, b/177210509)
- È stato aggiunto toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
- AmbientWindowManager è stato rinominato AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Deprecati metodi di coordinate globali e creati nuovi metodi di coordinate basati su finestre. (Iee284).
- Aggiunto Modifier.toolingGraphicslayer che aggiunge un modificatore livello grafico quando l'ispezione è attiva. (I315df)
- 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)
- 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)
- È stata aggiornata la densità dell'implementazione di Graphics LayerScope per supportare le conversioni di dp in pixel non elaborati. (Ied528, b/176819695)
- L'API Matrix è stata aggiornata per seguire l'ordinamento principale delle righe e fornire le costanti di indice per facilitare le conversioni tra rappresentazioni matrici diverse per soddisfare internamente la logica di conversione del framework tra SkMatrix e Matrix4. (I432e6).
- Metodi sperimentali monotonicFrameAnimationClockOf rimossi (Ib753f, b/170708374)
- Sposta String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
- TransformedText.TransformedText rinominato in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
- Rimozione di
data class
dai seguenti corsi:- ContenutiTestoInline
- Impostazioni internazionali (I605c7)
- 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)
- Modifica di VisualTransformation in un'interfaccia funzionale (I3bba4)
- Aggiunto un tipo di parametro di riferimento della funzione (I5e1bd)
- Aggiungi limiti trasformati a InspectorNode (Ice42f)
Correzioni di bug
- onCommit, onDispose e onActive sono stati deprecati a favore delle API SideEffect e DisposableEffect (If760e)
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 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)
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)
Rimuovi displaySize come da evitare. In genere, è meglio utilizzare almeno la dimensione onRoot() o la dimensione della finestra. (I62db4)
OnSizeChanged segnalava le dimensioni dei contenuti del layout. Ora indica le dimensioni nella loro posizione all'interno della catena di modifica. (I36b78, b/177562900)
L'API emit() e tutti gli overload sono stati deprecati e rinominati in ComposeNode. Le API sono identiche, ma solo un nome diverso per seguire le convenzioni di denominazione di Compose (I4137b)
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).
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).Operazioni aritmetiche deprecate tra 2 o più TextUnits. Le funzioni TextUnit.Sp e TextUnit.Em deprecate sono preferite rispetto alle funzioni di estensione, come Int.sp e Int.em. (I48369)
Le risorse nelle librerie senza risorse pubbliche dichiarate esplicitamente (ad es. tramite Public.xml) ora sono private per impostazione predefinita. (Ia1dcc, b/170882230).
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 seguano il metodo 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 delle estensioni per gli array:items(items: Array)
eitemsIndexed(Array)
(I803fc, b/175562574)Utilizza ImeAction.None anziché ImeAction.NoAction.
- Usa ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
Utilizza TestCoroutineDispatcher nei test (I532b6)
Rinominato TextInputService.onStateUpdated come updateState (Id4853)
La transizione basata su TransactionDefinition è stata ritirata (I0ac57)
L'elemento TextUnitType.Inherit è stato rimosso. Usa invece TextUnitType.Unspecified. (I9ff64).
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
viene rilasciato. La versione 1.0.0-alpha10 contiene questi commit.
Grande cambiamento
La ristrutturazione dell'API di compilazione interna consente di raggruppare le modifiche ai nodi generati a seguito della composizione nella fase di applicazione delle modifiche, dopo il completamento di tutte le funzioni
@Composable
.Si tratta di una modifica che provoca un errore di comportamento, che potrebbe influire sul codice dell'applicazione poiché i nodi non sono più disponibili nelle API interne e sperimentali fino a quando non sono state applicate le modifiche. In genere, si può risolvere questo problema racchiudendo il codice con queste dipendenze in un componibile
SideEffect
per posticipare l'esecuzione del codice fino a quando i nodi non sono stati creati e inizializzati. (I018da)
Modifiche alle API
- È stato aggiunto Modifier.focusOrder() che può essere utilizzato per specificare un ordine di attraversamento focus personalizzato (I90cf5, b/175899543, b/170155556, b/170155429)
- Rimosso invece l'utilizzo di focusObservationr onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
- 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)
- Sono stati rimossi PxSquared, PxCubed, PxInverse inutilizzati. Dimensione.center() modificata in una proprietà. (I973f7)
- Ora il modulo ui-test sarà in grado di configurare la creazione di ricompositori per le UI in fase di test (Ibebd8)
- Velocità modificata per includere parti dei componenti e operazioni matematiche. (Ib0447)
- Rinominato
@ExperimentalTesting
in@ExperimentalTestApi
in modo che sia coerente con annotazioni simili delle API sperimentali (Ia4502, b/171464963) - Rinominato Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
- Sono state rimosse le classi DpInverse, DpSquared e DpCubed inutilizzate. (I4d62b).
- Constraints#formatBy è stato rinominato in isSatisfiedBy. (I9cf5c).
- Aggiungi un callback per informare il proprietario quando i limiti dei nodi layout cambiano. (I72fd1)
- È stato aggiunto isspecified, isUnspecified e useOrElse per le classi incorporate con una costante non specificata. (I93f7b, b/174310811).
Espandi le API [Abstract]ComposeView per consentire il riciclo delle viste basate su Compose, smaltindo la loro composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e il rilevamento di ricompositori con ambito a finestre e ComposeReferences per la creazione di composizioni figlio.
Aggiungi ViewComposizioneStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews. Il comportamento predefinito è "Elimina allo scollegamento della finestra". (I860ab)
Rimossa API pubblica Any.identityHashCode() (I025d7)
È stata rimossa l'API toStringAsFixed per preferire l'utilizzo diretto di String.format. (Iaba6b).
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)
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).
È stata introdotta la proprietà Outline.bounds per ottenere il rettangolo di delimitazione per varie implementazioni di Outline. (I16e74, b/175093504).
TestUiDispatcher obsoleto. Utilizza Dispatchers.Main (Ic171f, b/175385255)
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)
Rinominato Posizione in DpOffset e rimosso getDistance() (Ib2dfd)
Dp.isFinite() divertente cambiato in val Dp.isFinite (I50e00)
Correzioni di bug
- Il ricompositore ora espone un flusso del suo stato attuale, consentendo di monitorarne l'attività e l'attività degli effetti associati. (Ifb2b9)
- È ora possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
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)
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le sue animazioni.- Nuovo DecayAnimationSpec per supportare le animazioni di decadimento multidimensionali
- (I820f2, b/168014930)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
viene rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- La funzionalità KeyEvent.Alt deprecata è stata rimossa. Utilizza invece KeyEvent.isAltPressed. (Idd695)
- Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati, usano invece Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Modifier.focusHighlightr è deprecato. Usa invece Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Per sospendere le API di input del puntatore, rinominati HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() a awaitPointerEventScope(). (Idf0a1, b/175142755)
- L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
- Aggiunta di dichiarazioni destrutturate per creare istanze FocuSRequester (I35d84, b/174817008)
- AccessibilityLabel è stata rinominata in contentDescription. accessibilityValue è stata rinominata in stateDescription. (I250f2)
- Gli eventi personalizzati sono stati rimossi dall'API di input del puntatore del mouse per la sospensione (Ia54d5, b/175142755)
- Sono state introdotte diverse nuove funzioni in SelectionRegistrar e si è anche rinominato onPositionChange per notificationPositionChange. (Ifbaf7)
- Altri membri di LayoutNode che abbiamo contrassegnato come interno (I443c6)
- È stato introdotto LayoutInfo per essere utilizzato da strumenti e test (I9b190)
- AndroidProprietario inviato come interno (Ibcad0, b/170296980)
- Rimossa annotazione SperimentalePointerInput (Ia7a24)
- Sistema di scorrimento nidificato aggiunto. Per ulteriori dettagli, consulta Modifier.nestedScorri (I36e15, b/162408885).
- subcomposeInto(LayoutNode) è stato reso interno (Id724a)
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)Sono state aggiunte le proprietà launchOnBackPress e launchOnClickOutside ad AndroidDialogProperties. Queste impostazioni consentono di configurare il momento in cui lambda onlaunchRequest della finestra di dialogo verrà richiamato. (If5e17)
È 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).
È stato aggiunto Modifier.clearAndSetSemantics per cancellare la semantica dei discendenti e impostarne di nuove. (I277ca)
Abbiamo spostato ContentDrawScope nel modulo UI-Graphic per usare DrawScope. (Iee043, b/173832789).
È stata introdotta l'API grafica PathEffect per fornire pattern diversi alle forme tratteggiate. Utilizzo deprecato di NativePathEffect a favore dell'implementazione prevista/effettiva di PathEffect. (I5e976, b/171072166).
Sono state aggiunte le interfacce IdlingResource a Compose, come variante supportata da Compose delle risorse inattive di Espresso. Possono essere registrate e annullarne la registrazione tramite il ComposeTestRule (I433f3)
Rimossa (annullamento) la registrazione globale di ComposeIdlingResource e la registrazione globale (annullamento) degli orologi in ComposeIdlingResource (I32660)
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)
Depreca LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)
BuildCompat.isAtLeastR deprecato (Idb37e)
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una stringa AnnotatedString. Funzione del generatore annotatedString deprecata. (Idfe0b)
Rimossi i metodi di estensione per Float e Doppio per convertire i valori in radianti. Spostato in una funzione privata all'interno del PathParser di implementazione, che era l'unica posizione in cui è stata utilizzata (I25f52)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
viene rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiungi l'azione per la semantica Ignora (I2b706)
- 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.draw Layer in Modifier.graphics Layer. Inoltre, le classi correlate sono state aggiornate in Graphicslayer in base al feedback dell'API. (I0bd29, b/173834241).
- Sono stati aggiunti i nuovi metodi placeable.placeWith Layer() e placeable.placeRELATIVEWithLivelli() che consentono a layout e modificatori di layout personalizzati di posizionare un asset secondario con l'introduzione di un livello grafico per il disegno. Dato che possiamo prima ottimizzare i disegni, quindi, quando dobbiamo spostare un bambino non dobbiamo rifare i contenuti, in secondo luogo possiamo applicare le trasformazioni dei disegni per un bambino (Ibd8f6, b/170296989, b/171493718, b/173030831).
- L'elemento
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Puoi utilizzarla senza specificare un tipo ora. (Ib60c8). - Aggiunte API Modifier.scale/rotate
per praticità di disegno Layer.
- Rinominato
Modifier.drawOpacity
inModifier.alpha
- Rinominato
Modifier.drawShadow
inModifier.shadow
(I264ca, b/173208140)
- Rinominato
- 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).
- 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).
- L'API TransformOrigin è stata aggiornata
per avere una sintassi di destrutturazione che restituisca
pivotFractionX
epivotFractionY
comecomponent1
ecomponent2
(If43c4, b/173586560) - È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
È 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). - È stata aggiunta un'API per verificare se sono stati premuti i tasti di modifica Alt, Ctrl, Meta o Maiusc quando è stato inviato un evento chiave. (I50ed9)
- È stato aggiunto un nuovo sovraccarico di
Modifier.drawLayer()
. Occorre un blocco lambda su un nuovo Graphics LayerScope in cui definisci i parametri del livello in modo da saltare la ricomposizione e il relayout quando si verifica la modifica dello stato. DrawlayerModifier è ora in fase di preparazione alla migrazione della sua logica nel metodo placeable.placeWith Layer() di LayoutModifier (I15e9f, b/173030831) - 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) - Elemento
androidx.compose.ui.text.Typeface
spostato inandroidx.compose.ui.text.font.Typeface
(Ic2b81) - L'argomento semantico mergeAllDescendants è stato rinominato mergeDescendants. (Ib6250)
- 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 dell'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).
- Aggiungi il parametro zIndex per la funzione place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e che qualsiasi layout personalizzato possa impostare zIndexes per i rispettivi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
- Proprietà della semantica di base spostate nell'UI (I6f05c)
- Depreca luogo(Offset) e placeRELATIVE(Offset). Utilizza invece sovraccarichi con offset int (I4c5e7)
- Le API deprecate in precedenza sono state rimosse: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso, usa Modifier.onDrawDirected. Modifier.plus è stato rimosso, utilizza Modifier.then. L'elemento Colore.Non impostato è stato rimosso, utilizza il valore Color.Non specificato. La classe PxBounds è stata rimossa. Usa invece il valore Rect. (Ie9d02, b/172562222).
- L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734).
- 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)
id
è stato rinominato inlayoutId
perLayoutIdParentData
.Measurable.id
è stato rinominato inMeasurable.layoutId
. (Iadbcb, b/172449643).- Nuovo rilevatore di gesti multi-touch, con strumenti per rilevare la rotazione, lo zoom e la panoramica. (Ic459d)
- Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1).
- Il controllo temporale nei test (TestAnimationClock e relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
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)
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).
Fornire implementazioni predefinite di metodi e proprietà in AnimationClockTestRule che possono essere delegati al relativo
clock
(I7ea3d, b/173399709)AndroidComposeTestRule può ora accettare attivatori di attività personalizzati (Ib8288, b/153623653, b/154135019)
L'API TextLayoutResult.getLineVisibileEnd è deprecata. In sostituzione di TextLayoutResult.getLineEnd, ora è presente un nuovo parametro visibleEnd. (I73282)
API TextFieldValue aggiornata
- reso di sola lettura TextFieldValue.composition
- viene generata un'eccezione rimossa per l'intervallo di selezione non valido (I4a675, b/172239032)
Supporto di TtsAnnotation per il motore di sintesi vocale. (I54cc6)
Nuove API per l'esecuzione di animazioni nelle coroutine (Ied662)
Correzioni di bug
- Il parametro di allineamento di Box è stato rinominato in contentAllineament. (I2c957)
- i modificatori offsetPx sono stati rinominati in offset. Ora utilizzano i parametri lambda anziché State. (Ic3021, b/173594846).
- Parametro resetInput aggiunto a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Aggiunto il controllo lint per i parametri di modifica nelle funzioni componibili. Questo controllo lint verifica la denominazione, il tipo restituito, il valore predefinito e l'ordine del parametro per verificare che sia coerente con le linee guida di Compose. (If493b)
- Opzione aggiunta temporaneamente per consentire il funzionamento di TestAnimationClock da MonotonicFrameClock (I1403b, b/173402197)
- 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 funzioni di fabbrica del Modificatore siano definite come estensioni su Modificatore, in modo che possano essere concatenate fluentemente. (I07981)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- Il ricompositore non accetta più un EmbeddingContext; le dipendenze di pianificazione richieste vengono ottenute da effettiCoroutineContext. FrameManager è deprecato; le integrazioni della piattaforma devono inizializzare la propria gestione globale degli snapshot. (I02369)
- Passa le informazioni sullo stile al nodo di accessibilità. (If5e8d)
- TextUnit.Inherit è rinominata in TextUnit.Unspecified per garantire la coerenza con le altre unità. (Ifce19).
UI Compose versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
viene rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- È 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).
- Sono state aggiunte le fabbriche di BiasAllineament e BiasTotalExactment per la creazione degli Allineamenti. (Iac836, b/169406772)
- Consenti a uno sviluppatore di cancellare con forza lo stato attivo. (I90372)
- È stato corretto un bug che impediva il calcolo dell'elevazione per le viste all'interno di Compose. (If7782)
- Creata l'API onDrawDraw in ContentDrawScope per far corrispondere la convenzione di denominazione a Modifier.drawfound. (I4fc3a, b/171955269).
- Aggiungi il supporto per la distanza della videocamera per integrare le trasformazioni 3D rotationX/rotationY sulle API dei livelli. (I40213, b/171492100)
- Aggiunto SelectionContainer senza il callback (Ibfadb)
- L'annotazione sperimentaleSubcomposeLayoutApi è stata rimossa. Ora è possibile utilizzare SubcomposeLayout senza aggiungere @OptIn (I708ad)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- È stata rimossa l'opacità dal modificatore disegnoShadow() perché era poco chiara. (I82c62, b/171624638).
- 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).
- Rimosso FocusState2 obsoleto (I686cb, b/168686446)
- ZIndexModifier ora è interno (I1808b, b/171493718)
- È stato aggiornato il tipo restituito del metodo lerp sui parametri di dimensione per restituire una dimensione non null ed evitare boxing non necessario. (Ib0044)
- È stato aggiunto TestMonotonicFrameClock per il test del codice che si basa su MonotonicFrameClock di Compose per l'attesa degli eventi del frame della composizione utilizzando runBloccoTest di kotlinx-coroutines-test (I4402f)
- Rimozione di GestiScope.localToGlobal (I15299, b/171462785)
- Ricerca
onAllNodesWithSubstring
aggiunta (I81dd7, b/171462889) - Il modulo androidx.ui.test è stato ritirato. Esegui la migrazione ad androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8)
Correzioni di bug
- CaptureToBitmap spostato in CaptureToImage. (I86385)
- 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).
- Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
- Rinomina KeyboardOptions come ImeOptions (I82f36)
- Spostamento di KeyboardType e ImeAction in KeyboardOptions (I910ce)
- fornireDefault è stato aggiunto come alternativa per specificare gli ambienti e può essere utilizzato per specificare i valori ambientali che verranno impostati solo quando non è già stato fornito alcun valore ambient. (Id6635, b/171024925)
- BaseTextField è stato ritirato. Utilizza BasicTextField. (I896eb)
- Introduci il modulo ui-test-junit4 (Ib91f8)
relativePaddingFrom
è stato rinominato inpaddingFrom
. È stato aggiunto il modificatorepaddingFromBaseline
per specificare le distanze dai limiti del layout alle basi del testo. (I0440a, b/170633813).- LaunchedTask è stato rinominato in LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. LaunchedEffect senza parametri per il soggetto non è consentito per incoraggiare le best practice. (Ifd3d4)
- Introduzione delle risorse componibili che si ricompongono quando la configurazione viene aggiornata. (I6387c, b/167352819)
- Il ricompositore ora richiede un CoroutineContext in fase di costruzione (Ic4610)
- Somma i valori
zIndex
quando vengono applicati piùModifier.zIndex()
. In precedenza, la vittoria era la prima. (Ic514c, b/170623936). - Modifiche all'implementazione SlotTable interna che non dovrebbero influire sull'API pubblica. (If9828)
- Aggiunta l'opzione IME di correzione automatica della tastiera (I57b8d)
- androidx.ui.test spostato in androidx.compose.ui.test (I9ffdb)
- Rimozione di KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45).
Contributi esterni
- Pubblicazione disattivata dell'elemento interno androidx.compose.ui:ui-text-android (Ib93fa)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Il ricompositore è ora un valore di ResolutionReference e un elemento padre della composizione valido. Ora il ricompositore esplicito è necessario in meno posizioni. (I4036f)
- 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)
- È stata aggiornata l'API Modifier.drawWithCache per esporre ContentDrawScope come ambito del destinatario invece di DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Ciò è utile per i casi d'uso di combinazione/coloring in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di combinazione corrispondente venga applicato correttamente. (Ie7ec8)
- Sposta SimpleContainer in PopupTestUtils.kt (I78c57)
- ConsumedData non è più una classe di dati. Per informazioni dettagliate, visita la pagina https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
- Correggi la posizione della maniglia RTL. (I6e1e0).
- Refactoring di DrawScope e ContentDrawScope
sono interfacce
anziché classi astratte.
- È stata creata l'implementazione di CanvasDrawScope di DrawScope
- Refactoring delle implementazioni di DrawScope per usare invece CanvasScope
- È stato creato un elemento DrawContext per eseguire il wrapping delle dipendenze per DrawScope
- Rimossi metodi deprecati su DrawScope (I56f5e)
- 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 daPointerInputFilter.onPointerEvent(...)
, ora puoi semplicemente modificare i dati sul consumo degli eventi PointerEventi trasmessi. (I6acd0). - MeasureScope e IntrinsicMeasureScope sono state interfacce create. (I1a087, b/170461665).
- La funzione di unione per LinkingLine è stata nascosta. (I9da1a, b/170612900, b/170611568).
- Aggiungi la possibilità di specificare le informazioni sullo ispettore nel modificatore composto (Idee08, b/163494569)
- Aggiunta dell'opzione SelectAll nel menu di selezione (Ief02b)
- DrawTransform.rotate aggiornato in modo da utilizzare un parametro pivot predefinito del centro in modo che corrisponda alla documentazione.
- DrawScope.rotateRad aggiornato per utilizzare un offset per il punto di pivot, in modo che corrisponda ad altri metodi di trasformazione.
- Sovraccarico di DrawScope.rotateRad obsoleto che ha consumato numeri in virgola mobile per le coordinate x e y del pivot.
- (Iffcbb, b/170434992).
Correzioni di bug
- Il controllo lint API per MissingGetterMatchingBuilder è abilitato per androidx (I4bbea, b/138602561)
- Aggiungi test. (I6b8ae).
- Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- Aggiunta l'opzione IME KeyboardCapitalization (I8ac38)
- Aggiunta dell'opzione per la tastiera a riga singola a CoreTextField (I72e6d)
- Sposta SimpleContainer in PopupTestUtils.kt (I65c3e)
- 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).
- Interoperabilità di Android migliorata continuando a inviare MotionEvents alle viste Android secondarie che restituiscono un valore false per onTouchEvent per tutte le azioni tranne
ACTION_DOWN
(I94c5a, b/170320973) - Box è stato impostato come funzione in linea. (Ibce0c, b/155056091).
Contributi esterni
- Supporto di diverse impostazioni internazionali per
AnnotatedString.capitalize
eAnnotatedString.decapitalize
(I4aa7f)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiungi una DSL per specificare le informazioni del controllore (Ic9a22)
- Sposta Premi a lungo nel testo. (Iff2bc).
- Modificatore di sospensione sperimentale Modifier.pointerInput (Ia77d2)
- Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
- I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata anche aggiunta l'opzione per configurarla esplicitamente (I64966, b/143778148, b/143778149)
I dati di consumo ora sono modificabili. Inoltre, le chiamate a funzioni di estensione che consumano ora non restituiscono più un nuovo PointerInputChange, ma modificano invece il valore PointerInputChange fornito.
Questo è il primo passaggio di un processo in due passaggi per rendere modificabili i dati PointerEvent in modo che altri dati del puntatore non possano essere modificati dal codice utente. Il secondo passaggio consiste nella rimozione del tipo restituito
List<PointerInputChange>
daPointerInputFilter.onPointerEvent(...)
. (Id067e)Disabilita selezione nel testo e una demo. (Ie7e97)
Made onGloballyPositioned una funzione in linea (I15830)
OnPositionedModifier è stata rinominata OnGloballyPositionedModifier e onPositioned() è stata rinominata onGloballyPositioned() (I587e8, b/169083903).
La proprietà hasPendingMeasureOrLayout è stata aggiunta al proprietario per indicare se quest'ultimo ha lavori di layout in attesa. (I3d9f8, b/169038599).
È stata aggiunta un'API per cancellare in modo programmatico lo stato attivo (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
rimosso. Al suo posto, deve essere utilizzatoPointerInputFilter.onPointerEvent(...)
. (I6f04a).Modifiche alle dimensioni
- Dimensione.getFlipped rimossa
- Dimensione.rem rimossa
- Rimozione di size.truncDiv (Ief44d, b/169790720)
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)
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).
Il parametro di ambito in AnnotatedString.Builder.addStringAnnotation viene rinominato in tag per la coerenza dell'API. (I7c8cb)
Correzioni di bug
- Le prestazioni dello scorrimento di LazyColumn/Riga sono migliorate grazie a un minore lavoro nella sottocomposizione a ogni scorrimento. Il nuovo metodo haInvalidations() è stato aggiunto per la classe di composizione. Il metodo hasPendingChanges() di Recomposer è stato rinominato in hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- 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).
- L'ordine delle chiamate a place() nei layout personalizzati ora definisce l'ordine di disegno per gli elementi secondari (Ibc9f6)
- È supportato la conversione da AnnotatedString a SpannableString per l'accessibilità. (Ief907)
- Sono stati aggiunti stub per le classi Android su piattaforme meno recenti per evitare l'impiego di riflessioni, se possibile. (Ia1790)
- Bug corretto: se la visualizzazione della tastiera software causava la traduzione dell'app, le coordinate di input del puntatore diventavano errate. (Ic4cec, b/163077821).
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto SubjectScope per consentire la raccolta di ambiti di osservazione layout e di disegno una volta che non sono più validi. (Ic4cf8)
- Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback quando il layout dei contenuti è stato rimisurato e le dimensioni sono state modificate, rispettivamente. (I657cf, b/154108792)
- Aggiungi un'azione di semantica dei clic lunghi (I6281b, b/156468846)
- FocusManager impostato come privato. (I7872f)
Implementazione aggiornata per creare un'implementazione DrawCacheModifier dedicata anziché aggiungere proprietà facoltative su DrawModifier.
Documentazione aggiornata per vari metodi (Ibd166)
Rendi TextRange in linea per evitare la creazione di oggetti. (Id034b)
PlacementScope#parentLarghezza e PlacementScope#parentLayoutDirection non può più essere letto dal blocco di posizionamento di un layout personalizzato. (Icc1ae, b/168295623).
aggiungere AccessibilityScorriState alle proprietà semantiche. (Ifeda9).
Introdotto Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea in modo condizionale le dipendenze che dipendono dalle informazioni di dimensione/stato (I376dc)
ParagraphConstraints rimosso. Ora la larghezza viene passata direttamente al paragrafo. (Ica712)
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).
- Foundation.Box è stata deprecata. Utilizza Foundation.layout.Box. (Ie5950, b/167680279)
- Lo stack è stato rinominato in Box. La casella già esistente verrà ritirata a favore di quella nuova 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)
- 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).
- rootAnimationClockIndustry, TransactionsEnabled, blinkingCursorEnabled e textInputServiceService con @VisibileForTesting con annotazioni, impostali come API interna e nascondi il relativo file kdoc (I554eb, b/168308412)
- Rimuovi SelectionContainer dall'alto per disattivare la selezione predefinita ed evitare comportamenti imprevisti. È possibile utilizzare specificamente un SelectionContainer per aggregare i contenuti che devono essere selezionabili. (I8dfe0, b/158459594).
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimuovi le azioni di semantica avanti/indietro. Sono stati aggiunti dei passaggi in AccessibilityRangeInfo. (Ia47b0)
onInvalidate()
rimosso daOwner
--OwnedLayer
gestisce l'annullamento della convalida. (Ica72b, b/162061312).Rimossi i metodi degli operatori nell'API Size che consumano parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è imprevisto per queste operazioni. Ad esempio, dimensione-offset deve restituire un offset o una dimensione con la differenza?
Sono stati rimossi anche i metodi ritirati dalla classe Dimensione. (Iec902, b/166514214)
Correzioni di bug
- Correzione degli elementi di LazyColumn che a volte venivano tracciati in modo errato, causando anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895).
- I DpConstraint e le API che lo utilizzano sono stati deprecati. (I90cdb, b/167389835).
- Elementi
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572) - Gli usi della gravità sono stati costantemente rinominati per allineare o allineare nelle API di layout. (I2421a, b/164077038).
- Sono stati aggiunti onNode e altri metodi globali su ComposeTestRule perché quelli globali attuali verranno ritirati. (Ieae36).
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- rimuovi il callback per informare il proprietario quando i limiti dei nodi layout cambiano. (If654e, b/166106882).
- Aggiunto il supporto per i parametri tipo di riempimento sui percorsi delle immagini vettoriali per supportare i ritagli delle forme in base alle regole di riempimento del percorso pari o Non zero. (I43dd2).
- Uptime e Velocity sono ora classi incorporate (I48f4a)
- La durata è ora una classe in linea (I565eb)
- Aggiungi un callback per informare il proprietario quando i limiti dei nodi layout cambiano. (Ic40b3)
È stato risolto il problema per cui il costruttore di funzioni rettangoli con Offset e raggio creava il rettangolo nell'ordine: sinistra, destra, alto, basso anziché sinistra, alto, destra, basso.
Sono stati rimossi i metodi companion deprecati su Rect a favore dei costruttori di funzioni.
Sono stati aggiunti test per verificare i metodi in Rect.kt (I08460, b/165822356)
Correzioni di bug
- Aggiunto MutableRect, un rettangolo che può essere modificato. (I71bd2, b/160140398).
- Matrix4 è stato sostituito con Matrix. Tutte le altre parti del pacchetto vectormath sono state rimosse. (Ibd665, b/160140398).
La convenzione di chiamata per le funzioni componibili è cambiata. Questa è una modifica che provoca un errore di codice binario. Tutte le librerie devono essere ricompilate per poter funzionare con questa versione del plug-in di compilazione Composer.
Questa modifica non crea una modifica che provoca un errore a livello di origine, in quanto le uniche API che sono state modificate sono API di compilazione con un'attivazione esplicita. (I7afd2, b/158123185).
Risolto l'arresto anomalo che poteva verificarsi quando l'invio a un PointerInputFilter potrebbe causare la rimozione sincrona di PointerInputFilter. (I58f25).
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev17
viene rilasciato. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
emitView
è stato deprecato. Se possibile, utilizzaAndroidView
per l'emissione di visualizzazioni all'interno di Compose. Tieni presente che la scrittura diretta di visualizzazioni e gruppi di visualizzazioni non sarà supportata in futuro a meno che non si tratti di foglie nell'albero di composizione, nel caso in cui questa operazione possa essere eseguita utilizzando AndroidView. (I29b1e, b/163871221).FocusState2
è deprecato e sostituito daFocusState
(Ia8b79, b/160822876, b/160923332)- I sovraccarichi deprecati di AndroidView sono stati rimossi. (I946b9, b/163802393)
- Le emit personalizzate ora possono dichiarare che uno o più dei suoi setter possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13).
Le classi Vector sono state modificate in modo che non siano più classi di dati, in quanto la stessa istanza dell'oggetto viene utilizzata per la composizione.
Aggiunto il flag mutableStateOf per VectorPainter per disegnare di nuovo in modo condizionale se il contenuto del vettore cambia.
È stato eseguito il refactoring dell'istanza di VectorComponenti in modo che faccia parte di VectorPainter in quanto viene riutilizzata in tutte le composizioni.
Sono stati aggiornati GroupComponenti e PathComponenti in modo che i campi del nome siano modificabili (Ieae45, b/151378808).
onChildPositioned
eOnChildPositionedModifier
rimosse. Gli sviluppatori dovrebbero usare inveceonPositioned
eOnPositionedModifier
nel layout secondario. (I4522e, b/162109766).L'offset è diventato una classe in linea (Iaec70)
È stato aggiunto un parametro di modifica a SelectionContainer (I4aada, b/161487952)
Rimosso FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Lambda
mergePolicy
aggiunta aSemanticsPropertyKey
. 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).I vincoli sono ora una classe integrata (I88736)
Aggiunta di FocusManager che sposta la logica di messa a fuoco comune da AndroidComposeView (I528ef, b/161487952, b/162206799)
Nomi di PointerEventPass aggiornati per la release alpha. (Ifda6f)
IntOffset ora è una classe in linea (Iac0bf)
IntSize ora è una classe in linea (I2bf42)
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)AlertDialog ora utilizza FlowRow per i pulsanti (I00ec1, b/161809319, b/143682374)
Ha reso alcune utenze di test non pubbliche perché non si trovano dove appartengono. Verrà reso pubblico in futuro. (I32ab1).
Organizzazione con refactoring del codice di input del puntatore. (Ie3f45)
PxBounds deprecati a favore del rettangolo Sono stati aggiornati tutti gli utilizzi di PxBounds con rettangolo e sono stati aggiunti i valori deprecati/sostituiti corretti con annotazioni per facilitare la migrazione. (I37038, b/162627058)
Rimosso KeyEvent2 obsoleto. Utilizza invece KeyEvent. (Ied2d0, b/162097587).
KeyEvent ha una proprietà Unicode che può essere utilizzata per ottenere il carattere Unicode generato dalla combinazione di stato della chiave e del tasto meta specificata (If3afc)
Impostato l'evento personalizzato DelayUp e le relative classi come API di attivazione, perché molto probabilmente verrà modificato. (I56d6f)
Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I3dd9d)
Aggiungi colore parametro, ombra e TextDecoration a Paragraph.paint Questa funzione è utile per evitare la ricreazione del paragrafo non necessaria. (I81689)
Correzioni di bug
- 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)
Chiamate FrameManager deprecate rimosse.
Le API di scrittura interne sono state modificate per ridurre l'overhead per monitorare oggetti di stato come
mutableStateof()
(I80ba6)VerticalScorrier e HorizontalSlideer sono stati rimossi. Utilizza invece SlideableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
Si è verificato un arresto anomalo quando un elemento che salva lo stato utilizzato all'interno del ciclo for è stato risolto. Ora che è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è adattata a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
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)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev16
viene rilasciato. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
- L'API OnChildPositioned è stata ritirata. Usa invece OnPositioned per il riquadro secondario. (I87f95, b/162109766).
- L'elemento setViewContent è stato deprecato. Al suo posto è necessario utilizzare setContent. (I7e497, b/160335130).
- È stata aggiunta l'API AndroidViewBinding per gonfiare e scrivere le risorse di layout, in base a ViewBinding. (I081c6)
- KeyEvent2 è sostituito da KeyEvent (I2d770, b/162097585)
- Aggiunto il supporto per il tasto hardware Alt (I9036b)
- FocusManager è deprecato. Usa invece Modifier.focus(), Modifier.focusHighlightr() e Modifier.focusRequester(). (I74ae4, b/162211322).
- loadVectorResource supporta gli attributi trimPath (I808fe)
- Sposta la finestra di dialogo nell'UI (I47fa6)
- Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I33ca7)
- Implementazione di PointerInteropModifier che consente di ricevere eventi MotionEvents e di interagire con Compose come se si trattasse di un'implementazione di una vista Android. (Ieb08c).
- È stato rimosso il modificatore di tag obsoleto. Usa invece layoutId. (Idaa05, b/162023919).
- 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)
- Supporta il taglio dei percorsi nelle grafiche vettoriali (Ie16c9, b/158188351)
- Aggiunto Modifier.layout() che consente di creare comodamente un modificatore di layout personalizzato (I73b69, b/161355194)
- Aggiunta di una nuova API AndroidView e ritiro di quelle esistenti. (m5bcfd)
- 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) - Aggiungi [Abstract]Sottoclassi ComposeView per ospitare i contenuti di ComposeView in una gerarchia View. (I46357)
Row
eColumn
sono ora funzioni incorporate per ridurre in modo significativo l'overhead associato al loro utilizzo. (I75c10)- SubcomposeLayout è stato aggiunto. Si tratta di una primitiva di basso livello che consente di comporre i figli durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in seguito durante la misura per la composizione del sottoalbero. Ad esempio, WithConstraints non viene implementato utilizzando SubcomposeLayout. (I25cc8)
- È stato aggiunto
SemanticsNode.positionInRoot
per ottenere la posizione di un SemanticsNode rispetto alla radice della gerarchia di Compose (Icdf26, b/161336532) - Gli eventi MotionEvents vengono trasferiti da Android, a Compose e di nuovo ad Android. (I14be8, b/158034713).
- Menu a discesa Popup rimosso. (I00430)
- Posizione popup corretta sui display sagomati. (Idd7dd)
- Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
- RemeasurementModifier aggiunto. Consente di rimisurare il layout in modo sincrono. In generale non è mai necessario poiché la nuova misurazione e il relayout avvengono automaticamente, ma li utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
- Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Usa invece getLineVisibileEnd/getLineEnd/isLineEllipsize. (I85aa2)
- Aggiungi alcuni segni/annotazioni come motivo di best practice. (I66b20)
- e esporre più API riga in TextLayoutResult. (I79bd2)
- I convertitori vettoriali integrati per la conversione di unità integrate sono ora accessibili tramite Foo.VectorConverter, ad esempio Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273)
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 aggiornato l'utilizzo dell'API Composer per mappare correttamente le modalità BlendModes del framework Android e le modalità PorterDuff in base al livello API. È stata introdotta l'API BlendMode#isSupported come query di funzionalità per determinare se il metodo BlendMode è supportato sul dispositivo prima dell'uso. (I0ef42)
- 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).
SemanticsNodeInteraction.performPartialGesture
rimosso. Usa inveceSemanticsNodeInteraction.performGesture
. (Id9b62)LazyColumnItems
è stato rinominato inLazyColumnFor
.LazyRowItems
è stato rinominato inLazyRowFor
(I84f84)- Il pacchetto
foundation.shape.corner
è stato suddiviso infoundation.share
(I46491, b/161887429) - Rinominato
AndroidComposeTestRule
increateAndroidComposeRule
. (I70aaf) - Sono state aggiunte altre API a
TextLayoutResult
. (Id7e04) - Il materiale
FilledTextField
è stato rinominato inTextField
e ilTextField
fondamentale è stato rinominato inBaseTextField
per rendere più semplice l'individuazione e l'utilizzo dell'API desiderata (Ia6242, b/155482676) - Modifier.drawBackground è stato rinominato Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.ui:ui-*:0.1.0-dev15
viene rilasciato. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.
Modifiche alle API
- 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)
- È stato aggiunto un modificatore per osservare il cambiamento dello stato attivo. (I05866, b/160924455, b/160923326).
- È stato aggiunto un modificatore per richiedere modifiche allo stato attivo (I8dd73, b/161182057, b/160924778)
- Modifica il menu della barra degli strumenti per visualizzare le opzioni di copia, taglia e incolla. (Id3955)
- 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). - È stato aggiunto Modifier.focus, che sostituisce FocusModifier. (Ib852a, b/160924778).
- Aggiungi FloatingToolbar per la selezione del campo di testo. (Ie8b07)
- È stata aggiunta un'annotazione API sperimentale per l'API correlata all'input della chiave (I53c0a)
- Aggiunta un'annotazione API sperimentale per tutte le API correlate a Focus (I53b24, b/160903352)
- Aggiunta di FocusState2 che sostituirà FocusDetailsState (I0a3ba, b/160822595)
- È stata aggiunta l'Sperimentale Focus, che è un'annotazione @optIn per l'API Focus. (I1544b, b/160820961).
- È stata aggiunta una classe di unità IntBounds, che rappresenta i limiti di pixel di numeri interi dal layout. L'API di PopupPositionProvider è stata aggiornata in modo da utilizzarla. (I0d8d0, b/159596546).
- L'applicatore ora richiede un metodo clear() per smaltire le composizioni (Ibe697)
- L'evento KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
- È stato aggiunto un nuovo flag facoltativo useUnmergedTree ai programmi di ricerca di test. (I2ce48).
- API sperimentale Made LayoutNode (I4f2e9)
Sono stati aggiunti metodi di copia a vari tipi di classi incorporate, tra cui:
- Offset
- Dimensioni
- Raggio
- Movimento
TransformOrigin
Metodo oggetto companion size.copy deprecato a favore del metodo di copia dell'istanza (Ife290, b/159905651)
Popup, finestre di dialogo e menu ora ereditano il tema contestuale del MaterialTheme (Ia3665, b/156527485)
TextDirection viene rinominata ResolvedTextDirection (I3ff38)
Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d)
Esegui il refactoring degli handle di selezione per il riutilizzo. (I420e0).
L'opzione Cliccabile è stata rimossa. Usa Modifier.clickable (I84bdf)
TestTag e Semantics sono stati eliminati. Usa invece Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
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)
Modifier.tag è stato rinominato Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
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)
Al componibile AndroidView è stato aggiunto un parametro di modifica. (I48a88, b/158746303).
La semantica() è deprecata. Usa invece Modifier.semantics(). (I72407, b/158841414)
Aggiungi composable viewModel() che consente di creare o ottenere un oggetto ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)
È stato sostituito l'utilizzo di IntPx con l'opzione IntPxPosition sostituita con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44).
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)
È 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 tag TestTag è stato ritirato. Al suo posto, utilizza Modifier.testTag. (If5110, b/157173105)
L'implementazione automatica automatica di ParentDataModifier#modifyParentData è stata rimossa ed equivale alla mancata implementazione dell'interfaccia. (I0deaa)
ScaleFit era già stato ritirato come rimosso. Usa invece ContentScale. (Ifbc5b).
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)
È stato aggiunto il componente Menu a discesa in ui-material, un'implementazione del menu Material Design. (I9bb3d).
Rimosso LayoutTag() deprecato. Usa invece Modifier.tag(). Rimosso il metodo Modifier.matchParent() deprecato. Usa invece Modifier.matchParentSize(). (If8044)
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)
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)
Il filtro GestiS doppio tocco ora disambigua il filtro SingleToccaGesto all'interno dell'albero. (If92b1)
È stata aggiornata l'API Guidelines e aggiunto supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto Rtl) (I38cd3)
L'API dei modificatori Drawlayer è stata modificata: outlineShape rinominata in shape e il valore predefinito RettangoloShape ora non è null; clipToOutline rinominato in clip; clipToBounds rimosso perché è uguale a clip == true con RettangoloShape (I7ef11, b/155075735)
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)
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)
È stata rimossa l'interfaccia di LayoutModifier deprecata. (I2a9d6).
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)
È possibile misurare gli elementi secondari Layout e LayoutModifier con una direzione del layout diversa. (Ibd731)
La nuova funzione Modifier.zIndex() viene aggiunta per controllare l'ordine di disegno degli elementi secondari nello stesso layout principale. La proprietà elevazione in DrawlayerModifier viene rinominata in shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri per DrawShadow viene modificato: l'elevazione è ora la prima e la forma è la seconda con un valore predefinito Rettangoloforma. (I20150, b/152417501)
Rimosso onSizeChange e onPositionChange in Proprietario. (I5c718)
Aggiunti vincoli2, una copia dei vincoli che supporta solo i valori dei vincoli Int anziché IntPx. Il valore IntPx verrà rimosso e tutti i vincoli relativi ai numeri interi verranno considerati pixel come Android.
- È stato aggiunto anche IntSize, che sostituirà IntPxSize. (I4b43a).
Allineamento reso istantaneo con valori arbitrari. Aggiunta degli allineamenti 1D. (Ia0c05).
allineaToSiblings ora accetta un valore Misurato anziché un valore Posizionabile. (I5788d)
(I45f09, b/152842521).
- ScaleFit rinominato in ContentScale
- Spostato ContentScale da ui-graphics al modulo ui-core per risiedere nello stesso modulo dell'API Allineamento.
- FillMaxDimensione rinominata in Ritaglia
- Dimensione FillMin rinominata in Adatta
- Rinominata Adatta in Inside per una corrispondenza migliore
- Equivalenti di ImageView.ScaleType
- È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e allineato.Center ottiene gli stessi risultati di ImageView.ScaleType.CENTER_CROP e Fit utilizzati conline.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER Inside utilizzato conline.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
Supporto RTL per i modificatori di disegno. (I0aaf9).
Rilasciata un'API per aumentare le visualizzazioni Android da XML. Per ulteriori dettagli, vedi la demo di ViewInCompose. (I42916)
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)
Aggiunti positionInParent e boundsInParent per leCoordinate di Layout. (Icacdd, b/152735784)
DrawlayerModifier e disegno Layer() ora prevedono il valore predefinito di clipToBounds e clipToOutline su false. (I0eb8b, b/152810850).
Rinominato LayoutResult in MeasureResult. (Id8c68)
Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecata LayoutModifier (If32ac)
Operatore di Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)
Sono state aggiunte le proprietà TranslationX/Y per supportare l'offset dell'elenco di visualizzazione dei comandi di disegno per un determinato livello. È utile per spostare contenuti in risposta ad animazioni o eventi tocco. (I8641c)
Sono stati aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e la scalabilità in base a un determinato punto in un livello (Icf7c3)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni componibili OnPositioned e OnChildPositioned. (I2ec8f).
È stato aggiunto LayerModifier, un modificatore che consente di aggiungere un RenderNode per un layout. Consente di impostare ritagli, opacità, rotazione, scalabilità e ombre. Questo sostituirà RepaintBoundary. (I7100d, b/150774014)
La direzione del layout è stata propagata dal nodo del layout principale ai nodi secondari. Modificatore di direzione del layout aggiunto. (I3d955)
Il componente Stack supporta la direzionalità da destra a sinistra (Ic9e00)
Supporto iniziale per RTL nel layout di Compose (Ia5519)
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)
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)
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)
È stata rimossa l'API MaskFilter inutilizzata perché ha un utilizzo limitato e non è ottimizzata per l'accelerazione hardware nella maggior parte dei casi d'uso (I54f76)
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)
Introduci un parametro rettangolo facoltativo aggiuntivo a ImagePainter per supportare il disegno di una sottosezione dell'asset ImageAsset sottostante (I0ea9e)
È stato aggiunto il colore Annulla impostazione per rappresentare un valore non impostato senza boxing Colors. (If901a)
Sono stati aggiunti metodi di estensione Canvas.rotate e Canvas.scale per utilizzare le coordinate pivot facoltative per le trasformazioni. Questi valori predefiniti si trovano nell'angolo in alto a sinistra della traduzione del canvas corrente.
È stato anche spostato Canvas.rotateRad come metodo di estensione per la coerenza (Ibaca6)
Creazione dell'API PixelMap per supportare l'esecuzione di query sulle informazioni relative ai pixel da un ImageAsset. (I69ad6).
È stato rinominato toFrameworkRect/toFrameworkRectF in AndroidRect/toAndroidRectF per creare corrispondenze con la convenzione di denominazione per le conversioni degli oggetti tra le API Composer e Android framework su cui si basano. Aggiornata anche la documentazione su queste API (I86337)
È 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.
Rinominata API Image(Painter) in PaintBox(Painter) Crea componibile Vector che si comporta come l'immagine componibile tranne che con un VectorAsset invece di un ImageAsset (I9af9a, b/149030271)
È stato rinominato ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e l'imminente formato componibile di immagini utilizzato per partecipare al layout e disegnare contenuti. _Body:Created 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 composizione (Id5bbd)
Aggiunta di TextDirection.Content (I48f36)
Operatore TextDecoration.plus aggiunto (I0ad1a)
Force
rimosso dai valori enum di TextDirectionAlgorithm (Icc944)TextDirectionAlgorithm è rinominato TextDirection (I75ce8)
Implementa LongPressAndTrascina per la selezione di campi di testo. (I17919)
Sono state aggiunte AnnotatedString.getStringAnnotazioni che restituiscono tutte le annotazioni comprese nell'intervallo. (I1fa00)
Il nome del pacchetto per Impostazioni internazionali e LocaleList è stato modificato da androidx.ui.text ad androidx.ui.intl (I8132c)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
Modifica all'API: AnnotatedString(builder: Builder) viene rinominato in annotatedString(builder: Builder). (Ia6377)
Modifica dell'API: AnnotatedString.Item è stato rinominato in AnnotatedString.Range. (I2d44d).
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e).
Ora è possibile nascondere/mostrare la tastiera del software utilizzando SoftwareKeyboardController, fornito da onTextInputStarted callback (I8dc44, b/151860051)
È stato aggiunto l'operatore più per lo stile (Testo/Paragrafo/Span) che delega alla funzione merge(). (Ia1add)
Il file FontWeight.lerp non esegue più lo scatto. È ancora una classe di dati. (I521c2).
Il costruttore FontWeight ora è pubblico, non è più una classe dati. (Id6b1f)
Aggiungi getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount a TextLayoutResult (Ibc801)
il modulo ui-text viene rinominato come ui-text-core (I57dec)
È stata rimossa la classe size inutilizzata perché è presente una classe size duplicata nel modulo ui-geometry utilizzato. (I1b602)
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)
Aggiungi il parametro di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)
Correzioni di bug
- 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)
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).
- Ora è possibile comporre l'UI di composizione all'interno di ViewGroups senza richiedere una nuova composizione. Vedi ViewInteropDemo per un esempio. (I9ab0b, b/160455080).
- Sono stati aggiunti sortWith e removeRange a MutableVector (ICCf7)
- Implementa i punti di manipolazione di selezione con trascinamento per modificare la selezione per TextField. (I27032)
- È stata rimossa la classe in linea Shader che ha aggregato la classe NativeShader e la classe è stata rinominata NativeShader in Shader. La classe incorporata Shader con wrapping non aggiungeva nulla di valore alla piattaforma API ed era una classe in linea, quindi usa direttamente la classe NativeShader. (I25e4d).
È stato eseguito il refactoring di PainterModifier per non fornire più il ridimensionamento in base ai vincoli e al parametro ContentScale specificati. Le implementazioni di Painter scalano i contenuti del disegno in base alle dimensioni fornite del DrawScope in cui si trovano.
Risolto il problema per cui la bitmap della cache di VectorPainter veniva ridimensionata alla dimensione predefinita anziché alla dimensione specificata.
Abbiamo aggiornato ImagePainter per scalare i propri contenuti anziché affidarsi a PainterModifier. (I6ba90)
aggiungi la funzione withFrameNanos di primo livello per la durata dell'animazione (Ie34c5)
L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i componibili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
Risolto il problema per cui l'invio del puntatore dell'input del puntatore causava un arresto anomalo se i PointerInputFiltri venivano rimossi tramite una sottocomposizione durante la scrittura. Il problema ora è stato risolto. (I1f48b, b/157998762).
Risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se i PointerInputFiltri venivano rimossi tramite una sottocomposizione durante la disptach. Il problema ora è stato risolto. (Iab398, b/157998762).
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).
L'elemento Ricomponi componibile non è più un'astrazione utile. La maggior parte della ricomposizione avviene a seguito delle assegnazioni MutableState. Per qualsiasi cosa oltre questo limite, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricomposizione dell'ambito corrente. (Ifc992).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)
Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore del compositore trasformava le chiamate in funzioni componibili. Con questa modifica, ora trasformiamo il corpo di una funzione componibile e lasciamo il sito di chiamata inalterato (soprattutto).
Ciò significa che la maggior parte della comunicazione logica con il runtime di scrittura avviene all'inizio del corpo della funzione, anziché sul sito di chiamata.
Questa modifica dovrebbe essere compatibile con il codice sorgente per tutti gli utilizzi di Compose. A seguito di questa modifica, la maggior parte degli utenti di Scrivi non dovrebbe dover aggiornare alcun codice.
Per supportare questa operazione, la firma della JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta 3 parametri. I parametri aggiuntivi sono Composer, un numero intero "chiave", un numero intero della maschera di bit utilizzato per propagare i metadati tramite le chiamate.
Compose ora trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un ulteriore sovraccarico sintetico predefinito della funzione stessa, quindi questa modifica comporterà la definizione di un numero inferiore di funzioni.
Modifiche comportamentali intenzionali note derivanti da:
- Alcune chiamate salteranno dove non sarebbe stato possibile in precedenza
- Le espressioni componibili nelle espressioni di argomenti predefinite vengono ora sottoscritte e gestite correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti di parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Ciò comporterà un minor numero di confronti in fase di runtime, una riduzione delle dimensioni della tabella degli slot e una maggiore possibilità di ignorare le funzioni componibili che in precedenza non erano state ignorate 2. I parametri che vengono determinati come "statici" al momento della compilazione non vengono più confrontati né archiviati nel runtime. In questo modo ridurrai il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e si riduce il lavoro per il runtime 4. I parametri di invio e ricevitore inutilizzati delle funzioni non sono inclusi nel determinare la possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.
La maggior parte delle modifiche che provocano errori riguardava le API scelte direttamente dal compilatore e il tipico utilizzo dell'interfaccia di composizione non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call è stato deprecato 4. Gli overload non varargs di
key
sono stati rimossi. D'ora in poi, utilizza la versionevararg
. 5. L'annotazione Pivotal è stata ritirata. Utilizzakey
in sostituzione. 6. ScopeUpdateScope::updateScope è stato modificato per prevedere una Function3 anziché una Function1 7. rebootableFunction e rampableFunctionN sono stati aggiornati per includere ulteriori parametri di tempo di compilazione (I60756, b/143464846)Sono stati rimossi i modificatori LayoutAllineati deprecati. (I10877)
Rimosso RepaintBoundary a favore di DrawlayerModifier (I00aa4)
Pulsante, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni parametri di Button sono stati rinominati o riordinati. (I54b5a).Sostituire il valore ButtonStyle con funzioni distinte e rimuovere il sovraccarico di testo (stringa). Consulta gli esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131).
Interruzione delle modifiche all'API Ambient. Per informazioni dettagliate, consulta la documentazione relativa al log e a
Ambient<T>
(I4c7ee, b/143769776)È stato modificato il comportamento di TextDirection predefinito che deve essere determinato da LayoutDirection. Ad esempio, se LayoutDirection è RTL, il valore predefinito di TextDirection sarà RTL. In precedenza era TextDirection.ContentOrLtr/Rtl (I4e803)
Correzione di bug: quando lo spessore e lo stile del carattere sono nidificati in una AnnotatedString, il testo non viene visualizzato correttamente. (I77a9d)
Aggiunge parametri di uso comune a Text(). Se stai creando uno stile di testo locale per passare un numero ridotto di questi parametri, ad esempio Text(style = TextStyle(textAllinea = TextAllinea.Center)), ora puoi fornire direttamente i parametri: Text(textAllinea = TextAllinea.Center) (I82768)
Il modulo ui-android-text viene rinominato ui-text-android (I68cbe)