UI di scrittura
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Consulta la documentazione di riferimento delle API per tutti i pacchetti di composizione)
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
10 luglio 2024 | 1.6.8 | - | 1.7.0-beta05 | - |
Struttura
Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx
. Ogni gruppo contiene un sottoinsieme di funzionalità target, ciascuno con il proprio insieme di note di rilascio.
Questa tabella illustra i gruppi e i link a ciascun insieme di note di rilascio.
Raggruppa | Descrizione |
---|---|
compose.animation | Crea animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in del compilatore Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estende le basi per creare i tuoi componenti di sistema di progettazione. |
compose.material | Crea UI di Jetpack Compose con componenti Material Design pronti per l'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea UI di Jetpack Compose con Material Design 3 Components, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati, nonché funzionalità di personalizzazione di Material You, come il colore dinamico, ed è progettato per essere coerente con il nuovo stile visivo e la nuova UI di sistema di Android 12. |
compose.runtime | Componenti di base di base del modello di programmazione e della gestione dello stato di Compose, nonché del runtime principale per il targeting del plug-in Compose Compiler. |
compose.ui | I componenti fondamentali dell'UI di scrittura, come layout, disegno e input, erano necessari per interagire con il dispositivo. |
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.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se scopri nuovi problemi o hai idee per migliorare questa raccolta. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.7
Versione 1.7.0-beta05
10 luglio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-beta05
. La versione 1.7.0-beta05 contiene questi commit.
Correzioni di bug
- È stato corretto un bug per cui, se cambiava la tastiera software,
TextField
non accettava input dalla nuova tastiera finché lo stato attivo non viene perso e recuperato. - È stato risolto un problema per cui i tentativi di rendere persistenti i contenuti dei livelli causavano effetti collaterali indesiderati durante il rendering con contenuti
SurfaceView
.
Versione 1.7.0-beta04
26 giugno 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-beta04
. La versione 1.7.0-beta04 contiene questi commit.
Correzioni di bug
- Evita gli arresti anomali quando misuri righe di testo molto grandi (ad es.10. 000 caratteri) (8157ab)
- Disattiva il supporto del rendering software per l'API
GraphicsLayer
. (35 ggd8) - Correzione di un arresto anomalo nella logica di persistenza del livello. (70b13e)
- Il riutilizzo dell'ottimizzazione degli oggetti livello è stato ripristinato perché causava problemi di rendering. (70b13e)
Versione 1.7.0-beta03
12 giugno 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-beta03
. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-beta02
. La versione 1.7.0-beta02 contiene questi commit.
Modifiche alle API
SemanticsProperties.Editable
è stato rinominato inIsEditable
e cambiaSemanticsPropertyReceiver.editable
in un valisEditable
. Ora la proprietà è un valore booleano ed è sempre specificata da campi di testo. (I8acd8)- Rinomina il parametro di benchmark di accessibilità. (I3d440)
- API aggiornata per la definizione degli stili dei link:
TextLinkStyles
ora fa parte del costruttoreLinkAnnotation
e del metodoAnnotatedString.fromHtml
(I90b2b). È stato rimosso ancheTextDefaults
dal materiale (I5477b)
Correzioni di bug
- Il nome
LayoutCoordinates.introducesFrameOfReference
è stato rinominato inLayoutCoordinates.introducesMotionFrameOfReference
per rispecchiare meglio il suo scopo. Funzione correlata rinominata per calcolare le coordinate in base al flag. (I3a330)
Versione 1.7.0-beta01
14 maggio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-beta01
. La versione 1.7.0-beta01 contiene questi commit.
Modifiche alle API
performCustomAccessibilityActionLabelled
è stato rinominato inperformCustomAccessibilityActionWithLabel
eperformCustomAccessibilityActionWhere
inperformCustomAccessibilityActionWithLabelMatching
. (I5387f)AnnotatedString.hasEqualsAnnotations
ora èhasEqualAnnotations
(I685c0)- È stata aggiornata l'API per ricevere link con temi Material nel testo. In particolare, sono stati rimossi i metodi da
TextDefaults
per la creazione diLinkAnnotations
a tema e l'analisi dell'HTML con link a tema. È stata invece aggiunta una classeTextLinkStyles
che consente di definire lo stile dei link come parametro del Testo componibile. (I31b93)
Correzioni di bug
- Corregge casi d'uso aggiuntivi durante l'aggiunta dinamica di modificatori di input del puntatore durante gli eventi 63e1504
Versione 1.7.0-alpha08
1° maggio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha08
. La versione 1.7.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiunge il supporto per implementazioni di forme modificabili. Ora
Shape#createOutline
è osservato all'interno dei livelli grafici, quindi la lettura dei valori di stato all'interno causerà invalidazioni quando lo stato cambia, consentendo animazioni delle forme più efficaci. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
rinominato inintroducesFrameOfReference
. Tieni presente che ora ha l'effetto opposto, il che significa che, per impostazione predefinita, la maggior parte degliLayoutCoordinates
introduce un frame di riferimento e, solo quando è sottoposto a manipolazione diretta, la proprietà sarà falsa. Per eseguire query sulla posizione solo su quelle che introducono un frame di riferimento, utilizzapositionInLocalFrameOfReference(...)
. OppurepositionInLocalLookaheadFrameOfReference
da unLookaheadScope
. (Ifc5f7).LookaheadScope
API sono state rese stabili (I21507)- Modifica l'azione lambda per
getScrollViewportLength
in base al feedback del consiglio delle API. (Ibc74a) - Sono state aggiornate
GraphicsLayer
API Outline per consumare parametri in virgola mobile anziché int. Sono stati rimossiUnsetOffset/UnsetSize IntSize
valori sentinella a favore di costanti non specificate già esistenti sulle classi in linea Offset e Dimensioni basate su numero in virgola mobile (I2fb03, b/333863462) - Quando inserisci l'input del mouse durante i test,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
eMouseInjectionScope.longClick()
ora accettano un parametrobutton: MouseButton
per renderli più applicabili a tutti. Il valore predefinito èMouseButton.Primary
per tutti i metodi. (I31a23, b/190493367, b/261439695) onClicked
rinominato inonClick
all'interno diLinkInteractionListener
. (Iaa35c).- Rinomina
TextInclusionStrategy.isInside
inisIncluded
. Imposta il tipo restituito daParagraph/MultiParagraph#getRangeForRect()
come non null. (I51f26)
Correzioni di bug
- È stato corretto il problema di acquisizione di screenshot lunghi per i contenitori a scorrimento con
reverseScrolling=true
. (I7c59c)
Contributo esterno
- È stato aggiunto il supporto per il precaricamento degli elementi nell'elemento
LazyLists
nidificato (ad es. unLazyColumn
che esegue il rendering diLazyRows
nidificato). Questa modifica dovrebbe ridurre le interruzioni di frame durante lo scorrimento per questiLazyLists
. L'impostazione predefinita di implementazione è il precaricamento dei primi due elementi nidificati, ma questo comportamento può essere controllato dalle nuove APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Versione 1.7.0-alpha07
17 aprile 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha07
. La versione 1.7.0-alpha07 contiene questi commit.
Modifiche alle API
ClickableText
è contrassegnato come deprecato. Per aggiungere link al testo, crea unAnnotatedString
con unLinkAnnotation
corrispondente al tuo link e passa questoAnnotatedString
al testo componibile. (I34d4b, b/323346994)- Presenta
ViewConfiguration.HandwritingGestureLineMargin
per i gesti di scrittura a mano libera. Supporto del gestoJoinOrSplit
perBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
eFocusProperties.exit
non sono più sperimentali.FocusDirection.Enter
eFocusDirection.Exit
non sono più sperimentali.FocusRequester.Cancel
non è più sperimentale (I461a1, b/261564106)- Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato i propri elementi secondari utilizzandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Analogamente, un layout che cambia spesso la posizione degli elementi secondari può ora posizionarli utilizzandowithDirectManipulationPlacement
(come l'opzione Scorri, implementata per impostazione predefinita). In questo modo le animazioni basate suapproachLayout
possono essere più intuitive, avendo ora l'opportunità di differenziare 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)
- Ora
LazyColumn
mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635) NestedScroll
origini Le funzionalità di trascinamento e scorrimento vengono sostituite daUserInput
eSideEffect
per adeguarsi alla definizione estesa di queste origini, che ora includono animazioni (Effetto collaterale) e rotellina del mouse e tastiera (UserInput
). (I40579)ApproachLayoutModifierNode
eModifier.approachLayout
ora sono stabili, con i nuoviisMeasurementApproachInProgress()
eisPlacementApproachInProgress()
che sostituiscono rispettivamente i vecchiisMeasurementApproachComplete()
eisPlacementApproachComplete()
.- Modificatore
intermediateLayout
deprecato rimosso. (I3e91c). - Rinomina
GraphicsLayer#buildLayer
per registrare in modo da rispecchiare i metodi start/endRecording delle API supportate da Displaylist comeRenderNode
e Picture. - Aggiornamento di
rememberGraphicsLayer
per l'utilizzo dirememberObserver
. (I312c1, b/288494724, b/330758155) - L'API
UrlAnnotation
è deprecata, usaLinkAnnotation.Url
al suo posto. Se utilizzi i temi Material, utilizza l'oggettoTextDefaults
per creare l'annotazione con la tematizzazione Material (I8d180, b/323346545) - Per i link di testo è stata attivata l'opzione di stile con stato premuto oltre allo stile normale, con passaggio del mouse e elemento attivo (I5f864, b/139312671)
String.parseAsHtml
rinominato inAnnotatedString.Companion.fromHtml
. (I43dcd)- Sono stati aggiunti argomenti di stile (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e un listener di interazione tramite link al metodoparseAsHtml
. Durante l'analisi della stringa con tag HTML con i tag<a>
, il metodo genera unLinkAnnotation.Url
per ogni tag di questo tipo e trasmette gli oggetti di stile e il listener di interazione tramite 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 l'configuration
visivo per i link quando vengono selezionati e/o passi il mouse sopra. (I81ce4, b/139312671)- Per
ImeOptions.hintLocales
non è più possibile specificare un valore null. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizzaLocaleList.Empty
. (Ic5bc4)
Correzioni di bug
- Gestisce correttamente i dati degli eventi di input storici non validi o danneggiati (ignora i dati di offset non validi).
- Corregge gli eventi imprevisti del puntatore quando un modificatore di input del puntatore viene aggiunto dinamicamente prima di un altro modificatore di input del puntatore durante un flusso di eventi di input del puntatore attivo (ad esempio, tra un invio al passaggio del mouse e un'uscita al passaggio del mouse [mouse/stilo]).
Versione 1.7.0-alpha06
3 aprile 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha06
. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- Aggiunto il metodo
parseAsHtml
per le stringhe con stili applicati: consente di convertire inAnnotatedString
una stringa contrassegnata con tag HTML. 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 è disattivato per impostazione predefinita. Per attivare la funzionalità, imposta il flagComposeFeatureFlag_LongScreenshotsEnabled
su true. (I2b055, b/329296471)
Modifiche alle API
fun ClipEntry.getMetadata()
modificato inval ClipEntry.clipMetadata
. (I50155)- Rimosse le funzioni
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
. UsaclipEntry.getMetadata()
per leggere i metadati della voce del clip corrente. Controlla anche il risultato diClipboardManager.getClip
, se è nullo o meno per capire se negli appunti è presente un clip corrente. (I50498) - Ora puoi passare
GraphicsLayer
oggetti in funzioniplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
ora accetta null per poter cancellare gli appunti. (I7d2e9).- Aggiunta di ID risorsa per assistenza su come nascondere le viste utilizzate come dettagli di implementazione negli strumenti di creazione (I99531)
- È stato aggiunto il metodo di sospensione
GraphicsLayer#toImageBitmap
per supportare il rendering dei contenuti di una bitmap in unGraphicsLayer
. Si tratta di un'operazione di rendering con accelerazione hardware per il livello API 22 o versioni successive (incluso), che supporta oltre il 99% di tutti i dispositivi Android. Nel livello API Android 21, viene eseguito il rendering software. (I9e114). - Metodo di supporto per convertire un
RectF
di Android inComposeRect
(I39925, b/325660505) - Tutti i parametri
KeyboardOptions
ora hanno un valore non specificato per impostazione predefinita. MetodoKeyboardOptions.merge
aggiunto. KeyboardOptions.autoCorrect
è stato rinominato inautoCorrectEnabled
e lo è stato reso null, 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 eseguite dalla tastiera software. (I58dda)
Versione 1.7.0-alpha05
20 marzo 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha05
. La versione 1.7.0-alpha05 contiene questi commit.
Nuove funzionalità
- Introduci la nuova API
GraphicsLayer
per registrare comandi di disegno in un elenco di visualizzazione, nonché proprietà aggiuntive che influiscono sul rendering dell'elenco visualizzato. In questo modo viene creato un confine di isolamento per dividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni effettuate in unGraphicsLayer
possono essere eseguite senza registrare nuovamente l'elenco di visualizzazione. A differenza diModifier.graphicsLayer
,GraphicsLayer
consente il rendering dei contenuti componibili altrove ed è utile nei casi d'uso animati, in cui è previsto il rendering dei contenuti in scene diverse.
Modifiche alle API
GraphicsLayer.draw(Canvas)
non è più un'API pubblica. Usa invece la funzione di estensioneDrawScope.drawLayer(GraphicsLayer)
per disegnare il livello. (I7a7c0)- Suddividi
restrictedConstraints()
in due metodi:fitPrioritizingWidth()
efitPrioritizingHeight()
(I6d7fd) - È stato introdotto lo stub
HardwareCanvas
per l'utilizzo di Android L (I1c3b5, b/288494724) - Aggiorna il framework Compose per esporre una composizione
GraphicsContext
locale oltre ad aggiornare le implementazioni del ruolo Proprietario,DelegateableNode
edrawWithCache
Modificatore per esporre l'accesso all'GraphicsContext
per l'accesso con ambito, che eseguirà automaticamente la pulizia delle istanzeGraphicsLayer
quando i modificatori verranno rimossi. (I64a2f, b/288494724) - Hai introdotto
InterceptPlatformTextInput
per aiutare a scrivere test relativi all'IME di basso livello e altri casi d'uso di IME di basso livello. L'APIPlatformTextInputTestOverride
è stata deprecata. (I862ed, b/322680547) - È stata aggiunta la funzione di estensione
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Introduci il costruttore della funzione
GraphicsContext
per creare una fabbrica per creare istanzeGraphicsLayer
(Ib98d6, b/288494724) - 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 applicare diversi effetti visivi al risultato finale. (I80245, b/288494724) - Introduci l'elemento
Paragraph#getRangeForRect
, che restituisce un intervallo di testo coperto da una determinata area del rettangolo. (Iee516, b/325660505) - Rimossa l'override sperimentale di
BasicText
con argomentoonLinkClicked
. In futuro seguirà un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)
Correzioni di bug
- È stata aggiunta la definizione API prevista/effettiva dell'
GraphicsLayer
per supportare l'acquisizione e la riproduzione di comandi di disegno con trasformazioni e effetti visivi di composizione facoltativi. Illustra l'interfacciaGraphicsContext
per contenere le dipendenze grafiche, inclusa la creazione e la gestione di istanzeGraphicsLayer
. (I4a8d6, b/288494724) - È stato risolto un problema di interoperabilità con la ricerca dello stato attivo 1D in cui lo stato attivo rimaneva bloccato all'interno di un elemento
ComposeView
incorporato tra le altre viste. (I08fd4)
Contributo esterno
LocalLifecycleOwner
è stata spostata dall'interfaccia utente di Compose alifecycle-runtime-compose
in modo che le sue API helper basate su Compose possano essere utilizzate al di fuori della UI di Compose. Ringraziamo Jake Wharton per il suo contributo. (I6c41b, b/328263448)- Esponi in modo coerente le proprietà dei valori in virgola mobile di tutti i sottotipi di allineamento basati su bias. (I69f0f, b/328088992)
Versione 1.7.0-alpha04
6 marzo 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha04
. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche alle API
- Supporta la funzionalità di scrittura a mano libera con stilo per BasicTextField2 sui dispositivi successivi ad Android U. (I002e4).
- In questo CL aggiungeremo l'azione semantica
GetScrollViewportLength
in modo da poter trasferire al sistema di accessibilità le informazioni sui componenti di cui si fa scorrere la scrittura. Questo CL applica anche l'utilizzo di questa proprietà negli elenchi a scorrimento di base. (Ic5fa2). FocusRequester.createRefs
ora è stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi di modifica di ottenere l'attualeView
di Android senza leggere una composizione locale. (I40768) - Nuova API
Path.reverse()
per invertire la direzione di un percorso (I36348) - L'elemento
hintLocales
è stato aggiunto aKeyboardOptions
per fornire aTextFields
la possibilità di suggerire IME per impostazioni internazionali specifiche per preimpostare una lingua preferita. - Esponi la proprietà
platformLocale
daLocale
che restituisce l'oggetto piattaforma sottostante, ad esempiojava.util.Locale
. (I921c6)
Versione 1.7.0-alpha03
21 febbraio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha03
. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- Ti presentiamo
ContextualFlowRow
e MigliorataFlowRow
/Column
con MaxLines ed Overflow. Siamo entusiasti di annunciare i miglioramenti apportati alle funzionalità sperimentaliFlowRow
eFlowColumn
, che ora includono il supporto per maxLines e overflow, insieme al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è stato progettato per fornire componenti con prestazioni ottimali, doveContextualFlow*
è perfetto per un numero elevato di elementi che utilizzano una configurazionemaxLines
ridotta e una dinamica +N per vedere più pulsanti, mentreFlowRow
eFlowColumn
sono perfetti per un numero ridotto di elementi, meno di 100. Importante: per mantenere il comportamento esistente inFlowRow
oFlowColumn
in cui tutti gli elementi sono composti, indipendentemente dal fatto che rientrino nel limite 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 di
maxTextLength
da impostare nei campi di testo che filtrano il numero massimo consentito di caratteri. (I24d9f, b/170648072) - Il wrapper
Modifier.inspectable
è stato deprecato. Questa API creerà più invalidazioni del modificatore del necessario, pertanto ne sconsigliamo l'utilizzo. 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) DelegatableNode.requireLayoutCoordinates()
introdotto come modo per ottenere un valoreLayoutCoordinates
corrente diModifier.Node
senza dover sostituireonPlaced
e memorizzare personalmente le coordinate in una proprietà. (Ia8657)DelegatableNode.currentLayoutCoordinates
introdotto come modo per ottenere un valoreLayoutCoordinates
corrente diModifier.Node
senza dover sostituireonPlaced
e memorizzare personalmente le coordinate in una proprietà. (Iaebaa)BasicTextField2
e le relative API inandroidx.compose.foundation.text2
pacchetto vengono spostate inandroidx.compose.foundation.text
. (I9f635)- È stata aggiunta una nuova API
ApproachLayoutModifierNode
per supportare la creazione di una logica di approccio personalizzato in un nodo modificatore esplicito. È stata inoltre aggiunta una nuova API sperimentaleDeferredTargetAnimation
per le animazioni il cui target è sconosciuto al momento della creazione dell'istanza. (I60745) - Nuove API
Path
per eseguire query sulla direzione di un percorso ed estrarre i contorni da unPath
. (I63d04) PathHitTest
ePath.contains(Offset)
aggiunti per verificare sePath
contiene un punto specifico. (I3b218)TextLayoutResult
ora espone il metodogetLineBaseline(lineIndex)
. Ciò consente di leggere la base di riferimento di una riga arbitraria di testo oltre alle proprietà di convenienza esistentifirstBaseline
elastBaseline
. (Ide4e8, b/237428541)- È stato aggiunto un metodo per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659)
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti con
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (ID0528, b/322269946)
Versione 1.7.0-alpha02
7 febbraio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha02
. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato risolto un problema di compatibilità binaria con
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Il costruttore
PopupProperties
che utilizza un parametrousePlatformDefaultWidth
non è più sperimentale. (I8f8d2). - È stato aggiunto un sovraccarico di
ComposeTestRule.waitUntil
che accetta una descrizione stringa della condizione 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
- È stato corretto un bug di accessibilità che consente di fare clic su schede e pulsanti di opzione diversi dalla selezione. (I2181c)
- Ora
VelocityTracker
avrà la correzione per aggiungere i punti per impostazione predefinita. La correzione può comunque essere disattivata impostandoVelocityTrackerAddPointsFix
su false in caso di problemi. (Ib3877, b/269487059) - È stata corretta l'incompatibilità binaria con le versioni precedenti in
TextStyle
eParagraphStyle
. (I179f0, b/320819734)
Contributo esterno
- È stato aggiunto un nuovo costruttore
DialogProperties
senza parametri specifici della piattaforma. (I45829) - È stato aggiunto un nuovo costruttore
PopupProperties
senza parametri specifici della piattaforma. (I9a038)
Versione 1.7.0-alpha01
24 gennaio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.7.0-alpha01
. La versione 1.7.0-alpha01 contiene questi commit.
Modifiche alle API
ClipboardManager
è stato espanso aggiungendoClipEntry
eClipMetadata
per supportare contenuti arbitrari, come le immagini.- Aggiunge l'API
DeviceConfigurationOverride
aui-test
per consentire di eseguire l'override locale del comportamento dei contenuti sottoposti a test, ad esempio per specificare dimensioni, impostazioni internazionali, direzione del layout, scala del carattere o tema disponibili.
Versione 1.6
Versione 1.6.8
12 giugno 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.8
. La versione 1.6.8 contiene questi commit.
Correzioni di bug
- Sono state risolte le incoerenze nel ridimensionamento dei caratteri quando la scala è inferiore a quella della tabella definita dal valore più basso. In questo caso, ora eseguiamo l'interpolazione tra la scala lineare 1x e la tabella definita più bassa, in modo che la dimensione del carattere aumenti in modo monotonico con l'aumento delle scale. (Icbae3)
Versione 1.6.7
1° maggio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.7
. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.6
. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- Corregge un raro arresto anomalo di
BasicTextField
.
Versione 1.6.5
3 aprile 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.5
. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.4
. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.3
. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.2
. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
7 febbraio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.1
. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti con
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - I layout ora emettono un errore durante la misurazione quando viene restituita una dimensione insolitamente grande. Normalmente questo tipo di errore si verifica quando la misurazione utilizza direttamente i vincoli massimi senza verificare il valore
Constraints.Infinity
. Il controllo aiuterà gli sviluppatori a rilevare problemi con le dimensioni errate del layout, invece che con un layout che lo contiene. (I339a9)
Versione 1.6.0
24 gennaio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.0
. La versione 1.6.0 contiene questi commit.
Versione 1.6.0-rc01
10 gennaio 2024
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-rc01
. 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
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-beta03
. La versione 1.6.0-beta03 contiene questi commit.
Nuove funzionalità
- Ora è possibile scollegare un
LayoutCoordinates
senza che il nodo venga scollegato. Evitalo in Componi Layout Inspector (If693)
Correzioni di bug
PlatformImeOptions
è ora una classe concreta anziché un'interfaccia. (If40a4).- Sono state corrette le ricomposizioni extra downstream causate dalla fornitura di nuovi valori da parte di
LocalSoftwareKeyboardController
eLocalTextInputService
ogni volta che una radice viene ricomposta. (I42190, b/310510985)
Versione 1.6.0-beta02
29 novembre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-beta02
. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-beta01
. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Il modificatore
DragAndDropTarget
ora accetta esplicitamenteDragAndDropTarget
ricevente e dispone di una funzione lambda per attivare una sessione di trascinamento. Ora sono disponibili due funzioni di fabbrica per unDragAndDropModifierNode
. Una per ricevere i trasferimenti e un'altra per il trasferimento dei dati (I69481) maximumFlingVelocity
aggiornato per essere rappresentato come in virgola mobile. Documentazione aggiornata per essere più chiara sull'unitàmaximumFlingVelocity
. (I8adc7)- Il nome
onDragAndDropStart
nella fabbrica diDragAndDropModifierNode
è stato rinominatoacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto al ModificatoredragAndDropTarget
per accettare le modifiche da una sessione di trascinamento. Questa funzione lambda restituisce unDragAndDropTarget
utilizzabile se è interessato a una sessione di trascinamento. Altre lambda per l'elaborazione degli eventi di trascinamento sono state sostituite da questa. È stata aggiunta una funzione di fabbricaDragAndDropTarget
per ricevere dalle sessioni di trascinamento (Iebf3a) Rimosso
DragAndDropInfo
come tipoDragAndDropModifierNode.drag
ora accetta parametri pertransferData
, dimensione della decorazione e decorazione a trascinamentoDrawScope
lambdaDragAndDropTarget
offre metodi per determinati eventi di trascinamento anziché essere un singolo metodo astrattoonDragAndDropEvent
nella funzione di fabbrica per unDragAndDropModifierNode
è stata rinominata inonDragAndDropStart
per comunicare meglio che ilDragAndDropTarget
fornito è valido solo per una determinata sessione di trascinamentoDragAndDropEventType
è stato rimosso (I645b1)PlatformTextInputModifierNode.runTextInputSession
rinominato inestablishTextInputSession
. (I03cd0)Migliora i nomi delle API dei nodi attraversabili in modo da renderli più comprensibili. (Ia4474)
Sostituisci
OriginalText
entro il giornoTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
rinominato inrunTextInputSession
. (Ie9c6b).Gli elementi secondari di
SubcomposeLayout
(e i layout comeLazyColumn
basati su questo elemento) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. Per testare questi nodi, è stata introdotta una nuova API di testassertIsDeactivated()
. Le altre API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)FocusDirection.In
eFocusDirection.Out
rimossi utilizzano inveceFocusDirection.Enter
eFocusDirection.Exit
(I2f660)Le API Material
SwipeToReveal
(per carte e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Questa è una modifica che provoca un errore, consulta la demo e il codice campione per 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 l'editor di testo non è attivo. (I2165a, b/301477279)- Gli eventi chiave su hardware per le chiavi che non hanno ricevuto un evento Blocco nella stessa vista di scrittura ora verranno ignorati. (Ib37b4, b/305518328)
- Aggiungi il supporto del renderer per Sweep Gradient in
ArcLine
. (I4d5bb) - Implementa gli stessi valori e il codice hash per
PageSize.Fixed
. (Ie3ede, b/300134276) - Correggere un problema di compatibilità binaria con la modifica degli elementi di Windows (Iee695)
- Rimuovi lo strato interno del materiale per chip/tasto Material3, poiché in questo caso i microbenchmark mostrano prestazioni migliori. (I55555)
- I
TestDispatcher
superati come test daeffectContext
a Compose verranno ora utilizzati per creare il test e i frame orologi. (Ia7178)
Versione 1.6.0-alpha08
18 ottobre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha08
. La versione 1.6.0-alpha08 contiene questi commit.
Modifiche alle API
Modifier.dragAndDrawSource
è stato rinominatoonDrawDragShadow
lambda indrawDragDecoration
eDragAndDropInfo
il parametro size è stato rinominato indragDecorationSize
. (Id0e30, b/303904810)- Presenta
SemanticsNodeInteraction.isDisplayed()
eSemanticsNodeInteraction.isNotDisplayed()
per verificare se un nodo corrispondente è visibile o meno senza che venga utilizzato. (I2c196, b/302100809) - È stato introdotto un valore
Unspecified
speciale per i campiTextAlign
,TextDirection
,Hyphens
eLineBreak
diParagraphTextStyle
in sostituzione dinull
. Poiché queste classi sono classi in linea, sostituendo "nullable" con "Non specificato", evitiamo il pugilato di tipo primitivo. Costruttori, getter e altri metodi inTextStyle
e in stile paragrafo sono stati aggiornati in modo da accettare i parametri indicati come tipi non null. (I4197e, b/299490814) - Aggiungi un sovraccarico di
GoogleFont
per la lettura di unGoogleFont
da XML. (If8f59). LoremIpsum
PreviewParameterProvider
è stato impostato come corso aperto. (I41bf5, b/266918816, b/300116360)
Correzioni di bug
FontFamilyResolver
ora utilizzaDispatchers.Main
per le coroutine di gestione della cache. (Ie8dd9)- Ora
AndroidViewBinding
rimuove in modo sincronoFragment
istanze gonfiate includendo unFragmentContainerView
nel tuo layout come parte del suoonRelease
utilizzandocommitNow
(invece dicommit
usato in precedenza), risolvendo così i problemi con il metodo di Modifica dal vivo relativo alla sostituzione della composizione in caso di modifiche. (I58fbf)
Versione 1.6.0-alpha07
4 ottobre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha07
. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
PlatformTextInputMethodTestOverride
introdotto per la scrittura di test per editor di testo personalizzati. (ID159b)- Aggiunge il modificatore
dragAndDropSource
per avviare sessioni di trascinamento edragAndDropTarget
per la ricezione da sessioni di trascinamento. (Ib7828, b/286038936) - Aggiunte 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 eseguire la pulizia. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)
Correzioni di bug
- Analisi dei drawables vettoriali XML ottimizzata. (Ibb015)
Versione 1.6.0-alpha06
20 settembre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha06
. La versione 1.6.0-alpha06 contiene questi commit.
Modifiche alle API
- Ottimizzazioni aggiuntive alle icone Material. (I3e08d)
- Aggiunge la possibilità di attraversare l'albero dei modificatori verso l'alto o verso il basso per trovare nodi simili. (I2d234).
- È stato aggiunto il callback
onRestoreFailed()
al modificatorefocusRestorer()
(Ie1d43) - Aggiunte annotazioni Androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altre ancora. (Id65c8, b/290950582) - Aggiungi
showSystemUi=true
alla definizione diPreviewScreenSizes
(Ib61d3)
Cambiamenti del comportamento
- Scrivi ora utilizza la scalabilità dei caratteri non lineare per una migliore leggibilità e accessibilità. Se il ridimensionamento dei caratteri è maggiore del 100% nelle impostazioni di sistema, la dimensione del testo di piccole dimensioni aumenterà normalmente, mentre il testo già grande aumenterà di conseguenza. Inoltre, l'altezza delle linee definita in SP verrà regolata automaticamente per rimanere proporzionale all'altezza desiderata 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
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha05
. 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 della vista come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974). - Aggiunge lo scaffolding iniziale per supportare le API di trascinamento della piattaforma. (If84ce)
- Aggiungi
deviceId
inRotaryScrollEvent
(Iba3bf) - È stata aggiornata l'API
ui-tooling
Devices per includere i dispositivi più recenti (Ib25b4)
Versione 1.6.0-alpha04
23 agosto 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha04
. 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 in posizione. La composizione disattivata può essere riattivata chiamando il numerosetContent
. (Ib7f31) - Aggiungi l'interfaccia
ReusableComposition
per la gestione del ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stato promosso alle API stabili. (I7ffa3)- Aggiunte annotazioni Androidx a varie API grafiche per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altre ancora. (I70487, b/290950582) - È stata aggiornata l'API
ColorFilter
per includere tipi di sottoclassi concrete per una migliore ispezionabilità dei parametri. (I5fe29) - Introduci la libreria wear-tooling-preview per elencare i dispositivi di usura validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
- È stata creata l'interfaccia
FontScalable
per gestire la parte del ridimensionamento dei caratteri nell'interfaccia Densità. (I2cf3f)
Versione 1.6.0-alpha03
9 agosto 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha03
. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche alle API
- Nuovo tipo di transizione entrata/uscita che scala i contenuti in base alle dimensioni del contenitore animato durante l'animazione di entrata e uscita.
LookaheadScope
Il divertimento e l'interfaccia componibili 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) - Campi di testo corretti che mostrano la tastiera e possono essere modificati quando il criterio
readOnly
è impostato su true. È stato inoltre corretto il problema di visualizzazione della tastiera quando il valore direadOnly
viene modificato da vero a falso durante lo stato attivo. (I34a19, b/246909589) - Applicazione estesa delle asserzioni globali nei test dell'interfaccia utente. (I1f90d)
Versione 1.6.0-alpha02
26 luglio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha02
. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'interfaccia di Service locator che può essere implementata dagli implementatori di Composizione e che consente l'implementazione di Composizione che delega a un altro servizio di delegato della composizione le ricerche della composizione originale. Questa opzione non deve essere chiamata Directy e viene utilizzata per consentire la creazione di API sperimentali nel runtime che possono essere trovate da versioni con wrapping del compositore, come nel caso del modulo UI. (I296b9)
- L'API
PlatformTextInput*
è stata completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali. Ora ancheLocalSoftwareKeyboardController
è unCompositionLocal
vero e proprio. (I4c364).- I campi
LookaheadLayout
eLookaheadLayoutScope
sono stati ritirati per alcune release e ora vengono 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 nei test. (Ie8722). - Aggiungi API sperimentali per la registrazione di asserzioni globali da usare nei test dei framework in futuro. (I12d77)
Correzioni di bug
- Ora la prima chiamata del callback
update
diAndroidView
verrà differita fino al collegamento della vista, invece di essere eseguita quando viene applicata la composizione che introduce ilAndroidView
. Questo corregge un bug per cui il callbackupdate
non veniva invalidato se uno stato letto veniva modificato immediatamente da un effetto. (Ie9438, b/291094055)
Versione 1.6.0-alpha01
21 giu 2023
Viene rilasciato androidx.compose.ui:ui-*:1.6.0-alpha01
. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Supporto lookahead in
LazyList
. In questo modoLazyList
nel pass lookahead può ignorare qualsiasi animazione (ad es. animazione del posizionamento dell'elemento,AnimatedVisibility
e così via) e calcolare la dimensione e la posizione di lookahead per tutti gli elementi secondari. Dopo il passaggio lookahead, gli elementi secondari diLazyList
potrebbero animarsi in modo indipendente rispetto alla realtà come mostrato nel pass lookahead.
Modifica del comportamento: includeFontPadding ora è false per impostazione predefinita in Compose
Ora includeFontPadding
è false per impostazione predefinita (21d806) in Scrivi.
includeFontPadding
è un attributo precedente che consente di stabilire se includere o meno una spaziatura interna aggiuntiva nella prima e nell'ultima riga del testo per includere eventuali caratteri che possono estendersi 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 prima e all'ultima riga di ogni testo visualizzato.
A seconda dei requisiti dell'interfaccia utente e delle metriche relative ai caratteri che utilizzi, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare blocchi, ad esempio: - Test degli screenshot non funzionanti. Correggi la UI, se necessario, e rigenera le immagini finali. - Il testo è leggermente disallineato. Rimuovi eventuali spaziature interne escluse personalizzate o aggiungine altre, se necessario.
Puoi attivare includeFontPadding
utilizzando PlatformTextStyle
per ogni testo:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Puoi attivare includeFontPadding
per tutti i tuoi testi configurando gli stili 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,
/* … */
)
Per scoprire di più su Compose includeFontPadding
, consulta la documentazione per gli sviluppatori e questo post del blog.
Se riscontri problemi/bug relativi a questa modifica, segnala un bug utilizzando lo strumento Issue Tracker.
Modifiche alle API
- Supporto
InputConnection#requestCursorUpdates
(I0c69b) FocusRequester.saveFocusedChild
eFocusRequester.restoreFocusedChild
aggiunti (Ic557e, b/272302679, b/275157318)- Aggiungi il tipo
ResourceResolutionException
per aggregare gli elementi lanciabili generati durante il tentativo di caricare gli asset bitmap con una descrizione del percorso dell'asset che non è stato possibile caricare. (I19f44, b/230166331, b/278424788) - Accessibilità ottimizzata per prestazioni e allocazioni di memoria. (Iede48)
- Sono state aggiunte proprietà e azioni semantiche per supportare la traduzione del testo. (I4a6bc).
- Nuova proprietà in
IntrinsincMeasureScope
e relative implementazioni (ad es.MeasureScope
) per indicare se la valutazione corrente è un passaggio lookahead. (I7a812) - È stata aggiornata l'API
DrawScope
per introdurre la possibilità di eseguire il retargeting del rendering in un'area di lavoro diversa con densità/direzione layout e dimensioni alternative. - È stato aggiornato
DrawContext
per supportare la configurazione della densità e della direzione del layout, nonché per rendere il canvas configurabile. (Ie1f9b, b/225408150) - È stato aggiunto
Paragraph#fillBoundingBoxes
per calcolare i riquadri di delimitazione dei caratteri. (If30ee) - È stato aggiunto un insieme di
MultiPreviews
comuni (Ia5a27)
Correzioni di bug
- È stata aggiunta l'interfaccia
FocusTargetModifierNode
che può essere utilizzata per creare unFocusTarget
personalizzato. (I9790e) - I parametri
fallback*
sul costruttoreTextMeasurer
sono stati rinominati indefault*
. (I940a5) SemanticsPropertyReceiver.performImeAction
è stato rinominato inonImeAction
eSemanticsActions.PerformImeAction
inOnImeAction
. (I8e841).- Aggiunge la rotellina per distinguere lo scorrimento del mouse da un trascinamento nello scorrimento nidificato (più precisamente, in
NestedScrollConnection
). (Ie57e4) - Aggiunta l'API
asComposePaint
per sostituiretoComposePaint
mentre l'oggetto restituito aggrega ilandroid.graphics.Paint
originale (I22b4c) - Ritira
SemanticsProperties.imeAction
e sostituiscilo con un nuovo parametro inSemanticsActions.performImeAction
. (I4a587). - Aggiunto il supporto per la selezione tramite mouse. La selezione basata sul tocco si espanderà per parola e si restringerà per carattere. (Ic0c6c, b/180639271)
- I metodi
Paragraph
che utilizzavano per generareAssertionError
per gli offset fuori intervallo ora generanoIllegalArgumentException
, come faMultiParagraph
. (I549d3, b/243338896)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.4
. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.3
. La versione 1.5.3 contiene questi commit.
Correzioni di bug
- (b/301209788) A volte
TextField
applicava erroneamente i comandi precedenti durante lo stato attivo e l'inserimento dell'input coreano, causando la perdita di caratteri.
Versione 1.5.2
27 settembre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.2
. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- Aggiunta una soluzione alternativa per gli arresti anomali quando si accedeva all'API di scorrimento dell'accessibilità dal thread in background.
- Correggi i nodi scollegati che vengono aggiunti all'albero della semantica.
Versione 1.5.1
6 settembre 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.1
. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- Campi di testo corretti che mostrano la tastiera e possono essere modificati quando il criterio
readOnly
è impostato su true. È stato inoltre corretto il problema di visualizzazione della tastiera quando il valore direadOnly
viene modificato da vero a falso durante lo stato attivo. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0
. La versione 1.5.0 contiene questi commit.
Versione 1.5.0-rc01
26 luglio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-rc01
. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto il problema che si verificava quando l'elemento
SubcomposeLayout
viene utilizzato all'interno dimovableContentOf()
.
Versione 1.5.0-beta03
28 giugno 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-beta03
. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'interfaccia FocusTargetModifierNode, che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6).
- È stato risolto un problema relativo ai componibili di finestre di dialogo e popup che causava il ridimensionamento della finestra secondaria come previsto quando
usePlatformDefaultWidth=true
. (I112ee)
Versione 1.5.0-beta02
7 giugno 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-beta02
. La versione 1.5.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
asComposePaint
per consentire l'utilizzo di un'istanzaandroid.graphics.Paint
in Compose
Correzioni di bug
- Aggiunta l'API
asComposePaint
per sostituiretoComposePaint
mentre l'oggetto restituito aggrega ilandroid.graphics.Paint
originale (I22b4c)
Versione 1.5.0-beta01
24 maggio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-beta01
. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Allocazioni rimosse nelle ricomposizioni, nelle animazioni a colori e in
AndroidComposeView
(Ib2bfa) - Aggiunge il divertimento
CacheDrawModifierNode()
per consentire la delega (Icf8f9) - Introduzione della proprietà
isLookingAhead
, accessibile daMeasureScope
, per osservare i risultati in anteprima e influenzare il passaggio principale, se necessario. (Ibf4c3). - Nuova proprietà semantica
traversalIndex
, un numero in virgola mobile utilizzato per riordinare i nodi inTalkBack
attraversal (i valori più bassi vengono precedenti). (I9a81b, b/186443263) - Ridenominazione della proprietà semantica
isContainer
inisTraversalGroup
(I121f6) ColorProducer
ora ha unoperator fun invoke
anzichéproduce
(I4a9a2)- Aggiungi l'API transform
Path
per applicare trasformazioni di traslazione/scalabilità/rotazione agli oggetti del percorso. (I23434, b/233772232) - Il metodo di
ColorProducer
è denominatoproduce
. (I78bde) - Rinomina
toFrameworkColorSpace
intoAndroidColorSpace
(I4f547) - Rinomina
ColorLambda
inColorProducer
. (I73b1a) - Illustrare 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 di animare o impostare in modo efficiente il colore del testo. (Iffd88, b/246961787) TextRange.constrain
rinominato inTextRange.coerceIn
. (I31be2).- È stato aggiunto il valore
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Stabilizzate molte API di testo che includono
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
eMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è deprecato. Il nostro intento originale era quello di rimuovere il campo, ma i feedback dimostrano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Di conseguenza, rimuovendo il ritiro dal campo (I98e96, b/277703184)- Metodo
TextRange.constrain
pubblico aggiunto. (I97912) - Ora gli
UrlAnnotation
inAnnotatedString
possono essere aperti tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta l'azione semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Il costruttore
LineHeightStyle.Alignment(topRatio)
viene promosso ad API stabile. (I79c32, b/261565383) TextMeasurer
e le API correlate non sono più sperimentali. (I74647, b/261581753)- È stata aggiunta l'azione semantica
PerformImeAction
per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506) - Le API
PlatformTextInput
non sono più sperimentali per Android. (I668eb) - nome del parametro del valore per
Enum.valueOf
modificato (Ia9b89) - Altre eccezioni generate dall'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) - È stato aggiunto il parametro
BlendMode
ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di combinazione quando si disegna testo su Canvas. (I57508) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. Solo rinomina. (I07af5) - Valori DPI aggiornati di
@Preview
dispositivi di riferimento (Id6151, b/254528382) - Aggiungi i parametri
brush
ealpha
aBasicText
per consentire di animare o impostare in modo efficiente il pennello di testo. - Definisci i tipi lambda senza scatola per Float, Doppio, Lungo, 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 di layout e input del puntatore (I5333a)
- Ottimizza l'utilizzo della memoria vettoriale e il rendering dei primi frame (I2f3c6)
- Allocazioni rimosse quando si disegnano linee e punti con Canvas (I9f535)
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Contributo esterno
- Prestazioni migliorate e riduzione delle allocazioni nelle API Vector (I906cb)
Versione 1.5.0-alpha04
10 maggio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-alpha04
. La versione 1.5.0-alpha04 contiene questi commit.
Nuove funzionalità
- Miglioramenti delle deleghe
Modifier.Node
È stata aggiunta una possibilità migliorata di delegare ad altre istanzeModifier.Node
da unDelegatingNode
. Questa operazione può essere eseguita con le APIdelegate
eundelegate
. Prima di questa modifica, ogni API del nodo delegato doveva essere delegata esplicitamente al nodo delegato. Dopo questa modifica, le interfacce dei nodi verranno delegati in modo implicito, a meno cheDelegatingNode
non le esegua esplicitamente l'override. (67352bc)
Modifiche alle API
- Presenta
NestedScrollModifierNode
, unNestedScroll Modifier.Node
a cui può essere delegata. (I69513) - Sono stati aggiunti i parametri
onReset
eonRelease
al componibileAndroidViewBinding
, eseguendo il mirroring del componibileAndroidView
e attivando il supporto per il riutilizzo della visualizzazione conViewBinding
. (I00b1e, b/276802519) - È stata aggiornata l'API Compose Path per supportare le operazioni di riavvolgimento e per i casi d'uso di manipolazione frequente del percorso con un riutilizzo più rapido. (I7b797)
- È stato aggiunto il valore
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Stabilizzate molte API di testo che includono
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
eMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è deprecato. Il nostro intento originale era quello di rimuovere il campo, ma i feedback dimostrano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Di conseguenza, rimuovendo il ritiro dal campo (I98e96, b/277703184)
Correzioni di bug
- È stata corretta la regressione per cui la tastiera non veniva visualizzata per i campi di testo all'interno di finestre di dialogo non create dal componibile
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-alpha03
. La versione 1.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- Nuovo comportamento predefinito per
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
che non hanno aree condizionali (ad es.TabRow
,Scaffold
,BoxWithConstraints
e così via) ora funzionano bene con le animazioni lookahead.
Modifiche alle API
- Il nuovo criterio
intermediateMeasurePolicy
predefinito che riutilizza il criterio di misurazione della tessera lookahead consente aSubcomposeLayout
sottotipi senza aree condizionali comeScaffold
,TabRow
eBoxWithConstraints
di funzionare con lookahead per impostazione predefinita. (ID84c8) - Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a
withFrameNanos
anziché a tutta la composizione quando riceverà una notificaON_STOP
. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche dei dati, ma le animazioni, o qualsiasi altro chiamante diwithFrameNanos
, bloccheranno. (Id9e7f, b/240975572) - Modifica
motionEventSpy
in stabile. (Ic5ec4, b/261560988) - Metodo
TextRange.constrain
pubblico aggiunto. (I97912) PlatformTextStyle.includeFontPadding
non è più deprecato 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
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-alpha02
. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche alle API
- Nuova API
SubcomposeLayout
che richiede un criterio di misura intermedia aggiuntiva per gestire la logica di misura/layout durante le animazioni basate su lookahead. (I017d3) - PointerInput è ora lazy e utilizza Modifier.Node per migliorare le prestazioni (scopri di più sul cambiamento di comportamento minore). (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 di un
SuspendingPointerInputModifierNode
per implementazioniModifier.Node
più complesse. (Ic4933) - Ora gli
UrlAnnotation
inAnnotatedString
possono essere aperti tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta un'API per intercettare i tasti hardware prima che vengano inviati alla tastiera software (I4f4c6, b/186800395)
- È stata aggiunta l'azione semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Ora le azioni di test correlate al testo (ad es.
performTextInput
) richiederanno direttamente lo stato attivo, utilizzando l'azione semantica, anziché 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
Viene rilasciato androidx.compose.ui:ui-*:1.5.0-alpha01
. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche alle API
- Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misurazione in intermedioLayout ha Intermediate MeasureScope come ricevitore, che fornisce i comodi CoroutineScope, LookaheadScope e MeasureScope.(Ibe2e5)
- LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti chid in un LookaheadScope possono essere controllati direttamente dal MeasurePolicy del publisher principale. (Ibe2e5)
- Aggiunge
Modifier.Node#coroutineScope
per consentire ai nodi Modificatore di avviare le coroutine. (I76ef9) - Consenti a Modifier.Nodes di leggere ComposizioneLocals implementando l'interfaccia ComposizioneLocalConsumerModifierNode. (Ib44df)
- Propagazione della classe @ritirata alla proprietà. (I882d1)
Versione 1.4
Versione 1.4.3
3 maggio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.3
. La versione 1.4.3 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
AndroidView
potrebbe non essere impostato correttamente quando utilizzato con determinati modificatori. (I4dc77, b/274797771) - È stato corretto un bug della ricerca 2D Focus che interessava i menu di
DropDown
(b/276811828) - È stato corretto un bug nelle proprietà di entrata/uscita dell'elemento attivo personalizzato che eseguiva il blocco invio/uscita solo la prima volta che veniva richiamata la lambda (b/277234245)
- È stata corretta una regressione nel sistema dello stato attivo che causava un arresto anomalo durante la lettura di
focusProperties
. (b/271324781, b/274897776)
Versione 1.4.2
19 aprile 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.2
. La versione 1.4.2 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
AndroidView
non riutilizzava correttamente i propri modificatori, causando potenzialmente comportamenti e arresti anomali imprevisti. (Ib67ee, b/275919849) - È stata corretta la regressione per cui la tastiera non veniva visualizzata per i campi di testo all'interno di finestre di dialogo non create dal componibile
Dialog
(I82551, b/262140644)
Versione 1.4.1
5 aprile 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.1
. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Corregge un problema con
ParentDataModifier
che non interessaAndroidView
(b/274797771)
Versione 1.4.0
22 marzo 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.0
. 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 lazy in modo che non vengano spostati quando vengono fatti scorrere oltre i limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/2518151815181515151815151515183}10}b/247716483) - 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
. Può essere utilizzato per replicare il comportamento diTalkBack
quando impostaandroid.widget.Spinner
. (I177e5, b/236159001) - Se vuoi, ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per diventare inattivi (ad es. tramite
waitForIdle
). Questo potrebbe influire sui test che asseriscono su singoli frame di animazioni di layout. (I8ea08, b/222093277) - È stato aggiunto il valore
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
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-rc01
. La versione 1.4.0-rc01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico di funzione componibile
AndroidView
, che accetta il parametroonReset
. Consente di riutilizzare le istanze View quando il relativo nodo nella composizione viene eliminato e riutilizzato in modo compatibile. Questo è particolarmente utile per le visualizzazioniLazyRows
eLazyColumns
. (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 semantica
SetText
diBasicTextField
ora aggiornerà il buffer di testo utilizzando lo stesso percorso di codice degli aggiornamenti dell'IME e delle funzioni di test (ad es.performTextReplacement
). - Le funzioni di test del testo
performTextClearance
,performTextReplacement
eperformTextSelection
ora utilizzanoSemanticsActions
. (I0807d, b/269633168, b/269624358)
Versione 1.4.0-beta02
22 febbraio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-beta02
. La versione 1.4.0-beta02 contiene questi commit.
Modifiche alle API
- È stata rimossa l'API
modifierElementOf()
. Estendi direttamente daModifierNodeElement
. (I2256b) - È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che ti consente di reimpostare alcuni stati locali per gestire correttamente la richiesta di riutilizzo diLayout
(ad esempio come elemento diLazyColumn
). È stato correttoFocusTargetModifierNode
per reimpostare correttamente lo stato attivo. (I65495, b/265201972) - È stato aggiunto il parametro
BlendMode
ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di combinazione quando si disegna testo su Canvas. (I57508)
Correzioni di bug
- È stato migliorato l'algoritmo dell'ordine di priorità dell'accessibilità, ad esempio le barre superiore/inferiore vengono lette, rispettivamente, per prima e per ultima cosa (74e9c5)
Versione 1.4.0-beta01
8 febbraio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-beta01
. La versione 1.4.0-beta01 contiene questi commit.
Modifiche alle API
PinnableContainer.PinnedHandle.unpin()
è stato rinominatorelease()
(I4667a)- Aggiunte
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
ewaitUntilDoesNotExist
come API sperimentale aComposeTestRule
, estendendo l'APIwaitUntil
per accettare qualsiasi matcher e numero di nodi. ConsultaComposeTestRule
per ulteriori informazioni. (Ifa1b9, b/226934294) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. (I07af5) GoogleFont.Provider.AllFontsListUri
rimosso e collegato tramite link in ktdoc. (I16f29)
Correzioni di bug
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Versione 1.4.0-alpha05
25 gennaio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-alpha05
. 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 test e per eventuali chiamateLaunchedEffect
erememberCoroutineScope()
nella composizione. (I10614, b/265177763) - Aggiunta di una nuova API per monitorare la velocità monodimensionale (If5a82)
FocusRequester
ora è contrassegnato come@Stable
. (I580ee)- Rimuovi un'annotazione sperimentale dal costruttore
DialogProperties
che utilizza un parametrousePlatformDefaultWidth
. (Ic4048) - Aggiunta funzione alla posizione e alla tangente del calcolo a una distanza su un percorso - con
PathMeasure.getPosition()
ePathMeasure.getTangent()
(I3b47c) - È stato rimosso il setter pubblico esposto per errore il giorno
PlatformParagraphStyle
. (I07f47) - Più tipo/nullabilità di funzioni in linea/deprecate e nascoste (I24f91)
- Aggiungi
AnnotatedString.hasStringAnnotations
per eseguire una query per le annotazioni con zero allocazioni. (I94dfe, b/246960758) - È stato aggiunto un nuovo sovraccarico per la funzione
TextMeasurer.measure
che accettaString
come testo. (I47b2d, b/242705342) - Le API
LineBreak
eHyphens
in TextStyle sono passate allo stato stabile. (Ic1e1d).
Contributo esterno
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non sono più deprecati. (I23a04, b/262648050)
Versione 1.4.0-alpha04
11 gennaio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-alpha04
. 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 lazy in modo che non vengano spostati quando vengono fatti scorrere oltre i limiti. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/2518151815181515151815151515183}10}b/247716483) - 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) - Aggiunto nuovo ruolo di accessibilità
DropdownList
. Questa opzione può essere utilizzata per replicare il comportamento diTalkBack's
quando impostiandroid.widget.Spinner
. (I177e5, b/236159001) - Se vuoi, ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per diventare inattivi (ad es. tramite
waitForIdle
). Questo potrebbe influire sui test che asseriscono su singoli frame di animazioni di layout. (I8ea08, b/222093277) - È stato aggiunto il valore
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 essere in linea con altre funzioniDrawScope
. Il criteriosize
è impostato suSize.Unspecified
per impostazione predefinita e non dovrebbe modificare il comportamento predefinito precedente. (Icd27d) - Rimosso il costruttore di caratteri sperimentale obsoleto. (I8a724, b/261435386)
- La classe di dati degli strumenti UI
Group
ora ha un campo,isInline
, che indica se il gruppo riguarda una chiamata a una funzione componibile in linea. SeisInline
ètrue
, la chiamata è a una funzione componibile in linea. Tuttavia, il valore potrebbe essere falso per le chiamate a funzioni componibili inline provenienti da moduli compilati con una versione del plug-in del compilatore Composer che non genera le informazioni della funzione inline. (Idb846) - Trasformazione in stabili di alcune API precedentemente sperimentali
- L'API Rotary Scorri Event è ora stabile (I42ad3, b/261561229)
- L'API
FontVariation
è ora stabile (I8779f, b/241016309) - Tutti i costruttori
Font()
ora sono 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. Questa opzione può essere utilizzata per individuare 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) - Ora
TextUnit(float, TextUnitType)
è un'API stabile. (I90c84, b/261561612) - Ora
pluralStringResource
è un'API stabile. (I09849, b/261439703)
Versione 1.4.0-alpha03
7 dicembre 2022
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-alpha03
. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimozione di
ExperimentalComposeUiApi
daPointerIcon
(I23af8) - Presenta le azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che queste funzionalità sono disponibili solo dall'API 29. (Ida4ab) - Visualizzazione parametro
rememberNestedScrollConnection
aggiornata dalla vista principale alla vista 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. - È stato corretto il problema di
Clickables
che non ritardava correttamente le eco, se utilizzato all'interno di unScrollable ViewGroup
. - Aggiornati cassetti e fogli per ritardare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
CompositingStrategy.Always
è stato rinominato inOffscreen
per indicare che il rendering digraphicsLayer
verrà sempre eseguito in un buffer intermedio (I47dc1)- Il sovraccarico del layout con più aree di contenuti è ora stabile (I10566, b/248294649)
- Sono state aggiunte nuove API sperimentali
PerfettoTrace.record {}
ePerfettoTraceRule
per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di ispezionare il comportamento e le prestazioni dei test. (I3ba16) - Nei test dell'interfaccia utente che utilizzano una regola di composizione, le continuazioni riprese durante i callback
withFrameNanos
non verranno inviate fino al termine dell'esecuzione di tutti i callback frame. Questo corrisponde al comportamento di Compose quando viene eseguito normalmente. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Ciò dovrebbe interessare solo il codice che chiama direttamentewithFrameNanos
owithFrameMillis
e ha una logica esterna al callback passato a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Consulta le modifiche relative al test dell'animazione in questo CL per degli esempi. - È stato aggiunto il parametro facoltativo
onPerformTraversals: (Long) -> Unit
al costruttoreTestMonotonicFrameClock
e alla funzione di fabbrica per eseguire il codice dopo i callbackwithFrameNanos
, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670) - Aggiunta EmojiCompat a Compose (Ibf6f9, b/139326806)
- È stato aggiunto un nuovo parametro dello sfondo a
@Preview
per il supporto dei colori dinamici (I9f512)
Correzioni di bug
- Ora le notifiche di applicazione degli snapshot vengono inviate al termine dell'applicazione delle modifiche in
Recomposer
. (Iad6c0, b/222093277) - Sono state introdotte modifiche in
captureToImage
per consentire l'acquisizione di screenshot multi-finestra. Questo è utile per i test di screenshot che utilizzano i 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
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-alpha02
. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche alle API
GraphicsLayerScope
aggiornato per esporre la dimensione attuale dell'elementographicsLayer
. Questo è utile per calcolare le trasformazionigraphicsLayer
in funzione della dimensione componibile. (If8c43,b/181387080)CompositingStrategy
introdotto per determinare quando utilizzare un livello di composizione fuori schermo per il rendering dei contenutigraphicsLayer
. Mantenere automaticamente il comportamento predefinito che sfrutta internamente un livello se viene applicata una versione alpha oRenderEffect/Overscroll
. Introdurrà sempre un buffer fuori schermo in cuiModulateAlpha
eviterà di sfruttare un buffer fuori schermo e modula invece ciascuna delle istruzioni di disegno registrate all'interno digraphicsLayer
. L'utilizzo diModulateAlpha
continuerà a sfruttare un buffer fuori schermo perRenderEffect/Overscroll
(I25e82, b/256382834)invalidateSubtree()
è stato aggiunto aModifier.Node
per consentire l'annullamento di intere gerarchie per layout e disegno. (I4bd90)- Promuovi
rememberNestedScrollInteropConnection
a livello stabile. È stata introdotta la possibilità di passare una vista radice arememberNestedScrollInteropConnection
. In questo modo la visualizzazione personalizzata può reagire meglio ai vincoli di scorrimento, soprattutto nelle visualizzazioni non standard (ad es.ModalBottomSheetDialog
). (I9e107) - Aggiunta l'interfaccia
ObserverNode
che può essere utilizzata dalle implementazioniModifier.Node
che devono ricevere una notifica quando un valore letto in precedenza viene modificato (I5728b, b/247716483) - È stato aggiunto un nuovo costruttore a
Paint
che accetta unandroid.graphics.Paint
nativo. È stata inoltre aggiunta una funzione di estensionetoComposePaint()
che converte un oggetto Paint nativo esistente in Compose Paint. (Ica91b) - Aggiungi un nuovo
FontFamily.Resolver.resolveAsTypeface
da usare su Android. (I8950b) - Aggiungi
ToolingState
per consentire agli strumenti di modificare gli stati interni di Composable (Ie6614) - Strumenti di refactoring per avere un supporto migliore per le nuove animazioni aggiunte (I8677b)
- È stato aggiunto il parametro
minLines
in material e testo 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
Viene rilasciato androidx.compose.ui:ui-*:1.4.0-alpha01
. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Funziona in modo simile aforEachGesture()
, ma i gesti di loop sui gesti operano interamente all'interno diAwaitPointerEventScope
, in modo che gli eventi non vadano persi tra un'iterazione e l'altra. forEachGesture()
è stato ritirato a favore diawaitEachGesture()
perché consente di perdere eventi tra un gesto e l'altro. (Iffc3f, b/251260206)- Ritiro del riciclo di oggetti accessibili in Androidx. Abbiamo riscontrato che le variazioni delle prestazioni sono trascurabili anche nelle versioni meno recenti supportate. (I0a961)
DrawStyle
è stato aggiunto come attributo sperimentale aTextStyle
eSpanStyle
per consentire di tracciare il testo con contorni. (If24b8, b/155421273)AnnotatedString.Builder
ora implementakotlin.text.Appendable
. (I1a061, b/231030444)- Ora in
AnnotatedString.Builder
è disponibile un metodoappend(AnnotatedString, start: Int, end: Int)
per aggiungere la sottostringa di un elementoAnnotatedString
e gli stili che si intersecano. - Parametro
DrawStyle
aggiunto alle funzioni di colorazioneParagraph
eMultiParagraph
per consentire di disegnare il testo con contorni. (Ic8102, b/155421273)
Contributo esterno
- Grazie per
vighnesh
per aver aggiunto dispositivi TV alle anteprime (Ie15cd)
Versione 1.3
Versione 1.3.3
11 gennaio 2023
Viene rilasciato androidx.compose.ui:ui-*:1.3.3
. La versione 1.3.3 contiene questi commit.
Correzioni di bug
- Correzione di un problema che a volte si verificava su Android 9 mentre l'Attività salvava lo stato della visualizzazione Scrittura. (I0b755, b/260322832)
Versione 1.3.2
7 dicembre 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.2
. 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
Viene rilasciato androidx.compose.ui:ui-*:1.3.1
. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0
. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Nuova suite API sperimentale
LookaheadLayout
(che abilita comportamenti di animazione precedentemente impossibili) - Nuova suite API sperimentale
Modifier.Node
(alternativa con prestazioni più elevate aModifier.composed
) - Supporto migliorato per gli insiemi di finestre.
- Imposta lo stato attivo sul supporto per D-pad e tastiera hardware nei LazyList.
- L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica del comportamento che provoca un errore per alcuni sistemi di progettazione personalizzati – razionale nelle note di rilascio beta01)
- Molti miglioramenti di minore entità delle API
- Molte correzioni di bug e miglioramenti delle prestazioni
Versione 1.3.0-rc01
5 ottobre 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-rc01
. La versione 1.3.0-rc01 contiene questi commit.
Modifiche alle API
- Sono stati aggiunti nuovi trattini sperimentali delle API per supportare il trattino automatico nel testo (Iaa869)
Correzioni di bug
- Per impostazione predefinita, i caratteri
DeviceFontFamilyName
non configureranno le impostazioni delle variantiwght
eital
, ma utilizzeranno l'impostazione della piattaforma per i caratteriTypeface
caricati. (Ia7a6d, b/246989332) - Correzione della perdita di memoria di
LazyColumn
:onModifierLocalsUpdated
non veniva chiamato con il valore predefinito al momento del riutilizzo dei modificatori (b/230168389)
Versione 1.3.0-beta03
21 settembre 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-beta03
. 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 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
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-beta02
. La versione 1.3.0-beta02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un sovraccarico sperimentale per Layout che accetta un elenco di più lambda di contenuti componibili, il che consente di inserire i parametri misurabili sulle minacce in differenti contenuti lambda (Ic1b4e)
Modifiche alle API sperimentali Focus:
FocusDirection.In
eFocusDirection.Out
sono deprecati e sostituiti daFocusDirection.Enter
eFocusDirection.Exit
. (Ia4262, b/183746982)- Sono state aggiunte due nuove proprietà dello stato attivo in entrata e in 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, successiva, precedente, inizio, fine, Invio e uscita. (Ib300f)
Versione 1.3.0-beta01
24 agosto 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-beta01
. La versione 1.3.0-beta01 contiene questi commit.
Refactoring dei nodi di modifica
Il livello che gestisce le istanze Modifier/Modifier.Element
e coordina il loro comportamento su LayoutNodes
è stato sottoposto a importanti refactoring. Allo stato attuale, si tratta di un refactoring che non ha interessato l'API pubblica di nessuno dei molti 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 Modifier.Node
sperimentali aggiunte forniscono un'astrazione che consente di mantenere lo stato su un'istanza che verrà conservata per il ciclo di vita del nodo di layout e verrà allocata per nodo e utilizzo del Modifier.Element
corrispondente che l'ha prodotto.
In termini generali, questa astrazione fornisce un meccanismo alternativo per produrre modificatori stateful senza fare affidamento sui meccanismi dell'API Modifier.composed
.
Rischio
Questa modifica è strettamente compatibile con le versioni binarie con le release precedenti ed è pensata per essere compatibile con le versioni precedenti in termini di comportamento osservabile, quanto più pratico e ragionevole. Detto questo, sono pochi i sottosistemi di composizione che questo refactoring non ha toccato ed è probabile che il comportamento sia cambiato in modi che non erano stati trattati dai nostri test e che non sono ancora stati trovati e risolti.
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 di modifica vengono creati
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 del comportamento che provoca un errore
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 composizione è stata ridotta da 30 dp a 8 dp. Questa modifica interessa le finestre di dialogo e i popup personalizzati dell'interfaccia utente e dei materiali. Questa modifica è stata apportata per mitigare un bug di accessibilità sulle 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 interesserà 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 abbassare l'elevazione della finestra di dialogo o del popup. Se devi rifiutare questo nuovo comportamento, puoi creare una finestra di dialogo o un popup con l'impostazione dell'elevazione desiderata. Questa opzione è sconsigliata perché l'accessibilità potrebbe risentirne negativamente ed è compito dello sviluppatore garantire che la parte inferiore della finestra di dialogo o del popup sia interattiva e leggibile dai servizi di accessibilità.
Modifiche alle API
- Risolto un problema per cui
painterResource
non si aggiornava 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 di caratteri sono stati ripristinati al file kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3)
- Rimosso l'operatore non necessario da diverse definizioni di uguale. Questa operazione non ha alcun effetto. (I6c309)
FontVariation.Setting
è un'interfaccia protetta che consente l'utilizzo di API di blocco in futuro. (I11021, b/143703328)- Aggiungi
CompositionGroup.findParameters
aSlotTree.kt
. In questo modo, gli strumenti possono recuperare i parametri per unCompositionGroup
senza dover analizzare l'intera tabella slot. (I124fe)
Versione 1.3.0-alpha03
10 agosto 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-alpha03
. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
LayoutCoordinates.findRootCoordinates()
è ora pubblico (I7fa37, b/204723384)- È stata aggiunta un'API sperimentale per recuperare
LayoutCoordinates
inPlacementScope
. Questo consente agli sviluppatori di sapere dove posizionare il layout corrente rispetto alla sua posizione. (I5482b, b/238632578) - È stato aggiunto
LayoutCoordinates.transformFrom
per ottenere la trasformazione Matrix daLayoutCoordinates
a un altro. (Ic5ab1, b/238632578) - L'elemento
SemanticsModifier.id
è stato deprecato e l'ID semantico è stato invece spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524) - Ora Resource Fonts supporta l'impostazione delle impostazioni di variazione dei caratteri (API 26+). (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 di caratteri variabili sui dispositivi O+. (I11a9d, b/143703328) - Aggiungi l'API
FontVariation
per definire e utilizzare caratteri variabili. (I3c40c, b/143703328) - Ora il costruttore
LineHeightStyle.Alignment
è pubblico (sperimentale) (I4bbbe, b/235876330) - Il paragrafo è ora previsto|effettivo e definito per Android e computer. (Id387e, b/239962983)
- L'interfaccia Paragarph è ora sigillata. Non esiste un caso d'uso per la creazione di sottoclassi di paragrafi. Ti consigliamo di contattarci se questa modifica ti interessa. (If5247, b/239962983)
- L'annotazione sperimentale è stata 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
@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
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-alpha02
. 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 sintassi Kotlinin
per chiamare la funzionecontains
. (Ie42b0, b/238642990)- Rimuovi le funzioni non necessarie da
KeyInjectionScope
, poiché possono essere facilmente implementate con parti più semplici dell'API. Le funzioni che sono state rimosse includonopressKeys
,keysDown
ekeysUp
. (I81d77) - Costante e parametri sottoposti a refactoring in
KeyInjectionScope
per includere il suffisso "Millis", dove le unità di tali costanti e parametri sono millisecondi. (Iabef5) - Metodo
toStringForLog()
aggiunto aEditCommand
per facilitare la risoluzione dei problemi di modifica del testo. (I53354, b/228862731) - È stata aggiunta la funzione di estensione
drawText
inDrawScope
per consentire di disegnare testo con più stili su componibili e modificatori che operano suDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898) - Introduci una nuova API sperimentale chiamata
TextMeasurer
che consente il calcolo arbitrario del layout del testo in modo da creare risultati identici aBasicText
, indipendentemente dal runtime di Compose. (I17101) - Aggiungi
mapTree
aSlotTree.kt
. In questo modo, gli strumenti possono esaminareSlotTree
senza creare prima una copia in memoria come fa AsTree. Per Layout Inspector, ciò consente di ottenere un miglioramento delle prestazioni di circa un fattore 10. (I5e113). - L'anteprima di Compose è stata modificata in modo da archiviare i 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, per garantire che la velocità venga calcolata correttamente per tutti i casi anche se l'elemento target si muove (Icea9d, b/216582726, b/223440806, b/227709803) - Correggi gli errori NPE causati da
AnnotatedString.toUpperCase
in presenza di annotazioni. (I0aca2, b/210899140)
Versione 1.3.0-alpha01
29 giugno 2022
Viene rilasciato androidx.compose.ui:ui-*:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Nuovo elemento
LookaheadLayout
che supporta un pass lookahead prima della misura/del layout effettivi. In questo modo è possibile eseguire un precalcolo del layout in caso di modifiche, mentre la misura/il layout post-lookahead può 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 release futura. (I477f5) - Aggiungi il parametro alpha facoltativo alla versione Pennello di
TextStyle
eSpanStyle
per modificare l'opacità dell'interoText
. (Ic2fac, b/234117635) - Sono stati introdotti il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare il supporto dei linkTalkBack
inAnnotatedString
. (I1c754, b/231495122) - Spostamento della funzionalità dell'utilità in runtime (I4f729)
Correzioni di bug
TextLayoutResult.getLineForOffset
non lancia. (Idc5d6, b/235876324)
Contributo esterno
- È 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
Viene rilasciato androidx.compose.ui:ui-*:1.2.1
. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- nullpointer corretto nel controllo (b/237987764)
- È stata corretta l'eccezione di trasmissione delle classi durante la memorizzazione nella finestra di controllo (b/235526153)
Versione 1.2.0
27 luglio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0
. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
Miglioramenti nell'attraversamento dello stato attivo:
- Lo scorrimento orientato allo stato attivo degli elenchi Lazy ora funziona utilizzando la nuova API principale
BeyondBoundsLayout
- Nuove API di personalizzazione del comportamento in
FocusOrder
eFocusProperties
- Comportamento migliorato con la tastiera fisica o il telecomando della TV
- Lo scorrimento orientato allo stato attivo degli elenchi Lazy ora funziona utilizzando la nuova API principale
Nuove API per:
- Rivestimenti di finestre
- Primitive fondamentali per animazioni basate su gesti, infinite e di layout
- Funzionalità di
GraphicsLayer
, tra cuiRenderEffect
Molte correzioni di bug e miglioramenti delle prestazioni
Versione 1.2.0-rc03
29 giugno 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-rc03
. 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
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-rc02
. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-rc01
. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Le interfacce nelle librerie di scrittura vengono ora create utilizzando i metodi predefiniti dell'interfaccia jdk8 (I5bcf1)
- Sono state aggiunte funzioni di ordine superiore a
KeyInjectionScope
per iniettare pressioni dei tasti mentre gli altri tasti vengono premuti o attivati. Queste funzioni includonowithKeysDown
,withKeysToggled
e così via. Sono state aggiunte anche proprietà per verificare se un determinato tasto meta è inattivo, ad esempioisCtrlDown
per verificare se uno dei due tasti di controllo è stato premuto. ConsultaKeyInjectionScope
per la documentazione su ciascuna funzione. (I9f6cd, b/229831515) - È stato introdotto un
OverscrollEffect
sperimentale per consentire gli effetti di scorrimento dell'overscroll personalizzati, oltre ai sovraccarichiModifier.scrollable
che lo accettano. - La funzionalità
LocalOverScrollConfiguration
sperimentale è stata spostata dafoundation.gesture
al pacchetto di base e rinominataLocalOverscrollConfiguration
(If19fb, b/204650733) - Rinomina
runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
per allinearlo acreateEmptyComposeRule()
(I6fed7)
Versione 1.2.0-beta03
1 giugno 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-beta03
. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
pressKeyTimes
,isCapsLockOn
e amici aggiunti aKeyInjectionScope
. Inoltre, l'API ora supporta pattern di inserimento combinati con mouse e tastiera, ad esempio il clic con un pulsante del mouse con un tasto meta premuto. (I4c8da, b/229831515)- È stato aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Utilizza
performKeyInput
per inviare eventi chiave o inviali tramite la proprietàkey
diMultiModalInjectionScope
durante un gesto di immissione multimodale conperformMultiModalInput
. VediKeyInjectionScope
per la documentazione dell'API. (Ic5000, b/229831515) - Aggiungi un nuovo
GoogleFont.Provider.AllFontsListUri
per recuperare la sorgente internet canonica di Google Fonts supportata da Android. - Migliora i messaggi di errore che vengono restituiti quando il caricamento di GoogleFonts non riesce in fase di scrittura. (I0416c)
Correzioni di bug
- Quando aggiungi eventi
InputEventChange
al tracker di velocità, prendiamo in considerazione ora i delta anziché le posizioni. Ciò garantisce che la velocità venga calcolata correttamente per tutti i casi anche se l'elemento target si muove (I51ec3, b/216582726, b/223440806, b/227709803) - L'impostazione
Show Layout Bounds
verrà applicata ai componibili subito dopo averla attivata/disattivata 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, cercava di caricare i caratteri per
StyleSpans
, il che causava un arresto anomalo 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ù l'arresto anomalo.
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
ora richiedono che gli argomenti del costruttore siano non negativi. (Ica8e6, b/199919707)
Versione 1.2.0-beta02
18 maggio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-beta02
. La versione 1.2.0-beta02 contiene questi commit.
Modifiche alle API
- Riutilizzo delle funzionalità in altri tipi di anteprima (I19f39)
Correzioni di bug
- Il nome
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
è stato rinominatoDisposeOnDetachedFromWindowOrReleasedFromPool
per riflettere meglio quando avviene lo smaltimento, anziché semplicemente quando non avviene. (If15ca).
Versione 1.2.0-beta01
11 maggio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-beta01
. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima versione beta della 1.2.
Modifiche alle API
- Aggiunta di
BeyondBoundsInterval
sperimentali che possono essere utilizzate dalle implementazioni personalizzate diLazyList
quando impongono il layout degli elementi oltre i limiti visibili (Ifabfb, b/184670295) - Le versioni con chiave di
Modifier.composed
sono ora API stabili (Ie65e4, b/229988420) - È stata semplificata l'API
rememberNestedScrollConnection
per utilizzare le informazioni locali di composizione per acquisire le informazioni della vista corrente (I67ca7) - Ora l'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
possono essere utilizzate nell'ambito dei file con il prefisso@file
. L'utilizzo di un'annotazione di destinazione nell'ambito del file farà in modo che il compilatore presuma che tutte le funzioni componibili nel file siano destinate all'applicatore associato. Ad esempio, l'utilizzo 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 target per l'applicatore desiderato. (I40804) Introduzione di una nuova API di test sperimentale e indipendente dalla piattaforma:
interface ComposeUiTest
efun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, che possono essere utilizzate per eseguire i test dell'interfaccia utente utente di Compose senza bisogno di unTestRule
. Per eseguire un test senzaComposeTestRule
, supera il test come lambda perrunComposeUiTest
e utilizza i metodi e i membri nell'ambito del destinatarioComposeUiTest
, che sono gli stessi dell'elementoComposeContentTestRule
.Vengono aggiunti
interface AndroidComposeUiTest
efun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
specifici per Android per fornire accesso all'attività sottostante, come inAndroidComposeTestRule
. Per un controllo ancora maggiore, puoi creare un'istanza di unclass AndroidComposeUiTestEnvironment
autonomamente.L'implementazione desktop è
class DesktopComposeUiTest
, ma al momento non vengono offerte funzioni di esecuzione specifiche di desktop.Puoi eseguire la migrazione di un test da un
ComposeTestRule
aComposeUiTest
in questo modo (ad esempio Android). Da:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Segui le istruzioni per eseguire le operazioni indicate:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Per ora,
ComposeContentTestRule
eComposeTestRule
non si estendono daComposeUiTest
, il che significa che le funzioni di estensione suComposeUiTest
non possono ancora essere chiamate nell'interfaccia diTestRule
. QuandoComposeUiTest
passerà all'API stabile,ComposeContentTestRule
eComposeTestRule
verranno modificati per estendersi daComposeUiTest
. (Ib4e90)LineHeightBehavior
è stato rinominatoLineHeightStyle
LineVerticalAlignment
è stato rinominatoLineHeightStyle.Alignment
La ridenominazione di
LineHeightTrim
è stata rinominataLineHeightStyle.Trim
I valori predefiniti del costruttore da
LineHeightStyle
sono stati rimossi (I582bf, b/181155707)Brush
è stato aggiunto aTextStyle
eSpanStyle
per fornire un modo per disegnare testo con colori a gradiente. (I53869, b/187839528)trimFirstLineTop
,trimLastLineBottom
attributi diLineHeightBehavior
modificati in una singola enum:LineHeightTrim
.LineHeightTrim
hanno valori di 4 stati definiti da due booleani:FirstLineTop
,LastLineBottom
, Entrambi e Nessuno (Ifc6a5, b/181155707)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 definito da CSS tramite
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Le configurazioni
trimFirstLineTop
,trimLastLineBottom
funzionano correttamente solo quandoincludeFontPadding
è impostato su false. (I97332, b/181155707)Le funzioni
PlatformParagraphStyle.lerp
ePlatformSpanStyle.lerp
vengono cambiate 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 adattano a tutte le righe di testo (Ie528c, b/168720622)
- Opzione
includeFontPadding
predefinita attivata. È possibile disattivareincludeFontPadding
utilizzando l'attributoTextStyle.platformTextStyle
. Nel prossimo futuro modificheremo il comportamento predefinito, tuttavia, fino a quel momento, questo ci consentirà di integrare meglio i miglioramenti dell'altezza della riga (aosp/2058653) e di risolvere iTextField
problemi di ritaglio. (I01423, b/171394808)
Contributo esterno
- Ora
MouseInjectionScope.scroll(delta = someDelta)
è invertito su Android se scorriamo in verticale (se delta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha08
. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Le funzioni
pluralStringResource
sono state contrassegnate come sperimentali per consentire all'evoluzione di supportare una migliore internazionalizzazione in futuro. (If24e4). - Paragrafo e MultiParagraph accettano ora il parametro Vincoli. Il superamento di
Constraints.maxHeight
è un'operazione nulla al momento, ma consentirà di fare alcuni calcoli in futuro, come l'ellisse in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata di tipo MutableSet che non consente l'aggiunta di nuovi elementi al suo interno. (Icd314)- PointerIcon ora è un'interfaccia
@Stable
(I9dafe) - Il consumo parziale (posizione OR giù) è stato deprecato in
PointerInputChange
. Puoi utilizzareconsume()
per applicare completamente la modifica. Puoi utilizzareisConsumed
per determinare se qualcun altro ha utilizzato in precedenza la modifica. PointerInputChange::copy()
ora crea sempre una copia superficiale. Significa che le copie diPointerInputChange
verranno consumate una volta che una delle copie è stata utilizzata. Se vuoi creare un elementoPointerInputChange
non associato, utilizza invece il costruttore. (Ie6be4, b/225669674)- Attiva l'interoperabilità dello scorrimento nidificato tra Compose e View in direzione Compose > View. Ciò significa che un publisher principale di scrittura potrà ricevere delta di scorrimento nidificati da una visualizzazione scorrimento nidificata. (If7949, b/174348612)
- Nuovo
SemanticsProperty testTagsAsResourceId
, che può essere utilizzato per rendere conforme Compose ai test di UIAutomator progettati per il sistema di visualizzazione. (I39c20) - Visualizza tutte le ponderazioni disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. All'interno dell'API 21-28, verranno utilizzati nomi dei caratteri di fallback come Sans Serif-medium. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 nell'API 21-28. (I380fe, b/156048036, b/226441992) - Gli insegnanti di paragrafo e multiparagrafo hanno riordinato gli argomenti posizionali prima di quelli facoltativi. (Idafaa)
AndroidFont
ora utilizza typefaceLoader come parametro costruttore. (I2c971).
Versione 1.2.0-alpha07
6 aprile 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha07
. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta la nuova funzione
Snapshot.withoutReadObservation { ... }
. Consente agli utenti di eseguire la funzione lambda passata senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potresti trovarlo utile nei casi d'uso quando vuoi trarre vantaggio dalla scrittura/lettura sicura in thread basata su snapshot, ma vuoi poter leggere il valore senza causare ricomposizioni o rimisurazioni non necessarie. (I9f365, b/214054486) - La proprietà di estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare il consumo di AndroidWindowInsets
. In questo modoComposeViews
separati nella gerarchia possono essere applicatiWindowInsets
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)- Attiva l'interoperabilità dello scorrimento nidificato tra View e Compose per le classi View che collaborano. Ciò significa che Compose ora è in grado di inviare delta di scorrimento a un elemento principale View (che collabora). (I5d1ac, b/174348612)
- Aggiornamento di
FontFamily.Resolver
per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7) Font(AssetManager, String, ...)
è deprecato, sostituito conFont(String, AssetManager, ...)
. Questa è un'API sperimentale. (I1c7a4)- Se vuoi, aggiungi un nuovo descrittore dei caratteri
Font(DeviceFontFamilyName)
per cercare i caratteri installati dal sistema durante le catene di fallback dei caratteri. (I30468, b/219754572) - È stata aggiunta una configurazione temporanea della compatibilità 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)
, mentre l'API rimane stabile. (I125f2)
Correzioni di bug
- È stato aggiunto il controllo della pelucchi al materiale/scaffold per garantire che venga utilizzata la spaziatura interna interna (Ifb111)
Versione 1.2.0-alpha06
23 marzo 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha06
. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'azione semantica
RequestFocus
per richiedere lo stato attivo sul target attivabile. (I17b71) - Aggiornamento dell'analisi dei drawable vettoriali per supportare il mirroring automatico per invertire i contenuti di un
VectorPainter
se la direzione del layout corrente è RTL. (I79cd9, b/185760237) I colori ombra/ambient sono stati aggiornati come parametri finali di
Modifier.graphicsLayer
per la compatibilità API (I3f864, b/160665122)Sono state aggiunte implementazioni predefinite per il colore ombra/ambient in
GraphicsLayerScope
per garantire modifiche costanti all'APIÈ stata aggiunta l'ora dell'evento agli eventi RSB (Ief8ae)
FocusOrder
è stata unita aFocusProperties
efocusProperties()
ora ha tutte le funzionalità difocusOrder()
.FocusOrder
efocusOrder()
sono stati deprecati.focusOrder()
che accetta unfocusRequester
deve essere sostituito con un modificatorefocusRequester()
in combinazione confocusProperties()
. In questo modo i modificatori possono avere una separazione più forte dei problemi. (I601b7)L'upgrade di
RecyclerView
eCompose
ora comporta prestazioni di scorrimento molto migliori per le visualizzazioni RecyclerView con le visualizzazioni di Compose come elementi secondari.Aggiungi
ViewCompositionStrategy.Default
come mezzo per recuperare la strategia predefinita integrataAggiungi
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, che è la nuova strategia predefinita e gestisce correttamente i 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à Multipreview. Queste annotazioni potrebbero essere utilizzate per annotare metodi componibili o altre classi di annotazione, che potrebbero poi essere considerate annotate indirettamente con l'@Anteprima specificata. (I12eff)
Dispositivi di riferimento aggiunti all'elenco Dispositivi per @Anteprima (I071c9)
Correzioni di bug
- Sono state aggiornate le API Vector Graphics per utilizzare l'annotazione componibile corretta @VectorComposable anziché @UiComposable (I942bc).
- Rimuovi in linea incrociata da
AnnotatedString.Builder.withStyle
(If84d5)
Contributo esterno
- Composer-ui: aggiungi le 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
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha05
. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche alle API
TextToolbar
ora accetta gli argomenti lambda anzichéActionCallback
. (Ib2eb9, b/197950089)- Nulla aggiornato nel core e 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! La funzionalità di scrittura dell'animazione ora supporta l'impostazione "Scala durata animazione" delle Opzioni sviluppatore. (I5a4fc, b/161675988)
- È stato aggiunto un modificatore di
BeyondBoundsLayout
locale (If8b51, b/184670295) - Testo: includeFontPadding ora è disattivato per impostazione predefinita. I
problemi di ritaglio causati dall'applicazione
includeFontPadding=false
vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808)
Correzioni di bug
ComposeContentTestRule.setContent
ora genererà unIllegalStateException
se tenti di impostare dei contenuti quando ne sono già presenti. (I888a5, b/199631334)- È stato corretto 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)
Contributo esterno
- Aggiornamento per l'utilizzo di Kotlinx coroutines 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha04
. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono di generare report sul tempo di compilazione del momento in cui una funzione componibile viene chiamata come target di un applicatore che non è stata progettata.Nella maggior parte dei casi le annotazioni possono essere dedotte dal plug-in del compilatore di scrittura, quindi l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni componibili astratte (ad esempio metodi di interfaccia), campi o variabili globali che sono lambda componibili (vengono dedotti parametri e variabili locali) oppure l'utilizzo di
ComposeNode
o di funzioni componibili correlate.Per gli applicativi personalizzati, le funzioni componibili che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneComposableTarget
per la funzione e qualsiasi tipo di parametro lambda componibile. Tuttavia, ti consigliamo di creare un'annotazione annotata conComposableTargetMarker
in modo da utilizzare l'annotazione contrassegnata al posto diComposableTarget
direttamente. Un'annotazione componibile contrassegnata conComposableTargetMarker
equivale aComposbleTarget
con il nome completo della classe dell'attributo come parametro dell'applicatore. Per un esempio di utilizzo diComposableTargetMarker
, consultaanroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
ora supporta loadStrategy nell'API stabile. (Ief3d2)Ora
FontLoadingStrategy
è un'API stabile. (I1ee35, b/174162090)Supporto del caricamento asincrono dei caratteri nel testo (I77057, b/214587005)
Aggiungi l'API bridge per convertire l'elemento
Font.ResourceLoader
personalizzato inFontFamily.Resolver
. (Ia0060)
Correzioni di bug
- I valori
FontFamily.Resolver
specificati vengono passati alle sottocomposizioni come Popup. - I valori
Font.ResourceLoader
specificati vengono passati alle sottocomposizioni come Popup. (I48fa5)
Versione 1.2.0-alpha03
9 febbraio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha03
. 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) - È stato introdotto il 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
movableContentOf
che converte un lambda componibile in una lambda che sposta lo stato e i nodi corrispondenti in qualsiasi nuova posizione chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata alla funzione 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 ricevono una notifica.Se una lambda
movableContentOf
viene richiamata più volte nella stessa composizione, per ogni chiamata vengono creati un nuovo stato e nodi e, quando le chiamate escono dalla composizione e le nuove chiamate entrano in una nuova chiamata, lo stato viene spostato dalle prime chiamate in uscita a quelle in entrata nell'ordine in cui vengono chiamati. 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.Paragrafo e MultiParagrafo ora richiedono
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
ora contiene il resolver utilizzato per questo layout, deprecatoTextLayoutResult.layoutInput.resourceLoader
perché non è più utilizzato. (Id5a45, b/174162090)Supporto per il caricamento asincrono e facoltativo dei caratteri, con comportamento di riserva. Questo percorso viene utilizzato da Text e TextField ed esposto tramite FontFamilyResolver
Supporto per il precaricamento dei caratteri tramite
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
consente di impostare il contesto globale della coroutine utilizzato per il caricamento dei caratteri asincroni. (I87fe8, b/174162090)È stata aggiunta
AndroidFont
, una nuova API di basso livello per fornire nuovi tipi di descrittori delle risorse di caratteri su Android. Ad esempio, il caricamento di caratteri da un backend specifico dell'app, l'eventuale individuazione di caratteri preinstallati sul dispositivo o il caricamento di un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.È stata ampliata l'API
Font.ResourceLoaded
per supportare il caricamento facoltativo e asincrono dei caratteri. Sconsigliamo agli sviluppatori di applicazioni di utilizzare direttamente questa API. Per aggiungere nuovi tipi di caratteri, vediAndroidFont
.La funzione di estensione
Font.AndroidResourceLoader
consente la creazione di unaFont.ResourceLoader
al di fuori della composizione.È stato aggiunto il parametro
loadingStrategy
ai caratteri basati sulle risorse per consentire il caricamento asincrono quando il carattere della risorsa fa riferimento ai caratteri XML scaricabili. (Ie5aea, b/174162090)Il costruttore
Typeface(FontFamily)
è deprecato. In precedenza era utilizzato per precaricare i caratteri, operazione che potrebbe 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 era utilizzato per precaricare i caratteri, operazione che potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Usa inveceFontFamilyResolver.preload
(If8e7c, b/174162090)Il costruttore
SubcomposeLayoutState
che accettamaxSlotsToRetainForReuse
è ora deprecato. È disponibile invece un nuovo costruttore che accettaSubcomposeSlotReusePolicy
, una nuova interfaccia che consente un controllo più granulare su quali slot devono essere conservati 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)L'elemento
AndroidComposeTestRule.AndroidComposeStatement
è deprecato, che non doveva essere incluso nell'API pubblica e non ha comunque fatto nulla per te. (Ibc46b)Rinominazione della classe kt generata internamente (Ia0b9e, b/174162090)
FontLoadingStrategy.values
rimosso (I42a9d, b/174162090)Il caricatore globale dei caratteri ora si chiama
FontFamilyResolver
. (I4f773, b/174162090)Usa un nuovo sistema di caricamento dei caratteri per desktop. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
restituisceState<Any>
(I4406c, b/174162090)
Correzioni di bug
- I campi di testo verranno ora conservati al di sopra della tastiera quando vengono selezionati gli elementi selezionati e la tastiera viene visualizzata quando la modalità di immissione software è impostata su
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Il computer utilizza la composizione locale per
FontFamily.Resolver
- L'app desktop
FontLoader
è deprecata - Nuovo fabbrica di
createFontFamilyResolver
su computer (I6bbbb, b/174162090) - Il tipo di immissione da tastiera software non sfarfalla più quando si sposta lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
Versione 1.2.0-alpha02
26 gennaio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha02
. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
Modifier.onRotaryScrollEvent()
eModifier.onPreRotaryScrollEvent()
aggiunti per i dispositivi indossabili con un pulsante laterale rotante (I18bf5, b/210748686)- Aggiungi estensione
View.createLifecycleAwareRecomposer
sperimentale (I0cde6)
Contributo esterno
PointerEvent.scrollDelta.y
è ora invertito su Android (ora restituisce 1 anziché -1 se inclini la rotellina del mouse verso destra) (Ia9811)
Versione 1.2.0-alpha01
12 gennaio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.2.0-alpha01
. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
FontFamily.canLoadSynchronously
deprecato. Questa proprietà non ha un significato semantico. (Ica5ef)- È stato aggiunto il campo identità a
CompositionData
per generare 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
Viene rilasciato androidx.compose.ui:ui-*:1.1.1
. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correggi
NullPointerException
inandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - È stato corretto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- RTL fisso in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.1.0
. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile dell'effetto Overscroll per Android 12
- Miglioramenti alle dimensioni del touch target
- Tieni presente che, rispetto a Compose 1.0, i componenti Material amplieranno lo spazio di layout per rispettare le linee guida per l'accessibilità di Material relative alle dimensioni del touch target. Ad esempio, il touch target del pulsante si espanderà a una dimensione minima di 48 x 48 dp, anche se imposti le dimensioni del pulsante su un valore inferiore. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti di Material Design e si ottiene un comportamento coerente se si combinano Visualizzazioni e Compose. Questa modifica garantisce inoltre che, quando crei la UI utilizzando i componenti Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
- Supporto stabile per barra di navigazione
- Consente di passare alcune API precedentemente sperimentali allo stato stabile
- Supporto per versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-rc03
. 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
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-rc01
. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un bug che causava la mancanza delle azioni di scorrimento per l'accessibilità (I7cbfb)
- Ora anche
SemanticsNodeInteraction.captureToImage()
funzionerà anche se il criterioHardwareRenderer.isDrawingEnabled()
èfalse
, attivandolo per la durata della chiamata (Idf3d0)
Versione 1.1.0-beta04
1 dicembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-beta04
. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornamento per essere compatibile con Kotlin
1.6.0
Modifiche alle API
- È stato corretto il file null in
androidx.core.view
(I7078a, b/204917439) - Sono state aggiunte API sperimentali che consentono agli utenti di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d).
- Aggiunge il supporto per gli eventi rotellina di scorrimento del mouse nel livello dell'interfaccia utente. (Ia14eb, b/198214718)
- Aggiungi gli sovraccarichi sperimentali di
Modifier.composed
che accettano le chiavi per eseguire un confronto in base all'uguaglianza e essere idonee per le ottimizzazioni ignorate. (Ice799, b/205851704) ComposeNotIdleException
ora si estende daException
anziché direttamente daThrowable
. Tieni presente che ciò significa che le clausole di cattura che stavano catturandoException
ora potrebbero rilevareComposeNotIdleException
, mentre in precedenza non lo avrebbero fatto. (I9c217)
Correzioni di bug
- È stato corretto il problema di spostamento degli handle del testo quando la visibilità dell'IME cambia. (I25f2e).
Versione 1.1.0-beta03
17 novembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-beta03
. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- È stato aggiunto il nuovo modificatore Modifier.onPlaced per consentire di osservare i cambiamenti nel posizionamento. È quindi possibile apportare ulteriori modifiche all'offset del modificatore secondario in base alla modifica al posizionamento osservata. (I558fd)
InjectionScope.flush()
eInjectionScope.dispose()
rimossi. Il flush di tutti gli eventi e l'eliminazione dell'ambito ora avvengono alla fine del metodo perform*Input() chiamato come prima. (I2bed8)MultiModalInjectionScope.Touch
eMultiModalInjectionScope.Mouse
rimossi. Per inserire eventi di tocco e del mouse per i gesti multimodali, ora puoi utilizzareMultiModalInjectionScope.touch()
eMultiModalInjectionScope.mouse()
, che accettano entrambi una funzione lambda che abbia l'ambito del destinatario della modalità. (Idde18)
Correzioni di bug
- Il valore predefinito per
durationMillis
inTouchInjectionScope.swipeWithVelocity
ora è calcolato in modo che sia possibile scorrere. (I19deb)
Versione 1.1.0-beta02
3 novembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-beta02
. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori che scorrono per visualizzare un elemento (Ib918d, b/195353459)
- Nuove API di animazione per gli strumenti di supporto. In particolare, consentono agli strumenti di esaminare le animazioni e le relative configurazioni in una transizioni. (I4116e)
Contributo esterno
- Modifier.pointerHoverIcon aggiunto (I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-beta01
. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
BringIntoView
sperimentale che consente di inviare una richiesta ai genitori affinché scorrano per visualizzare un elemento (Ib918d, b/195353459) - Nuove API di animazione per gli strumenti di supporto. In particolare, consentono agli strumenti di esaminare le animazioni e le relative configurazioni in una transizioni. (I4116e)
Versione 1.1.0-alpha06
13 ottobre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha06
. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Rimuovi
ExperimentalComposeUiApi
daViewRootForInspector
eLayoutInfo.ownerViewId
(I5c2e3) - È stato aggiunto un sovraccarico senza figlio per Layout, con una maggiore efficienza (Ib0d9a)
- Rimozione di
InternalCompilerApi
dai metodi Composer che devono essere chiamati tra moduli (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
ora restituisceSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db)- È stato aggiunto LocalInputModeManager ComposeLocal per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786)
- È stato aggiunto
viewConfiguration: ViewConfiguration
aLayoutInfo
per consentire ai consumatori di ottenere il valore corretto per cose come il timeout della pressione prolungata. (I76ca6).viewConfiguration: ViewConfiguration
aInjectionScope
aggiunto per consentire ai test di regolare l'inserimento di input in base a fattori come il timeout alla pressione prolungata o la pressione sul tocco.- È stata modificata la durata predefinita della pressione prolungata e del doppio tocco per
l'inserimento del tocco e del mouse in modo che si basasse sui valori in
InjectionScope.viewConfiguration
.
- Implementazione di ExposedDropdownMenu in base a ExposedDropdownMenuBox con TextField e DropdownMenu all'interno (If60b2)
- IgnoraOnOutsideClick è stato aggiunto a PopupProprietà, in sostituzione di IgnoraOnClickOutside che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti di ancoraggio, in modo da avere un controllo più preciso sulla necessità di richiamare onIgnoraRequest o meno. Ad esempio, questo può essere utile per evitare che gli ancoraggi vengano chiusi con i tocchi.
- updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, che offre un controllo di basso livello sui flag trasmessi dal popup ad Android WindowManager. Il parametro di lambda saranno i flag calcolati dai valori PopupProperties che generano i flag WindowManager, ad esempio attivabili. Il risultato di lambda saranno i flag finali che verranno passati 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 tipo in StateFlow (Ic2ab3, b/197773820)flush()
edispose()
aggiunti aInjectionScope
. Utilizzale quando vuoi scaricare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito, rispettivamente. (Ifb73a).- È stato aggiunto un elemento
performScrollToNode(matcher: SemanticsMatcher)
che scorre un container scorrevole fino al contenuto corrispondente dal matcher dato. (Ic1cb8) - Ora
InjectionScope
implementaDensity
, consentendoti di convertire facilmente px e dp inperformTouchInput
e negli amici. (I8fe1f)
Correzioni di bug
- AndroidView ora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla propria visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Risolvere i problemi relativi alla gestione dello scorrimento da parte di Wear OS allo scopo di ignorare la barra di sfioramento di 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 un gesto di scorrimento specifico. (I829fd)
Versione 1.1.0-alpha05
29 settembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha05
. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiunto il supporto per le comunicazioni tra i modificatori (Id5467, b/198826874)
- Sono stati aggiunti puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
density: Density
elayoutDirection: LayoutDirection
aggiunti aLayoutInfo
. In questo modo i consumatori diLayoutInfo
possono interpretare correttamente le dimensioni e la posizione esposta inLayoutInfo
. (I002f1)- Aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Utilizza
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
. ConsultaMouseInjectionScope
per la documentazione dell'API disponibile. (Iaa4a8, b/190493367)
Correzioni di bug
- È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lento che non lento) rispetto allo scorrimento (I6cdb0)
TouchInjectionScope.swipeWithVelocity
migliorato. Ora accetta un intervallo più ampio di variabili di input e suggerirà modifiche all'input se non è possibile creare un gesto di scorrimento (I40fbe, b/182477143)
Versione 1.1.0-alpha04
15 settembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha04
. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
PointerEvent
ora dispone di unPointerEventType
per supportare gli eventi di passaggio del mouse. (I091fa)- Consenti agli elementi figlio di accettare l'input del puntatore al di fuori dei limiti di input del puntatore 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 per consentire agli sviluppatori di garantire che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214) - Ripeti l'implementazione dell'inspectable (I927bc, b/191017532)
- Nome del parametro dell'inspectable modificato in modo che corrisponda al testo composto (I3a482, b/191017532)
performTouchInput
eTouchInjectionScope
sono stati introdotti come sostituti diperformTouchInput
eTouchInjectionScope
, aprendo la strada ad altre modalità (come il mouse).TouchInjectionScope
utilizza gli stessi metodi diGestureScope
, con l'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 invii un evento down mentre i cursori sono stati spostati senza inviare un evento di spostamento (in altre parole,
updatePointerTo()
è stato utilizzato, ma nonmove()
, quindi viene chiamatodown()
), l'implementazione precedente avrebbe fatto 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 ne anticipa l'ora in questo scenario specifico. - Quando si invia un evento up mentre i cursori erano stati spostati senza inviare un evento di spostamento (come sopra), l'implementazione precedente avanzava l'ora dell'evento e inviava un evento di spostamento prima di inviare l'evento up. La nuova implementazione non fa nessuna delle due cose: le nuove posizioni dei puntatori si rifletteranno solo attraverso l'evento su.
Infine,
TouchInjectionScope
introduce un nuovo metodocurrentPosition(pointerId: Int)
per ottenere la posizione corrente del puntatore. (If1191, b/190493367)- Quando invii un evento down mentre i cursori sono stati spostati senza inviare un evento di spostamento (in altre parole,
Correzioni di bug
- Consente 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 per l'overscroll allungato. (Iccf3c, b/171682480)
Versione 1.1.0-alpha03
1° settembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha03
. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Compose
1.1.0-alpha03
è stata aggiornata per dipendere 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 in combinazioni più comuni di flag di clip e TileModes. La maggior parte dei casi d'uso prevede il consentire il rendering dei contenuti sfocati al di fuori dei limiti dei contenuti originali e la sfocatura delle aree al di fuori di questi limiti con il nero trasparente oppure il ritaglio dei contenuti ai limiti dei contenuti campionando il bordo più vicino per i kernel di sfocatura che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547) - Aggiunto il supporto per RenderEffect in Compose Desktop. Ha introdotto OffsetEffect e il modificatore di sfocatura come modo semplice per introdurre gli effetti visivi di sfocatura in una parte della gerarchia della composizione. (I0f6aa, b/166927547)
- Introduzione dell'API RenderEffect, che può essere configurata facoltativamente su un
Modifier.graphicsLayer
per modificare i contenuti del livello stesso. Può essere utilizzato per sfocare i contenuti di un elemento componibile e di elementi componibili secondari all'interno di una gerarchia di composizione. (I47c4d, b/166927547) - AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Sono state aggiunte le dimensioni minime del touch target a ViewConfiguration, da usare nella semantica e nell'input del puntatore per garantire l'accessibilità. (Ie861c).
- Aggiungi il supporto TileMode.Decal, utile per definire il comportamento dei bordi per gli effetti RenderEffect basati sulla sfocatura. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ehasScrollToKeyAction
sono ora API stabili (I142ae, b/178483889)- Aggiunto un metodo di test per ottenere i limiti troncati. (I6b28e)
Correzioni di bug
- È stato rimosso il metodo isBounded da BluredEdgeTreatment in favore di controllare esplicitamente se il parametro di forma è nullo. (I85d68)
Versione 1.1.0-alpha02
18 agosto 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha02
. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche alle API
- Ora PointerEvent supporta la lettura dello stato del pulsante del mouse e del tasto di modifica della tastiera. (I6310c, b/180075467)
- I gesti iniettati ora usano il tempo di MainTestClock come fonte attendibile per il tempo. L'ora attuale per gli eventi inseriti in
performGesture
verrà inizializzata in base all'ora attuale del MainTestClock. (Ifb364, b/192064452) - Costruttore
DpRect(DpOffset, DpSize)
aggiunto (I2cf16, b/194219828) - È stata aggiunta la classe DpSize (I7abb1, b/194219828)
Correzioni di bug
- È stata aggiornata l'analisi XML della grafica vettoriale per supportare ColorStateLists come proprietà della tinta dei colori principali su VectorDrawables. (I86915, b/195668138)
Versione 1.1.0-alpha01
4 agosto 2021
Viene rilasciato androidx.compose.ui:ui-*:1.1.0-alpha01
. 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 si trovano ora nel nuovo moduloandroidx.compose.animation:animation-graphics
. (I60873)- Aggiunto un modificatore sperimentale per gestire le richieste di trasferimento. (I65a97, b/178211874)
Introduzione dell'API BrushPainter per supportare il disegno di un pennello arbitrario all'interno di un pittore, come ColorPainter
Aggiornata l'API Brush in modo che abbia un parametro di dimensione intrinseca con query in BrushPainter (Ia2752, b/189466433)
Aggiornato il metodo DrawScope#drawImage che utilizza i retti di origine e di destinazione per consumare un parametro facoltativo FiltroQuality. Ciò è utile per la pixel art che intende essere pixelata durante lo scale up per la pixel art. Aggiornamento di BitmapPainter + Immagine componibile per utilizzare anche un parametro facoltativo FilterQuality (Ie4fb0, b/180311607)
È stato 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 le chiamate di implementazione di Modifier.paint
divano drawsContent.
In precedenza, Modifier.paint era previsto per un nodo foglia nella
catena di modificatori, ma in questo modo impedisce
di essere configurato in un container componibile (ad es. box)
o di aggiungere ulteriori decorazioni nella parte superiore, come
Modifier.paint().border()
. Se Modifier.paint chiama il metodo drawContent dopo aver disegnato i contenuti del pittore specificato, abbiamo una migliore coerenza del comportamento con il pattern del modificatore. (Ibb2a7, b/178201337, b/186213275) - Le finestre di dialogo ora seguono il comportamento di dimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per ignorare questo comportamento. (Iffaed, b/192682388) InfiniteAnimationPolicy
spostato in :compose:ui (I5eb09, b/160602714)- Lo scorrimento tramite azioni semantiche per elenchi lenti e componenti di scorrimento regolare è ora animato (Id9066, b/190742024)
Versione 1.0
Versione 1.0.5
3 novembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.5
. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo del monitoraggio delle istanze derivateStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.4
. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento in base a Kotlin
1.5.31
eseguito
Versione 1.0.3
29 settembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.3
. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento in base a Kotlin
1.5.30
eseguito
Versione 1.0.2
1° settembre 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.2
. La versione 1.0.2 contiene questi commit.
Aggiornamento eseguito per supportare la release Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.1
. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento eseguito in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0
. La versione 1.0.0 contiene questi commit.
Funzionalità principali di 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion nel file
build.gradle
, impostandolo su 24 o più. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-rc02
. La versione 1.0.0-rc02 contiene questi commit.
Correzioni di bug
- Le finestre di dialogo ora seguono il comportamento di dimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per ignorare questo comportamento. (Iffaed, b/192682388)
Versione 1.0.0-rc01
1 luglio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-rc01
. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Suddividi il modulo di strumenti UI in
ui-tooling
eui-tooling-preview
(Iefa28, b/190649014)
Modifiche alle API
FocusManager#moveFocusIn
eFocusManager#moveFocusOut
sperimentali deprecati (I227d7, b/170154986, b/186567354, b/168510304)- Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c).
useDefaultMaxWidth
inPopupProperties
è stato rinominatousePlatformDefaultWidth
. (I05710)- Ora le finestre di dialogo 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)
Cambiamenti del comportamento
- Compose
@Preview
ora fornisce unLocalActivityResultRegistryOwner
che ti consente di visualizzare in anteprima i componenti componibili che utilizzano API comerememberLauncherForActivityResult()
che dipendono dal proprietario esistente. (Ib13d1, b/185693006) - Compose
@Preview
ora fornisce unLocalOnBackPressedDispatcherOwner
che ti consente di visualizzare in anteprima i componenti componibili che utilizzano API comeBackHandler
che dipendono dal proprietario esistente. (Ia1c05, b/185693006)
Correzioni di bug
InfiniteAnimationPolicy
spostato inandroidx.compose.ui:ui
(I5eb09, b/160602714)- L'elemento AnimatedImageVector è stato temporaneamente rimosso per modificare la struttura del modulo. (I41906, b/160602714)
Versione 1.0.0-beta09
16 giugno 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta09
. La versione 1.0.0-beta09 contiene questi commit.
Modifiche alle API
- Modifica enum Role e LiveRegionMode in classi in linea con costruttore privato (Id1890)
- KeyboardCapitalization viene convertita in una classe in linea. (Id5a1c)
- Modifica HapticFeedbackType in una classe in linea. (I255ec)
- Modifier.pointerInteropFilter è @ExperimentalComposeUiApi. (Iede6c)
- TextAllinea, FontSynthesis e TextDirection sono ora classi in linea. (I212fe)
- TextOverflow è cambiato in una classe in linea. (I433af)
- FontStyle è ora una classe in linea. (I9e48b)
Correzioni di bug
- Le costanti chiave sono @ExperimentalComposeUiApi per il momento. Il consumo di codice può dichiarare le costanti private prima della stabilizzazione. (Ia5d48)
- Ora è possibile eseguire i test di Compose su Robolectric. Finora sono state identificate le seguenti limitazioni:
- Non esiste una bitmap nativa, pertanto
ImageBitmap()
genera una NullPointerException. - Non esiste nessun disegno, quindi
captureToImage()
attenderà indefinitamente il successivo passaggio di estrazione (ovvero si trova in un punto di stallo). - Poiché non è stato caricato alcun carattere, l'eventuale testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
ComposeTestRule.waitUntil {}
non esegue il thread principale durante l'attesa, il che lo rende di fatto uguale aComposeTestRule.mainClock.advanceTimeUntil {}
In futuro sono previste ulteriori limitazioni. (I284fa)
- Non esiste una bitmap nativa, pertanto
Regole del profilo aggiunte
In questa release vengono aggiunte regole di profilo ai seguenti moduli di scrittura (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.layout-base
- androidx.compose.material
- androidx.compose.materiale-eco
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- testo androidx.compose.ui.
- testo androidx.compose.ui.
- androidx.compose.ui.unit
- androidx.compose.ui.util,
Che cosa sono le regole del profilo?
Le regole del profilo per una libreria vengono specificate in un file di testo
baseline-prof.txt
situato 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 nella libreria. La sintassi per queste regole è un soprainsieme del formato del profilo ART leggibile che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole possono avere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
rappresenta uno o più caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato o meno come "A caldo", "Avvio" o "Post avvio".<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 parametri e i tipi restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono avere caratteri jolly (
**
,*
e?
) in modo da avere una singola regola che comprende più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.Un metodo con il flag
S
indica che si tratta di un metodo chiamato all'avvio e che deve essere compilato in anticipo per evitare i costi della compilazione e dell'interpretazione del metodo al momento dell'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 il costo del 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 elementi, queste regole vengono unite e le regole unite vengono utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app viene installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare le prestazioni dell'applicazione, 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
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta08
. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
- L'enum
NestedScrollSource
è sostituita da una classe in linea. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
è stato rinominatoFocusManager.clearFocus(force = true)
(Ia0c41)- Gli utilizzi delle enum sottoposti a refactoring in classi in linea per evitare problemi con esaustivi quando vengono aggiunti nuovi valori di enum. (I2b5eb)
- Rimuovi
@ExperimentalComposeUiApi
daPopupProperties
. (I01fa6) PointerType
è stato modificato da enum a classe in linea (If5058)- ContentDescription e le proprietà semantiche del testo non sono più singoli valori, ma elenchi. Ciò consente di unirli così come sono, anziché concatenazioni. Sono state inoltre fornite API di test migliori per l'utilizzo di queste modifiche (Ica6bf, b/184825850)
Modifier.focusModifier()
è deprecato e sostituito daModifier.focusTarget()
(I6c860)Modifier.onSizeChanged()
eModifier.onGloballyPositioned()
non sono più funzioni in linea (I727f6, b/186109675)- L'enum
KeyboardType
è sostituita da una classe in linea. (I73045, b/187055290) - Enum
FocusState
sostituita con un'interfacciaFocusState
(ICC1a, b/187055290) - L'enum ImeAction è sostituita da una classe in linea. (I18be5, b/187055290)
PlaceholderVerticalAlign
viene convertito in una classe in linea. (If6290)- TextUnitType è ora una classe in linea. (I4cba9)
- Le funzioni
AnnotatedString.withAnnotation
sono ora ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType è ora ExperimentalTextApi anziché ExperimentalComposeApi.
Correzioni di bug
- È stato corretto il bug introdotto nella versione beta07 in cui gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente il cambio di posizione, senza dover chiamare change.consumePositionChange nei callback onTrascina (I42fc4, b/185096350, b/187320697) - LayoutModifiers che forniscono le linee di allineamento sono stati fissi. È stato corretto un bug che impediva la nuova misurazione dell'elemento principale dopo il cambiamento delle linee di allineamento degli elementi secondari. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
è stato modificato per indicare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate indicate. (Ieb67d, b/177926591)
Versione 1.0.0-beta07
18 maggio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta07
. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'interfaccia
ViewRootForInspector
per l'utilizzo in inspector (Ib70df) SubcomposeLayoutState
ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di slot anziché eliminarli per poter riutilizzare l'area la prossima volta che ne avremo bisogno di una nuova (Ieb981)- L'enum KeyEventType è sostituito da una classe in linea. (Id670a, b/187055290)
- L'enum
FocusDirection
è sostituita da una classe in linea. (Ib6d03, b/187055290, b/184086802) - Introduce la possibilità di aumentare lo stato SubcomposeLayout che ti consente di precomporre i contenuti in slotId richiesto, il che consentirebbe il superamento della misura successiva poiché, una volta provato a eseguire la sottocomposizione con slotId specificato la prossima volta, non sarà necessaria alcuna composizione. (I42580, b/184940225)
- Punto di manipolazione di selezione clip aggiunto (Iff80d, b/183408447)
- Sono state rimosse le API non utilizzate relative al supporto Layout Inspector. (I2ac78).
Correzioni di bug
- LazyColumn/Row ora manterrà attivi (non eliminati) fino a un massimo di 2 elementi visibili in precedenza (non eliminati) anche quando l'utente scorre già la pagina verso l'esterno. In questo modo il componente può riutilizzare le sottocomposizioni attive quando dovremo comporre un nuovo elemento che migliora le prestazioni di scorrimento. (Ie5555).
TextGeomerticTransform
eTextDecoration
suAnnotatedString
verranno applicati come specificato. (I61900, b/184760917)
Versione 1.0.0-beta06
5 maggio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta06
. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
- Risolvi i conflitti 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 scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice eSemanticsProperties.IndexForKey
per ottenere l'indice di un elemento in un elenco con elementi chiave. Entrambe le azioni sono implementate da LazyList.- È stato aggiunto
SemanticsNodeInteraction.performScrollToIndex
che scorre un elenco fino all'indice specificato eSemanticsNodeInteraction.performScrollToKey
che scorre un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
- È stato aggiunto
- proprietarioViewId aggiunto a GraphiclayerInfo (I19f62)
- È stato aggiunto il sovraccarico di Font() per caricare i caratteri da asset, File e FileDescriptor (I5d382)
- È stata aggiunta l'API Accessibility
error
che consente di contrassegnare un nodo contenente input non valido (I12997, b/180584804, b/182142737) - Sono stati aggiunti
Font()
sovraccarichi per caricare 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 la funzione costruttore TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Versione 1.0.0-beta05
21 aprile 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta05
. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
FocusManager.moveFocus(In)
eFocusManager.moveFocus(Out)
sperimentali aggiunti (Ic5534, b/183746743)- È stata aggiunta l'API
performTextInputSelection
sperimentale (I2dcbb, b/178510628) - L'interfaccia
InputEventCallback
è deprecata. Non era possibile utilizzare l'interfaccia in nessuna API pubblica e non era utilizzato nel codice. (I34a02, b/184003208) - Funzione
TextLayoutResult/createTextLayoutResult
deprecata. Si tratta di una funzione pubblica inutilizzata che è stata aggiunta per i test. La funzione non esegue alcuna operazione utilizzabile per le API di testo Compose. La funzione è deprecata e verrà rimossa in seguito. (I80413)
Correzioni di bug
- Corrette le azioni di scorrimento per l'accessibilità
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Invece di scorrere fino alla fine del cursore, ora scorre di una schermata nella direzione data. (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
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta04
. La versione 1.0.0-beta04 contiene questi commit.
Modifiche alle API
- Rinomina
hideSoftwareKeyboard
eshowSoftwareKeyboard
suSoftwareKeyboardController
rispettivamente inhide()
eshow()
.- Fornire l'interfaccia completa di ComposeLocal per LocalSoftwareKeyboardController, consentendone l'impostazione (particolarmente utile per i test) (I579a6)
- È stata aggiunta l'API LiveRegion Accessibility. Se il nodo è contrassegnato come regione attiva, i servizi di accessibilità avviseranno automaticamente l'utente delle modifiche (Idcf6f, b/172590946)
- Viene introdotto TextOverflow.Visibile. (Ic8f89)
Correzioni di bug
- È stato risolto il problema a causa del quale gli elementi di
LazyColumn
/LazyRow
situati sui bordi venivano posizionati in modo errato dopo lo scorrimento rapido (Ie4d13, b/183877420) - Ora
AndroidViewBinding
rimuove correttamente i frammenti gonfiati 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 relativi al salvataggio e al ripristino dello stato dei frammenti. (I70eb0, b/179915946) - La funzionalità ViewBinding di Compose ora dipende dal
Frammento
1.3.2
e ora mostra in modo coerente frammenti gonfiati tramiteFragmentContainerView
dopo le modifiche alla configurazione. (I0743d, b/179915946)
Versione 1.0.0-beta03
24 marzo 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta03
. 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
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta02
. La versione 1.0.0-beta02 contiene questi commit.
Modifiche alle API
- È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I5951e, b/168778053) - È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController 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)
SemanticsMatchers
contrassegnato come @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Sono stati aggiunti i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correzioni di bug
- Applicare restrizioni sull'uso pubblico delle API sperimentali (I6aa29, b/174531520)
androidx.compose.ui:ui
non dipende più da AppCompat o Fragment. Se usi ComposeView nella tua applicazione e utilizzi Fragment e/o AppCompat, assicurati di usare AppCompat 1.3+ / Fragment 1.3+: queste versioni sono necessarie per impostare correttamente i proprietari del ciclo di vita e dello stato salvato richiesti per ComposeView. (I1d6fa, b/161814404)- Correzione del problema di
rememberSaveable { mutableStateOf(0) }
non funzionante quando veniva utilizzato all'interno di una destinazione di scrittura durante la navigazione. (I1312b, b/180042685, b/180701630) - È stata aggiunta la nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053) - È stata corretta l'eccezione NoSuchElementException in
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
Versione 1.0.0-beta01
24 febbraio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-beta01
. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima versione di Compose 1.0.0 Beta.
Modifiche alle API
- Il callback onStart è stato aggiunto a
detectDragGestures
(I67269, b/179995594) - I modificatori per la taglia intrinseca non sono più sperimentali. (I15744)
- MeasureBlocks è stato rinominato in MeasurePolicy e si è trasformato in un'interfaccia divertente. Le API 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é trasmettere
interactionState = remember { InteractionState() }
a componenti comeButton
eModifier.clickable()
, utilizzainteractionSource = remember { MutableInteractionSource() }
. - Invece di:
Interaction.Pressed in interactionState
, devi utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState(). - Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in ComposeLocals (I53520)
- Rimossi i metodi LayoutCoordinates deprecati. Usa la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- Typealias sostituiti dai tipi sottostanti:
ColorStop
è diventataPair<Float, Color>
SpanStyleRange
ora è "AnnotatedString.RangeParagraphStyleRange
è diventataAnnotatedString.Range<ParagraphStyle>
StringAnnotation
è diventataAnnotatedString.Range<String>
- (I8dd1a)
- È stata creata una nuova sessione TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
- Posizionabile ora mostra la dimensione indicata, che rappresenta la dimensione in base alla quale il layout secondario è stato effettivamente misurato. Queste dimensioni potrebbero non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
- Aggiungi il modificatore selectGroup che consente di contrassegnare la raccolta di schede o pulsanti di opzione ai fini dell'accessibilità (Ie5c29)
L'elemento
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
è ora obbligatorio anziché facoltativo.Questa modifica rimuove un potenziale errore di tipo per i tipi non nulli per i quali non è stato fornito alcun valore di fabbrica predefinito. In precedenza, forniva un riferimento nullo per un tipo non null.
Per i tipi con valori null, valuta la possibilità di fornire
{ null }
come fabbrica predefinita.Sconsigliamo di utilizzare locali con tipi che non includono valori null, a meno che non sia possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito sensibile, il lambda
defaultFactory
dovrebbe generare un'eccezione. Tuttavia, l'applicazione di un'eccezione indica che i consumatori della rete locale avranno una dipendenza implicita dal fatto che non sia applicata dal sistema dei tipi. (Ifbd2a).I metodi deprecati dai moduli UI sono stati rimossi (I646f6)
I modificatori di dimensione sono stati rinominati. Modifier.width/height/size è stato rinominato in requiredwidth/requiredHeight/requiredSize. Modifier.preferredwidth/preferredHeight/preferredSize è stata rinominata in larghezza/altezza/dimensione. (I5b414).
L'utente
Modifier.tapGestureFilter
è stato rimosso. Usa invece il criterioModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)è stato rimosso il consumo parziale dal sistema di input del puntatore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedscroll. (Ie9c9b).
L'orientamento è stato spostato nel pacchetto di base. VelocirtTracker è passato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
imageResource e vectorResource sono ora funzioni di estensione rispettivamente sui companion ImageBitmap e ImageVector.
load{Image,Vector,Font}Resource
funzioni sono state eliminate. (I89130)AnimationClockObservable e le sottoclassi sono state rimosse. L'animazione Float è stata rimossa. (Icde52, b/177457083)
I provider sono stati rinominati in ComposizioneLocalProvider
- Il costruttore della composizione non accetta più un parametro chiave ed è stato ritirato.
- CurrentCompositeKeyHash è stato trasformato in una proprietà componibile di primo livello anziché in una funzione componibile di primo livello.
- ComposizioneData e ComposizioneGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è stata creata come un'interfaccia invece di una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata creata come un'interfaccia invece di una classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
- Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
- I metodi isJoinedKey, joinKeyLeft e joinKeyRight sono stati rimossi. Non sono più necessari.
- Varie API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica delle classi di file Kotlin, ciò comprometterà la compatibilità binaria, ma non la compatibilità del codice sorgente, quindi non dovrebbe rappresentare un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
è stato rimosso da write:ui. Usa quello diandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
eLocalViewModelStoreOwner
sono stati rimossi da write:ui. Usa quelli diandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scorribile anziché la classe Scorribile (I4f5a5, b/174485541, b/175294473).
Il supporto di CustomUniforms da PointerInputModifier è stato rimosso (I02707, b/175294473)
SnapshotStateObserver non è più sperimentale (Id2e6a)
Sono state eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)
L'elemento longPressGeFilter e doubleClickGeFilter sono stati rimossi. Utilizza Modifier.pointerInput con le funzioni helper, ad esempio detectTapGes (I2fedf, b/175294473)
È stato rimosso il refactoring dell'API String.format in vari metodi toString per non sfruttare String.format internamente. (ID1290)
Asserzioni Dp rimosse (I798d2)
Rimosso androidx.compose.runtime:runtime-submit (I55feb)
Ora le azioni di testo controllano lo stato attivo automaticamente (I13777, b/179648629)
runBlockingWithManualClock
rimosso (I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalscroll()/Horizontalscroll() è rappresentata ora con Ints (I81298)
FlingConfig è stato rinominato in FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché dei Decadimenti predefiniti. (I02b86, b/175294473)
È stata aggiunta una funzione helper utile per impostare la stessa azione per tutti i callback ImeAction (I63447, b/179226323)
A breve il callback SoftwareKeyboardController sarà rimosso da tutti i campi di testo da sostituire con una nuova API. (Iae869, b/168778053)
FontSpan e FontWeigthStyleSpan non vengono più utilizzati e rimossi. (Ie5b56, b/177423444)
Sono state apportate le seguenti modifiche all'API Material:
- È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione della spaziatura interna predefinita.
- I parametri sono stati riordinati in BackdropScaffold in modo da rispettare le linee guida dell'API perché i parametri obbligatori sono prima di quelli facoltativi.
- Parametro
icon
spostato in BottomTrafficItem in modo che sia doposelected
eonClick
. - Parametro
alwaysShowLabels
rinominato in BottomTrafficItem inalwaysShowLabel
. - I parametri
bodyContent
in alcuni componenti sono stati rinominati solocontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo di parametri non è cambiato, ciò non causerà un errore nel tuo codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordine manualmente, altrimenti il tuo codice non funzionerà come in precedenza. - Parametro
secondaryVariant
aggiunto adarkColors()
. Questo colore è in genere uguale asecondary
nel tema scuro, ma aggiunge coerenza e ulteriore personalizzazione. - Sono stati rimossi ElevationDefaults e animaElevation() dalla piattaforma API pubblica perché non erano comunemente utilizzati / utili.
onValueChangeEnd
inSlider
è stato rinominato inonValueChangeFinished
e lo è stato reso null.- Parametro
text
rinominato inSnackbar
incontent
per coerenza. - È stato aggiunto il parametro
contentPadding
aDropdownMenuItem
per consentire la personalizzazione della spaziatura interna predefinita e ha resocontent
un'estensione suRowScope
. ModalDrawerLayout
rinominato inModalDrawer
.BottomDrawerLayout
rinominato inBottomDrawer
.- (I1cc66)
Correzioni di bug
- È stata aggiunta un'API per utilizzare le risorse AnimatedVectorDrawable in Compose. Utilizza
animatedVectorResource per caricare un file XML
<animated-vector>
come AnimatedImageVector e animarlo con pitterFor (I8ea91) - È stata aggiunta la nuova API locale per la composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha12
. 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 tasti di memorizzazione per indicare quando la coroutine di rilevamento dell'input del puntatore deve riavviarsi per nuove dipendenze. (I849cd)
- ComposeReference rinominato in ComposeContext (I53fcb)
- I limiti sono stati rinominati in DpRect (I4b32a)
- Test dell'aggiornamento: hasText() verificherà sia i testi di input sia quelli di etichette/suggerimenti/segnaposto nel campo di testo (Iab803)
- Gli elementi componibili viewModel() 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 utilizzarla. (I7a374).
- Consenti l'azione null in AccessibilityAction, modifica l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction daCharSequence a String (I0dc82)
- Al fine di trovare una migliore corrispondenza tra le convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato BitmapPainter per convertirlo in VectorPainter parallelo. (Iba381, b/174565889)
- API di test di sottostringhe migliorate con sottostringa ora come argomento (Icbe78)
- È stato aggiunto un elemento
Modifier.focusOrder()
che accetta un FocusRequester senza specificare un ordine dello stato attivo personalizzato una lambda. Ciò è utile quando è necessario specificare solo un riferimento, ma non un ordine di messa a fuoco personalizzato per un componibile (I4f52a, b/179180978). - Il valore ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi Destructuring e copy() sono stati rimossi da diverse classi in cui venivano usati raramente. (I26702, b/178659281)
- Popup spostato per essere specifico della piattaforma. AndroidPopupProperties è stato rinominato PopupProperties ed
isFocusable
è stato spostato in un parametrofocusable
inPopupProperties
(Ieeea5) - Finestra di dialogo spostata per essere specifica della piattaforma. Il nome di AndroidDialogProperties è stato cambiato in DialogProperties. (I4ef69, b/179138130)
- Fatto LayoutNode interno (I8a7b1, b/175103944)
- Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)
- Il metodo loadFontResource è deprecato. Utilizza fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Usa invece pitterResource. (I6b809)
- Per migliorare le prestazioni, la semantica di scorrimentoAxisRange ora accetta lambda che restituiscono valori in virgola mobile anziché valori in virgola mobile diretti. (If4a35, b/178657186)
- Aggiunta la semantica di EditableText per contrassegnare un testo di input modificabile nel campo di testo per l'accessibilità e i metodi di test corrispondenti per verificare la semantica (I8e07a)
- Aggiunto su utente Ownerlayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944) interno
- toIntPx() è stato rinominato 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 e per nascondere le classi di implementazione interne all'API pubblica. (Id9e32)
- Sono state aggiunte azioni di espansione e compressione della semantica. Sono state aggiunte le funzionalità di espansione e di espansione a metà in ModalBottomSheetState (Ib5064)
- Modifier.dragGeFilter è stato ritirato. Usa invece il criterio
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per il trascinamento su un asse (I0ba93, b/175294473) - Gli ambienti Ambient sono stati rinominati in modo che corrisponda al nuovo nome Ambient -> ComposeLocal. Un tempo gli ambienti Ambient si chiamavano AmbientFoo, ora i ComposeLocals si chiamano LocalFoo. (I2d55d).
- Il BaseTextField deprecato è ora rimosso. Utilizza invece BasicTextField. (I71368)
- La selezione è stata spostata nelle basi. (I7892b)
- Analogamente a come abbiamo rimosso il componibile
state { 0 }
e ora ne promuoviamo l'utilizzo comeremember { mutableStateOf(0) }
, rimuoveremo il componibilesavedInstanceState { 0 }
. Dovresti usarerememberSaveable { mutableStateOf(0) }
, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno del MutableState può essere archiviato nel bundle. Se in precedenza passavi un oggetto salvaschermo personalizzato, ora devi utilizzare un nuovo sovraccarico di memorizzareSaveable con il parametrostateSaver
. L'utilizzo sarà simile a questo:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Aggiunta la semantica della password per l'accessibilità (I231ce)
- È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
- Le utilità
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono state ritirate in quanto non hanno più alcun impatto positivo sulle prestazioni o valore (I0484d) snapshotFlow
ewithMutableSnapshot
non sono più sperimentali (I6a45f)- Ora è possibile chiudere i ricompositori. I ricompositori chiusi continueranno la ricomposizione fino al completamento delle coroutine secondarie della composizione. Recomposer.shutdown rinominato per annullare in contrasto con la chiusura. (Ib6d76).
- UiSavedStateRegistry è stato rinominato in SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato AmbientSaveableStateRegistry ed entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
- L'artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
- Molte API obsolete obsolete nel pacchetto UI vengono eliminate. (I2f2dc)
- L'artefatto composizione:runtime-submit è deprecato. MonotonicFrameClock ora si trova in composizione:runtime, mentre AndroidUiDispatcher in compare:ui. (Ib5c36).
- Outline.* Le classi non sono più classi di dati (I4879e, b/178001427)
view.captureToImage()
rimosso senza alcuna sostituzione. (I7fcd2)- Introduzione dell'API ColorMatrix utilizzata per modificare i valori RGB dei contenuti di origine (Ica1e8)
- Aggiungi il parametro layoutDirection al parametro createOutline della forma. In questo modo è possibile creare forme sensibili alla direzione del layout. (I57c20, b/152756983)
- Il comando onImeActionPerformed è deprecato. Utilizza invece Keyboard Actions (If0bbd, b/179071523)
- È stato introdotto un elemento di contesto della coroutine
InfiniteAnimationPolicy
che verrà applicato in animazioni infinite. Per impostazione predefinita, nessun criterio è installato, tranne quando si eseguono test conComposeTestRule
. (I50ec4, b/151940543) - canTrascina è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
- Il nome LayoutCoordinates.parentCoordinates è stato rinominato LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre il valore LayoutCoordintes del modificatore principale. In questo modo potrai utilizzare casi d'uso più completi per onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591).
- Le opzioni tapGeFilter, doubleTapGeFilter, longPress descrittiFilter e pressIndicaitonGeFilter sono state ritirate. Usa invece Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestis. (I6baf9, b/175294473)
- L'elemento unregisterProvider di SaveableStateRegistry è stato rimosso. Al suo posto, registerProvider() ora restituisce l'oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739).
- SavedInstanceState() è stato rinominato in saveSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
- CoreText e CoreTextField rimossi dall'API pubblica
- Rimosso overload di SelectionContainer deprecato
- (I99c19)
- I test in cui Compose viene utilizzato nelle gerarchie aggiunte/rimosse direttamente in WindowManager sono ora più stabili. (Ie81ed, b/175765614)
- È stato rimosso Recomposer.current(). [Abstract]ComposeView ora utilizza per impostazione predefinita i ricompositori con ambito a livello di finestra creati in modo lento e guidati dal ViewTreeLifecycleOwner per la finestra. I segni di graduazione dell'animazione Recomposition e withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host viene interrotto. (I38e11)
- Recomposer.runningRecomposers ora offre uno StateFlow globale di RecomposerInfo in 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 EditCommand accettano AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo multistile non è ancora stata implementata. (I4c3ea).
- Uptime e Durata sono stati rimossi. (Ib9bf4, b/177420019)
- ComposizioneData.asTree() e API correlate spostate in un modulo ui-tooling-data separato e contrassegnate come sperimentali (Ic95b8)
- I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra all'inizio e alla fine per supportare il mirroring automatico della forma nella direzione RTL. I metodi AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti nei casi in cui non si desidera eseguire il mirroring automatico. (I61040, b/152756983)
L'API target del plug-in del compilatore Compose è stata rielaborata in modo da utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che provoca un errore binario. (I3b922, b/169406779)
Rimuovi involontariamente la funzione StringBuilder.deleteAt (Id6ed9)
Correzioni di bug
- I componenti ComposeView visualizzati nelle gerarchie figli di un'altra composizione ora ospitano composizioni secondarie dei loro antenati (I92883)
- È stata aggiornata l'API imageFromResource di Composer per riutilizzare la cache drawable delle risorse durante il caricamento degli oggetti ImageBitmap. (If3627, b/178751994)
Versione 1.0.0-alpha11
28 gennaio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha11
. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in ground.layout. (I9420b, b/173387208)
- Key.DPadUp è deprecato. Utilizza invece Key.DirectionUp. (Iab335, b/177954892)
- Interfaccia del proprietario d'ora in poi. (If8e35).
- È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
- Modifica PopupPositionProvider in modo da utilizzare coordinate relative alla finestra, non coordinate globali. Rinomina parentGlobalBounds in anchorBounds e cambia windowGlobalBounds in windowSize: IntSize (I2994a)
- Le opzioni Duration e Uptime verranno sostituite con Long millisecondi e questo passaggio rimuove la dipendenza dell'input del puntatore su queste classi. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner è stato aggiunto in modo simile ad AmbientLifecycleOwner e AmbientViewModelStoreOwner (I9a3e8, b/176756365) già esistenti
- È stata aggiornata l'API Vector Graphics per supportare l'analisi della colorazione applicata alla radice della grafica vettoriale. (Id9d53, b/177210509)
- È stato aggiunto toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
- AmbientWindowManager è stato rinominato AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- metodi di coordinate globali ritirati e nuovi metodi di coordinate basati su finestre. (Iee284)
- È stato aggiunto Modifier.toolingGraphicslayer, che aggiunge un modificatore del livello grafico quando l'ispezione è attiva. (I315df)
- FocusRequester.createRefs è ora contrassegnato come sperimentale poiché potrebbe cambiare. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScorriState è stato rinominata ScorriAxisRange. HorizontalAccessibilityscrollState è stato rinominato HorizontalscrollAxisRange.verticalAccessibilityscrollState è rinominata verticalscrollAxisRange. (ID3148)
- Sono stati rimossi PointerInputData e sono stati modificati PointerInputChange per fornire tutti i campi di PointerInputData. Resi interni PointerInputEvent e PointerInputEventData perché non sono utilizzati in alcuna API pubblica. (Ifff97, b/175142755)
- L'aggiornamento GraphicslayerScope implementa la densità per supportare le conversioni di dp in pixel non elaborati. (Ied528, b/176819695)
- L'API Matrix è stata aggiornata per seguire l'ordine principale delle righe e fornire costanti di indice per assistere le conversioni tra le diverse rappresentazioni a matrice in modo da abbinare internamente la logica di conversione del framework tra SkMatrix e Matrix4. (I432e6).
- Rimossi metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- Sposta String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
- TransformedText.transformedText rinominato in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
data class
rimosso dai seguenti corsi:- Contenuti di testo in linea
- LocaleList (I605c7)
- Le seguenti classi non sono più classi di dati:
- Stringa annotata
- Stile paragrafo
- Stile intervallo
- Stile testo
- Peso carattere
- Decorazione testo
- Trasformazione Geometrica
- Indice di testo
- RisultatoLayoutTesto
- TextLayoutInput (Iaff99)
- VisualTransformation è stato modificato in un'interfaccia funzionale (I3bba4)
- È stato aggiunto un tipo di parametro di riferimento alla funzione (I5e1bd)
- Aggiungi limiti trasformati a InspectorNode (Ice42f)
Correzioni di bug
- onCommit, onDispose e onActive sono stati deprecati in favore delle API SideEffect e DisposableEffect (If760e)
Modifiche alle funzioni di fabbrica per Font/Famiglia di caratteri/Caratteri tipografici
- Sono state aggiunte funzioni di fabbrica che iniziano con la lettera maiuscola
- Funzioni di fabbrica precedenti deprecate con le prime lettere minuscole
- Le nuove funzioni di fabbrica restituiscono FontFamily anziché sottoclassi
- Ha nascosto i costruttori delle sottoclassi, in modo che possano essere create solo tramite funzioni di fabbrica.
- Font.asFontFamily è stato rinominato Font.toFontFamily (I42aa7)
È stata introdotta la funzione
ComposeContentTestRule
, che estendeComposeTestRule
e definiscesetContent
, che è stata rimossa daComposeTestRule
. È stato aggiunto un metodo di fabbricacreateEmptyComposeRule()
che restituisce unComposeTestRule
e non avvia un'attività per te. Da utilizzare quando vuoi avviare la tua Attività durante il test, ad es. utilizzandoActivityScenario.launch
(I9d782, b/174472899)animatoAsState ora è animatoFooAsState, dove Foo è il tipo di variabile da animare, ad esempio Float, Dp, Offset e così via (Ie7e25).
Il parametro della descrizione dei contenuti è stato aggiunto a Immagine e Icona. Viene utilizzato per fornire una descrizione dei servizi di accessibilità (I2ac4c)
Rimuovi displaySize perché dovrebbe essere evitato. In genere è meglio utilizzare una dimensione onRoot() o almeno una finestra. (I62db4)
OnSizeChanged segnalava le dimensioni dei contenuti del layout. Ora riporta la dimensione nella sua posizione all'interno della catena di modificatori. (I36b78, b/177562900)
L'API emit() e tutti gli sovraccarichi sono stati deprecati e rinominati ComposeNode. Le API sono identiche, solo un nome diverso per seguire le convenzioni di denominazione di Compose (I4137b)
TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo multistile non è ancora stata implementata.
initial
rimosso dai parametri del costruttore EditingBuffer. (I326d5)
invalidate e composizioneReference() sono ora deprecate in favore rispettivamente di currentRecomposeScope e ricomponinciavoce. (I583a8)
AnnotatedString è stata modificata in modo da estendersi da kotlin.CharSequence. Di conseguenza, length e subSequence sono ora funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429)
Ricorda Ricorda che ComposizioneLifecycleObserver sostituisce e ComposeLifecycleObserver è ora deprecato.
RememberObserver
sostituisceCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere effettuato meccanicamente per gli oggetti che vengono memorizzati solo una volta, che è, e continua a essere, la prassi consigliata. Tuttavia, se un riferimento è stato ricordato più di una volta in una composizione,onRemembered
viene chiamato per ogni riferimento in cuionEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, ad esempioWithConstraints
eScaffold
, rendendo inaffidabile la singola garanzia di chiamataonEnter
ed è stato rimosso perRememberObserver
.RememberObserver
aggiungeonAbandoned
che viene chiamato se l'istanzaRememberObserver
viene restituita dal callback passato aremember
ma non è stata memorizzata nello stato di composizione e, pertanto, non verrà mai chiamatoonRemembered
. Questo può verificarsi se un'eccezione termina la composizione prima del completamento o se la composizione viene eliminata perché lo stato stava producendo una composizione per cui non è più attuale o non è più necessaria. Se l'istanza diRememberObserver
che segue il consiglio di riferimento singolo sopra riportato sta monitorando una risorsa esterna, siaonForgotten
cheonAbandoned
indicano che la risorsa non è più necessaria. Se l'oggetto sta monitorando il lavoro avviato o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato seonRemembered
viene chiamato. (I02c36)Operazioni aritmetiche obsolete tra 2 o più unità di testo. Le funzioni TextUnit.Sp e TextUnit.Em deprecate sono preferite rispetto a quelle di estensione, come Int.sp e Int.em. (I48369)
Le risorse nelle librerie senza risorse pubbliche dichiarate esplicitamente (ad es. tramite public.xml) sono ora private per impostazione predefinita. (Ia1dcc, b/170882230)
L'elemento Scorribile/Riga sono stati deprecati. L'utilizzo di GrowableColumn è meno efficiente rispetto a LazyColumn quando è necessario scorrere contenuti di grandi dimensioni perché con LazyColumn è possibile comporre/misurare/disegnare solo elementi visibili. Per evitare che gli utenti adottassero una modalità inefficiente, abbiamo deciso di ritirare la funzionalità ScorriableColumn e ScorribileRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non avere bisogno del 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 overload delle estensioni per gli array:items(items: Array)
eitemsIndexed(Array)
(I803fc, b/175562574)Utilizza ImeAction.None anziché ImeAction.NoAction
- Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
Utilizzare TestCoroutineDispatcher per i test (I532b6)
TextInputService.onStateUpdated rinominato in updateState (Id4853)
La transizione basata su TransactionDefinition è stata ritirata (I0ac57)
TextUnitType.Inherit è rimosso. Usa invece TextUnitType.Unspecified. (I9ff64)
Versione 1.0.0-alpha10
13 gennaio 2021
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha10
. La versione 1.0.0-alpha10 contiene questi commit.
Cambiamento radicale
La ristrutturazione dell'API di compilazione interna consente di raggruppare le modifiche in batch ai nodi generati come risultato della composizione nella fase di composizione "Applica modifiche", al termine di tutte le funzioni di
@Composable
.Si tratta di una modifica che determina un'interruzione del comportamento che potrebbe influire sul codice dell'applicazione, poiché i nodi non sono più disponibili dalle API interne e sperimentali finché le modifiche non sono state applicate. In genere, è possibile risolvere il problema circondando il codice con queste dipendenze in un componibile
SideEffect
per rinviare 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 del focus personalizzato (I90cf5, b/175899543, b/170155556, b/170155429)
- Rimossa l'uso di focusObserver deprecato invece onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
- Modifiche all'API EditOperations
- ModificaOperation rinominata in EditCommand
- Aggiunto il suffisso del comando per le implementazioni concrete EditOperation
- Gli oggetti EditCommand non sono più classi di dati
- Funzione EditOperation.process rinominata in applyTo
- InputEventListener rinominato in InputEventCallback
- (I0a366)
- PxSquared, PxCubed, PxInverse non utilizzati sono stati rimossi. Dimensione.center() modificata in una proprietà. (I973f7)
- Ora il modulo ui-test sarà in grado di configurare la creazione di ricompositori per le UI sottoposte a test (Ibebd8)
- ha modificato la velocità per avere componenti e operazioni matematiche. (Ib0447)
- Il valore
@ExperimentalTesting
è stato rinominato in@ExperimentalTestApi
per essere coerente con annotazioni API sperimentali simili (Ia4502, b/171464963) - Color.useOrElse() è stato rinominato in Color.takeOrElse() (Ifdcf5)
- Rimosse le classi DpInverse, DpSquared e DpCubed inutilizzate. (I4d62b)
- Constraints#customerBy è stato rinominato isSatisfiedBy. (I9cf5c)
- Aggiungi un callback per inviare una notifica al proprietario quando i limiti di layoutnode cambiano. (I72fd1)
- Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi in linea con una costante Non specificata. (I93f7b, b/174310811)
Espandi le API [Abstract]ComposeView per consentire il riciclo delle viste basate su Compose, eliminando la composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e il rilevamento di ricompositori con ambito a livello di finestra e ComposeReferences per creare composizioni secondarie.
Aggiungi ViewComposeStrategy per configurare la strategia di smaltimento della composizione di [Abstract]ComposeViews; il comportamento predefinito prevede l'eliminazione della strategia di rimozione dalla finestra. (I860ab)
Rimozione dell'API pubblica Any.identityHashCode() (I025d7)
È stata rimossa l'API toStringAsFixed in favore dell'utilizzo diretto di String.format. (Iaba6b)
Aggiungi il pulsante di attivazione/disattivazione alle stringhe di base.kt (I4a5b7, b/172366489)
Spostato nativeClass in un modulo UI e rendendolo interno. Sono stati aggiornati gli utilizzi di nativeClass in equazioni in cui viene utilizzato "is MyClass". (I4f734)
Modifier.focus() e Modifier.focusRequester() sono deprecati. Usa invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
Introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti Selectable a SelectionManager. (I6ff30, b/173215242)
Introduzione della 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 rinominata in OffsetMapping
- Il nome OffsetMapping.identityOffsetMap è stato rinominato OffsetMapping.Identity
- PasswordTransformation non è più classe di dati
- OffsetMapping spostato nel proprio file
- (I0bdf3).
Il nome della posizione è stato cambiato in DpOffset e è stato rimosso il metodo getDistance() (Ib2dfd)
Cambiato il valore Dp.isFinite() in val Dp.isFinite (I50e00)
Correzioni di bug
- Il Recomposer ora espone un flusso dello stato attuale, consentendo di monitorarne l'attività e l'attività degli effetti associati. (Ifb2b9).
- Ora è possibile accedere all'evento chiave nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397).
animate()
è ora sostituito conanimateAsState()
, che restituisceState<T>
anzichéT
. Ciò consente prestazioni migliori, poiché l'ambito di invalidazione può essere ristretto al punto in cui viene letto il valore State. (Ib179e)- Aggiungi l'API Ruolo Semantics e aggiungi Ruolo come parametro a SemanticsModifier cliccabile, selezionabile e attivabile. È stato modificato Modifier.progressSemantics in modo che sia utilizzabile anche dal dispositivo di scorrimento. (I216cd)
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le animazioni.- Nuovo DecayAnimationSpec per supportare l'animazione del decadimento multidimensionale
- (I820f2, b/168014930)
Versione 1.0.0-alpha09
16 dicembre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha09
. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- KeyEvent.Alt obsoleto è ora rimosso. Utilizza invece KeyEvent.isAltPressed. (IDd695)
- Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati e utilizzano invece Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Modifier.focusObserver è deprecato. Usa invece Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Per sospendere le API di input del puntatore, abbiamo rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
- L'API Compilazione automatica è ora sperimentale e richiede l'attivazione (I0a1ec)
- Aggiunta di dichiarazioni di destrutturazione per creare istanze FocuSRequester (I35d84, b/174817008)
- L'accessibilitàLabel è stata rinominata in contentDescription. accessibilityValue è stato rinominato stateDescription. (I250f2)
- Gli eventi personalizzati sono stati rimossi dalla sospensione dell'API di input del puntatore (Ia54d5, b/175142755)
- Introdotto diverse nuove funzioni in SelectionRegistrar e ha anche cambiato il nome di onPositionChange in notificationPositionChange. (Ifbaf7)
- Altri membri di LayoutNode contrassegnati come interni (I443c6)
- LayoutInfo è stato introdotto per essere utilizzato dagli strumenti e dai test (I9b190)
- AndroidProprietario reso interno (Ibcad0, b/170296980)
- Rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
- Sistema di scorrimento nidificato aggiunto. Fai riferimento a Modifier.nestedscroll per ulteriori dettagli (I36e15, b/162408885)
- subcomposeInto(LayoutNode) è stato impostato come interno (Id724a)
L'interfaccia
Applier
è stata modificata per semplificare la costruzione 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()
.L'applicatore inserisce i nodi nell'albero che sta modificando utilizzando
insertTopDown()
oinsertBottomUp()
, a seconda di quale delle due opzioni ha le prestazioni migliori.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti per costruire dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserimenti per implementare bottom-up, che doveva essere copiato in ogni applicazione che aveva bisogno di costruzione dal basso verso l'alto per le prestazioni. Con questa modifica,Applier
sostituisceinsertBottomUp()
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à IgnoraOnBackPress e IgnoraOnClickOutside ad AndroidDialogProperties. Consentono di configurare il momento in cui verrà richiamato il lambda onClearRequest della finestra di dialogo. (If5e17).
È stata aggiunta l'API pitterResource per gestire il caricamento opaco di oggetti Painter da formati di asset rasterizzati (come PNG) o VectorDrawables. I consumatori non devono più determinare in anticipo il tipo di asset e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei componibili di immagini o nei modificatori di pittore. (I2c703, b/173818471)
È stato aggiunto Modifier.clearAndSetSemantics per cancellare la semantica dei discendenti e impostarne di nuove. (I277ca)
Spostamento di ContentDrawScope nel modulo ui-graphics in DrawScope. (Iee043, b/173832789)
È stata introdotta l'API grafica PathEffect per fornire pattern diversi alle forme tracciate. Utilizzo deprecato di NativePathEffect a favore dell'implementazione prevista/effettiva di PathEffect. (I5e976, b/171072166)
Sono state aggiunte interfacce IdlingResource a Compose, come variante supportata da Compose delle risorse inattive di Espresso. È possibile registrarli e annullarne la registrazione tramite ComposeTestRule (I433f3).
Rimossa la registrazione globale (annullamento) di ComposeIdlingResource e la registrazione globale (annullamento) degli orologi in ComposeIdlingResource (I32660)
Correzioni di bug
- Le funzioni Lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
SlotTable, SlotReader e SlotWriter rimossi dall'API pubblica. In precedenza erano contrassegnate come InternalComposeAPI. Ora sono interni al modulo di scrittura.
ComposizioneData e ComposeGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni di composizione. Sono pubbliche ma non sono destinate a essere utilizzate al di fuori dell'API ui-tooling poiché forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c).
È stato eseguito il refactoring di ShaderBrush per creare in modo lento un'istanza Shader 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 in favore di metodi fabbriche su un oggetto Gradient. (I511fc, b/173066799)
Ritirare LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Usa LazyColumn e LazyRow (I5b48c)
BuildCompat.isAtLeastR obsoleto (Idb37e)
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una stringa AnnotatedString. Funzione di builder annotadString deprecata. (Idfe0b)
Sono stati rimossi i metodi di estensione su Float e Doppio per convertire i valori in radianti. È stata spostata in una funzione privata all'interno dell'implementazione PathParser, che era l'unica posizione in cui è stata utilizzata (I25f52)
Versione 1.0.0-alpha08
2 dicembre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha08
. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiungi l'azione semantica Ignora (I2b706)
- Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDetroit.kt per includere i metodi typealiases/helper per facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
- Modifier.drawlayer rinominata in Modifier.graphicslayer Ha aggiornato anche le classi correlate in Graphicslayer in base al feedback dell'API. (I0bd29, b/173834241)
- Sono stati aggiunti nuovi metodi placeable.placeWithlivello() e placeable.placerelativeWithlayer() che consentono a layout e modificatori di layout personalizzati di posizionare un elemento secondario con l'introduzione di un livello grafico per il disegno. Avendo questo fatto possiamo prima ottimizzare i ridisegnamenti, in modo che quando dobbiamo spostare un bambino, non dobbiamo ridisegnare i contenuti, in secondo luogo possiamo applicare trasformazioni di disegno per un bambino (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)- Aggiunta le API Modifier.scale/rotate
per comodità di drawlayer.
Modifier.drawOpacity
rinominato inModifier.alpha
Modifier.drawShadow
rinominato inModifier.shadow
(I264ca, b/173208140)
- I campi di posizione e di uptime di PointerInputData non possono essere impostati come valori null. (ID468a)
- MaterialTheme ora imposta i colori corretti per i punti di manipolazione di selezione e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
- È stato aggiunto WindowManager.isWindowFocused per verificare se la finestra host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
- È stata aggiornata l'API TransformOrigin per avere una sintassi destrutturante che restituisca
pivotFractionX
epivotFractionY
comecomponent1
ecomponent2
(If43c4, b/173586560) - È stato aggiunto il controllo del lint per la denominazione e la posizione dei parametri lambda componibili al fine di verificare la coerenza con le linee guida di Compose.
Inoltre, è stata eseguita la migrazione di alcune API utilizzando
children
come nome per il lambda finale incontent
, in base al controllo del lint e alle indicazioni. (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 in un nuovo GraphicslayerScope in cui definisci i parametri del livello in modo da saltare la ricomposizione e il relayout quando si verifica il cambiamento di stato. DrawlayerModifier è ora interno in preparazione alla migrazione della sua logica nel metodo placeable.placeWithlayer() di LayoutModifier (I15e9f, b/173030831) - Ambienti deprecati denominati con
Ambient
come suffisso e sostituiti con nuove proprietà con prefisso Ambient, conformi alle altre linee guida dell'API Ambient e Compose. (I33440) androidx.compose.ui.text.Typeface
spostato inandroidx.compose.ui.text.font.Typeface
(Ic2b81)- L'argomento semanticoMergeAllDescendants è stato rinominato mergeDescendants. (Ib6250)
- Nuova API di input del rilevatore dei gesti di trascinamento che include 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. È stato aggiunto typealias di VectorAssetBuilder per il collegamento a ImageVector.Builder per compat. (Icfdc8)
- ImageAsset e i metodi correlati sono stati rinominati ImageBitmap. (Ia2d99)
- Aggiungi il parametro zIndex per il parametro place() di LocationScope in modo che Modifier.zIndex() ora funzioni come LayoutModifier e qualsiasi layout personalizzato possa impostare zIndexes per i relativi elementi secondari direttamente nel blocco dei posizionamenti (I711f7, b/171493718)
- Proprietà semantiche di base spostate nella UI (I6f05c)
- Ritira luogo(Offset) e placeParent(Offset). Usa invece gli overload con offset int (I4c5e7)
- Sono state rimosse le API deprecate in precedenza: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso; utilizza Modifier.onDrawDie Modifier.plus è stato rimosso; usa Modifier.then. L'opzione Color.Unset è stata rimossa, utilizza Color.Unspecified. La classe PxBounds è stata rimossa. Usa invece Rect. (Ie9d02, b/172562222)
- L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
- I rilevatori di gesti di tocco, doppio tocco, pressione prolungata e pressione sono stati aggiunti utilizzando il nuovo input del puntatore di sospensione. Sono state aggiunte anche alcune utilità, per aiutare gli sviluppatori a 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 che include aiutanti per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
- Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1).
- Il controllo del tempo nei test (TestAnimationClock e relativi utilizzi) è ora in fase sperimentale (I6ef86, b/171378521)
Aggiungi API di scorrimento basate su coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothscrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di tornare. (Ie5642).
È necessario aggiungere Modifier.focusable agli elementi di base. Utilizzalo per aggiungere il comportamento attivabile a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)
Fornisci implementazioni predefinite di metodi e proprietà in AnimationClockTestRule che possono essere delegati al rispettivo
clock
(I7ea3d, b/173399709)AndroidComposeTestRule ora può accettare Avvio app di attività personalizzate (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibileEnd è deprecato. In sostituzione, TextLayoutResult.getLineEnd ora ha un nuovo parametro visibleEnd. (I73282)
API TextFieldValue aggiornata
- impostato TextFieldValue.composition in sola lettura
- viene generata un'eccezione rimossa per l'intervallo di selezione non valido (I4a675, b/172239032)
Supporta TtsAnnotation per il motore di sintesi vocale. (I54cc6)
Nuove API per l'esecuzione di animazioni nelle coroutine (Ied662)
Correzioni di bug
- Il parametro di allineamento di Box è stato rinominato in contentAllineament. (I2c957).
- I modificatori offsetPx sono stati rinominati in offset. Prende i parametri lambda anziché i parametri State. (Ic3021, b/173594846)
- È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- È stato aggiunto il controllo dei lint per i parametri di modifica nelle funzioni componibili. Questo controllo del lint verifica la coerenza con le linee guida di Compose per nome, tipo restituito, valore predefinito e ordine del parametro. (If493b)
- Aggiunta temporaneamente opzione per consentire al TestAnimationClock di essere gestito dal MonotonicFrameClock (I1403b, b/173402197)
- Aggiunto il wrapper Android Typeface. Puoi caricare un carattere
Android tramite la funzione
typeface
, ad esempiotypeface(Typeface.DEFAULT)
. Inoltre,typefaceFromFontFamily()
è stato rinominato intypeface()
(I52ab7) - È stato aggiunto il controllo lint per verificare che le funzioni di fabbrica del Modificatore siano definite come estensioni di Modificatore, in modo da poter essere collegate tra loro agevolmente. (I07981)
- Rimuovi il vecchio modulo di test dell'ui e i relativi stub (I3a7cb)
- Il ricompositore non accetta più EmbeddingContext; le dipendenze di pianificazione richieste sono ottenute da resultCoroutineContext. FrameManager è deprecato; le integrazioni delle piattaforme devono inizializzare la propria gestione globale degli snapshot. (I02369)
- Passa le informazioni sullo stile al nodo di accessibilità. (If5e8d).
- TextUnit.Inherit è rinominata TextUnit.Unspecified per coerenza con altre unità. (Ifce19)
Compose UI versione 1.0.0-alpha07
11 novembre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha07
. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata introdotta la classe in linea ScaleFactor per rappresentare i fattori di scalabilità per gli assi orizzontale e verticale indipendenti l'uno dall'altro al fine di supportare casi d'uso di scalabilità non uniformi.
- È stato aggiunto il metodo computeScaleFactor a ContentScale.
- È stato aggiunto ContentScale.FillBounds per eseguire una scalabilità non uniforme e ampliare i limiti src per occupare completamente la destinazione.
- Sono stati aggiunti metodi degli operatori per calcolare i parametri ScaleFactor con i parametri Dimensioni.
- (Ic96a6, b/172291582)
- Sono state aggiunte le fabbriche BiasAllineament e BiasAbsoluteAllineament per la creazione di allineamenti. (Iac836, b/169406772)
- Consenti a uno sviluppatore di eliminare forzatamente lo stato attivo. (I90372)
- È stato risolto un bug che impediva il calcolo dell'elevazione per le viste in Compose. (If7782)
- È stata creata l'API onDrawdie in ContentDrawScope per farla corrispondere alla convenzione di denominazione con Modifier.drawDie. (I4fc3a, b/171955269)
- Aggiungi il supporto per la distanza della fotocamera per integrare le trasformazioni 3D rotationX/rotationY sulle API dei livelli. (I40213, b/171492100)
- SelectContainer è stato aggiunto senza il callback (Ibfadb)
- L'annotazione ExperimentalSubcomposeLayoutApi è 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 drawShadow() perché era confuso. (I82c62, b/171624638)
- MeasureResult è stato spostato fuori 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)
- FocusState2 obsoleto rimosso (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 nullo ed evitare box non necessari. (Ib0044)
- È stato aggiunto TestMonotonicFrameClock per testare il codice che si basa sul MonotonicFrameClock di Compose per attendere gli eventi del frame di composizione utilizzando runBlockTest di kotlinx-coroutines-test (I4402f)
- Rimozione di GestiScope.localToGlobal (I15299, b/171462785)
- È stato aggiunto lo strumento di ricerca
onAllNodesWithSubstring
(I81dd7, b/171462889) - Modulo androidx.ui.test deprecato. 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 deprecato e sostituito con material.Text. Per un'API di testo di base non definita che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
- Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
- Rinomina KeyboardOptions come ImeOptions (I82f36)
- KeyboardType e ImeAction spostate in KeyboardOptions (I910ce)
- ForniDefault è stato aggiunto come alternativa per fornire i valori Ambient e può essere utilizzato per specificare i valori Ambient che verranno impostati solo quando non è già stato fornito un valore Ambient. (Id6635, b/171024925)
- Il campo BaseTextField è stato deprecato. Utilizza invece BasicTextField. (I896eb)
- Introduci il modulo ui-test-junit4 (Ib91f8)
relativePaddingFrom
è stato rinominato inpaddingFrom
. È stato aggiunto il modificatorepaddingFromBaseline
per specificare le distanze dai limiti di layout alle basi del testo. (I0440a, b/170633813)- LaunchedTask è stato rinominato in LaunchedEffect per essere coerente con le API SideEffect e DisposableEffect. LanciatoEffetto senza parametri soggetto non è consentito per incoraggiare le best practice. (Ifd3d4).
- Sono state introdotte 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 sono applicati piùModifier.zIndex()
. In precedenza, vinceva la prima gara. (Ic514c, b/170623936) - Modifiche all'implementazione interna di SlotTable che non devono 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).
Contributo esterno
- Pubblicazione disattivata dell'artefatto interno androidx.compose.ui:ui-text-android (Ib93fa)
Versione 1.0.0-alpha06
28 ottobre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha06
. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Il Recomposer ora è un elemento ComposeReference e un elemento principale della composizione valido. Il ricompositore esplicito ora è obbligatorio in meno posizioni. (I4036f)
- Ritira VectorPainter in favore di ricordoVectorPainter per indicare meglio che l'API componibile internamente si serve di "ricordare" di rendere persistenti i dati tra le composizioni. (Ifda43).
- È stata aggiornata l'API Modifier.drawWithCache per esporre ContentDrawScope come ambito ricevitore anziché DrawScope per fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Ciò è utile per i casi d'uso di combinazione/colorazione in cui i pixel di 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 del punto di manipolazione Rtl. (I6e1e0).
- Refactoring di DrawScope e ContentDrawScope con interfacce anziché classi astratte
- È stata creata un'implementazione di CanvasDrawScope di DrawScope
- È stato eseguito il refactoring delle implementazioni di DrawScope per utilizzare CanvasScope
- È stato creato DrawContext per aggregare le dipendenze per DrawScope
- Metodi deprecati rimossi da DrawScope (I56f5e)
- Modifica che interrompe la modifica: è stato rimosso il valore restituito da
PointerInputFilter.onPointerEvent(...)
in quanto l'unico valore che dovrebbe poter essere modificato negli eventi del puntatore sono i dati di consumo. Invece di restituire i dati daPointerInputFilter.onPointerEvent(...)
, ora puoi semplicemente modificare i dati di consumo degli eventi PointerEvents trasmessi. (I6acd0) - MeasureScope e IntrinsicMeasurementScope sono state create interfacce. (I1a087, b/170461665)
- La funzione di unione perAllineaLine è stata nascosta. (I9da1a, b/170612900, b/170611568)
- Aggiungi la possibilità di specificare le informazioni del controllo nel modificatore composto (Idee08, b/163494569)
- Aggiunta l'opzione SelectAll al menu di selezione (Ief02b)
- Aggiornamento di DrawTransform.rotate in modo da utilizzare un parametro pivot predefinito del centro in modo che corrisponda alla documentazione.
- DrawScope.rotateRad aggiornato per consumare un offset per il punto pivot in modo che corrisponda ad altri metodi di trasformazione.
- Sovraccarico DrawScope.rotateRad deprecato che consumava float per le coordinate x e y del pivot.
- (Iffcbb, b/170434992)
Correzioni di bug
- Il controllo lint delle API per MissingGetterMatchingBuilder è abilitato per Androidx (I4bbea, b/138602561)
- Aggiungi test. (I6b8ae)
- Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per abilitare il cursore lampeggiante da ComposeTestRule. (If0de3).
- Aggiunta l'opzione IMEI per le lettere maiuscole (I8ac38)
- Aggiunta l'opzione della 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. La documentazione è stata aggiornata per indicare che i raggi d'angolo negativi sono bloccati su zero. (I130c7, b/168762961)
- Interoperabilità Android migliorata grazie alla continuazione dell'invio di eventi MotionEvents alle viste Android secondarie che restituiscono false per onTouchEvent per tutte le azioni tranne
ACTION_DOWN
(I94c5a, b/170320973) - Box è stato trasformato in una funzione in linea. (Ibce0c, b/155056091)
Contributo esterno
- Supporta impostazioni internazionali diverse per
AnnotatedString.capitalize
eAnnotatedString.decapitalize
(I4aa7f)
Versione 1.0.0-alpha05
14 ottobre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha05
. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- Aggiungi un DSL per specificare le informazioni del controllo (Ic9a22)
- Sposta Pressione prolungata nel testo. (Iff2bc).
- Modificatore di input in sospensione sperimentale Modifier.pointerInput (Ia77d2)
- Sono state aggiunte le azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
- Ora i popup e le finestre di dialogo ereditano FLAG_SECURE dalla finestra principale. È stata aggiunta anche l'opzione per configurarla esplicitamente (I64966, b/143778148, b/143778149)
Ora i dati di consumo sono modificabili. Inoltre, le chiamate alle funzioni di estensione che ora fruiscono 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 mutabili i dati PointerEvent in modo che altri dati dei cursori non possano essere modificati dal codice utente. Il secondo passaggio prevede la rimozione del tipo restituito
List<PointerInputChange>
daPointerInputFilter.onPointerEvent(...)
. (ID067e)Disattiva la selezione nel testo e una demo. (Ie7e97).
Made onGloballyPositioned di una funzione in linea (I15830)
Il nuovo nome di OnPositionedModifier è OnGloballyPositionedModifier e onPositioned() di onGloballyPositioned(). (I587e8, b/169083903)
La proprietà hasPendingmeasureOrLayout è stata aggiunta al proprietario, per indicare se ha lavori di layout in sospeso. (I3d9f8, b/169038599)
È stata aggiunta un'API per cancellare lo stato attivo in modo programmatico (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
rimosso. Al suo posto dovrebbe essere utilizzata l'appPointerInputFilter.onPointerEvent(...)
. (I6f04a)Modifiche alle dimensioni
- Dimensioni.getFlipped rimosse
- Taglia.rem rimossa
- Rimozione di size.truncDiv (Ief44d, b/169790720)
Nell'ambito della standardizzazione dei valori sentinel per le classi in linea, rinomina Color.Unset in Color.Unspecified per coerenza con altre classi in linea (I97611, b/169797763)
Viene introdotto TextOverflow.None. Quando l'overflow è impostato su None, il testo non gestirà più l'overflow e segnalerà le loro dimensioni effettive a LayoutNode. (I175c9, b/158830170)
Il parametro di ambito all'interno di AnnotatedString.Builder.addStringAnnotation viene rinominato in tag per garantire la coerenza dell'API. (I7c8cb)
Correzioni di bug
- Le prestazioni di scorrimento di LazyColumn/Row sono migliorate riducendo il lavoro di sottocomposizione a ogni scorrimento. Per la classe Composizione è stato aggiunto il nuovo metodo hasinvalidations(). Il metodo hasPendingChanges() di Recomposer è stato rinominato in hasDisabledations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- I parametri Size.Non specificati sono stati aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per eseguire il controllo rispetto a Dimensioni.Non specificate e Dimensioni non finite. (I95a7e)
- L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno dei elementi secondari (Ibc9f6)
- Supporta la conversione da AnnotatedString a SpannableString per l'accessibilità. (Ief907)
- Sono stati aggiunti stub per i corsi Android che si trovano su piattaforme meno recenti per evitare l'uso della riflessione, quando possibile. (Ia1790)
- Bug corretto: se la tastiera software visualizzata causava la traduzione dell'app, le coordinate di input del puntatore sarebbero diventate errate. (Ic4cec, b/163077821)
Versione 1.0.0-alpha04
1° ottobre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha04
. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione del layout e del disegno quando non sono più validi. (Ic4cf8)
- Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback quando il layout dei contenuti è stato misurato di nuovo e le dimensioni sono state modificate. (I657cf, b/154108792)
- Aggiungi l'azione semantica del clic lungo (I6281b, b/156468846)
- FocusManager impostato come privato. (I7872f)
È stata aggiornata l'implementazione per creare un'implementazione DrawCacheModifier dedicata anziché aggiungere proprietà facoltative su DrawModifier.
Documentazione aggiornata per i vari metodi (Ibd166)
Rendi TextRange in linea per evitare la creazione di oggetti. (ID034b)
Non è più possibile leggere i valori di posizionamentiScope#parent aggiunta e di posizionamentoScope#parentLayoutDirection dal blocco di posizionamento di un layout personalizzato. (Icc1ae, b/168295623)
aggiungi AccessibilityscrollState alle proprietà semantiche. (Ifeda9)
Introduzione di Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea in modo condizionale le dipendenze che dipendono da informazioni su dimensioni/stato (I376dc)
ParagraphConstraints è stato rimosso. Ora la larghezza è passata direttamente al paragrafo. (Ica712).
Correzioni di bug
- Sono state aggiornate molte API grafiche
- Sono state aggiornate le API di trasformazione della scala e della rotazione per utilizzare un singolo parametro Offset per rappresentare la coordinata pivot invece di parametri in virgola mobile separati per le coordinate x/y in DrawScope e DrawTransform
- Sono stati rimossi i metodi Rect.expandToInclude e Rect.join
- È stata aggiornata la documentazione relativa a Raggio, ovale,
- È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius in linea non deve essere chiamato direttamente, ma è necessario creare un'istanza degli oggetti raggio tramite i loro costruttori di funzione
- Rimosse le API RoundRect per eseguire query in topRight, bottomRight, bottomCenter e così via.
- Rect.shift obsoleto in favore di Rect.translate
- Rimosse le API RoundRect.grow e Rect.shrink
- RoundRect.outerRect rinominato in Rect.boundingRect
- Rimossi i metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
- RoundRect.longestSide è stato rinominato RoundRect.maxDimensione
- RoundRect.shortestSide è stato rinominato RoundRect.minDimensione
- RoundRect.center modificato in una proprietà anziché in una funzione
- Aggiornato il costruttore RoundRect per usare le proprietà Raggio, anziché i singoli parametri,
- Rimosse le API per le dimensioni che supponevano che si trattasse di un rettangolo con origine pari a 0,0
- Aggiunta di un'API di distruzione a Radius
- Ha eseguito la migrazione di varie funzioni dell'estensione RoundRect in proprietà
- (I8f5c7, b/168762961)
- Foundation.Box è stato deprecato. Usa il metodo ground.layout.Box. (Ie5950, b/167680279)
- Stack è stato rinominato Box. Il formato Box esistente in precedenza verrà ritirato e sostituito con il nuovo Box all'indirizzo composizione.foundation.layout. Il comportamento del nuovo riquadro consiste nell'impilare gli elementi secondari uno sopra l'altro quando sono presenti più elementi secondari. È diverso dal riquadro precedente, che aveva un comportamento simile a quello di una colonna. (I94893, b/167680279)
- I parametri per la decorazione della casella sono stati ritirati. Se vuoi aggiungere decorazioni/spaziature sulla scatola, usa i Modifiers (Modifier.background, Modifier.edge, Modifier.padding) (Ibae92, b/167680279).
- Sono state aggiornate molte API grafiche
- Aggiornate le API DrawScope con metodi di trasformazione con ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo il richiamo del callback
- È stata aggiornata la documentazione di clipPath per fare riferimento a Percorso
- Spaziatura fissa nella documentazione per il parametro destro in clipPath
- È stato rinominato DrawScope.drawCanvas in drawIntoCanvas e parametro di dimensione rimosso
- I parametri dx/dy sono stati rinominati in orizzontale e verticale
- Sovraccarico inset aggiunto che fornisce lo stesso valore inset a tutti e 4 i limiti
- È stata rimossa la documentazione relativa al metodo del riquadro che indica che il riquadro
- Documentazione aggiornata per la classe Rect
- Aggiornamento dei commenti sui parametri Rect per corrispondere allo stile Kdoc
- Rect.join e Rect.expandToInclude rimossi
- È stato creato un sovraccarico per Rect.translate(offset) e Rect.shift deprecato
- (If086a, b/167737376)
- Annotated rootAnimationClock Fab, transizionisEnabled, blinkingCursorEnabled e textInputServiceFA con @VisibileForTesting, imposta l'API interna per questi utenti e nascondi il relativo kdoc (I554eb, b/168308412)
- Rimuovi SelectionContainer dall'alto per disabilitare la selezione predefinita ed evitare comportamenti imprevisti. È possibile utilizzare in modo specifico un SelectionContainer per aggregare i contenuti che devono essere selezionabili. (I8dfe0, b/158459594)
Versione 1.0.0-alpha03
16 settembre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha03
. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
- Rimuovi le azioni semantiche di scorrimento avanti/indietro. Passaggi aggiunti in AccessibilityRangeInfo. (Ia47b0)
onInvalidate()
rimosso daOwner
--OwnedLayer
nega l'annullamento della convalida. (Ica72b, b/162061312)Sono stati rimossi i metodi degli operatori nell'API Size che consumano i parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è inaspettato per queste operazioni. Ad esempio, la dimensione dell'offset deve restituire un offset o una dimensione con la differenza?
Sono stati rimossi anche i metodi deprecati nella classe size. (Iec902, b/166514214)
Correzioni di bug
- Correzione di elementi di LazyColumn che a volte venivano tracciati in modo errato e causava anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895)
- I DpConstraints e le API che lo utilizzano sono stati deprecati. (I90cdb, b/167389835)
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)- Gli utilizzi della gravità sono stati rinominati in modo coerente in allineamento o allineamento nelle API di layout. (I2421a, b/164077038)
- Aggiunti onNode e altri metodi globali su ComposeTestRule, quelli globali attuali saranno deprecati. (IEae 36).
Versione 1.0.0-alpha02
2 settembre 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha02
. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- rimuovi il callback per inviare una notifica al proprietario quando i limiti di layoutnode cambiano. (If654e, b/166106882)
- È stato aggiunto il supporto dei parametri per il tipo di riempimento sui percorsi della grafica vettoriale per supportare ritagli di forme in base a regole di riempimento dei percorsi pari o diversi da zero. (I43dd2)
- Uptime e Velocity sono ora classi in linea (I48f4a)
- La durata è ora una classe in linea (I565eb)
- Aggiungi un callback per inviare una notifica al proprietario quando i limiti di layoutnode cambiano. (Ic40b3)
È stato risolto il problema per cui il costruttore della funzione Rect con Offset e raggio creava il rettangolo nell'ordine sinistro, destro, superiore, inferiore anziché sinistra, in alto, a destra, in basso.
Rimossi i metodi companion deprecati su Rect in favore dei costruttori di funzione.
Sono stati aggiunti test per verificare i metodi in Rect.kt (I08460, b/165822356)
Correzioni di bug
- È stato 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 binario. Per poter funzionare con questa versione del plug-in del compilatore, tutte le librerie devono essere ricompilate.
Questa modifica non crea una modifica che provoca un errore a livello di origine, perché le uniche API che sono state modificate sono API di compilazione con attivazione esplicita. (I7afd2, b/158123185)
È stato corretto l'arresto anomalo che poteva verificarsi durante l'invio a un PointerInputFilter causava la rimozione sincrona di PointerInputFilter. (I58f25)
Versione 1.0.0-alpha01
26 agosto 2020
Viene rilasciato androidx.compose.ui:ui-*:1.0.0-alpha01
. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
Viene rilasciato androidx.compose.ui:ui-*:0.1.0-dev17
. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
emitView
è stato deprecato. Se possibile, utilizzaAndroidView
per inviare visualizzazioni all'interno di Compose. Tieni presente che la composizione diretta di Visualizzazioni e ViewGroups non sarà supportata in futuro, a meno che non vengano lasciate nella struttura di composizione, nei casi in cui sia possibile farlo utilizzando AndroidView. (I29b1e, b/163871221)FocusState2
è deprecato e sostituito daFocusState
(Ia8b79, b/160822876, b/160923332)- Gli sovraccarichi di AndroidView deprecati sono stati rimossi. (I946b9, b/163802393)
- Le emissioni personalizzate ora possono dichiarare che uno o più dei setter possono essere saltati e ricomposti indipendentemente dall'emissione. (Ibbd13)
Le classi Vector modificate non devono più essere più classi di dati poiché la stessa istanza di oggetto viene utilizzata per la composizione.
È stato aggiunto il flag mutableStateOf per VectorPainter per ridisegno in modo condizionale se i contenuti del vettore cambiano.
È stata rifattorizzata l'istanza di VectorComponent per farla parte di VectorPainter mentre viene riutilizzata in varie composizioni.
Aggiornamento di GroupComponent e PathComponent in modo che i campi del nome siano modificabili (Ieae45, b/151378808)
onChildPositioned
eOnChildPositionedModifier
rimossi. 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)
FocusModifier deprecato (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
mergePolicy
lambda aggiunto aSemanticsPropertyKey
. Può essere utilizzato per definire una norma personalizzata per l'unione della semantica MergeAllDescendants. Il criterio predefinito prevede l'utilizzo del valore padre, se già presente, in caso contrario il valore figlio. (Iaf6c4, b/161979921)I vincoli sono ora una classe in linea (I88736)
È stato aggiunto FocusManager che sposta la logica di focus comune da AndroidComposeView (I528ef, b/161487952, b/162206799).
Nomi 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()
e laPlacementScope.place()
precedente è stata rinominataPlacementScope.placeRelative()
. Di conseguenza, il metodoPlacementScope.place()
non rispecchierà più automaticamente la posizione in contesti con scrittura da destra a sinistra. Se vuoi, puoi usare il criterioPlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog ora utilizza FlowRow per i pulsanti (I00ec1, b/161809319, b/143682374)
Non sono pubbliche alcune utilità di test perché non sono quelle di cui appartengono. Verrà resa pubblica in futuro. (I32ab1)
dell'organizzazione del puntatore di input del puntatore. (Ie3f45).
PxBounds obsoleti in favore di Rect. Sono stati aggiornati tutti gli utilizzi di PxBounds con rect e aggiunti correttamente il ritiro/la sostituzione 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 chiave e stato della meta chiave specificata (If3afc)
L'evento personalizzato DelayUp e le classi correlate un'API di attivazione, in quanto molto probabilmente verranno modificati. (I56d6f)
Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I3dd9d)
Aggiungi il colore, l'ombra e il testo dei parametri a Paragraph.paint Questa funzione è utile per evitare la ricreazione del paragrafo non necessaria. (I81689)
Correzioni di bug
- Rimosse le richiamate onFocusChanged da TextField. Usa invece Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Usa invece Modifier.border. La classe dei dati confine è stata sostituita da BorderStroke (I4257d, b/158160576)
Rimosse le chiamate FrameManager deprecate.
Le API di scrittura interne sono state modificate per ridurre l'overhead per monitorare oggetti di stato come
mutableStateof()
(I80ba6)Verticalscroller e Horizontalscroller sono stati rimossi. Usa invece la colonna Scorribile/Riga. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
Si verifica un arresto anomalo quando un elemento che salva lo stato utilizzato all'interno del loop for viene corretto. Ora che è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry viene regolata in base a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Il componibile
state { ... }
è ora deprecato in favore delle chiamate esplicite aremember { mutableStateOf(...) }
per maggiore chiarezza. Questo riduce la superficie generale dell'API e il numero di concetti per la gestione dello stato e corrisponde al patternby mutableStateOf()
per la delega delle proprietà delle classi. (Ia5727)Ridenominazione di RRect in RoundRect per adattarsi meglio ai pattern di denominazione per la scrittura Creazione di costruttori di funzioni simili a RRect e costruttori di funzioni RRect deprecati (I5d325)
Versione 0.1.0-dev16
5 agosto 2020
Viene rilasciato androidx.compose.ui:ui-*:0.1.0-dev16
. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
- Il valore OnChildPositioned è stato ritirato. Usa invece OnPositioned sul file secondario. (I87f95, b/162109766)
- L'impostazione setViewContent è stata deprecata. Al suo posto deve essere utilizzato setContent. (I7e497, b/160335130)
- È stata aggiunta l'API AndroidViewBinding per aumentare e scrivere le risorse di layout in base a ViewBinding. (I081c6)
- KeyEvent2 viene sostituito da KeyEvent (I2d770, b/162097585)
- Aggiunto il supporto per la chiave hardware Alt (I9036b)
- FocusManager è deprecato. Usa invece Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource supporta gli attributi trimPath (I808fe)
- Sposta la finestra di dialogo nell'interfaccia utente (I47fa6)
- Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I33ca7).
- È stato implementato PointerInteropModifier che consente di ricevere eventi di movimento e di interagire con Compose come se si trattasse di un'implementazione di una vista Android. (Ieb08c)
- 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)
- Supporto del ritaglio dei percorsi nelle grafiche vettoriali (Ie16c9, b/158188351)
- È stato aggiunto Modifier.layout() che permette di creare comodamente un modificatore di layout personalizzato (I73b69, b/161355194)
- È stata aggiunta una nuova API AndroidView e sono state ritirate quelle esistenti. (I5bcfd)
- Modifier.plus è stato ritirato. Usa Modifier.then al suo posto. "Quindi" ha un segnale di ordinamento più forte, ma vieta anche di digitare
Modifier.padding().background() + anotherModifier
, il che spezza la catena e rende più difficile la lettura (Iedd58, b/161529964) - Aggiungi le sottoclassi [Abstract]ComposeView View per ospitare i contenuti di Compose in una gerarchia View. (I46357)
Row
eColumn
ora riducono in modo significativo l'overhead associato al loro utilizzo. (I75c10)- SubcomposeLayout viene aggiunto. Si tratta di una primitiva di basso livello che consente di comporre i bambini durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in seguito durante la misurazione per la composizione del sottoalbero. Ad esempio, WithConstraints non è 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) - MotionEvents è passato da Android a Compose e di nuovo ad Android. (I14be8, b/158034713)
- Menu a discesa rimosso. (I00430)
- È stata corretta la posizione dei popup sui display ritagliati. (Idd7dd)
- Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
- RemeasurementModifier aggiunto che consente di rimisurare in modo sincrono il layout. In generale, non è mai necessario perché la nuova misurazione/relayout avviene automaticamente, ma la usiamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
- Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Utilizza invece getLineVisibileEnd/getLineEnd/isLineEllipsize. (I85aa2)
- Aggiungi alcuni segni/annotazioni per motivi legati alle best practice. (I66b20)
- esponi altre API di riga in TextLayoutResult. (I79bd2)
- I convertitori vettoriali integrati per la conversione delle unità integrate sono ora accessibili tramite Foo.VectorConverter, ad es. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273)
Correzioni di bug
- Risolvi le correzioni API generiche (I077bc)
- Rimuovi l'interfaccia OffsetBase inutilizzata
- Allinea le classi Offset e IntOffset per avere una superficie API coerente
- IntOffset.Origin si chiama IntOffset.Zero per coerenza con l'API Offset
- Il metodo nativeCanvas è stato spostato dall'interfaccia di Canvas per consentire ai consumatori di creare le proprie istanze Canvas
- È stata creata la classe stub EmptyCanvas per eseguire il refactoring DrawScope in modo che sia un parametro non null al posto di lateinit e garantire la non-nullability del campo
- Le enumerazioni ClipOp sono state rinominate in Pascal Case
- Le enum di FiltroQualità sono state rinominate in richiesta Pascal
- Le enumerazioni StrokeJoin sono state rinominate in richiesta Pascal
- Le enumerazioni PointMode sono state rinominate in caso Pascal
- Le enumerazioni PaintingStyle rinominate in Pascal Case
- Le enum PathFillType sono state rinominate in maiuscole e minuscole
- Le enumerazioni StrokeCap sono state rinominate in caso Pascal
- Aggiornata l'implementazione di DrawCache per non usare più i parametri lateinit
- Aggiornamento di DrawScope per non usare più la delega lazy per i parametri interni FillPaint e RunningPaint
- Aggiornamento componibile dell'immagine per evitare l'uso di Box con meno overhead
- Aggiornata la classe Outline per avere annotazioni @Immutable
- Aggiornato PathNode per avere annotazioni @Immutable per ogni istruzione del percorso
- Sottocomposizione vettoriale aggiornata per rimuovere i controlli condizionali ridondanti per l'uguaglianza, in quanto li gestisce già la scrittura
- Metodi costruttori companion rect deprecati a favore dei costruttori di funzioni
- Classi e costruttori di funzioni Brush aggiornati con le API @Immutable e @Stable
- Enum VertexMode aggiornato in PascalCase
- Aggiornato il metodo selectPaint DrawScope per sovrascrivere condizionalmente i parametri del tratto sul disegno se sono stati modificati
- Sono state aggiornate le dimensioni per aggiungere l'API di destrutturazione, rinomina UnspecifiedSize in Unspecified e i metodi inutilizzati rimossi
- È stato aggiornato l'utilizzo dell'API MergeMode di Composer per mappare correttamente le modalità fusionModes del framework Android e PorterDuff in base al livello dell'API. È stata introdotta l'API MergeMode#isSupported come query di capacità per determinare se il dispositivo è supportato sul dispositivo prima di essere utilizzato. (I0ef42)
- LazyItemScope è stata aggiunta per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima principale, il che risolve il caso d'uso in cui l'elemento deve riempire l'area visibile e la funzione Modifier.fillMaxSize() regolare non funziona perché l'elemento viene misurato con vincoli 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) AndroidComposeTestRule
rinominato increateAndroidComposeRule
. (I70aaf)- Sono state aggiunte altre API a
TextLayoutResult
. (Id7e04) - Il materiale
FilledTextField
è stato rinominato inTextField
e ilTextField
di base è stato rinominato inBaseTextField
per semplificare l'individuazione e l'utilizzo dell'API desiderata più semplice (Ia6242, b/155482676) - Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
Viene rilasciato androidx.compose.ui:ui-*:0.1.0-dev15
. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, dovrai aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra nella sezione Dichiarazione delle dipendenze.
Modifiche alle API
- FocusModifier è stato ritirato a favore di Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. FocusState e FocusDetailsState sono stati deprecati a favore di FocusState2 (I46919, b/160822875, b/160922136)
- È stato aggiunto un modificatore per osservare il cambiamento dello stato dello stato attivo. (I05866, b/160924455, b/160923326)
- È stato aggiunto un modificatore per richiedere modifiche allo stato attivo (I8dd73, b/161182057, b/160924778)
- Nascondi il menu della barra degli strumenti per visualizzare le opzioni di copia, taglia e incolla correttamente. (ID3955)
- Le proprietà semantiche di un singolo valore ora utilizzano uno stile di chiamata.
Ad esempio, la parola "semantica { nascosta = true }" ora è scritta come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - È stato aggiunto Modifier.focus, che sostituisce FocusModifier. (Ib852a, b/160924778)
- Aggiungi FloatingToolbar per la selezione dei campi di testo. (Ie8b07).
- È stata aggiunta un'annotazione API sperimentale per l'API correlata all'input delle chiavi (I53c0a)
- È stata aggiunta un'annotazione API sperimentale per tutte le API relative a Focus (I53b24, b/160903352)
- È stato aggiunto FocusState2 che sostituirà FocusDetailsState (I0a3ba, b/160822595)
- È stato aggiunto ExperimentalFocus, che è un'annotazione @OptIn per l'API Focus. (I1544b, b/160820961)
- È stata aggiunta una classe unità IntBounds che rappresenta i limiti di pixel interi del layout. L'API di PopupPositionProvider è stata aggiornata in modo da utilizzarla. (I0d8d0, b/159596546)
- L'applicatore ora richiede un metodo clear() per eliminare le composizioni (Ibe697)
- KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
- È stato aggiunto un nuovo flag facoltativo useUnmergedTree ai rilevatori di test. (I2ce48)
- Aggiunta dell'API sperimentale LayoutNode (I4f2e9)
Sono stati aggiunti metodi di copia a vari tipi di classi in linea, tra cui:
- Offset
- Dimensioni
- Raggio
- Movimento
OrigineTrasformazione
Metodo dell'oggetto companion size.copy deprecato favore del metodo di copia dell'istanza (Ife290, b/159905651)
Popup, finestre di dialogo e menu ora ereditano il MaterialTheme contestuale (Ia3665, b/156527485)
TextDirection è rinominata ResolvedTextDirection (I3ff38)
Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). La direzione del layout è tuttavia disponibile all'interno del callback tramite l'oggetto ambito misurazione (Ic7d9d)
Esegui il refactoring degli handle di selezione per il riutilizzo. (I420e0)
Il pulsante Clickable è stato rimosso. Utilizza 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 del compilatore Composer avrebbe intercettato in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se esisteva un (I5205a, b/158123804)
Modifier.tag è stato rinominato in Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Le posizioni di interazione della linea di allineamento restituite da Placeable#get(AllineamentLine) sono ora diverse da null. Se manca la linea di allineamento sottoposta a query, verrà restituitocato RedirectLine.Unspecified. (I896c5, b/158134875)
Al componibile AndroidView è stato aggiunto un parametro del modificatore. (I48a88, b/158746303)
La funzione Semantics() è deprecata. Usa invece Modifier.semantics(). (I72407, b/158841414)
Aggiungi il componente componibile viewModel() che consente di creare o ottenere un valore ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)
È stato sostituito l'utilizzo di IntPx con Int. È stato sostituito IntPxPosition 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. In questo modo si ottiene il vantaggio di una classe in linea, che consente di utilizzare un valore long per pacchettizzare 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. In questo modo si ottiene il vantaggio di una classe in linea, che consente di utilizzare un valore 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'utilizzo della classe Px in varie classi di scrittura nell'ambito del grande impegno di refactoring in modo da affidarsi solo ai tipi Dp e primitivi per i parametri dei pixel. Classe Px eliminata nella sua interezza (I3ff33)
È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo che si basi solo sui tipi Dp e primitivi per i parametri pixel (I086f4)
È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo da affidarsi solo ai tipi Dp e primitivi per i parametri dei pixel (Id3434)
È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo da affidarsi solo ai tipi Dp e primitivi per i parametri dei pixel (I97a5a)
TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
L'implementazione predefinita e senza intervento di ParentDataModifier#modifyParentData è stata rimossa. Era equivalente a non implementare l'interfaccia. (I0deaa)
ScaleFit deprecato in precedenza come rimosso. Utilizza invece ContentScale. (Ifbc5b).
È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo che si basi solo sui tipi Dp e primitivi per i parametri dei pixel (I19d02)
È stato aggiunto il componente Menu a discesa in ui-material, un'implementazione del menu Material Design. (I9bb3d)
Rimossa l'opzione LayoutTag() deprecata. Usa invece Modifier.tag(). Rimossa la funzione Modifier.matchParent() deprecata. Usa invece Modifier.matchParentSize(). (If8044)
È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo che si basi solo sui tipi Dp e primitivi per i parametri dei pixel (I57bff)
Modifier.semantics non è più deprecata per consentire l'utilizzo di componenti di alto livello. (I4cfdc)
Implementazioni consolidate di CanvasScope per cui ora sono disponibili solo DrawScope e ContentDrawScope. CanvasScope rinominati in DrawScope. DrawScope aggiornato per implementare l'interfaccia Density e fornire la sottoclasse LayoutDirection DELETE DrawScope in ContentDrawScope Painter e PainterModifier sono stati aggiornati in modo che non mantengano più una proprietà RTL, in quanto DrawScope fornisce già questa proprietà senza fornirla manualmente (I1798e)
La funzione DoubleTapGeFilter ora disambigua SingleTapGeFilter nell'albero. (If92b1)
È stata aggiornata l'API Linking e aggiunto il supporto dell'allineamento assoluto (che non esegue il mirroring automatico nel contesto Rtl) (I38cd3).
L'API dei modificatori Drawlayer è stata modificata: outlineShape è rinominata forma e ha il valore predefinito rettangoloShape e ora non può essere nullo; clipToOutline è stato rinominato clip; clipToBounds rimosso perché è uguale a clip == true con rettangoloShape (I7ef11, b/155075735)
Aggiornate le API di composizione di livello superiore che espongono un Canvas per esporre CanvasScope. In questo modo, i consumatori non devono più gestire i propri oggetti Paint. Per i consumatori che richiedono ancora l'accesso a Canvas, possono utilizzare il metodo di estensione drawCanvas, che fornisce un callback per emettere i comandi di disegno con il canvas sottostante. (I80afd)
L'API lambda finale WithConstraints è stata modificata. Ora, invece di due parametri, ha un ambito ricevitore che, oltre ai vincoli e layoutDirection fornisce le proprietà minLarghezza, maxwidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
LayoutModifier2 rinominato in LayoutModifier. (ID29f3)
Rimossa l'interfaccia LayoutModifier deprecata. (I2a9d6).
Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 dispongono ora di un ricevitore Intrinsic MeasureScope che fornisce l'API di query intrinseca con direzione di layout propagata implicitamente. (ID9945)
I componenti secondari Layout e LayoutModifier possono essere misurati con una direzione di layout diversa. (Ibd731)
Viene aggiunto il nuovo Modifier.zIndex() per controllare l'ordine di disegno degli elementi secondari all'interno dello stesso layout principale. La proprietà di elevazione in DrawLivelloModifier è stata rinominata in shadowElevation e non controlla più l'ordine del disegno. L'ordine dei parametri per DrawShadow è cambiato: l'elevazione è ora la prima e la forma è la seconda con un valore predefinito rettangoloForma. (I20150, b/152417501)
Rimossi onSizeChange e onPositionChange in Proprietario. (I5c718)
Aggiunta Constraints2, una copia dei vincoli che supporta solo i valori dei vincoli Int anziché IntPx. IntPx verrà rimosso e tutti i vincoli interi verranno considerati come pixel come Android.
- È stato aggiunto anche IntSize, che andrà a sostituire IntPxSize. (I4b43a).
È possibile creare un'istanza dell'allineamento Allineamento con valori arbitrari. Aggiunti allineamenti 1D. (Ia0c05)
alignToSiblings ora accetta un modello Measured (Misurato) anziché posizionabile. (I5788d)
-
- ScaleFit rinominato in ContentScale
- È stato spostato il modulo ContentScale da ui-graphics a ui-core per essere integrato nello stesso modulo dell'API Linking.
- FillMaxDimensione è stato rinominato in Ritaglia
- FillMinDimensione è stato rinominato in Adatta
- Adattamento rinominato in Inside per una corrispondenza migliore
- Equivalenti ImageView.ScaleType
- È stata aggiunta la documentazione che indica che la combinazione di ritaglio e Allineamento.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Fit utilizzati con Linking.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER Inside utilizzato con Guidelines.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
Supporto RTL per i modificatori di disegno. (I0aaf9)
È stata rilasciata un'API per il gonfiaggio delle visualizzazioni Android da XML. Per ulteriori dettagli, vedi la demo di ViewInCompose. (I42916)
Migliora l'API DrawModifier:
- Ambito del ricevitore per draw() ContentDrawScope
- Sono stati rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia del precedente CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
Sono stati aggiunti positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)
Il valore predefinito di clipToBounds e clipToOutline è false sia ora che per DrawlayerModifier e drawlayer(). (I0eb8b, b/152810850)
Il valore LayoutResult è stato rinominato in MeasureResult. (ID8c68)
È stata aggiunta LayoutModifier2, una nuova API per la definizione dei modificatori di layout; LayoutModifier deprecato (If32ac)
Sostituito Modificatore più operatore 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. Questo è utile per spostare i contenuti in risposta ad animazioni o eventi touch. (I8641c)
Aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e la scalabilità intorno a un determinato punto su 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 a un layout. Consente di impostare taglio, opacità, rotazione, scalabilità e ombre. Questo sostituirà RepaintBoundary. (I7100d, b/150774014)
È stata eseguita la propagazione della direzione del layout dal nodo di layout principale ai nodi secondari. Aggiunto il modificatore di direzione del layout. (I3d955)
Il componente Stack supporta la direzione da destra a sinistra (Ic9e00)
Supporto iniziale per Rtl nel layout Compose (Ia5519)
Density e DensityScope sono stati uniti in un'unica interfaccia. Al posto di ambientDensity() ora puoi usare DensityAmbient.current. Invece di withDensity(density) solo with(density) (I11cb1)
È stato modificato LayoutCoordinates per rendere providedAllineamentLines un set invece di una mappa e hai configurato LayoutCoordinates per implementare l'operatore get() invece per recuperare un valore. In questo modo, per i modificatori è più semplice modificare 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 LayoutModifier, la rotazione o la scalabilità. Gli sviluppatori dovrebbero invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da un LayoutCoordinate a un altro.
LayoutCoordinates utilizza IntPxSize per la proprietà delle dimensioni anziché PxSize. I layout utilizzano dimensioni in pixel intere 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)
È stata creata l'API CanvasScope che aggrega un oggetto Canvas per esporre una superficie API di disegno dichiarativa e stateless. Le trasformazioni sono contenute nel relativo ambito del ricevitore e anche le informazioni sulle dimensioni riguardano l'ambito dei relativi limiti inseriti. Non è necessario che un consumatore gestisca il proprio oggetto di stato Paint per configurare le operazioni di disegno.
- È stato aggiunto CanvasScopeSample e è stato aggiornato l'app demo per includere una demo sulla 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)
Rettangolo spostato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984)
Sostituiti tutti gli utilizzi di Color con valori null nell'API con valori non null e con Color.Unset anziché null (Iabaa7)
Introduci un ulteriore parametro rect facoltativo in ImagePainter per supportare il disegno di una sottosezione di ImageAsset sottostante (I0ea9e)
È stato aggiunto il colore non impostato per rappresentare un valore non impostato senza colori del riquadro. (If901a)
Sono stati aggiunti i metodi di estensione Canvas.rotate e Canvas.scale per utilizzare coordinate pivot facoltative per le trasformazioni. Per impostazione predefinita, si trovano nell'angolo in alto a sinistra della traduzione canvas corrente.
È stato anche spostato il valore Canvas.rotateRad come metodo di estensione per coerenza (Ibaca6)
È stata creata l'API PixelMap per supportare l'esecuzione di query sulle informazioni sui pixel da un elemento ImageAsset. (I69ad6)
Rinominati toFrameworkRect/toFrameworkRectF in toAndroidRect/toAndroidRectF per corrispondere alla convenzione di denominazione per le conversioni di oggetti tra le API di scrittura e di framework Android su cui si basano. Sono stati aggiornati anche i documenti su queste API (I86337)
È stata aggiunta l'API VectorPainter per sostituire l'API di sottocomposizione esistente per la grafica vettoriale. Il risultato della sottocomposizione è un oggetto VectorPainter anziché un DrawModifier. Deprecati i precedenti componibili DrawVector in favore di VectorPainter.
L'API Image(Painter) è stata rinominata in PaintBox(Painter) Un componibile vettoriale creato che si comporta come l'immagine componibile, tranne che con un VectorAsset anziché un ImageAsset (I9af9a, b/149030271)
Immagine rinominata in ImageAsset per distinguere meglio la differenza tra i dati immagine e l'imminente componibile delle immagini utilizzato per partecipare al layout e disegnare contenuti. _Body:Metodo di estensione creato su android.graphics.Bitmap, Bitmap.asImageAsset(), per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework di composizione (Id5bbd)
Aggiunta TextDirection.Content (I48f36)
Operatore TextDecoration.plus aggiunto (I0ad1a)
Force
è stato rimosso dai valori enum di TextDirectionAlgorithm (Icc944)TextDirectionAlgorithm è rinominato TextDirection (I75ce8)
Implementa LongPressAndTrascina per la selezione dei campi di testo. (I17919)
È stato aggiunto AnnotatedString.getStringAnnotazioni che restituisce tutte le annotazioni all'interno dell'intervallo. (I1fa00)
Il nome del pacchetto per le impostazioni internazionali e Impostazioni internazionali è 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) è stata rinominata in annotatedString(builder: Builder). (Ia6377)
Modifica dell'API: AnnotatedString.Item viene rinominata AnnotatedString.Range. (I2d44d)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)
Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController che viene fornito tramite il callback onTextInputStarted (I8dc44, b/151860051)
È stato aggiunto l'operatore più per lo stile (Text/Paragraph/Span) che delega alla funzioneMerge(). (Ia1add)
FontWeight.lerp non si aggancia più. È ancora una classe di dati. (I521c2).
Il costruttore FontWeight è ora pubblico e non è più una classe di dati. (ID6b1f)
Aggiungi getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount a TextLayoutResult (Ibc801)
Il modulo ui-text è stato rinominato ui-text-core (I57dec)
Rimossa la classe size inutilizzata perché nel modulo ui-geometry viene utilizzata una classe size duplicata. (I1b602).
È stato aggiunto AdapterList, un componente di elenco a scorrimento che compone e dispone solo gli elementi visibili. I problemi attualmente noti includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche agli elementi secondari. (Ib351b)
Aggiungere spaziature interne, bordo, forma e parametro di sfondo a Box (I05027, b/148147281)
Correzioni di bug
- Callback onFocusChange nei campi di testo rinominati in onFocusChanged (Ida4a1)
- Verticalscroller e Horiziontalscroller sono stati deprecati. Utilizza ScorribileColonna e ScorribileRiga per creare un'esperienza integrata con il comportamento e i parametri Colonna/Riga oppure Modifier.verticalscroll e Modifier.Horizontalscroll per il tuo elemento. Allo stesso modo, ScorrierPosition è stato ritirato a favore di ScorriState' (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 la UI di Compose può essere composta 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 (Icccf7)
- Implementa i punti di manipolazione di selezione con trascinamento per modificare la selezione per Campo di testo. (I27032)
- È stata rimossa la classe incorporata Shader che ha eseguito il wrapping della classe prevista di NativeShader Rinominato NativeShader in Shader. La classe incorporata di Shader sottoposta a wrapping non aggiungeva elementi di valore alla superficie dell'API ed era una classe in linea, quindi usa direttamente la classe NativeShader. (I25e4d).
PainterModifier sottoposto a refactoring in modo da non fornire più la scalabilità in base ai vincoli e al parametro ContentScale specificati. Le implementazioni di Painter prevedono la scalabilità dei contenuti del disegno in base alle dimensioni date del DrawScope su cui stanno disegnando.
È stato risolto il problema per cui la bitmap della cache di VectorPainter veniva ridimensionata alle dimensioni predefinite invece che alle dimensioni specificate.
È stato aggiornato ImagePainter per scalare i contenuti invece di affidarsi a PainterModifier per farlo per suo conto. (I6ba90)
aggiungi la funzione FrameNanos di primo livello per la sincronizzazione dell'animazione (Ie34c5)
L'annotazione @Untracked è stata deprecata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
Le funzionalità androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecate. Anche gli elementi componibili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)
È stato risolto il problema per cui l'invio del puntatore comportava un arresto anomalo se PointerInputFilters veniva rimosso tramite sottocomposizione durante il disptach. Il problema ora è stato risolto. (I1f48b, b/157998762)
È stato risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se PointerInputFilters veniva rimosso tramite la sottocomposizione durante il disptach. Il problema ora è stato risolto. (Iab398, b/157998762)
Refactoring della classe Radius per trasformarla in una classe in linea. Sono stati rimossi i metodi di creazione di companion a favore del costruttore della funzione con il parametro predefinito in modo che il raggio lungo l'asse y corrisponda a quello del parametro obbligatorio del raggio dell'asse x.
È stato aggiornato DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché 2 valori in virgola mobile separati per il raggio lungo gli assi x e y (I46d1b)
Ricomponi componibile non è più un'astrazione utile. La maggior parte delle ricomposizioni dovrebbe avvenire in base alle assegnazioni MutableState. Per qualsiasi altro problema, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricomposizione dell'ambito attuale. (Ifc992).È stato sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring in modo da affidarsi solo ai tipi Dp e primitivi per i parametri pixel (Iede0b)
Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore di composizione trasformava le chiamate in funzioni componibili. Con questa modifica, trasformiamo il corpo di una funzione componibile e lasciamo il sito di chiamata inalterato (soprattutto).
Ciò significa che la maggior parte della logica che comunica con il runtime di composizione avviene all'inizio del corpo della funzione, anziché sul sito della chiamata.
Questa modifica dovrebbe essere compatibile con l'origine per tutti gli utilizzi di Compose. La maggior parte degli utenti di Compose non dovrebbe dover aggiornare alcun codice a seguito di questa modifica.
Per supportare questo lavoro, la firma JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta tre parametri. I parametri aggiuntivi sono Composer, un numero intero "chiave", ovvero un numero intero con maschera di bit utilizzato per propagare i metadati attraverso le chiamate.
Ora Compose trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un ulteriore sovraccarico sintetico predefinito della funzione stessa, pertanto questa modifica comporterà la definizione di un minor numero di funzioni.
Cambiamenti comportamentali intenzionali noti derivanti da quanto segue:
- Alcune chiamate saltano quelle che non avrebbero avuto in precedenza
- Le espressioni componibili nelle espressioni di argomento predefinite sono ora sottoscritte e gestite correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato del confronto di parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Questo comporterà un minor numero di confronti in fase di runtime, la riduzione delle dimensioni della tabella degli slot e la possibilità di saltare le funzioni componibili che in precedenza non erano state ignorate. 2. I parametri che vengono considerati "statici" al momento della compilazione non vengono più confrontati né archiviati nel runtime. Questo riduce il numero di confronti e le dimensioni della tabella slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. Questo riduce le dimensioni della tabella degli slot e riduce il lavoro per il runtime. 4. I parametri inutilizzati di invio e ricezione alle 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 un errore riguarda le API che vengono scelte direttamente dal compilatore come destinazione e l'utilizzo tipico della scrittura non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr rimosso 3. Composer::call è stato deprecato 4. Gli sovraccarichi non varargs di
key
sono stati rimossi. Da questo momento in poi utilizza la versione divararg
. 5. L'annotazione Pivotal è stata deprecata. Usakey
come sostituto. 6. ScopeUpdateScope::updateScope è stato modificato per prevedere una Function3 anziché Function1 7. rebootableFunction e rebootableFunctionN in modo da includere parametri aggiuntivi per il tempo di compilazione (I60756, b/143464846)Rimossi i modificatori LayoutAllineamenti deprecati. (I10877)
Rimosso RepaintBoundary a favore di DrawlayerModifier (I00aa4)
I pulsanti, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni parametri su Pulsante sono stati rinominati o riordinati. (I54b5a).Sostituito ButtonStyle con funzioni distinte e rimosso l'overload di testo (stringa). Visualizza 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 della funzione TextDirection predefinita in modo che venga determinata da LayoutDirection. Ad esempio, se LayoutDirection è RTL, TextDirection per impostazione predefinita sarà RTL. In precedenza era TextDirection.ContentOrLtr/Rtl (I4e803)
Correzione di bug: quando lo spessore e lo stile del carattere sono nidificati in una stringa AnnotatedString, il testo non viene visualizzato correttamente. (I77a9d)
Aggiunge parametri di uso comune a Text(). Se al momento stai creando uno stile di testo locale per trasmettere un numero limitato di questi parametri, ad esempio Testo(stile = TextAllinea(textAllinea = TextAllinea.Center)), ora puoi fornire i parametri direttamente: Text(textAllinea = TextAllinea.Center) (I82768)
Il modulo ui-android-text è rinominato ui-text-android (I68cbe)