Interfaccia utente di Componi
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(consulta la documentazione di riferimento dell'API per tutti i pacchetti di composizione)
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
11 dicembre 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
Struttura
Compose è una combinazione di 7 ID gruppo Maven in androidx
. Ogni gruppo contiene un sottoinsieme mirato di funzionalità, ciascuna con il proprio insieme di note di rilascio.
Questa tabella illustra i gruppi e i link a ogni set di note di rilascio.
Gruppo | Descrizione |
---|---|
compose.animation | Creare animazioni nelle loro 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 espandi la base per creare i componenti del tuo sistema di progettazione. |
compose.material | Crea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di contatto di primo livello di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea interfacce utente Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You come i colori dinamici ed è progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12. |
compose.runtime | Componenti di base del modello di programmazione e della gestione dello stato di Compose, nonché runtime di base per il plug-in del compilatore Compose come target. |
compose.ui | Componenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input. |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza da 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 elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.8
Versione 1.8.0-alpha07
11 dicembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
viene rilasciato. La versione 1.8.0-alpha07 contiene questi commit.
Modifiche all'API
- Proprietario esposto da
LayoutNode
per gli strumenti. (I26f7f) - La composizione
LocalAutofillHighlightColor
ha un utilizzo locale di tipo Colore. (I0e05b) - Mantieni
UrlAnnotation
e i relativi metodi deprecati contrassegnati come sperimentali. (Ic0021)
Correzioni di bug
- È stato corretto l'arresto anomalo di
IndexOutOfBoundsException
quando si utilizzaLinkAnnotation
all'interno del composableBasicText
o di Text (be7605, b/374115892) - È stato risolto un problema per cui i campi di testo compilati con una forma personalizzata non ritagliavano la linea dell'indicatore. (I4f87f, b/380704151)
- Sono stati corretti gli sfondi mancanti con screenshot lunghi. (I4d57a)
- Questa libreria ora utilizza le annotazioni di nullità JSpecify, che sono di tipo di utilizzo. Gli sviluppatori Kotlin devono utilizzare i seguenti argomenti del compilatore per applicare l'utilizzo corretto:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Idfef8, b/326456246) - Aggiornamento del supporto di Compose per i colori a gamma ampia e HDR quando viene eseguito su Android Q e versioni successive. (Icd8be, b/379135036)
- I caratteri delle risorse che non riescono a caricarsi ora torneranno automaticamente al carattere predefinito, anziché generare un'eccezione nella misura come accadeva in precedenza. (Ib6a49)
- È stato corretto il problema di perdita dello stato attivo quando
AndroidView
viene scollegato e ricollegato. (I53446) - Accetta
requestFocus()
dall'azione di layout oltre i limiti. (Ia8461)
Contributo esterno
- Aggiungi
BringIntoViewResponderModifierNode
all'interfaccia utente, che offre un nuovo modo per implementare la funzionalità Porta in primo piano e consente l'implementazione a livello di piattaforma. (Ia6dd8)
Versione 1.8.0-alpha06
13 novembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
viene rilasciato. La versione 1.8.0-alpha06 contiene questi commit.
Modifiche all'API
- Aggiunge il modificatore
stylusHoverIcon
. (Iff20a, b/331289114) - Modifica il gestore della compilazione automatica in modo che sia un'interfaccia. (I84914, b/376080755)
- Aggiunge
requestFocus(FocusDirection)
sia afocusRequester
che aFocusTargetModifierNode
per consentire la messa a fuoco con una direzione specifica. (I5d9ec, b/245755256) FocusProperties.enter
eFocusProperties.exit
sono stati sostituiti cononEnter
eonExit
, utilizzando un ambito del ricevitore anziché il parametroFocusDirection
. (I6e667)- È stato aggiunto il supporto della compilazione automatica nella barra degli strumenti di testo. (Ie6a4c)
- L'API diventa
Modifier.focusRestorer()
(I99c03):- Il nome del parametro è stato modificato in "fallback"
- Il parametro ora è
FocusRequester
e non lambda - Il parametro ora non è NULL con Default come valore predefinito
- Rimozione dell'annotazione
@Experimental
dall'interfaccia di Gestione automazione. La funzionalità è ancora in fase di elaborazione per questa release, ma non vogliamo introdurre l'API @Expemiental (Id8398) LocalHapticFeedback
ora fornisce un'implementazione predefinita diHapticFeedback
quando l'API Vibratore indica che le tecnologie aptica sono supportate. I seguenti elementi sono stati aggiunti aHapticFeedbackType
:Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
,VirtualKey
. I componenti di Wear Compose che possono essere selezionati con un clic prolungato, comeButton
,IconButton
,TextButton
eCard
, ora eseguono il feedback apticoLONG_PRESS
quando è stato fornito un gestore del clic prolungato. (I5083d)- Rimuove
OverscrollConfiguration
eLocalOverscrollConfiguration
e aggiungerememberPlatformOverscrollFactory
per creare un'istanza di / personalizza i parametri dell'implementazione dell'overscroll predefinita. Per disattivare lo scorrimento eccessivo, utilizzaLocalOverscrollFactory provides null
anzichéLocalOverscrollConfiguration provides null
. Per modificare il colore dell'effetto bagliore / il padding, anzichéLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
, utilizzaLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - È stata rimossa l'API
GlobalAssertions
sperimentale. L'utilizzo previsto era eseguire controlli di accessibilità. Per questo scopo, consultaenableAccessibilityChecks()
. (I59322)
Versione 1.8.0-alpha05
30 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
viene rilasciato. La versione 1.8.0-alpha05 contiene questi commit.
Nuove funzionalità
La compilazione automatica è visibile dietro un flag di funzionalità in questa release. Stiamo lavorando per migliorare le prestazioni e cerchiamo feedback iniziali sulle API. Le API dovrebbero evolversi prima di diventare stabili in base al feedback.
- Per attivare la compilazione automatica, imposta
ComposeUiFlags.isSemanticAutofillEnabled
su true inonCreate
e utilizza lo snapshot di composizione più recente. - Questa versione della compilazione automatica supporta il salvataggio manuale delle credenziali, tramite Suggerisci password sicura e tramite la navigazione. Supporta anche il completamento quando un campo con compilazione automatica riceve lo stato attivo o quando la compilazione automatica viene attivata tramite la barra degli strumenti dei componenti di testo. Il componente verrà evidenziato per indicare il completamento della compilazione automatica.
Modifiche all'API
- Modifica l'interfaccia di compilazione automatica in modo che segua la struttura
expect
/actual
. (I22dce) - Introduzione di
CompositionLocal
che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione riuscita della compilazione automatica. (I32092) - È stata aggiunta l'API
Modifier.onRectChanged
, che consente di iscriversi alla posizione e alle dimensioni relative a root/window/screen di unLayoutNode
. L'API risolve molti casi d'uso già supportati dal modificatoreonGloballyPositioned
esistente, ma con un overhead molto inferiore e offre funzionalità per debounce e limitare il callback in base alle esigenze del caso d'uso. (Id28c7, b/372765423, b/372757007, b/372994338) - Espande il gestore della compilazione automatica per includere le API
commit()
ecancel()
che aiutano gli utenti a salvare le credenziali appena inserite. (I2da00) - Viene introdotta una nuova interfaccia
AutofillManager
che può essere utilizzata per perfezionare il percorso di compilazione automatica degli utenti e un flagisSemanticAutofillEnabled
per attivare questa nuova versione della compilazione automatica. (I9d484) - È stata aggiunta l'API
Modifier.onRectChanged
, che consente di iscriversi alla posizione e alle dimensioni relative a root/finestra/schermo di unLayoutNode
. L'API risolve molti casi d'uso già supportati dal modificatoreonGloballyPositioned
esistente, ma con un overhead molto inferiore e offre funzionalità per debounce e limitare il callback in base alle esigenze del caso d'uso. (I3c8fa) - Aggiungi proprietà semantiche e tipi di dati per il supporto esteso della compilazione automatica. (I52c7d)
- Tutti i metodi nel generatore di
AnnotatedString
non sono più sperimentali (Ia89c8, b/261561823)
Correzioni di bug
- Le visualizzazioni incorporate nella composizione ora possono ricevere eventi di rotazione se sono attive (I4d53a, b/320510084)
- Risolto un problema per cui vari tipi di risorse non si aggiornavano in base alle modifiche alla configurazione (Ia9b99, b/352336694)
- È stato risolto un problema che impediva il corretto funzionamento di
TextField
quando si utilizzava la tastiera giapponese POBox su alcuni dispositivi Sony meno recenti. (Ia9b99, b/373743376) - È stato risolto il problema relativo alla visualizzazione delle finestre di dialogo nella parte inferiore dello schermo anziché al centro (Ia2ec, b/373093006)
- L'API Targeting 35 e versioni successive non impone più che le finestre di dialogo abbiano
decorFitsSystemWindows
impostato su false. (Ibc94, b/364492593) - Correzione dell'arresto anomalo quando i livelli vengono spostati tra le finestre (ad es. finestra di dialogo e contenuti principali) (I675ba, b/330955281)
Versione 1.8.0-alpha04
16 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
viene rilasciato. La versione 1.8.0-alpha04 contiene questi commit.
Modifiche all'API
- Aggiunge i callback
DelegatableNode#onDensityChange
eDelegatableNode#onLayoutDirectionChange
per consentire l'aggiornamento dello stato del nodo quando questi cambiano (I04f3e, b/340662451) - Aggiunge
WindowInfo#containerSize
per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzandoLocalWindowInfo
. (Idc38c, b/369334429, b/360343819) - È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante un fling in corso. Ora questi nodi annulleranno il fling e invieranno correttamente l'evento
onPostFling
con la velocità rimanente. Stiamo anche introducendo il flagNewNestedScrollFlingDispatchingEnabled
per controllare il comportamento in caso di regressioni. L'indicatore verrà rimosso prima della versione beta. (I05c37, b/371168883) - È stato introdotto
PointerInputModifierNode#touchBoundsExpansion
, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del cursore. (Iccf02, b/335339283) - Aggiunge
WindowInfo#containerSize
per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzandoLocalWindowInfo
. (I27767, b/369334429, b/360343819) - Rimuovi
readOnly
daTextFields
per bloccare la versione stabile della base. (I3aaba) Paragraph
eParagraphIntrinsics
ora accettano un elenco di tutte le annotazioni applicate aAnnotatedString
, in precedenza era presente solo un elenco diSpanStyles
(I12f80)
Correzioni di bug
- È stata aggiornata la modalità di trattamento dei paragrafi in
AnnotatedString
. In precedenza, era possibile creare solo paragrafi non sovrapposti. OraAnnotatedString
consente di unire paragrafi completamente sovrapposti e paragrafi nidificati, nel qual caso il paragrafo esterno verrà suddiviso in base ai limiti di quello interno e lo stile del paragrafo interno verrà unito a quello del paragrafo esterno (Ic9554) - Correggere l'arresto anomalo in
AnnotatedString
con unLinkAnnotation
di lunghezza pari a zero. (89aac6)
Versione 1.8.0-alpha03
2 ottobre 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
viene rilasciato. La versione 1.8.0-alpha03 contiene questi commit.
Modifiche all'API
- Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
- È stato introdotto un nuovo ruolo di semantica denominato Carosello per emulare il comportamento dell'elenco nei pager per i servizi a11y. (Id354b, b/354109776, b/239672673)
- Rinomina
invisibleToUser()
inhideFromAccessibility
. La sua funzione rimane invariata. Per ulteriori dettagli, consulta la documentazione. (Ib43a3)
Correzioni di bug
- Aggiornamento della documentazione per il modificatore
SensitiveContent
(Ib0442) - È stato risolto un problema per cui alcuni clip di contorni generici venivano ignorati in combinazione con le ombre di elevazione su alcune versioni di Android
- È stato risolto il problema per cui venivano applicati clip vuoti quando veniva specificato un clip di sfondo generico su alcune versioni di Android.
- È stata corretta un'eccezione lanciata quando l'IME è attivo in una visualizzazione esterna e l'azione Avanti viene utilizzata per inserire lo stato attivo in
ComposeView
. Il comportamento diclearFocus()
è in linea con il comportamento della visualizzazione in API < 28, doveclearFocus()
può causare il ribaltamento della visualizzazione predefinita. - È stato risolto un problema per cui il posizionamento avveniva su nodi scollegati in
LazyList
separando la gestione della composizione secondaria per diversi passaggi di layout. - È stato risolto un problema per cui la tastiera software tremola quando lo stato attivo passa da
TextField
aEditText
o a qualsiasi altro editor basato su visualizzazione. - Ora i nodi di scorrimento nidificati inviano correttamente gli eventi
onPostFling
dopo essere stati scollegati. - Miglioramenti generali delle prestazioni
Versione 1.8.0-alpha02
18 settembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha02
viene rilasciato. La versione 1.8.0-alpha02 contiene questi commit.
Modifiche all'API
- Ora sono disponibili
TextOverflow.StartEllipsis
eTextOverflow.MiddleEllipsis
, che consentono di inserire i puntini di sospensione all'inizio o al centro della riga del testo a riga singola. (I38913, b/185418980)
Correzioni di bug
- Correggi il dialogo
dismissOnClickoutside
(39a3d, b/364508685) - Non tagliare le ombre dei contenuti della finestra di dialogo (e8e2f, b/363027803)
- Correggere il comportamento errato quando la ricerca di attivazione si sposta tra Scrittura e una visualizzazione (58377, b/350534714)
Contributo esterno
AlignmentLines
Map
ora accetta tipi concretiVerticalAlignmentLine
oHorizontalAlignmentLine
. (I02912)- Nuovo metodo
ByteArray.decodeToImageBitmap(): ImageBitmap
comune. (I83c21)
Versione 1.8.0-alpha01
4 settembre 2024
androidx.compose.ui:ui-*:1.8.0-alpha01
viene rilasciato. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.6
11 dicembre 2024
androidx.compose.ui:ui-*:1.7.6
viene rilasciato. La versione 1.7.6 contiene questi commit.
Correzioni di bug
- In precedenza, veniva generato un errore ogni volta che veniva rilevato un evento chiave quando il sistema di attenzione aveva delle invalidazioni in attesa. Ora registriamo un errore (I7ea0, b/346370327).
- Annotazione sperimentale rimossa da
SemanticsPropertyReceiver.invisibleToUser()
. Questo parametro verrà ritirato nella versione 1.8 e sostituito conSemanticsPropertyReceiver.hideFromAccessibility()
. (I448f0, b/376479686) - È stato risolto un problema che impediva il corretto funzionamento di
TextField
quando si utilizzava la tastiera giapponese POBox su alcuni dispositivi Sony meno recenti. (I94e0e, b/373743376) - È stato risolto un problema di accessibilità per cui inlineContent di
BasicText
non veniva annunciato daTalkBack
. (I67bcb, b/376479686)
Versione 1.7.5
30 ottobre 2024
androidx.compose.ui:ui-*:1.7.5
viene rilasciato. La versione 1.7.5 contiene questi commit.
Correzioni di bug
- Sono stati risolti i problemi relativi al rendering non corretto dell'elevazione e del ritaglio con contorni personalizzati.
- È stato corretto un arresto anomalo del testo che si verifica con un carattere
LinkAnnotation
di larghezza zero. (Ic1e2e) - Corregge un annuncio in
Talkback
del pulsante quando è creato come componente componibile di testo selezionabile. (I1f588)
Versione 1.7.4
16 ottobre 2024
androidx.compose.ui:ui-*:1.7.4
viene rilasciato. La versione 1.7.4 contiene questi commit.
Versione 1.7.3
2 ottobre 2024
androidx.compose.ui:ui-*:1.7.3
viene rilasciato. La versione 1.7.3 contiene questi commit.
Correzioni di bug
- È stato risolto il problema per cui la specifica di un clip di sfondo generico generava un confine del clip vuoto su alcune versioni di Android.
- È stata corretta un'eccezione lanciata quando l'IME è attivo in una visualizzazione esterna e l'azione Avanti viene utilizzata per inserire lo stato attivo in
ComposeView
. Il comportamento diclearFocus()
è in linea con il comportamento della visualizzazione in API < 28, doveclearFocus()
può causare il ribaltamento della visualizzazione predefinita. - È stato risolto un problema per cui veniva utilizzato un
placeOrder
errato per l'invalidazione dell'anticipazione, risolvendo così un caso limite in cui il posizionamento dell'anticipazione veniva saltato.
Versione 1.7.2
18 settembre 2024
androidx.compose.ui:ui-*:1.7.2
viene rilasciato. La versione 1.7.2 contiene questi commit.
Correzioni di bug
- Miglioramento delle prestazioni delle informazioni sui nodi di accessibilità e degli eventi di semantica mediante la rimozione del monitoraggio dettagliato. (I89156, b/362530618)
ComposeView
non avrà più arresti anomali quando vengono passate dimensioni di misurazione eccezionalmente grandi (da5db, b/347036173)- Risolto un problema di accessibilità dello screen reader per cui non venivano annunciati i pulsanti
LiveRegion
. (f66fa7, b/348590026)
Versione 1.7.1
10 settembre 2024
- Nessuna modifica agli elementi Android. Sono stati rimossi
-desktop
elementi e aggiunti-jvmStubs
e-linuxx64Stubs
elementi. Nessuno di questi target è destinato all'uso, ma sono segnaposto per supportare le attività di JetBrains Compose.
Versione 1.7.0
4 settembre 2024
androidx.compose.ui:ui-*:1.7.0
viene rilasciato.
Modifiche importanti dalla versione 1.6.0
Le modifiche importanti nella versione 1.7.0 sono descritte in questo post del blog.
Versione 1.7.0-rc01
21 agosto 2024
androidx.compose.ui:ui-*:1.7.0-rc01
viene rilasciato. La versione 1.7.0-rc01 contiene questi commit.
Modifiche significative
- Il modulo ui:ui ora impone il requisito di una versione minima di foundation:foundation pari ad almeno 1.7.0-rc01 o successiva. Questo viene applicato per porre rimedio a un'incompatibilità di comportamento tra ui e foundation in merito alle modifiche a
NestedScrollSource
apportate all'inizio della versione 1.7.0-alpha01.
Versione 1.7.0-beta07
7 agosto 2024
androidx.compose.ui:ui-*:1.7.0-beta07
viene rilasciato. La versione 1.7.0-beta07 contiene questi commit.
Correzioni di bug
- Le funzioni
SemanticsNodeInteraction
relative all'inserimento di testoperformTextReplacement
,performTextInput
eperformTextClearance
ora genereranno errori di asserzione quando vengono chiamate suTextFields
di sola lettura. (I4ae8f)
Versione 1.7.0-beta06
24 luglio 2024
androidx.compose.ui:ui-*:1.7.0-beta06
viene rilasciato. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
androidx.compose.ui:ui-*:1.7.0-beta05
viene rilasciato. La versione 1.7.0-beta05 contiene questi commit.
Correzioni di bug
- È stato corretto un bug per cui la modifica della tastiera software causava il mancato accettazione dell'input della nuova tastiera da parte di
TextField
finché l'input non veniva perso e recuperato. - È stato risolto un problema per cui i tentativi di mantenere i contenuti dei livelli causavano effetti collaterali indesiderati durante il rendering con contenuti
SurfaceView
.
Versione 1.7.0-beta04
26 giugno 2024
androidx.compose.ui:ui-*:1.7.0-beta04
viene rilasciato. La versione 1.7.0-beta04 contiene questi commit.
Correzioni di bug
- Evitare arresti anomali durante la misurazione di righe di testo molto grandi (ad es.10. 000 caratteri) (8157ab)
- Disattiva il supporto del rendering software per l'API
GraphicsLayer
. (35ddd8) - Correzione di un arresto anomalo nella logica di persistenza dei livelli. (70b13e)
- L'ottimizzazione del riutilizzo degli oggetti livello è stata ripristinata perché causava problemi di rendering. (70b13e)
Versione 1.7.0-beta03
12 giugno 2024
androidx.compose.ui:ui-*:1.7.0-beta03
viene rilasciato. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
androidx.compose.ui:ui-*:1.7.0-beta02
viene rilasciato. La versione 1.7.0-beta02 contiene questi commit.
Modifiche all'API
SemanticsProperties.Editable
è stato rinominato inIsEditable
eSemanticsPropertyReceiver.editable
in un valoreisEditable
. La proprietà ora è booleana e sempre specificata da campi di testo. (I8acd8)- Rinomina il parametro del benchmark di accessibilità. (I3d440)
- API aggiornata per lo stile dei link:
TextLinkStyles
ora fa parte del costruttoreLinkAnnotation
e del metodoAnnotatedString.fromHtml
(I90b2b). Inoltre, è stato rimosso ilTextDefaults
dal materiale (I5477b)
Correzioni di bug
LayoutCoordinates.introducesFrameOfReference
è stato rinominato inLayoutCoordinates.introducesMotionFrameOfReference
per riflettere meglio la sua finalità. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)
Versione 1.7.0-beta01
14 maggio 2024
androidx.compose.ui:ui-*:1.7.0-beta01
viene rilasciato. La versione 1.7.0-beta01 contiene questi commit.
Modifiche all'API
performCustomAccessibilityActionLabelled
è stato rinominato inperformCustomAccessibilityActionWithLabel
eperformCustomAccessibilityActionWhere
inperformCustomAccessibilityActionWithLabelMatching
. (I5387f)AnnotatedString.hasEqualsAnnotations
è diventatohasEqualAnnotations
(I685c0)- L'API è stata aggiornata per ottenere link con tema Material nel testo. Nello specifico, sono stati rimossi i metodi dal
TextDefaults
per la creazione diLinkAnnotations
a tema e l'analisi del codice HTML con link a tema. È stata invece aggiunta una classeTextLinkStyles
che consente di applicare uno stile ai link come parametro al composable di testo. (I31b93)
Correzioni di bug
- Corregge ulteriori casi d'uso quando vengono aggiunti dinamicamente i modificatori di input del cursore durante gli eventi 63e1504
Versione 1.7.0-alpha08
1° maggio 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
viene rilasciato. La versione 1.7.0-alpha08 contiene questi commit.
Modifiche all'API
- Aggiunge il supporto per le implementazioni di forme mutabili.
Shape#createOutline
ora viene osservato all'interno dei livelli grafici, pertanto la lettura dei valori di stato al suo interno causerà convalide quando lo stato cambia, consentendo animazioni delle forme più performanti. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
rinominato inintroducesFrameOfReference
. Tieni presente che ora ha l'effetto opposto, il che significa che per impostazione predefinita la maggior parte degli elementiLayoutCoordinates
introduce un sistema di riferimento e, solo quando viene sottoposto a manipolazione diretta, la proprietà sarà falsa. Per eseguire query sulla posizione solo con quelle che introducono un sistema di riferimento, utilizzapositionInLocalFrameOfReference(...)
. OppurepositionInLocalLookaheadFrameOfReference
da unLookaheadScope
. (Ifc5f7)- Le API
LookaheadScope
sono state rese stabili (I21507) - Modifica l'azione lambda per
getScrollViewportLength
in base al feedback del consiglio API. (Ibc74a) - Le API di schemi
GraphicsLayer
sono state aggiornate in modo da utilizzare parametri float anziché int. Sono stati rimossi i valori sentinellaUnsetOffset/UnsetSize IntSize
a favore delle costanti Unspecified già esistenti nelle classi in linea Offset e Size basate su float (I2fb03, b/333863462) - Quando viene inserito l'input del mouse durante i test,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
ora accettano un parametrobutton: MouseButton
per renderli più universalmente applicabili. Il valore predefinito èMouseButton.Primary
per tutti i metodi. (I31a23, b/190493367, b/261439695) onClicked
rinominato inonClick
inLinkInteractionListener
. (Iaa35c)- Rinomina
TextInclusionStrategy.isInside
inisIncluded
. Rendi il tipo di ritornoParagraph/MultiParagraph#getRangeForRect()
non null. (I51f26)
Correzioni di bug
- È stato corretto il problema di acquisizione di screenshot lunghi per i contenitori con scorrimento con
reverseScrolling=true
. (I7c59c)
Contributo esterno
- È stato aggiunto il supporto per il pre-caricamento degli elementi in
LazyLists
nidificati (ad es. unLazyColumn
che esegue il rendering diLazyRows
nidificati). Questa modifica dovrebbe ridurre i cali di frame durante lo scorrimento per questiLazyLists
. L'impostazione predefinita dell'implementazione è il pre-caricamento dei primi 2 elementi nidificati, ma questo comportamento può essere controllato dalle nuove APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
eLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Versione 1.7.0-alpha07
17 aprile 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
viene rilasciato. La versione 1.7.0-alpha07 contiene questi commit.
Modifiche all'API
ClickableText
è deprecato. Per aggiungere link al testo, crea unAnnotatedString
con unLinkAnnotation
corrispondente al link e passa questoAnnotatedString
al composable di testo. (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 una query sulle coordinate del layout, ora puoi utilizzare l'argomento
excludeDirectManipulationOffset
per escludere l'offset impostato dai layout principali che hanno posizionato i figli utilizzandoPlaceable.PlacementScope.withDirectManipulationPlacement
. Analogamente, un layout che modifica di frequente la posizione dei relativi elementi secondari ora può posizionarli utilizzandowithDirectManipulationPlacement
(ad esempio Scroll, implementato per impostazione predefinita). In questo modo, le animazioni basate suapproachLayout
sono più intuitive, perché ora è possibile distinguere l'offset da animare e cosa applicare direttamente quando si decide di animare l'approccio. (I60ec7) - Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
LazyColumn
ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)- Le origini
NestedScroll
Trascina e Fling vengono sostituite daUserInput
eSideEffect
per supportare la definizione estesa di queste origini, che ora includono animazioni (Side Effect), rotella del mouse e tastiera (UserInput
). (I40579) ApproachLayoutModifierNode
eModifier.approachLayout
sono ora stabili, con i nuoviisMeasurementApproachInProgress()
eisPlacementApproachInProgress()
che sostituiscono rispettivamente i vecchiisMeasurementApproachComplete()
eisPlacementApproachComplete()
.- È stato rimosso il modificatore
intermediateLayout
obsoleto. (I3e91c) - Rinomina
GraphicsLayer#buildLayer
in record per rispecchiare i metodi begin/endRecording delle API supportate da Displaylist comeRenderNode
e Picture. rememberGraphicsLayer
è stato aggiornato per sfruttarerememberObserver
. (I312c1, b/288494724, b/330758155)UrlAnnotation
è deprecato. UtilizzaLinkAnnotation.Url
. Se utilizzi il tema Material, utilizza l'oggettoTextDefaults
per creare l'annotazione con il tema Material applicato (I8d180, b/323346545)- I link di testo hanno ricevuto l'opzione di stile per lo stato premuto, oltre allo stile normale, al passaggio del mouse e allo stato attivo (I5f864, b/139312671)
String.parseAsHtml
è stato rinominato inAnnotatedString.Companion.fromHtml
. (I43dcd)- Sono stati aggiunti argomenti di stile (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) e un gestore di interazioni con i link al metodoparseAsHtml
. Durante l'analisi della stringa con tag HTML con tag<a>
, il metodo creerà unLinkAnnotation.Url
per ogni tag di questo tipo e passerà gli oggetti di stile e l'ascoltatore di interazioni con i link a ogni annotazione. (I7c977) LinkAnnotation
ora accetta gli argomenti di stile basati sullo stato e unLinkInteractionListener
. Aggiungi questa annotazione alAnnotatedString
per ottenere un link ipertestuale. PassandofocusedState
e/ohoveredState
puoi definire l'aspettoconfiguration
dei link quando sono attivi e/o quando il mouse passa sopra. (I81ce4, b/139312671)ImeOptions.hintLocales
non è più nullable. Se vuoi passare un elenco di lingue vuoto, utilizzaLocaleList.Empty
. (Ic5bc4)
Correzioni di bug
- Gestisce in modo corretto i dati sugli eventi di input storici errati/corrotti (ignora i dati sugli offset errati).
- Corregge gli eventi del cursore imprevisti quando un modificatore di input del cursore viene aggiunto dinamicamente prima di un altro modificatore di input del cursore durante uno stream di eventi di input del cursore attivo (ad esempio tra un evento di ingresso e un evento di uscita del passaggio del mouse [mouse/penna]).
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
viene rilasciato. La versione 1.7.0-alpha06 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il metodo
parseAsHtml
per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML inAnnotatedString
. Tieni presente che non tutti i tag sono supportati, ad esempio non potrai ancora visualizzare elenchi puntati. (I84d3d, I30626, b/139326648) - È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (
ScrollCaptureCallback
). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivata per impostazione predefinita. Per attivare questa funzionalità, imposta il flagComposeFeatureFlag_LongScreenshotsEnabled
su true. (I2b055, b/329296471)
Modifiche all'API
fun ClipEntry.getMetadata()
viene modificato inval ClipEntry.clipMetadata
. (I50155)- Sono state rimosse le funzioni
ClipboardManager.getClipMetadata
eClipboardManager.hasClip
. UtilizzaclipEntry.getMetadata()
per leggere i metadati della voce del clip corrente. Controlla anche il risultato diClipboardManager.getClip
per capire se è nullo o meno per capire se gli appunti contengono un clip corrente. (I50498) - Ora puoi passare oggetti
GraphicsLayer
alle funzioniplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
ora accetta null per poter svuotare la clipboard. (I7d2e9)- Sono stati aggiunti ID risorsa per aiutare a nascondere le visualizzazioni utilizzate come dettagli di implementazione all'interno degli strumenti di compilazione (I99531)
- È stato aggiunto il metodo di sospensione
GraphicsLayer#toImageBitmap
per supportare il rendering dei contenuti di una bitmap in unGraphicsLayer
. Si tratta di un'operazione di rendering con accelerazione hardware a partire dal livello API 22 (incluso), supportata da oltre il 99% di tutti i dispositivi Android. Sul livello API Android 21, viene eseguito il rendering software di riserva. (I9e114) - Metodo di assistenza per convertire un
RectF
Android inComposeRect
(I39925, b/325660505) - Per impostazione predefinita, tutti i parametri
KeyboardOptions
hanno un valore non specificato. MetodoKeyboardOptions.merge
aggiunto. - Il campo
KeyboardOptions.autoCorrect
è stato rinominato inautoCorrectEnabled
e impostato come nullable, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492) - La variante
BasicTextField(state)
eBasicSecureTextField
ora utilizzanoKeyboardActionHandler
anzichéKeyboardActions
per elaborare le azioni eseguite dalla tastiera software. (I58dda)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
viene rilasciato. La versione 1.7.0-alpha05 contiene questi commit.
Nuove funzionalità
- È stata introdotta la nuova API
GraphicsLayer
per registrare i comandi di disegno in un elenco di visualizzazione, nonché proprietà aggiuntive che influiscono sul rendering dell'elenco di visualizzazione. Questo fornisce un confine di isolamento per suddividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a unGraphicsLayer
possono essere eseguite senza registrare di nuovo l'elenco di visualizzazione. A differenza diModifier.graphicsLayer
,GraphicsLayer
consente il rendering dei contenuti composable altrove ed è utile nei casi d'uso animati in cui i contenuti devono essere visualizzati in scene diverse.
Modifiche all'API
GraphicsLayer.draw(Canvas)
non è più un'API pubblica. Utilizza 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 locale
GraphicsContext
insieme all'aggiornamento delle implementazioni di Owner,DelegateableNode
edrawWithCache
Modifier per esporre l'accesso aGraphicsContext
per l'accesso basato sugli ambiti che pulirà automaticamente le istanzeGraphicsLayer
quando i modificatori vengono smantellati. (I64a2f, b/288494724) - È stato introdotto
InterceptPlatformTextInput
per aiutare a scrivere test di basso livello relativi all'IME e altri casi d'uso di basso livello dell'IME.PlatformTextInputTestOverride
è stato deprecato. (I862ed, b/322680547) - È stata aggiunta la funzione di estensione
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Introduzione del costruttore di funzioni
GraphicsContext
per creare una factory per creare istanzeGraphicsLayer
(Ib98d6, b/288494724) - È stata esposta l'API
GraphicsLayer
per offrire agli sviluppatori la flessibilità di acquisire comandi di disegno che possono essere utilizzati per disegnare altrove e applicare anche diversi effetti visivi al risultato finale. (I80245, b/288494724) - Inserisci
Paragraph#getRangeForRect
che restituisce un intervallo di testo coperto da una determinata area rettangolare. (Iee516, b/325660505) - È stata rimossa l'override sperimentale di
BasicText
con l'argomentoonLinkClicked
. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)
Correzioni di bug
- È stata aggiunta la definizione dell'API
GraphicsLayer
expect/actual per supportare l'acquisizione e la riproduzione dei comandi di disegno con effetti visivi di composizione e trasformazioni facoltativi. Introduzione dell'interfacciaGraphicsContext
per contenere le dipendenze grafiche, inclusa la creazione e la gestione delle istanzeGraphicsLayer
. (I4a8d6, b/288494724) - È stato risolto un problema di interoperabilità con la ricerca dell'attenzione 1D, in cui lo stato attivo rimaneva bloccato all'interno di un
ComposeView
incorporato tra altre visualizzazioni. (I08fd4)
Contributo esterno
LocalLifecycleOwner
è passato dall'interfaccia utente di Compose alifecycle-runtime-compose
in modo che le sue API di assistenza basate su Compose possano essere utilizzate al di fuori dell'interfaccia utente di Compose. Grazie a Jake Wharton per il contributo. (I6c41b, b/328263448)- Esporre in modo coerente le proprietà di bias in tutti i sottotipi di allineamento basati su bias. (I69f0f, b/328088992)
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
viene rilasciato. La versione 1.7.0-alpha04 contiene questi commit.
Modifiche all'API
- Supporto della funzionalità di scrittura a mano libera con lo stilo per BasicTextField2 sui dispositivi successivi ad Android U. (I002e4)
- In questo CL aggiungiamo l'azione semantica
GetScrollViewportLength
per poter inviare al sistema a11y informazioni sui componenti su cui si scorre in composizione. Questo CL applica l'utilizzo di questa proprietà anche agli elenchi scorrevoli di Foundation. (Ic5fa2) FocusRequester.createRefs
è ora stabile (I4d92c, b/261436820)- È stato introdotto
DelegatableNode.requireView()
per consentire ai nodi di modifica di ottenere l'View
Android corrente senza leggere una composizione locale. (I40768) - Nuova API
Path.reverse()
per invertire la direzione di un percorso (I36348) - È stato aggiunto
hintLocales
aKeyboardOptions
per consentire aTextFields
di suggerire agli IME con impostazioni internazionali specifiche di preimpostare una lingua preferita. - Esponi la proprietà
platformLocale
daLocale
che restituisce l'oggetto della piattaforma sottostante, ad esempiojava.util.Locale
. (I921c6)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
viene rilasciato. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche all'API
- Ti presentiamo
ContextualFlowRow
eFlowRow
/Column
avanzati con MaxLines e Overflow. Siamo lieti di annunciare i miglioramenti apportati aFlowRow
eFlowColumn
sperimentali, che ora supportano maxLines e overflow, oltre al debutto diContextualFlowRow
eContextualFlowColumn
. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, doveContextualFlow*
è perfetto per un numero elevato di articoli che utilizzano una piccola configurazionemaxLines
e pulsanti dinamici +N per visualizzare altri risultati, mentreFlowRow
eFlowColumn
sono perfetti per un numero ridotto di articoli, meno di 100. Importante: per mantenere il comportamento esistente inFlowRow
oFlowColumn
, in cui tutti gli elementi vengono composti indipendentemente dal fatto che si adattino all'asse trasversale massimo, impostaoverflow
suFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante l'inizializzazione. ConsultaContextualFlowRowSample
eFlowRowSample
per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082) - Aggiungi la proprietà di semantica
maxTextLength
che deve essere impostata sui campi di testo che filtrano il numero massimo di caratteri consentiti. (I24d9f, b/170648072) - Il wrapper
Modifier.inspectable
è stato deprecato. Questa API crea più invalidazioni del modificatore del necessario, pertanto il suo utilizzo è sconsigliato. Gli sviluppatori sono invitati a implementare il metodoinspectableProperties()
suModifierNodeElement
se vogliono esporre le proprietà dei modificatori agli strumenti. (Ib3236) - Nuovo costruttore per
PopupProperties
che consente il controllo completo sui flagWindowManager.LayoutParams
. (Ibb33e, b/312485503) - È stato introdotto
DelegatableNode.requireLayoutCoordinates()
come modo per ottenere ilLayoutCoordinates
corrente di unModifier.Node
senza dover sostituireonPlaced
e memorizzare autonomamente le coordinate in una proprietà. (Ia8657) - È stato introdotto
DelegatableNode.currentLayoutCoordinates
come modo per ottenere ilLayoutCoordinates
corrente di unModifier.Node
senza dover sostituireonPlaced
e memorizzare autonomamente le coordinate in una proprietà. (Iaebaa) BasicTextField2
e le API correlate nel pacchettoandroidx.compose.foundation.text2
vengono spostate inandroidx.compose.foundation.text
. (I9f635)- È stata aggiunta una nuova API
ApproachLayoutModifierNode
per supportare la creazione di una logica di approccio personalizzata in un Nodo modificatore esplicito. È stata inoltre aggiunta una nuova APIDeferredTargetAnimation
sperimentale per le animazioni il cui target è sconosciuto al momento dell'inizializzazione. (I60745) - Nuove API
Path
per eseguire query sulla direzione di un percorso ed estrarre contorni da unPath
. (I63d04) - Sono stati aggiunti
PathHitTest
ePath.contains(Offset)
per verificare se unPath
contiene un punto specifico. (I3b218) TextLayoutResult
ora espone il metodogetLineBaseline(lineIndex)
. In questo modo è possibile leggere la linea di base di una riga arbitraria del testo, oltre alle proprietà di utilità esistentifirstBaseline
elastBaseline
. (Ide4e8, b/237428541)- È stato aggiunto un metodo per confrontare solo le annotazioni di due
AnnotatedStrings
. (I32659)
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti di
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.
Modifiche all'API
- È stato risolto un problema di compatibilità binaria con
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Il costruttore
PopupProperties
che accetta un parametrousePlatformDefaultWidth
non è più sperimentale. (I8f8d2) - È stato aggiunto un sovraccarico di
ComposeTestRule.waitUntil
che accetta una descrizione stringa della condizione da includere nel messaggio di timeout. (I9413e) - Nuova API di semantica
unset()
per rimuovere le proprietà di semantica aggiunte nella stessa catena di modificatori. Nuova proprietà di semanticaisOpaque
. (I8c583, b/317966058, b/246056649) originalEventPosition
è stato rimosso dal metodo di copia nell'API pubblica diPointerInputChange
. (I7bead)
Correzioni di bug
- È stato corretto un bug a11y che consentiva di fare clic su elementi diversi da schede e pulsanti di opzione quando erano selezionati. (I2181c)
VelocityTracker
ora avrà la correzione per l'aggiunta dei punti per impostazione predefinita. La correzione può comunque essere disattivata impostandoVelocityTrackerAddPointsFix
su false in caso di problemi. (Ib3877, b/269487059)- È stata corretta l'incompatibilità con le versioni precedenti dei file binari in
TextStyle
eParagraphStyle
. (I179f0, b/320819734)
Contributo esterno
- È stato aggiunto un nuovo costruttore
DialogProperties
senza parametri specifici della piattaforma. (I45829) - È stato aggiunto un nuovo costruttore
PopupProperties
senza parametri specifici della piattaforma. (I9a038)
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
viene rilasciato. La versione 1.7.0-alpha01 contiene questi commit.
Modifiche all'API
- È stato esteso
ClipboardManager
aggiungendoClipEntry
eClipMetadata
per supportare contenuti arbitrari come le immagini. - Aggiunge l'API
DeviceConfigurationOverride
aui-test
per consentire di eseguire l'override locale del comportamento dei contenuti in test, ad esempio per specificare dimensioni, lingua, direzione del layout, scala dei caratteri o tema disponibili.
Versione 1.6
Versione 1.6.8
12 giugno 2024
androidx.compose.ui:ui-*:1.6.8
viene rilasciato. La versione 1.6.8 contiene questi commit.
Correzioni di bug
- Sono state corrette le incoerenze nella scalabilità dei caratteri quando la scala dei caratteri è inferiore alla tabella più bassa definita. In questo caso, ora interpoliamo tra la scala lineare 1x e la tabella definita più bassa, in modo che le dimensioni dei caratteri aumentino in modo monotono con l'aumento delle scale. (Icbae3)
Versione 1.6.7
1° maggio 2024
androidx.compose.ui:ui-*:1.6.7
viene rilasciato. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
androidx.compose.ui:ui-*:1.6.6
viene rilasciato. La versione 1.6.6 contiene questi commit.
Correzioni di bug
- Corregge un raro arresto anomalo di
BasicTextField
.
Versione 1.6.5
3 aprile 2024
androidx.compose.ui:ui-*:1.6.5
viene rilasciato. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
androidx.compose.ui:ui-*:1.6.4
viene rilasciato. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
androidx.compose.ui:ui-*:1.6.3
viene rilasciato. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.ui:ui-*:1.6.2
viene rilasciato. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
7 febbraio 2024
androidx.compose.ui:ui-*:1.6.1
viene rilasciato. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di compatibilità con le versioni precedenti relativo a
SemanticsPropertyReceiver.performImeAction
eSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Ora i layout generano un errore durante la misurazione quando uno restituisce una dimensione anormalmente grande. Questo tipo di errore si verifica in genere quando la misurazione utilizza direttamente i vincoli massimi senza verificare la presenza di
Constraints.Infinity
. Il controllo aiuterà gli sviluppatori a trovare i problemi relativi alle dimensioni errate del layout anziché in un layout che lo contiene. (I339a9)
Versione 1.6.0
24 gennaio 2024
androidx.compose.ui:ui-*:1.6.0
viene rilasciato. La versione 1.6.0 contiene questi commit.
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.ui:ui-*:1.6.0-rc01
viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.
Correzioni di bug
- Implementazione ottimizzata della grafica vettoriale per migliorare le prestazioni riducendo al minimo le ricostruzioni aggiuntive.
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.ui:ui-*:1.6.0-beta03
viene rilasciato. La versione 1.6.0-beta03 contiene questi commit.
Nuove funzionalità
- Ora è possibile scollegare un
LayoutCoordinates
senza scollegare il nodo. Evita questo problema nello strumento di controllo del layout di Compose (If693)
Correzioni di bug
PlatformImeOptions
ora è una classe concreta anziché un'interfaccia. (If40a4)- Sono state corrette le ricostruzioni aggiuntive a valle causate dal fatto che a
LocalSoftwareKeyboardController
eLocalTextInputService
venivano forniti nuovi valori ogni volta che veniva eseguita una ricostituzione della radice. (I42190, b/310510985)
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta02
viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.ui:ui-*:1.6.0-beta01
viene rilasciato. La versione 1.6.0-beta01 contiene questi commit.
Modifiche all'API
- Il modificatore
DragAndDropTarget
ora prende in modo esplicito ilDragAndDropTarget
di ricezione e ha un lambda per attivare una sessione di trascinamento. Ora esistono due funzioni di fabbrica per unDragAndDropModifierNode
. Uno per ricevere i trasferimenti e uno per trasferire i dati (I69481) maximumFlingVelocity
aggiornato in modo da essere rappresentato come numero decimale. La documentazione è stata aggiornata per maggiore chiarezza in merito all'unitàmaximumFlingVelocity
. (I8adc7)onDragAndDropStart
nella fabbricaDragAndDropModifierNode
è stato rinominato inacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
è stato aggiunto al modificatoredragAndDropTarget
per accettare da una sessione di trascinamento. Questa funzione lambda restituisce unDragAndDropTarget
valido se ti interessa una sessione di trascinamento. Altri lambda per l'elaborazione degli eventi di trascinamento sono stati sostituiti da questo. È stata aggiunta una funzione di fabbricaDragAndDropTarget
per ricevere dalle sessioni di trascinamento (Iebf3a)DragAndDropInfo
è stato rimosso come tipo.DragAndDropModifierNode.drag
ora accetta i parametri per la lambdaDrawScope
transferData
, la dimensione della decorazione e la decorazione trascinataDragAndDropTarget
ha metodi per eventi di trascinamento specifici anziché essere un singolo metodo astrattoonDragAndDropEvent
nella funzione di fabbrica per unDragAndDropModifierNode
è stato rinominato inonDragAndDropStart
per comunicare meglio che ilDragAndDropTarget
fornito è valido solo per una determinata sessione di trascinamentoDragAndDropEventType
è stato rimosso (I645b1)PlatformTextInputModifierNode.runTextInputSession
è stato rinominato inestablishTextInputSession
. (I03cd0)Migliora i nomi dell'API dei nodi percorribili per renderli più comprensibili. (Ia4474)
Sostituisci
OriginalText
conTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
rinominato inrunTextInputSession
. (Ie9c6b)Gli elementi secondari di
SubcomposeLayout
(e layout comeLazyColumn
basati su questo) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di testassertIsDeactivated()
per testare questi nodi. Le altre API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)FocusDirection.In
eFocusDirection.Out
sono stati rimossi, utilizzaFocusDirection.Enter
eFocusDirection.Exit
(I2f660)Le API
SwipeToReveal
Material (per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che comporta una interruzione del servizio. Consulta la demo e il codice di esempio per esempi su come utilizzare la nuova API. (Ia8943)Il costruttore
FontStyle(int)
è deprecato. UtilizzaFontStyle.Normal
oFontStyle.Italic
. (I66610)Interfaccia
FontScalable
rinominata inFontScaling
(Ie804a)
Correzioni di bug
SoftwareKeyboardController.show()
non mostrerà più la tastiera software se non è attivo nessun editor di testo. (I2165a, b/301477279)- Gli eventi di tasti hardware Up per i tasti che non hanno ricevuto un evento Down nella stessa visualizzazione di composizione verranno ora ignorati. (Ib37b4, b/305518328)
- È stato aggiunto il supporto del renderer per il gradiente a scorrimento in
ArcLine
. (I4d5bb) - Implementa equals e hashcode per
PageSize.Fixed
. (Ie3ede, b/300134276) - Risolvere il problema di compatibilità binaria con la modifica dell'Inserimento finestra (Iee695)
- Rimuovi il livello di base del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza questo livello. (I55555)
- I
TestDispatcher
passati comeeffectContext
ai test di composizione verranno ora utilizzati per creare i test e i frame dei clock. (Ia7178)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
viene rilasciato. La versione 1.6.0-alpha08 contiene questi commit.
Modifiche all'API
- La funzione lambda
onDrawDragShadow
diModifier.dragAndDrawSource
è stata rinominatadrawDragDecoration
e il parametro size diDragAndDropInfo
è stato rinominatodragDecorationSize
. (Id0e30, b/303904810) - Inserisci
SemanticsNodeInteraction.isDisplayed()
eSemanticsNodeInteraction.isNotDisplayed()
per verificare se un nodo corrispondente è visibile o meno senza eseguire anche un'affermazione al riguardo. (I2c196, b/302100809) - È stato introdotto un valore
Unspecified
speciale per i campiTextAlign
,TextDirection
,Hyphens
eLineBreak
diParagraphTextStyle
per sostituirenull
. Poiché queste classi sono classi in linea, sostituendo nullable con Unspecified, evitiamo la boxing del tipo primitivo. I costruttori, i getter e altri metodi inTextStyle
e nello stile di paragrafo sono stati aggiornati per accettare i parametri menzionati come tipi non null. (I4197e, b/299490814) - Aggiungi il sovraccarico
GoogleFont
per la lettura di unGoogleFont
da XML. (If8f59) - Ho reso
LoremIpsum
PreviewParameterProvider
un corso aperto. (I41bf5, b/266918816, b/300116360)
Correzioni di bug
FontFamilyResolver
ora utilizzaDispatchers.Main
per le coroutine di gestione della cache. (Ie8dd9)AndroidViewBinding
ora rimuove in modo sincrono le istanze diFragment
gonfiate includendo unFragmentContainerView
nel layout come parte del suoonRelease
utilizzandocommitNow
(anziché ilcommit
utilizzato in precedenza), risolvendo così i problemi relativi al metodo di modifica in tempo reale con la sostituzione della composizione in caso di modifiche. (I58fbf)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
viene rilasciato. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche all'API
- È stato introdotto
PlatformTextInputMethodTestOverride
per scrivere test per gli editor di testo personalizzati. (Id159b) - Aggiunge il modificatore
dragAndDropSource
per avviare le sessioni di trascinamento e il modificatoredragAndDropTarget
per ricevere dalle sessioni di trascinamento. (Ib7828, b/286038936) - Sono state aggiunte le raccolte
ColorList
eColorSet
che evitano le allocazioni. (I744bd) - È stato aggiunto il flag temporaneo
DisableNonLinearFontScalingInCompose
per disattivare il ridimensionamento dei caratteri non lineari. ImpostaDisableNonLinearFontScalingInCompose = true
nei test se hai bisogno di tempo per ripulire i dati. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)
Correzioni di bug
- Analisi ottimizzata degli elementi XML drawable vettoriali. (Ibb015)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
viene rilasciato. La versione 1.6.0-alpha06 contiene questi commit.
Modifiche all'API
- Ulteriori ottimizzazioni alle icone Material. (I3e08d)
- Aggiunta la possibilità di attraversare l'albero dei modificatori verso l'alto/verso il basso per trovare nodi simili. (I2d234)
- È stato aggiunto il callback
onRestoreFailed()
al modificatorefocusRestorer()
(Ie1d43) - Sono state aggiunte annotazioni androidx a varie API di grafica per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro ancora. (Id65c8, b/290950582) - Aggiungi
showSystemUi=true
alla definizione diPreviewScreenSizes
(Ib61d3)
Modifiche al comportamento
- Ora Scrivi utilizza il ridimensionamento dei caratteri non lineari per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è superiore al 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, ma quelle del testo già grande aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente in modo da rimanere proporzionali all'altezza prevista della scala del 100%. Per saperne di più, consulta le best practice per la scalabilità dei caratteri. (I11518)
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
viene rilasciato. La versione 1.6.0-alpha05 contiene questi commit.
Modifiche all'API
- Attiva l'acquisizione di contenuti in
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Le velocità di lancio nei componenti View come
ScrollView
eRecyclerView
sono limitate aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ora contiene la propria versione dimaximumFlingVelocity
, che ora si applica aDraggable
. (Ibf974) - Aggiunge lo scaffolding iniziale per supportare le API di trascinamento della piattaforma. (If84ce)
- Aggiungi
deviceId
aRotaryScrollEvent
(Iba3bf) - Aggiornamento dell'API
ui-tooling
Devices per includere i dispositivi più recenti (Ib25b4)
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
viene rilasciato. La versione 1.6.0-alpha04 contiene questi commit.
Modifiche all'API
- È stato aggiunto un metodo per disattivare
ReusableComposition
, rimuovendo le osservazioni, ma mantenendo invariati i nodi. La composizione disattivata può essere riattivata chiamandosetContent
. (Ib7f31) - Aggiungi l'interfaccia
ReusableComposition
per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775) Modifier.focusGroup
è stato promosso ad API stabili. (I7ffa3)- Sono state aggiunte annotazioni androidx a varie API di grafica per specificare
ColorInt
,FloatRange
,IntRange
,Size
e altro ancora. (I70487, b/290950582) - L'API
ColorFilter
è stata aggiornata in modo da avere tipi di sottoclassi concreti per una maggiore ispezionabilità dei parametri. (I5fe29) - Introduzione della libreria wear-tooling-preview per elencare i dispositivi Wear validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
- È stata creata l'interfaccia
FontScalable
per gestire la parte di ridimensionamento dei caratteri dell'interfaccia Density. (I2cf3f)
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
viene rilasciato. La versione 1.6.0-alpha03 contiene questi commit.
Modifiche all'API
- Nuovo tipo di transizione di entrata/uscita che ridimensiona i contenuti in base alle dimensioni del contenitore animato durante l'animazione di entrata e uscita.
LookaheadScope
L'interfaccia e la funzionalità Composable sono ora stabili. (Ifb2ce) - È stato aggiunto il supporto per la configurazione di
privateImeOptions
(Idb772)
Correzioni di bug
PopupPositionProvider.calculatePosition
ora aggiorna automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547)- È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando
readOnly
è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quandoreadOnly
veniva modificato da true a false quando era attivo. (I34a19, b/246909589) - Applicazione espansa delle asserzioni globali nei test dell'interfaccia utente. (I1f90d)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
viene rilasciato. La versione 1.6.0-alpha02 contiene questi commit.
Modifiche all'API
- È stata aggiunta un'interfaccia di ricerca dei servizi che può essere implementata dagli implementatori della composizione e che consente a un'implementazione della composizione di delegare a un'altra composizione la ricerca dei servizi delegati alla composizione originale. Non deve essere chiamato direttamente e viene utilizzato per abilitare la creazione di API sperimentali nel runtime che possono essere trovate nelle versioni con wrapping del compositore, come il modulo UI. (I296b9)
- API
PlatformTextInput*
completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
eLocalSoftwareKeyboardController
non sono più sperimentali. AncheLocalSoftwareKeyboardController
è ora unCompositionLocal
corretto. (I4c364)LookaheadLayout
eLookaheadLayoutScope
sono stati ritirati da alcune release e ora sono stati rimossi. Le API sostitutive sonoLookaheadScope
e possono funzionare con qualsiasi layout. (I12ac3)- È stato aggiunto
SemanticsNodeInteraction.requestFocus
come modo più pratico e rilevabile per richiedere lo stato attivo nei test. (Ie8722) - Aggiunta di API sperimentali per la registrazione di asserzioni globali, da utilizzare in futuro dai framework di test. (I12d77)
Correzioni di bug
- La prima chiamata del callback
update
diAndroidView
verrà ora posticipata fino all'attacco della visualizzazione, anziché essere eseguita quando viene applicata la composizione che introduceAndroidView
. Questo corregge un bug per cui il callbackupdate
non veniva invalidato se uno stato letto veniva modificato immediatamente da un effetto. (Ie9438, b/291094055)
Versione 1.6.0-alpha01
21 giu 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
viene rilasciato. La versione 1.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Supporta l'anticipazione in
LazyList
. In questo modo,LazyList
nel passaggio di look-ahead può ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi,AnimatedVisibility
e così via) e calcolare le dimensioni e la posizione del look-ahead per tutti gli elementi secondari. Dopo il passaggio di sguardo avanti, i figli diLazyList
potrebbero animarsi indipendentemente dalla realtà vista nel passaggio di sguardo avanti.
Modifica del comportamento: includeFontPadding ora è false per impostazione predefinita in Compose
includeFontPadding
ora è false per impostazione predefinita (21d806) in Componi.
includeFontPadding
è un attributo precedente che controlla se includere o meno una spaziatura interna aggiuntiva sopra la prima e l'ultima riga del testo per adattarsi a eventuali caratteri che potrebbero estendersi sopra o sotto le linee di base del testo.
L'aggiornamento di questa versione di Componi modificherà il modo in cui tutti i testi vengono visualizzati nell'interfaccia utente rimuovendo il rivestimento extra sopra la prima e l'ultima riga di ogni testo visualizzato.
A seconda dei requisiti dell'interfaccia utente e delle metriche dei caratteri in uso, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare blocchi come: - Test di screenshot non funzionanti. Correggi l'interfaccia utente, se necessario, e rigenera le immagini di riferimento. - Il testo è leggermente fuori allineamento. Rimuovi eventuali spaziatura interna personalizzata negativa o aggiungi spaziatura interna, se necessario.
Puoi attivare includeFontPadding
utilizzando PlatformTextStyle
per ogni testo:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Puoi attivare includeFontPadding
per tutti i tuoi testi configurando gli stili Material. Tieni presente che i nomi dei parametri variano tra M2 e M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Puoi scoprire di più su Compose includeFontPadding
nella documentazione per gli sviluppatori e in questo post del blog.
Se riscontri problemi/bug relativi a questa modifica, segnalali utilizzando il tracker dei problemi.
Modifiche all'API
- Supporto
InputConnection#requestCursorUpdates
(I0c69b) - Aggiunti
FocusRequester.saveFocusedChild
eFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - Aggiungi il tipo
ResourceResolutionException
per avvolgere gli oggetti da lanciare lanciati durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset di cui non è stato possibile il caricamento. (I19f44, b/230166331, b/278424788) - Accessibilità ottimizzata per le prestazioni e le allocazioni di memoria. (Iede48)
- Sono state aggiunte proprietà e azioni di semantica per supportare la traduzione del testo. (I4a6bc)
- Nuova proprietà in
IntrinsincMeasureScope
e le relative implementazioni (ad es.MeasureScope
) per indicare se il passaggio di misura corrente è un passaggio di look-ahead. (I7a812) - È stata aggiornata l'API
DrawScope
per introdurre la possibilità di eseguire il retargeting del rendering in un'area dell'immagine diversa con dimensioni e densità/direzione del layout alternative. DrawContext
è stato aggiornato per supportare la configurazione della densità e dell'orientamento del layout, oltre a rendere configurabile la tela. (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*
del costruttoreTextMeasurer
sono stati rinominati indefault*
. (I940a5) SemanticsPropertyReceiver.performImeAction
è stato rinominato inonImeAction
eSemanticsActions.PerformImeAction
inOnImeAction
. (I8e841)- Aggiunge il parametro Wheel per distinguere uno scorrimento del mouse da un trascinamento nello scorrimento nidificato (in particolare in
NestedScrollConnection
). (Ie57e4) - È stata aggiunta l'API
asComposePaint
per sostituiretoComposePaint
, in quanto l'oggetto restituito racchiude l'android.graphics.Paint
originale (I22b4c) - Ritira
SemanticsProperties.imeAction
e sostituiscilo con un nuovo parametroSemanticsActions.performImeAction
. (I4a587) - È stato aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271)
- I metodi
Paragraph
che in precedenza generavano un'eccezioneAssertionError
per gli offset fuori intervallo ora generano un'eccezioneIllegalArgumentException
, come faMultiParagraph
. (I549d3, b/243338896)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.ui:ui-*:1.5.4
viene rilasciato. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.ui:ui-*:1.5.3
viene rilasciato. La versione 1.5.3 contiene questi commit.
Correzioni di bug
- (b/301209788) A volte
TextField
applicava erroneamente i comandi precedenti quando si metteva a fuoco e si inseriva l'input coreano, con la conseguente perdita di caratteri.
Versione 1.5.2
27 settembre 2023
androidx.compose.ui:ui-*:1.5.2
viene rilasciato. La versione 1.5.2 contiene questi commit.
Correzioni di bug
- È stata aggiunta una soluzione alternativa per i crash quando si accedeva all'API di scorrimento dell'accessibilità dal thread in background.
- Correggere l'aggiunta di nodi non collegati all'albero della semantica.
Versione 1.5.1
6 settembre 2023
androidx.compose.ui:ui-*:1.5.1
viene rilasciato. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando
readOnly
è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quandoreadOnly
veniva modificato da true a false quando era attivo. (I34a19, b/246909589)
Versione 1.5.0
9 agosto 2023
androidx.compose.ui:ui-*:1.5.0
viene rilasciato. La versione 1.5.0 contiene questi commit.
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.ui:ui-*:1.5.0-rc01
viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo che si verifica quando
SubcomposeLayout
viene utilizzato all'interno dimovableContentOf()
.
Versione 1.5.0-beta03
28 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta03
viene rilasciato. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6)
- È stato risolto un problema relativo ai composabili Dialog e Popup che poteva comportare il mancato ridimensionamento della finestra secondaria come previsto quando
usePlatformDefaultWidth=true
. (I112ee)
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.ui:ui-*:1.5.0-beta02
viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'API
asComposePaint
per consentire il consumo di un'istanzaandroid.graphics.Paint
da utilizzare in Compose
Correzioni di bug
- È stata aggiunta l'API
asComposePaint
per sostituiretoComposePaint
, in quanto l'oggetto restituito racchiude l'android.graphics.Paint
originale (I22b4c)
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.ui:ui-*:1.5.0-beta01
viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.
Modifiche all'API
- Sono state rimosse le allocazioni in ricreazione, animazioni a colori e
AndroidComposeView
(Ib2bfa) - Aggiunge la funzione di assistenza
CacheDrawModifierNode()
per consentire la delega (Icf8f9) - È stata introdotta la proprietà
isLookingAhead
, accessibile daMeasureScope
, per osservare i risultati di look-ahead e, se lo si desidera, influenzare il passaggio principale. (Ibf4c3) - Nuova proprietà di semantica
traversalIndex
, un valore float utilizzato per riordinare i nodi durante il traversale diTalkBack
(i valori più bassi vengono visualizzati prima). (I9a81b, b/186443263) - Ridenominazione della proprietà Semantics da
isContainer
aisTraversalGroup
(I121f6) ColorProducer
ora ha unoperator fun invoke
anziché unproduce
(I4a9a2)- Aggiungi l'API di trasformazione
Path
per applicare trasformazioni di traslazione/scala/rotazione agli oggetti percorso. (I23434, b/233772232) - Il metodo di
ColorProducer
si chiamaproduce
. (I78bde) - Rinomina
toFrameworkColorSpace
intoAndroidColorSpace
(I4f547) - Rinomina
ColorLambda
inColorProducer
. (I73b1a) - Introduzione di API per la conversione tra i tipi di spazi di colore Android e Compose. (Ie7db4, b/279979665)
- È stato aggiunto un parametro di colore a
BasicText
per consentire di animare o impostare il colore del testo in modo efficiente. (Iffd88, b/246961787) TextRange.constrain
rinominato inTextRange.coerceIn
. (I31be2)- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Sono state stabilizzate molte API di testo, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è più deprecato. La nostra intenzione originale era rimuovere il campo, ma i feedback indicano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la ritirata viene rimossa dal campo (I98e96, b/277703184)- È stato aggiunto il metodo pubblico
TextRange.constrain
. (I97912) - Ora i
UrlAnnotation
inAnnotatedString
possono essere aperti tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta l'azione di semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Il costruttore
LineHeightStyle.Alignment(topRatio)
viene promosso all'API stabile. (I79c32, b/261565383) TextMeasurer
e le API correlate non sono più sperimentali. (I74647, b/261581753)- È stata aggiunta l'azione di 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) - Il nome del parametro value per
Enum.valueOf
è stato modificato (Ia9b89) - Altre eccezioni lanciate da valueOf dell'enum (I818fe)
- È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni di input di testo personalizzati che comunicano direttamente con le API di piattaforma. (I58df4) - È stato aggiunto il parametro
BlendMode
ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. Solo ridenominazione. (I07af5) - Valori DPI aggiornati dei dispositivi di riferimento
@Preview
(Id6151, b/254528382) - Aggiungi i parametri
brush
ealpha
aBasicText
per animare o impostare in modo efficiente il pennello di testo. - Definisci tipi lambda senza casella per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)
Correzioni di bug
- Sono state rimosse più allocazioni nel monitoraggio della velocità del cursore (I26bae)
- Riduzione delle allocazioni nella gestione dell'input del layout e del cursore (I5333a)
- Ottimizza l'utilizzo della memoria di Vector e il rendering dei primi frame (I2f3c6)
- Sono state rimosse le allocazioni 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
androidx.compose.ui:ui-*:1.5.0-alpha04
viene rilasciato. La versione 1.5.0-alpha04 contiene questi commit.
Nuove funzionalità
Modifier.Node
Miglioramenti alla delega È stata aggiunta la possibilità avanzata 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 del mittente doveva essere delegata esplicitamente al nodo del destinatario. Dopo questa modifica, le interfacce dei nodi verranno delegate implicitamente, a meno cheDelegatingNode
non le sostituisca esplicitamente. (67352bc)
Modifiche all'API
- Presenta
NestedScrollModifierNode
, unNestedScroll Modifier.Node
a cui è possibile delegare. (I69513) - Sono stati aggiunti i parametri
onReset
eonRelease
al composableAndroidViewBinding
, che rispecchia il composableAndroidView
e abilita il supporto per il riutilizzo della visualizzazione conViewBinding
. (I00b1e, b/276802519) - L'API Compose Path è stata aggiornata per supportare le operazioni di riavvolgimento al fine di supportare i casi d'uso di manipolazione frequente dei percorsi con un riutilizzo più rapido. (I7b797)
- È stato aggiunto
TextStyle.merge(...)
ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787) - Sono state stabilizzate molte API di testo, tra cui
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
non è più deprecato. La nostra intenzione originale era rimuovere il campo, ma i feedback indicano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la ritirata viene rimossa 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 delle finestre di dialogo non create dal composable
Dialog
. (I82551, b/262140644)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
viene rilasciato. La versione 1.5.0-alpha03 contiene questi commit.
Nuove funzionalità
- Nuovo comportamento predefinito per
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
che non hanno slot condizionali (ad es.TabRow
,Scaffold
,BoxWithConstraints
e così via) ora funzionano bene con le animazioni di previsione.
Modifiche all'API
- Il nuovo
intermediateMeasurePolicy
predefinito che riutilizza il criterio di misurazione dal passaggio di previsione consente ai sottotipiSubcomposeLayout
senza slot condizionali, comeScaffold
,TabRow
eBoxWithConstraints
, di funzionare con la previsione per impostazione predefinita. (Id84c8) - Ora il ricostruttore creato per una finestra Android bloccherà solo le chiamate a
withFrameNanos
anziché a tutte le composizioni quando riceve una notificaON_STOP
. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante diwithFrameNanos
verranno bloccate. (Id9e7f, b/240975572) - Modifica
motionEventSpy
in stabile. (Ic5ec4, b/261560988) - È stato aggiunto il metodo pubblico
TextRange.constrain
. (I97912) PlatformTextStyle.includeFontPadding
non è più deprecato per incoraggiare gli sviluppatori a utilizzare questa API di compatibilità per attivare e testare l'impostazioneincludeFontPadding
false. (I98e96, b/277703184)
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
viene rilasciato. La versione 1.5.0-alpha02 contiene questi commit.
Modifiche all'API
- Nuova API
SubcomposeLayout
che accetta un criterio di misurazione intermedio aggiuntivo per gestire la logica di misurazione/layout durante le animazioni basate su lookahead. (I017d3) - Ora PointerInput è lazy e utilizza Modifier.Node per un rendimento migliore (scopri la modifica minore del comportamento). (15dab9)
- Consente di passare dalle API sperimentali a quelle stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368)
- Le API sperimentali diventano stabili a
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Aggiunge un modo per creare un'istanza di
SuspendingPointerInputModifierNode
per implementazioni diModifier.Node
più complesse. (Ic4933) - Ora i
UrlAnnotation
inAnnotatedString
possono essere aperti tramite servizi di accessibilità comeTalkBack
. (If4d82, b/253292081) - È stata aggiunta un'API per intercettare le chiavi hardware prima che vengano inviate alla tastiera virtuale (I4f4c6, b/186800395)
- È stata aggiunta l'azione di semantica
InsertTextAtCursor
per i campi di testo. (I11ed5) - Le azioni di test relative al testo (ad es.
performTextInput
) ora richiederanno direttamente lo stato attivo, utilizzando l'azione di semantica, anziché fare clic sul campo. (I6ed05)
Correzioni di bug
- Le azioni di test di testo ora richiedono l'attivazione dei campi di testo. (Iab328)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
viene rilasciato. La versione 1.5.0-alpha01 contiene questi commit.
Modifiche all'API
- Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misura in intermediateLayout ha IntermediateMeasureScope come ricevente, che fornisce comodi CoroutineScope, LookaheadScope e MeasureScope.(Ibe2e5)
- LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti secondari in un ambito di previsione possono essere controllati direttamente dal criterio di misurazione principale. (Ibe2e5)
- Aggiunge
Modifier.Node#coroutineScope
per consentire a Modifier.Nodes di avviare le coroutine. (I76ef9) - Consenti a Modifier.Nodes di leggere CompositionLocals implementando l'interfaccia CompositionLocalConsumerModifierNode. (Ib44df)
- Propagazione della classe @Deprecated alla proprietà. (I882d1)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.ui:ui-*:1.4.3
viene rilasciato. La versione 1.4.3 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui
AndroidView
potrebbe non essere disposto correttamente se utilizzato con determinati modificatori. (I4dc77, b/274797771) - È stato corretto un bug nella ricerca in primo piano 2D che interessava i menu
DropDown
(b/276811828) - È stato corretto un bug nelle proprietà di entrata/uscita dello stato attivo personalizzate che eseguiva il blocco di entrata/uscita solo la prima volta che veniva invocato il blocco lambda (b/277234245)
- È stata corretta una regressione nel sistema di messa a fuoco che causava un arresto anomalo durante la lettura di
focusProperties
. (b/271324781, b/274897776)
Versione 1.4.2
19 aprile 2023
androidx.compose.ui:ui-*:1.4.2
viene rilasciato. La versione 1.4.2 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui
AndroidView
non riutilizzava correttamente i suoi modificatori, con potenziali comportamenti imprevisti e arresti anomali. (Ib67ee, b/275919849) - È stata corretta la regressione che impediva la visualizzazione della tastiera per i campi di testo all'interno di finestre di dialogo non create dal composable
Dialog
(I82551, b/262140644)
Versione 1.4.1
5 aprile 2023
androidx.compose.ui:ui-*:1.4.1
viene rilasciato. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Risolve un problema relativo a
ParentDataModifier
che non influisce suAndroidView
(b/274797771)
Versione 1.4.0
22 marzo 2023
androidx.compose.ui:ui-*:1.4.0
viene rilasciato. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco lazy in modo che non vengano eliminati quando non sono visibili. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API
Modifier.Node
sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Aggiunta nella proprietà di semantica
IsContainer
su Surfaces. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le piattaforme. (I63379) - È stato aggiunto un nuovo ruolo di accessibilità
DropdownList
. Questo può essere utilizzato per replicare il comportamento diTalkBack
quando si mette a fuocoandroid.widget.Spinner
. (I177e5, b/236159001) - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - Ora i test dell'interfaccia utente di Android Compose eseguono passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato inattivo (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che eseguono verifiche sui singoli frame delle animazioni del layout. (I8ea08, b/222093277) - È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7)
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.ui:ui-*:1.4.0-rc01
viene rilasciato. La versione 1.4.0-rc01 contiene questi commit.
Modifiche all'API
- È stata aggiunta una sovraccarica della funzione componibile
AndroidView
, che accetta il parametroonReset
. Consente di riutilizzare le istanze di View quando il relativo nodo nella composizione viene eliminato e riutilizzato in modo compatibile. Questo è particolarmente utile perLazyRows
eLazyColumns
di Visualizzazioni. (I3f10d, b/230099236) - È stata introdotta una nuova API
PlatformTextInputAdapter
di basso livello per la creazione di implementazioni di input di testo personalizzati che comunicano direttamente con le API di piattaforma. (I58df4)
Correzioni di bug
- L'azione di semantica
SetText
diBasicTextField
ora aggiorna il buffer di testo utilizzando lo stesso percorso del 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
androidx.compose.ui:ui-*:1.4.0-beta02
viene rilasciato. La versione 1.4.0-beta02 contiene questi commit.
Modifiche all'API
- È stata rimossa l'API
modifierElementOf()
. Espandi direttamente daModifierNodeElement
. (I2256b) - È stato aggiunto un nuovo callback
Modifier.Node.onReset()
che consente di reimpostare alcuni stati locali per gestire correttamente la situazione quandoLayout
verrà riutilizzato (ad esempio come elemento diLazyColumn
). È stato correttoFocusTargetModifierNode
per reimpostare correttamente lo stato attivo. (I65495, b/265201972) - È stato aggiunto il parametro
BlendMode
ai metodiDrawScope.drawText
,Paragraph.paint
eMultiParagraph.paint
per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508)
Correzioni di bug
- Algoritmo di ordine dell'attenzione per l'accessibilità migliorato, ad esempio le barre superiore/inferiore vengono lette più spesso rispettivamente per prima/ultima (74e9c5)
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.ui:ui-*:1.4.0-beta01
viene rilasciato. La versione 1.4.0-beta01 contiene questi commit.
Modifiche all'API
PinnableContainer.PinnedHandle.unpin()
è stato rinominato inrelease()
(I4667a)- Sono stati aggiunti
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
ewaitUntilDoesNotExist
come API sperimentali aComposeTestRule
, estendendo l'APIwaitUntil
in modo da accettare qualsiasi comparatore e qualsiasi numero di nodi. Per ulteriori informazioni, consultaComposeTestRule
. (Ifa1b9, b/226934294) - Rinomina
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
. (I07af5) - Ho rimosso
GoogleFont.Provider.AllFontsListUri
e ho inserito un link al documento in ktdoc. (I16f29)
Correzioni di bug
- Aggiungi documenti per
AndroidFont.fontVariationSettings
(I7d9e2)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
viene rilasciato. La versione 1.4.0-alpha05 contiene questi commit.
Modifiche all'API
- Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni
runComposeUiTest
ecreate*ComposeRule
che accettano parametriCoroutineContext
. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamateLaunchedEffect
erememberCoroutineScope()
al suo interno. (I10614, b/265177763) - Aggiungere una nuova API per monitorare la velocità 1D (If5a82)
FocusRequester
è ora contrassegnato come@Stable
. (I580ee)- Rimuovi un'annotazione sperimentale dal costruttore
DialogProperties
che accetta un parametrousePlatformDefaultWidth
. (Ic4048) - È stata aggiunta la funzione per calcolare la posizione e la tangente a una distanza su un percorso con
PathMeasure.getPosition()
ePathMeasure.getTangent()
(I3b47c) - Il
PlatformParagraphStyle
è stato rimosso il set pubblico esposto per errore. (I07f47) - Più tipi/valori null delle funzioni in linea/nascoste ritirate (I24f91)
- Aggiungi
AnnotatedString.hasStringAnnotations
per eseguire query sulle annotazioni con allocazioni pari a zero. (I94dfe, b/246960758) - È stato aggiunto un nuovo sovraccarico per la funzione
TextMeasurer.measure
che accetta unString
come testo. (I47b2d, b/242705342) - Le API
LineBreak
eHyphens
in TextStyle sono state classificate come stabili. (Ic1e1d)
Contributo esterno
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
non vengono nuovamente deprecati. (I23a04, b/262648050)
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
viene rilasciato. La versione 1.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova API
PinnableContainer
che consente di bloccare gli elementi dell'elenco lazy in modo che non vengano eliminati quando non sono visibili. Ad esempio,Modifier.focusable()
utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010) - Il sistema di messa a fuoco viene riscritto utilizzando le nuove API
Modifier.Node
sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Aggiunta nella proprietà di semantica
IsContainer
su Surfaces. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le piattaforme. (I63379) - È stato aggiunto il nuovo ruolo di accessibilità
DropdownList
. Questo può essere utilizzato per replicare il comportamento diTalkBack's
quando si mette a fuocoandroid.widget.Spinner
. (I177e5, b/236159001) - Ora puoi utilizzare
PlatformTextStyle(emojiSupportMatch)
per disattivare facoltativamente l'elaborazione del supporto delle emoji per un singolo paragrafo. (Ia7100, b/139326806) - Ora i test dell'interfaccia utente di Android Compose eseguono passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato inattivo (ad es. tramite
waitForIdle
). Ciò potrebbe influire sui test che eseguono verifiche sui singoli frame delle animazioni del layout. (I8ea08, b/222093277) - È stato aggiunto
TextMotion
sperimentale aTextStyle
per definire il testo comeStatic(default)
o animato. UtilizzaTextMotion.Animated
se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7)
Modifiche all'API
- L'argomento
maxSize: IntSize
indrawText
è stato sostituito consize: Size
per essere in linea con le altre funzioniDrawScope
. Per impostazione predefinita,size
è impostato suSize.Unspecified
, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d) - È stato rimosso il costruttore di caratteri sperimentali deprecato. (I8a724, b/261435386)
- La classe di dati degli strumenti di UI
Group
ora ha un campo,isInline
, che indica se il gruppo è destinato a una chiamata a una funzione componibile in linea. SeisInline
ètrue
, la chiamata è a una funzione componibile in linea. Tuttavia, il valore potrebbe essere falso per le chiamate a funzioni composable in linea provenienti da moduli compilati con una versione del plug-in del compilatore di compose che non genera le informazioni sulle funzioni in linea. (Idb846) - È stata effettuata la transizione a una versione stabile di un certo numero di API precedentemente sperimentali
- L'API Rotary Scroll 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. Questo può essere utilizzato per rilevare le eccezioni non rilevate durante il caricamento asincrono dei caratteri. (Ibb481, b/261435386) - L'API
Font.loadingStrategy
è ora stabile. (I5937c, b/261435386) - L'API
GoogleFont
è ora stabile. (Ic90b0, b/261435386) TextUnit(float, TextUnitType)
ora è un'API stabile. (I90c84, b/261561612)pluralStringResource
ora è un'API stabile. (I09849, b/261439703)
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
viene rilasciato. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche all'API
- Rimozione di
ExperimentalComposeUiApi
daPointerIcon
(I23af8) - Introduci le azioni di accessibilità della pagina:
PageUp
,PageDown
,PageLeft
,PageRight
. Tieni presente che sono disponibili solo a partire dall'API 29. (Ida4ab) - La visualizzazione del parametro
rememberNestedScrollConnection
è stata aggiornata dalla visualizzazione principale a quella dell'host. (Ia5200) - È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli antenati. (I2ba9d, b/203141462)
- Utilizzato in
Clickable
per ritardare correttamente le interazioni con i tasti, quando i gesti potrebbero diventare eventi di scorrimento. - È stato corretto il problema per cui
Clickables
non ritardava correttamente le increspature quando veniva utilizzato all'interno di unScrollable ViewGroup
. - È stato aggiornato il riquadro e i riquadri per posticipare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
- Il nome
CompositingStrategy.Always
è stato rinominato inOffscreen
per indicare chegraphicsLayer
verrà sempre visualizzato in un buffer intermedio (I47dc1) - Il sovraccarico del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
- Sono state aggiunte nuove API sperimentali
PerfettoTrace.record {}
ePerfettoTraceRule
per acquisire tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di esaminare il comportamento e il rendimento del test. (I3ba16) - Nei test dell'interfaccia utente che utilizzano una regola di composizione, le interruzioni riprese durante i callback
withFrameNanos
non verranno inviate finché non sarà terminata l'esecuzione di tutti i callback del frame. Questo corrisponde al comportamento di composizione quando viene eseguito normalmente. Tuttavia, i test che si basano sul vecchio comportamento potrebbero non riuscire. Ciò dovrebbe interessare solo il codice che chiama direttamentewithFrameNanos
owithFrameMillis
e ha una logica esterna al callback passata a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Per esempi, consulta le modifiche al test di animazione in questo CL. - È stato aggiunto il parametro facoltativo
onPerformTraversals: (Long) -> Unit
al costruttore e alla funzione di fabbricaTestMonotonicFrameClock
per eseguire il codice dopo i callbackwithFrameNanos
, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670) - È stato aggiunto EmojiCompat a Scrivi (Ibf6f9, b/139326806)
- È stato aggiunto un nuovo parametro sfondo a
@Preview
per il supporto dei colori dinamici (I9f512)
Correzioni di bug
- Le notifiche di applicazione degli snapshot vengono ora inviate dopo che
Recomposer
ha completato l'applicazione delle modifiche. (Iad6c0, b/222093277) - Sono state introdotte modifiche in
captureToImage
per consentire l'acquisizione di screenshot in più finestre. Questa opzione è utile per i test degli screenshot che utilizzano i popup di composizione. (I169c5)
Aggiornamenti delle dipendenze
- Compose UI e Compose Material ora dipendono da Lifecycle 2.5.1. (I05ab0, b/258038814)
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
viene rilasciato. La versione 1.4.0-alpha02 contiene questi commit.
Modifiche all'API
GraphicsLayerScope
è stato aggiornato per mostrare le dimensioni attuali delgraphicsLayer
. Questo è utile per calcolare le trasformazionigraphicsLayer
in funzione delle dimensioni del componibile. (If8c43,b/181387080)- È stato introdotto
CompositingStrategy
per determinare quando utilizzare un livello di composizione offscreen per il rendering dei contenutigraphicsLayer
. L'opzione Automatico mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato l'alpha o unRenderEffect/Overscroll
. Sempre introdurrà sempre un buffer offscreen in cuiModulateAlpha
eviterà di utilizzare un buffer offscreen e, al contrario, modulerà ciascuna delle istruzioni di disegno registrate all'interno digraphicsLayer
. L'utilizzo diModulateAlpha
continuerà a sfruttare un buffer offscreen per gli utilizzi diRenderEffect/Overscroll
(I25e82, b/256382834) invalidateSubtree()
è stato aggiunto aModifier.Node
per consentire l'invalidazione di intere gerarchie per il layout e il disegno. (I4bd90)- Esegui la promozione di
rememberNestedScrollInteropConnection
alla versione stabile. È stata introdotta la possibilità di passare una visualizzazione principale arememberNestedScrollInteropConnection
. In questo modo, la visualizzazione personalizzata può reagire meglio alle limitazioni di scorrimento, in particolare nelle visualizzazioni non standard (ad es.ModalBottomSheetDialog
). (I9e107) - È stata aggiunta l'interfaccia
ObserverNode
che può essere utilizzata dalle implementazioni diModifier.Node
che devono ricevere una notifica quando un valore che avevano letto in precedenza è cambiato (I5728b, b/247716483) - È stato aggiunto un nuovo costruttore a
Paint
che accetta unandroid.graphics.Paint
nativo. È stata aggiunta anche una funzione di estensionetoComposePaint()
che converte un oggetto Paint nativo esistente in Compose Paint. (Ica91b) - Aggiungi nuovi
FontFamily.Resolver.resolveAsTypeface
da utilizzare su Android. (I8950b) - Aggiungi
ToolingState
per consentire agli strumenti di modificare gli stati interni di Composable (Ie6614) - Strumenti di refactoring per un supporto migliore delle nuove animazioni aggiunte (I8677b)
- È stato aggiunto il parametro
minLines
in Material e Material3 Text,TextField
eOutlinedTextField
che consente di impostare l'altezza minima del componente in termini di numero di righe (I4af1d)
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
viene rilasciato. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche all'API
- È stato aggiunto un nuovo metodo,
awaitEachGesture()
, per i rilevatori di gesti. Funziona in modo simile aforEachGesture()
, ma il ciclo dei gesti opera interamente all'interno diAwaitPointerEventScope
, quindi gli eventi non possono essere persi tra le iterazioni. forEachGesture()
è stato ritirato a favore diawaitEachGesture()
perché consente la perdita di eventi tra un gesto e l'altro. (Iffc3f, b/251260206)- Ritiro del riutilizzo degli oggetti di accessibilità in androidx. Abbiamo riscontrato che le variazioni del rendimento sono trascurabili anche nelle versioni supportate più vecchie. (I0a961)
- È stato aggiunto
DrawStyle
come attributo sperimentale aTextStyle
eSpanStyle
per consentire di disegnare il testo con il bordo. (If24b8, b/155421273) AnnotatedString.Builder
ora implementakotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ora dispone di un metodoappend(AnnotatedString, start: Int, end: Int)
per accodare una sottostringa di unAnnotatedString
e gli stili intersecati.- È stato aggiunto il parametro
DrawStyle
alle funzioni di pitturaParagraph
eMultiParagraph
che consente di disegnare il testo con il bordo. (Ic8102, b/155421273)
Contributo esterno
- Grazie per aver aggiunto
vighnesh
ai dispositivi TV nelle anteprime (Ie15cd)
Versione 1.3
Versione 1.3.3
11 gennaio 2023
androidx.compose.ui:ui-*:1.3.3
viene rilasciato. La versione 1.3.3 contiene questi commit.
Correzioni di bug
- Correzione di un arresto anomalo che si verifica a volte su Android 9 quando l'attività salva lo stato della visualizzazione Scrivi. (I0b755, b/260322832)
Versione 1.3.2
7 dicembre 2022
androidx.compose.ui:ui-*:1.3.2
viene rilasciato. La versione 1.3.2 contiene questi commit.
Correzioni di bug
- Aggiornamento per l'utilizzo di Profobuf 3.21.8, che evita un avviso di sicurezza in
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Versione 1.3.1
9 novembre 2022
androidx.compose.ui:ui-*:1.3.1
viene rilasciato. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
androidx.compose.ui:ui-*:1.3.0
viene rilasciato. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Nuova suite di API sperimentali
LookaheadLayout
(che consente comportamenti di animazione precedentemente impossibili) - Nuova suite API sperimentale
Modifier.Node
(alternativa aModifier.composed
con prestazioni superiori) - Supporto migliorato per gli inserti delle finestre.
- Supporto per il fuoco per i pad direzionali e la tastiera hardware in LazyLists.
- L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica che comporta una modifica del comportamento per alcuni sistemi di progettazione personalizzati; motivazione nelle note di rilascio della versione beta01)
- Molti miglioramenti minori e non inversi dell'API
- Molte correzioni di bug e miglioramenti delle prestazioni
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.ui:ui-*:1.3.0-rc01
viene rilasciato. La versione 1.3.0-rc01 contiene questi commit.
Modifiche all'API
- È stata aggiunta una nuova API sperimentale Hyphens per supportare l'inserimento automatico di trattini nel testo (Iaa869)
Correzioni di bug
- Per impostazione predefinita, i caratteri
DeviceFontFamilyName
non configurano le impostazioni delle variantiwght
eital
, ma utilizzano l'impostazione della piattaforma perTypeface
caricato. (Ia7a6d, b/246989332) - È stata corretta una perdita di memoria di
LazyColumn
:onModifierLocalsUpdated
non veniva chiamato con il valore predefinito quando i modificatori venivano riutilizzati (b/230168389)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta03
viene rilasciato. La versione 1.3.0-beta03 contiene questi commit.
Modifiche all'API
- Aggiungi opzioni per personalizzare il taglio a capo in Testo. (I86907)
- È stato modificato l'argomento
size:IntSize
conconstraints: Constraints
nel metodoTextMeasurer.measure
per supportare i vincoli di larghezza minima. (I37530, b/242707525)
Correzioni di bug
- L'API
BackHandler
di AndroidX Activity ora funziona all'interno di un composableDialog
. (I35342)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.ui:ui-*:1.3.0-beta02
viene rilasciato. La versione 1.3.0-beta02 contiene questi commit.
Modifiche all'API
- È stato aggiunto un sovraccarico sperimentale per Layout che accetta un elenco di più lambda di contenuti componibili, il che consente di trattare in modo diverso le metriche inserite in diversi lambda di contenuti (Ic1b4e)
Modifiche alle API Focus sperimentali:
FocusDirection.In
eFocusDirection.Out
sono deprecati e sostituiti daFocusDirection.Enter
eFocusDirection.Exit
. (Ia4262, b/183746982)- Sono state aggiunte due nuove proprietà di messa a fuoco, enter e exit, per specificare un comportamento personalizzato per
FocusManager.moveFocus(Enter)
eFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Ora puoi usare
FocusRequester.Cancel
per annullare uno spostamento dell'attenzione.FocusRequester.Cancel
può essere utilizzato in una delle seguenti proprietà di stato attivo: su, giù, sinistra, destra, successivo, precedente, inizio, fine, invio ed esci. (Ib300f)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.ui:ui-*:1.3.0-beta01
viene rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Riorganizzazione dei nodi modificatori
Il livello che gestisce le istanze Modifier/Modifier.Element
e coordina il loro comportamento su LayoutNodes
è stato sottoposto a una riorganizzazione sostanziale. Al momento, si tratta di un refactoring che non ha influito sull'API pubblica di nessuno dei numerosi modificatori in Compose e può essere visto come una modifica solo di implementazione. Ciò nonostante, si tratta di una modifica importante per diversi motivi. (Ie4313)
Riepilogo delle modifiche
Le API Modifier.Node
sperimentali aggiunte forniscono un'astrazione che consente di mantenere lo stato in un'istanza che verrà conservata con il ciclo di vita del nodo di layout e verrà allocata per nodo di layout e per utilizzo del Modifier.Element
corrispondente che lo ha prodotto.
In generale, questa astrazione fornisce un meccanismo alternativo per produrre modificatori con stato senza fare affidamento sulla struttura dell'API Modifier.composed
.
Rischio
Questa modifica è strettamente compatibile con le release precedenti ed è progettata per essere compatibile con le versioni precedenti in termini di comportamento osservabile, per quanto pratico e ragionevole. Detto questo, ci sono alcuni sottosistemi di compose che non sono stati toccati da questa riorganizzazione e è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e che non siano ancora stati trovati e corretti.
Esegui l'upgrade a questa release con cautela. Se ritieni che questo abbia causato un problema, ti invitiamo a comunicarcelo.
API sperimentali
Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "Nodo modificatore". I nodi Modifier vengono creati in seguito a
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Modifica che comporta una rottura del comportamento
L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp.
L'elevazione massima supportata per le finestre di dialogo e popup di Scrittura è stata ridotta da 30 dp a 8 dp. Questa modifica interessa sia le finestre di dialogo e popup personalizzate Material sia quelle ui. Questa modifica è stata apportata per attenuare un bug di accessibilità nelle versioni di Android precedenti a 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 una finestra di dialogo o di un popup personalizzato con un'elevazione impostata su livelli superiori a 8 dp. Valuta la possibilità di abbassare l'elevazione della finestra di dialogo o del popup. Se devi disattivare questo nuovo comportamento, ti consigliamo di creare una copia della finestra di dialogo o del popup con l'elevazione impostata. Questa operazione non è consigliata, in quanto l'accessibilità potrebbe essere influenzata negativamente e lo sviluppatore deve assicurarsi che la parte inferiore della finestra di dialogo o del popup sia interattiva e leggibile dai servizi di accessibilità.
Modifiche all'API
- Risolto un problema per cui
painterResource
non si aggiornava in base alle modifiche alla configurazione (I58e73, b/228862715) rememberTextMeasurer
non accetta più i parametriFontFamily.Resolver
,Density
oLayoutDirection
. Utilizza il costruttoreTextMeasurer
per fornire valori personalizzati per questi parametri. (Ia1da3)- È stata aggiunta la proprietà
DialogProperties.decorFitsSystemWindows
per consentire a Dialogs di supportareWindowInsets
. (I57742, b/229378542) - I costruttori dei caratteri sono stati spostati di nuovo nel file Kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3)
- È stato rimosso un operatore non necessario da diverse definizioni di uguaglianza. Questa operazione non ha alcun effetto. (I6c309)
FontVariation.Setting
è un'interfaccia sigillata per consentire API di clamping future. (I11021, b/143703328)- Aggiungi
CompositionGroup.findParameters
aSlotTree.kt
. In questo modo, gli strumenti possono recuperare i parametri per unCompositionGroup
senza dover analizzare l'intera tabella degli slot. (I124fe)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche all'API
LayoutCoordinates.findRootCoordinates()
è ora pubblico (I7fa37, b/204723384)- È stata aggiunta un'API sperimentale per ottenere il
LayoutCoordinates
inPlacementScope
. In questo modo, gli sviluppatori sanno dove posizionare i figli rispetto alla posizione attuale del layout. (I5482b, b/238632578) - È stato aggiunto
LayoutCoordinates.transformFrom
per ottenere la trasformazione della matrice da unLayoutCoordinates.transformFrom
all'altro.LayoutCoordinates
(Ic5ab1, b/238632578) - È stato ritirato
SemanticsModifier.id
e l'ID semantica è stato spostato inLayoutInfo.semanticsId
. (Iac808, b/203559524) - I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26 e versioni successive). (I900dd, b/143703328)
- Supporto dei caratteri variabili in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - I costruttori di caratteri ora accettano un elenco di
FontVariation.Setting
per la configurazione dei caratteri variabili sui dispositivi O e versioni successive. (I11a9d, b/143703328) - Aggiungi l'API
FontVariation
per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328) - Il costruttore
LineHeightStyle.Alignment
è ora pubblico (sperimentale) (I4bbbe, b/235876330) - Il paragrafo ora è expect|actual e definito per Android e computer. (Id387e, b/239962983)
- Interfaccia Paragrafo è ora un'interfaccia sigillata Paragrafo. Non esiste un caso d'uso per la sottoclassificazione di paragrafo e ti consigliamo di contattarci se questa modifica ti interessa. (If5247, b/239962983)
- È stata rimossa l'annotazione sperimentale da
PlatformTextStyle
eLineHeightStyle
. (I64bef) - Rifiuta
TextInputService.show|hideSoftwareKeyboard
. UtilizzaSoftwareKeyboardController
nel codice dell'app eTextInputSession
nel codice di gestione dell'IME. (I14e4c, b/183448615) - Aggiungere una nuova API per i tipi di animazione esistenti (I26179)
Correzioni di bug
- È stato aggiunto
@RequiresPermission
alle API che richiedono l'autorizzazionePOST_NOTIFICATIONS
nell'SDK 33 e versioni successive. (Ie542e, b/238790278)
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche all'API
- È stata aggiunta una nuova proprietà
PointerInputChange#pressure
per recuperare la pressione. (I45a5e, b/205164819) - È stato aggiunto
rememberTextMeasurer
per creare e ricordare facilmente le istanzeTextMeasurer
nella composizione. (I8d66e) Rect
,RoundRect
eMutableRect
ora supportano la sintassiin
di Kotlin per chiamare la funzionecontains
. (Ie42b0, b/238642990)- Rimuovi le funzioni non necessarie da
KeyInjectionScope
, in quanto possono essere facilmente implementate con parti più semplici dell'API. Le funzioni rimosse includonopressKeys
,keysDown
ekeysUp
. (I81d77) - I nomi delle costanti e dei parametri in
KeyInjectionScope
sono stati sottoposti a refactoring per includere il suffisso "Millis", dove le unità di queste costanti e parametri sono millisecondi. (Iabef5) - È stato aggiunto il metodo
toStringForLog()
aEditCommand
per risolvere i problemi di modifica del testo. (I53354, b/228862731) - È stata aggiunta la funzione di estensione
drawText
inDrawScope
per fornire un modo per disegnare testo con più stili su composabili e modificatori che operano su unDrawScope
comeCanvas
edrawBehind
. (I16a62, b/190787898) - È stata introdotta una nuova API sperimentale chiamata
TextMeasurer
che consente il calcolo del layout del testo arbitrario che crea risultati identici aBasicText
, indipendentemente dal runtime di Compose. (I17101) - Aggiungi
mapTree
aSlotTree.kt
. In questo modo, gli strumenti possono ispezionare l'oggettoSlotTree
senza prima creare una copia in memoria, come fa asTree. Per l'ispettore layout, questo comporta un miglioramento delle prestazioni di circa un fattore 10. (I5e113) - È stata modificata l'anteprima di composizione in modo che venga memorizzata in file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni
MultiPreview
dalle librerie. (I85699, b/233511976)
Correzioni di bug
- Quando aggiungi gli eventi
InputEventChange
al trackerVelocity
, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803) - Correggere l'errore NPE causato da
AnnotatedString.toUpperCase
quando sono presenti annotazioni. (I0aca2, b/210899140)
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche all'API
- Nuovo
LookaheadLayout
che supporta un passaggio di previsione prima della misura/del layout effettivi. Ciò consente un precalcolo del layout quando cambia, consentendo al layout/alla misurazione post-lookahead di utilizzare le dimensioni/la posizione precalcolate 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 al tipo di pennello di
TextStyle
eSpanStyle
per modificare l'opacità dell'interoText
. (Ic2fac, b/234117635) - È stato introdotto il tipo di annotazione
UrlAnnotation
e i metodi associati per supportare il collegamentoTalkBack
inAnnotatedString
. (I1c754, b/231495122) - Spostamento della funzionalità di utilità nel runtime (I4f729)
Correzioni di bug
TextLayoutResult.getLineForOffset
non viene lanciato. (Idc5d6, b/235876324)
Contributo esterno
- È stata aggiunta una nuova API
WindowInfo.keyboardModifiers
per osservarne lo stato all'interno di funzioni composable o tramite snapshotFlow (Icdb8a)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.ui:ui-*:1.2.1
viene rilasciato. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- Errore nullpointer corretto nell'inspector (b/237987764)
- È stata corretta un'eccezione di conversione di tipo di classe durante il ricordo nell'inspector (b/235526153)
Versione 1.2.0
27 luglio 2022
androidx.compose.ui:ui-*:1.2.0
viene rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
Miglioramenti al passaggio del focus:
- Lo scorrimento basato sul focus degli elenchi lazy ora funziona, utilizzando la nuova API di base
BeyondBoundsLayout
- Nuove API di personalizzazione del comportamento in
FocusOrder
eFocusProperties
- Miglioramento del comportamento con la tastiera fisica o il telecomando della TV
- Lo scorrimento basato sul focus degli elenchi lazy ora funziona, utilizzando la nuova API di base
Nuove API per:
- Inseti finestra
- Primitive di base 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
androidx.compose.ui:ui-*:1.2.0-rc03
viene rilasciato. La versione 1.2.0-rc03 contiene questi commit.
- Nessuna modifica dalla versione 1.2.0-rc02.
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc02
viene rilasciato. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.ui:ui-*:1.2.0-rc01
viene rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Modifiche all'API
- Le interfacce nelle librerie di composizione ora vengono create utilizzando i metodi di interfaccia predefiniti di JDK8 (I5bcf1)
- A
KeyInjectionScope
sono state aggiunte funzioni di ordine superiore per iniettare pressioni dei tasti mentre altri tasti sono premuti o attivati. Queste funzioni includonowithKeysDown
,withKeysToggled
e così via. Sono state aggiunte anche proprietà per verificare se un determinato meta tasto è premuto, ad esempioisCtrlDown
per verificare se uno dei tasti di controllo è premuto. ConsultaKeyInjectionScope
per la documentazione di ogni funzione. (I9f6cd, b/229831515) - È stato introdotto un
OverscrollEffect
sperimentale per consentire effetti di scorrimento personalizzati, oltre ai sovraccarichi diModifier.scrollable
che lo accettano. - La versione sperimentale
LocalOverScrollConfiguration
è stata spostata dafoundation.gesture
al pacchetto di base e rinominata inLocalOverscrollConfiguration
(If19fb, b/204650733) - Rinomina
runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
, in modo che sia in linea concreateEmptyComposeRule()
(I6fed7)
Versione 1.2.0-beta03
1° giugno 2022
androidx.compose.ui:ui-*:1.2.0-beta03
viene rilasciato. La versione 1.2.0-beta03 contiene questi commit.
Modifiche all'API
- Sono stati aggiunti
pressKeyTimes
,isCapsLockOn
e amici aKeyInjectionScope
. Inoltre, l'API ora supporta pattern di inserimento combinati di mouse e tastiera, ad esempio il clic su 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 input multimodale conperformMultiModalInput
. ConsultaKeyInjectionScope
per la documentazione dell'API. (Ic5000, b/229831515) - Aggiungi un nuovo
GoogleFont.Provider.AllFontsListUri
per recuperare l'origine internet canonica di Google Fonts supportata da Android. - Miglioramento dei messaggi di errore riattivati quando non è possibile caricare Google Fonts nella composizione. (I0416c)
Correzioni di bug
- Quando aggiungi gli eventi
InputEventChange
a Velocity Tracker, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (I51ec3, b/216582726, b/223440806, b/227709803) - L'impostazione
Show Layout Bounds
verrà ora applicata ai composabili immediatamente dopo l'abilitazione/la disattivazione dal riquadro delle impostazioni rapide, senza dover uscire e rientrare nell'attività. (I843d5, b/225937688) - La ricerca di stringhe di accessibilità non attiva il caricamento dei caratteri. In precedenza, tentava di caricare i caratteri per
StyleSpans
, il che poteva causare arresti anomali seFontFamily.Resolver
era stato sovrascritto. (I4609d) - La pressione del tasto Elimina avanti quando il cursore si trova alla fine di un campo di testo non causerà più arresti anomali.
- Ora
DeleteSurroundingTextCommand
eDeleteSurroundingTextInCodePointsCommand
richiedono che gli argomenti del costruttore siano non negativi. (Ica8e6, b/199919707)
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.ui:ui-*:1.2.0-beta02
viene rilasciato. La versione 1.2.0-beta02 contiene questi commit.
Modifiche all'API
- Riutilizzo della funzionalità in altri tipi di anteprima (I19f39)
Correzioni di bug
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
è stato rinominato inDisposeOnDetachedFromWindowOrReleasedFromPool
per riflettere meglio quando si verificano gli smaltimenti, anziché semplicemente quando non si verificano. (If15ca)
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.ui:ui-*:1.2.0-beta01
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima release beta di 1.2.
Modifiche all'API
- È stato aggiunto
BeyondBoundsInterval
sperimentale che può essere utilizzato dalle implementazioni personalizzate diLazyList
quando il layout degli elementi supera i limiti visibili (Ifabfb, b/184670295) - Le versioni con chiave di
Modifier.composed
sono ora API stabili (Ie65e4, b/229988420) - È stata semplificata l'API
rememberNestedScrollConnection
per utilizzare i locali di composizione per acquisire le informazioni sulla visualizzazione corrente (I67ca7) - L'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
ora possono essere utilizzate nell'ambito del file utilizzando il prefisso@file
. L'utilizzo di un'annotazione target a livello di ambito del file fa sì che il compilatore presuma che tutte le funzioni composable nel file siano destinate a essere il target dell'applicante 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 avere come target un altro applicatore deve fornire esplicitamente l'annotazione dell'indicatore target per l'applicatore desiderato. (I40804) È stata introdotta una nuova API di test sperimentale e indipendente dalla piattaforma:
interface ComposeUiTest
efun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, che possono essere utilizzate per eseguire test dell'interfaccia utente di Compose senza bisogno di unTestRule
. Per eseguire un test senza unComposeTestRule
, passalo come lambda arunComposeUiTest
e utilizza i metodi e i membri nell'ambito del riceventeComposeUiTest
, che sono gli stessi diComposeContentTestRule
.I valori
interface AndroidComposeUiTest
efun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
specifici per Android vengono aggiunti per fornire l'accesso all'attività sottostante, in modo simile aAndroidComposeTestRule
. Per un maggiore controllo, puoi creare un'istanza diclass AndroidComposeUiTestEnvironment
.L'implementazione per computer è
class DesktopComposeUiTest
, ma al momento non sono disponibili funzioni di esecuzione specifiche per computer.La migrazione di un test da
ComposeTestRule
aComposeUiTest
può essere eseguita come segue (esempio di 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 il momento,
ComposeContentTestRule
eComposeTestRule
non si estendono daComposeUiTest
, il che significa che le funzioni di estensione suComposeUiTest
non possono ancora essere chiamate nell'interfacciaTestRule
. QuandoComposeUiTest
verrà promossa a API stabile,ComposeContentTestRule
eComposeTestRule
verranno modificate in modo da estendersi daComposeUiTest
. (Ib4e90)LineHeightBehavior
è stato rinominatoLineHeightStyle
LineVerticalAlignment
è stato rinominatoLineHeightStyle.Alignment
LineHeightTrim
viene rinominatoLineHeightStyle.Trim
I valori del costruttore predefinito di
LineHeightStyle
vengono rimossi (I582bf, b/181155707)È stato aggiunto
Brush
aTextStyle
eSpanStyle
per fornire un modo per disegnare il testo con colorazione sfumata. (I53869, b/187839528)Gli attributi
trimFirstLineTop
etrimLastLineBottom
diLineHeightBehavior
sono stati sostituiti da un'unica enumerazione:LineHeightTrim
.LineHeightTrim
ha valori di 4 stati definiti da due valori booleani:FirstLineTop
,LastLineBottom
, Entrambi e Nessuno (Ifc6a5, b/181155707)LineHeightBehavior
è stato aggiunto aTextStyle
eParagraphStyle
.LineHeightBehavior
controlla se l'altezza della riga viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della riga 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
è falso. (I97332, b/181155707)Le funzioni
PlatformParagraphStyle.lerp
ePlatformSpanStyle.lerp
sono state modificate in modo da essere funzioni di primo livello (I9a268)
Correzioni di bug
- La documentazione di
PointerInputChange::copy
ora indica correttamente che si tratta di una copia superficiale. (I182f5) - Supporto dei puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
- È stata attivata l'impostazione predefinita
includeFontPadding
. È possibile disattivareincludeFontPadding
utilizzando l'attributoTextStyle.platformTextStyle
. In futuro cambieremo il comportamento predefinito, ma fino ad allora questa impostazione ci consente di integrare meglio i miglioramenti dell'altezza della riga (aosp/2058653) e risolvere i problemi di ritaglioTextField
. (I01423, b/171394808)
Contributo esterno
MouseInjectionScope.scroll(delta = someDelta)
ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, lo scorrimento avviene verso il basso) (Ifb697, b/224992993)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
viene rilasciato. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche all'API
- Le funzioni
pluralStringResource
sono state contrassegnate come sperimentali per consentire l'evoluzione in modo da supportare una migliore internazionalizzazione in futuro. (If24e4) - Paragraph e MultiParagraph ora accettano il parametro Constraints. Al momento, il passaggio di
Constraints.maxHeight
non ha alcun effetto, ma in futuro consentirà di eseguire alcuni calcoli, ad esempio l'ellittica in base all'altezza. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
ora accetta una classe personalizzata simile a MutableSet che non consente di aggiungere nuovi elementi. (Icd314)- PointerIcon ora è un'interfaccia
@Stable
(I9dafe) - Il consumo parziale (posizione OR verso il basso) è stato ritirato in
PointerInputChange
. Puoi utilizzareconsume()
per consumare completamente la modifica. Puoi utilizzareisConsumed
per determinare se qualcun altro ha già utilizzato la modifica. PointerInputChange::copy()
ora crea sempre una copia superficiale. Ciò significa che le copie diPointerInputChange
verranno consumate una volta consumata una delle copie. Se vuoi creare unPointerInputChange
non vincolato, utilizza il costruttore. (Ie6be4, b/225669674)- Attiva l'interoperabilità di scorrimento nidificato tra Scrivi e Visualizza nella direzione Scrivi > Visualizza. Ciò significa che un layout principale potrà ricevere delta di scorrimento nidificati da una visualizzazione di scorrimento nidificata. (If7949, b/174348612)
- Nuovo
SemanticsProperty testTagsAsResourceId
, che può essere utilizzato per rendere Compose conforme ai test UIAutomator progettati per il sistema View. (I39c20) - Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi
FontFamily.SansSerif
. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium nell'API 21-28. 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 istruttori di paragrafi e di più paragrafi hanno riordinato gli argomenti posizionali prima degli argomenti facoltativi. (Idafaa)
AndroidFont
ora accetta typefaceLoader come parametro del costruttore. (I2c971)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
viene rilasciato. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche all'API
- È stata aggiunta la nuova funzione
Snapshot.withoutReadObservation { ... }
. Consente agli utenti di eseguire la funzione lambda passata senza iscriversi alle modifiche dei valori dello stato letti durante questo blocco. Potrebbe essere utile nei casi in cui vuoi usufruire delle letture/scritture sicure per i thread basate su snapshot, ma vuoi essere in grado di leggere il valore senza causare ricostruzioni o rimisure non necessarie. (I9f365, b/214054486) - La proprietà di estensione
consumeWindowInsets
diComposeView
consente agli sviluppatori di disattivare il consumo di AndroidWindowInsets
. In questo modo, ogniComposeViews
separato nella gerarchia può applicareWindowInsets
senza interferire con gli altri. (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à di scorrimento nidificato tra View e Compose per le classi View che collaborano. Ciò significa che la composizione ora è in grado di inviare delta di scorrimento a una vista principale (cooperante). (I5d1ac, b/174348612)
FontFamily.Resolver
è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)Font(AssetManager, String, ...)
è deprecato e sostituito daFont(String, AssetManager, ...)
. Questa è un'API sperimentale. (I1c7a4)- Aggiungi il nuovo descrittore dei caratteri
Font(DeviceFontFamilyName)
per cercare facoltativamente i caratteri installati nel sistema durante le catene di riserva dei caratteri. (I30468, b/219754572) - È stata aggiunta una configurazione di compatibilità temporanea per
includeFontPadding
in TextStyle/ParagraphStyle.includeFontPadding
può essere modificato tramiteTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Si tratta di un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808) - Aggiungi l'estensione
GoogleFont.Provider.isAvailableOnDevice
per assistenza per il debug. (I64e31) - Aggiungi il costruttore
GoogleFont.Provider
da utilizzare con@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
ora si chiamaFont(GoogleFont)
, l'API rimane stabile. (I125f2)
Correzioni di bug
- È stato aggiunto il controllo lint a material/Scaffold per assicurarsi che venga utilizzata la spaziatura interna (Ifb111)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
viene rilasciato. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'azione di semantica
RequestFocus
per richiedere lo stato attivo sul target attivabile. (I17b71) - Analisi aggiornata degli elementi drawable vettoriali per supportare il mirroring automatico in modo da capovolgere i contenuti di un
VectorPainter
se l'orientamento del layout corrente è RTL. (I79cd9, b/185760237) Aggiornato i colori dell'ombra/dell'ambiente in modo che siano parametri finali di
Modifier.graphicsLayer
per la compatibilità con l'API (I3f864, b/160665122)Sono state aggiunte implementazioni predefinite al colore dell'ombra/dell'ambiente in
GraphicsLayerScope
per garantire modifiche non invasive all'APIÈ stata aggiunta l'ora dell'evento agli eventi RSB (Ief8ae)
FocusOrder
è stato unito aFocusProperties
efocusProperties()
ora dispone di tutte le funzionalità difocusOrder()
.FocusOrder
efocusOrder()
sono stati ritirati.focusOrder()
che accetta unfocusRequester
deve essere sostituito con un modificatorefocusRequester()
in combinazione confocusProperties()
. In questo modo, i modificatori hanno una separazione delle preoccupazioni più forte. (I601b7)L'upgrade sia di
RecyclerView
che diCompose
ora comporterà un rendimento dello scorrimento molto migliore per le RecyclerView con visualizzazioni Compose come elementi secondari.Aggiungi
ViewCompositionStrategy.Default
come mezzo per recuperare la strategia predefinita integrataAggiungi
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, che è la nuova strategia predefinita e gestisce correttamente i contenitori di pooling come RecyclerView. (If7282)È stato aggiunto il supporto per l'annotazione delle classi di annotazioni con @Preview come primo passaggio per l'aggiunta della funzionalità Multipreview. Queste annotazioni potrebbero essere utilizzate per annotare metodi Composable o altri classi di annotazioni, che potrebbero quindi essere considerati indirettamente annotati con l'attributo @Preview specificato. (I12eff)
Dispositivi di riferimento aggiunti all'elenco Dispositivi per @Preview (I071c9)
Correzioni di bug
- API di grafica vettoriale aggiornate per utilizzare l'annotazione composable corretta @VectorComposable anziché @UiComposable (I942bc)
- Rimuovi crossinline da
AnnotatedString.Builder.withStyle
(If84d5)
Contributo esterno
- compose-ui: aggiungi le proprietà
ambientShadowColor
espotShadowColor
aGraphicsLayerScope
(I1ba1a, b/160665122) - Le risorse plurali sono ora supportate tramite le funzioni
pluralStringResource
. (Ib2f23, b/191375123)
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
viene rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Modifiche all'API
TextToolbar
ora accetta argomenti lambda anzichéActionCallback
. (Ib2eb9, b/197950089)- La nullabilità in core e appcompat è stata aggiornata in modo da corrispondere a Tiramisu DP2 (I0cbb7)
- L'interfaccia misurata ora espone la proprietà parentData (I3313f)
Modifier.onPlaced
e l'interfacciaOnPlacedModifier
sono ora stabili. (Ib5482)- Evviva! L'animazione di composizione ora supporta l'impostazione "Scala durata animatore" dalle Opzioni sviluppatore. (I5a4fc, b/161675988)
- È stato aggiunto un modificatore
BeyondBoundsLayout
locale (If8b51, b/184670295) - Testo: includeFontPadding è ora disattivato per impostazione predefinita. I problemi di ritaglio dovuti a
includeFontPadding=false
vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808)
Correzioni di bug
ComposeContentTestRule.setContent
ora genera un messaggio di erroreIllegalStateException
se provi a impostare dei contenuti quando sono già presenti. (I888a5, b/199631334)- È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- Migliorare i sample 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
androidx.compose.ui:ui-*:1.2.0-alpha04
viene rilasciato. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche all'API
Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono di generare report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per il quale non è stata progettata.Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore di compose, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni composable astratte (come metodi di interface), campi o variabili globali che sono lambda composable (le variabili e i parametri locali vengono dedotti), o quando si utilizza
ComposeNode
o una funzione composable correlata.Per gli applicatori personalizzati, le funzioni composable che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneComposableTarget
per la funzione e per eventuali tipi di parametri lambda composable. Tuttavia, è consigliabile creare un'annotazione annotata conComposableTargetMarker
e poi utilizzare l'annotazione contrassegnata anzichéComposableTarget
direttamente. Un'annotazione componibile contrassegnata conComposableTargetMarker
è equivalente a unComposbleTarget
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 accetta loadingStrategy nell'API stabile. (Ief3d2)FontLoadingStrategy
ora è un'API stabile. (I1ee35, b/174162090)Supporto del caricamento dei caratteri asincroni in Testo (I77057, b/214587005)
Aggiungi l'API bridge per convertire
Font.ResourceLoader
personalizzato inFontFamily.Resolver
. (Ia0060)
Correzioni di bug
- I
FontFamily.Resolver
forniti vengono passati alle sottocomposizioni come Popup. - I
Font.ResourceLoader
forniti vengono passati alle sottocomposizioni come Popup. (I48fa5)
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
viene rilasciato. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche all'API
- I metodi
notifyFocusedRect
inTextInputSession
eTextInputService
sono stati deprecati e non verranno chiamati. Utilizza 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 i figli di
SubcomposeLayout
che hai precompilato. (I857ea) È stata aggiunta
movableContentOf
, che converte una funzione lambda componibile in una funzione lambda che sposta il relativo stato e i relativi nodi in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene conservato temporaneamente 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 gli osservatori vengono informati.Se una funzione lambda
movableContentOf
viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, quando le chiamate escono dalla composizione e ne vengono inserite di nuove, lo stato viene spostato dalle prime chiamate in uscita alle chiamate in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati da nuove chiamate vengono rimossi permanentemente. (Ib4850)FontFamilyResolver
è ora disponibile tramiteLocalFontFamilyResolver.current
Sono stati aggiunti
createFontFamilyResolver(context)
ecreateFontFamilyResolver(context, coroutineScope)
per creare nuovi risolutori di FontFamily al di fuori dell'utilizzo di compose.Paragraph e MultiParagraph ora accettano
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
ora contiene il resolver utilizzato per questo layout, ritiratoTextLayoutResult.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 della coroutine globale 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 di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico per l'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.L'API
Font.ResourceLoaded
è stata ampliata per supportare il caricamento dei caratteri facoltativo e asincrono. Sconsigliamo agli sviluppatori di applicazioni di utilizzare direttamente questa API. Per aggiungere nuovi tipi di caratteri, consultaAndroidFont
.La funzione di estensione
Font.AndroidResourceLoader
consente di creare unFont.ResourceLoader
al di fuori della composizione.È stato aggiunto il parametro
loadingStrategy
ai caratteri basati su risorse per consentire il caricamento asincrono quando il carattere della risorsa fa riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)Il costruttore
Typeface(FontFamily)
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che poteva richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza inveceFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che può richiedere fino a 10 secondi per i caratteri scaricabili. UtilizzaFontFamilyResolver.preload
(If8e7c, b/174162090)Il costruttore
SubcomposeLayoutState
che accettamaxSlotsToRetainForReuse
è stato ritirato. Esiste invece un nuovo costruttore che accettaSubcomposeSlotReusePolicy
, una nuova interfaccia che consente un controllo più granulare sugli slot da conservare per il riutilizzo futuro. (I52c4d)Espone le funzioni HSV e HSL in
Color
come API non sperimentali. Lo spazio di colore Oklab è ora un'API pubblica. (I08fb6, b/180731008)È stata ritirata la funzionalità
AndroidComposeTestRule.AndroidComposeStatement
, che non doveva essere presente nell'API pubblica e non faceva comunque nulla per te. (Ibc46b)Rinomina della classe kt generata internamente (Ia0b9e, b/174162090)
È stato rimosso
FontLoadingStrategy.values
(I42a9d, b/174162090)Il caricatore di caratteri globali ora si chiama
FontFamilyResolver
. (I4f773, b/174162090)Utilizza il nuovo sistema di caricamento dei caratteri per i computer. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
restituisceState<Any>
(I4406c, b/174162090)
Correzioni di bug
- Ora i campi di testo verranno mantenuti sopra la tastiera quando sono selezionati e la tastiera è visualizzata, quando la modalità di immissione soft è
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Il computer utilizza la composizione locale per
FontFamily.Resolver
FontLoader
per computer è deprecato- Nuova versione di fabbrica di
createFontFamilyResolver
su computer (I6bbbb, b/174162090) - Il tipo di immissione della tastiera virtuale non lampeggia più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche all'API
- Sono stati aggiunti
Modifier.onRotaryScrollEvent()
eModifier.onPreRotaryScrollEvent()
per i dispositivi indossabili con un pulsante laterale girevole (I18bf5, b/210748686) - Aggiungi estensione
View.createLifecycleAwareRecomposer
sperimentale (I0cde6)
Contributo esterno
PointerEvent.scrollDelta.y
ora è invertito su Android (ora restituisce 1 anziché -1 se incliniamo la rotellina del mouse verso destra) (Ia9811)
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche all'API
FontFamily.canLoadSynchronously
obsoleto. Questa proprietà non ha un significato semantico. (Ica5ef)- È stato aggiunto il campo identità a
CompositionData
per generare ID invariati nell'ispezione del layout. (Ic116e) - Sono stati aggiunti gli ID dei dispositivi Wear OS all'elenco dei dispositivi di anteprima (I93232)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
androidx.compose.ui:ui-*:1.1.1
viene rilasciato. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correggi
NullPointerException
il giornoandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- È stato corretto il problema relativo alla formattazione RTL in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
androidx.compose.ui:ui-*:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto overscroll di Android 12
- Miglioramenti alle dimensioni dei target di tocco
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante verrà espanso fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, garantendo un comportamento coerente se combini le visualizzazioni e Compose. Questa modifica garantisce inoltre che, quando crei l'interfaccia utente utilizzando i componenti Material di Compose, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
- Supporto stabile per la barra di spostamento
- Passa a una versione stabile un certo numero di API precedentemente sperimentali
- Supporto per le versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.ui:ui-*:1.1.0-rc03
viene rilasciato. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornamento per il supporto di Compose Material 1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.ui:ui-*:1.1.0-rc01
viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un bug che causava la mancata visualizzazione delle azioni di scorrimento dell'accessibilità (I7cbfb)
- Ora
SemanticsNodeInteraction.captureToImage()
funzionerà anche seHardwareRenderer.isDrawingEnabled()
èfalse
, attivandolo per la durata della chiamata (Idf3d0)
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.ui:ui-*:1.1.0-beta04
viene rilasciato. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornata per essere compatibile con Kotlin
1.6.0
Modifiche all'API
- È stata corretta la presenza di valori 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 correlati alla rotellina del mouse nel livello dell'interfaccia utente. (Ia14eb, b/198214718)
- Aggiungi sovraccarichi sperimentali di
Modifier.composed
che accettano chiavi da confrontare per verificare l'uguaglianza e che sono idonei per saltare le ottimizzazioni. (Ice799, b/205851704) ComposeNotIdleException
ora si estende daException
anziché direttamente daThrowable
. Tieni presente che ciò significa che le clausole try/catch che intercettavanoException
ora potrebbero intercettareComposeNotIdleException
, cosa che non facevano in precedenza. (I9c217)
Correzioni di bug
- È stato corretto il problema relativo alla mancata modifica dei cursori del testo quando la visibilità dell'IME cambia. (I25f2e)
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.ui:ui-*:1.1.0-beta03
viene rilasciato. La versione 1.1.0-beta03 contiene questi commit.
Modifiche all'API
- È stato aggiunto il nuovo modificatore Modifier.onPlaced per consentire di osservare la modifica del posizionamento. Pertanto, è possibile apportare ulteriori modifiche all'offset del modificatore secondario in base alla variazione del posizionamento osservata. (I558fd)
- Contatti rimossi:
InjectionScope.flush()
eInjectionScope.dispose()
. Lo svuotamento di tutti gli eventi e lo smaltimento dell'ambito ora avvengono alla fine del metodo perform*Input() chiamato come prima. (I2bed8) MultiModalInjectionScope.Touch
eMultiModalInjectionScope.Mouse
sono stati rimossi. Per iniettare eventi di tocco e mouse per i gesti multimodali, ora puoi utilizzareMultiModalInjectionScope.touch()
eMultiModalInjectionScope.mouse()
, che accettano entrambi una funzione lambda che ha l'ambito del destinatario della modalità. (Idde18)
Correzioni di bug
- Il valore predefinito per
durationMillis
inTouchInjectionScope.swipeWithVelocity
viene ora calcolato in modo che scorrimento sia fattibile. (I19deb)
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.ui:ui-*:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459)
- Nuove API di animazione per supportare gli strumenti. Nello specifico, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in Transitions. (I4116e)
Contributo esterno
- È stato aggiunto Modifier.pointerHoverIcon (I95f01)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-beta01
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'API
BringIntoView
sperimentale che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un articolo (Ib918d, b/195353459) - Nuove API di animazione per supportare gli strumenti. Nello specifico, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in Transitions. (I4116e)
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
viene rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche all'API
- Rimuovi
ExperimentalComposeUiApi
daViewRootForInspector
eLayoutInfo.ownerViewId
(I5c2e3) - È stata aggiunta un'overload senza elementi secondari per Layout, con un'efficienza migliorata (Ib0d9a)
- È stato rimosso
InternalCompilerApi
dai metodi Composer che devono essere chiamati tra moduli (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
ora restituisce il valoreSemanticsNodeInteraction
su cui è stata chiamata la funzione. (I9e5db)- È stato aggiunto LocalInputModeManager CompositionLocal per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786)
- È stato aggiunto
viewConfiguration: ViewConfiguration
aLayoutInfo
per consentire ai consumatori di ottenere il valore corretto per elementi come il timeout della pressione prolungata. (I76ca6)- È stato aggiunto
viewConfiguration: ViewConfiguration
aInjectionScope
per consentire ai test di regolare l'iniezione di input in base a parametri come il timeout della pressione prolungata o la tolleranza al tocco. - È stata modificata la durata predefinita della pressione prolungata e del doppio tocco sia per l'input tocco che per quello del mouse in base ai valori in
InjectionScope.viewConfiguration
.
- È stato aggiunto
- Implementazione di ExposedDropdownMenu basata su ExposedDropdownMenuBox con TextField e DropdownMenu all'interno (If60b2)
- dismissOnOutsideClick è stato aggiunto a PopupProperties, sostituendo dismissOnClickOutside, che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti dell'ancora, fornendo un controllo più granulare sull'eventuale chiamata di onDismissRequest. Ad esempio, può essere utile per impedire la chiusura dell'ancora per i tocchi sull'ancora.
- updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo a basso livello sui flag passati dal popup a WindowManager di Android. Il parametro della funzione lambda sarà costituito dagli indicatori calcolati dai valori PopupProperties che generano indicatori WindowManager, ad esempio focusable. Il risultato della funzione lambda saranno i flag finali che verranno passati a WindowManager di Android. Per impostazione predefinita, updateAndroidWindowManagerFlags lascia invariati i flag calcolati dai parametri. Questa API deve essere utilizzata con cautela, solo nei casi in cui il popup abbia requisiti di comportamento molto specifici. (I6e9f9)
Recomposer.state
è stato ritirato e sostituito daRecomposer.currentState
per modificarne il tipo in StateFlow (Ic2ab3, b/197773820)- Aggiunta di
flush()
edispose()
aInjectionScope
. Utilizzale rispettivamente quando vuoi svuotare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito. (Ifb73a) - È stato aggiunto
performScrollToNode(matcher: SemanticsMatcher)
che consente di scorrere un contenitore scorrevole fino ai contenuti corrispondenti all'elemento di corrispondenza specificato. (Ic1cb8) InjectionScope
ora implementaDensity
, il che ti consente di convertire facilmente i valori px e dp inperformTouchInput
e altri. (I8fe1f)
Correzioni di bug
- Ora AndroidView propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla sua visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Correzione del problema per cui a volte SwipeToDismissBox di WearOS non gestiva i gesti di scorrimento. (I9387e)
- Il tempo predefinito tra gli eventi di input iniettati è stato modificato da 10 ms a 16 ms. Ciò potrebbe modificare il risultato dei test che eseguono gesti di input, ad esempio uno scorrimento specifico. (I829fd)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
viene rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Modifiche all'API
- È stato aggiunto il supporto per la comunicazione tra i modificatori (Id5467, b/198826874)
- Sono stati aggiunti indicatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Aggiunta di
density: Density
elayoutDirection: LayoutDirection
aLayoutInfo
. In questo modo, i consumatori diLayoutInfo
possono interpretare correttamente le dimensioni e la posizione esposte inLayoutInfo
. (I002f1) - È stato aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Utilizza
performMouseInput
per iniziare a inviare eventi del mouse oppure inviali 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 (lazy e non lazy) in relazione allo scorrimento (I6cdb0)
TouchInjectionScope.swipeWithVelocity
migliorato. Ora accetta una gamma più ampia di variabili di input e suggerisce modifiche all'input se non è possibile creare uno scorrimento (I40fbe, b/182477143)
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
viene rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche all'API
PointerEvent
ora ha unPointerEventType
per supportare gli eventi di passaggio del mouse. (I091fa)- Consentire ai bambini di accettare l'input del cursore al di fuori dei limiti dell'input del cursore del genitore. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
performGesture
eGestureScope
sono stati ritirati e sostituiti daperformTouchInput
eTouchInjectionScope
. (Ia5f3f, b/190493367)- È stato aggiunto
touchBoundsInRoot
aSemanticsNode
per includere le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214) - Ripeti l'implementazione di ispezionabile (I927bc, b/191017532)
- È stato modificato il nome del parametro ispezionabile in modo che corrisponda a quello composto (I3a482, b/191017532)
Sono stati introdotti
performTouchInput
eTouchInjectionScope
come sostituzione diperformTouchInput
eTouchInjectionScope
, aprendo la strada ad altre modalità (come il mouse).TouchInjectionScope
ha gli stessi metodi diGestureScope
, con l'eccezione dimovePointerTo
emovePointerBy
, che sono stati rinominati inupdatePointerTo
eupdatePointerBy
. Tutti gli altri metodi sono uguali.Il comportamento di
TouchInjectionScope
è quasi identico a quello diGestureScope
, con due piccoli dettagli:- Quando si inviava un evento di tipo down mentre i cursori erano stati spostati senza inviare un evento di tipo move (in altre parole, è stato utilizzato
updatePointerTo()
, ma nonmove()
e poi viene chiamatodown()
), l'implementazione precedente anticipava la data e l'ora dell'evento e inviava un evento di tipo move prima di inviare l'evento di tipo down. La nuova implementazione invia comunque l'evento move, ma non avanza l'ora dell'evento in questo scenario specifico. - Quando si inviava un evento up mentre i cursori erano stati spostati senza inviare un evento move (come sopra), l'implementazione precedente anticipava la data e l'ora dell'evento e inviava un evento move prima di inviare l'evento up. La nuova implementazione non fa né l'una né l'altra: le nuove posizioni degli indicatori verranno applicate solo tramite l'evento up.
Infine,
TouchInjectionScope
introduce un nuovo metodocurrentPosition(pointerId: Int)
per ottenere la posizione corrente del cursore specificato. (If1191, b/190493367)- Quando si inviava un evento di tipo down mentre i cursori erano stati spostati senza inviare un evento di tipo move (in altre parole, è stato utilizzato
Correzioni di bug
- Consenti al clip di estendere i limiti del touch target oltre la regione del clip per scopi di touch target minimi. (I43e10, b/171509422)
- Il supporto dell'overscroll elastico è stato aggiunto sui dispositivi Android 12. (Iccf3c, b/171682480)
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
viene rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Compose
1.1.0-alpha03
è stato aggiornato in modo da dipendere da Kotlin1.5.30
. (I74545)
Modifiche all'API
- È stato aggiunto
Modifier.inspectable
per l'inserimento di altri modificatori. (I1909b, b/191017532) - È stata aggiunta l'API
BlurredEdgeTreatment
per semplificare i casi d'uso della sfocatura in combinazioni di indicatori dei clip e modalità Tile più comunemente utilizzate. La maggior parte dei casi d'uso prevede di lasciare che i contenuti sfocati vengano visualizzati al di fuori dei limiti dei contenuti originali e di sfocare le regioni al di fuori di questi limiti con il nero trasparente oppure di ritagliare i contenuti in base ai limiti dei contenuti campionando il bordo più vicino per i kernel di sfocatura che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547) - È stato aggiunto il supporto di RenderEffect in Componi su computer. È stato introdotto OffsetEffect, nonché il modificatore di sfocatura, come un modo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia della composizione. (I0f6aa, b/166927547)
- È stata introdotta l'API RenderEffect
che può essere configurata facoltativamente su
un
Modifier.graphicsLayer
per modificare i contenuti del livello stesso. Questo può essere utilizzato per sfocare i contenuti di un composable e dei composable secondari all'interno di una gerarchia della composizione. (I47c4d, b/166927547) - AwaitPointerEventScope ora dispone di withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- È stata aggiunta una dimensione minima del touch target a ViewConfiguration per l'utilizzo nella semantica e nell'input del cursore per garantire l'accessibilità. (Ie861c)
- È stato aggiunto il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per gli effetti di rendering basati su sfocatura. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ehasScrollToKeyAction
ora sono API stabili (I142ae, b/178483889)- È stato aggiunto il metodo di test per ottenere i limiti ritagliati. (I6b28e)
Correzioni di bug
- È stato rimosso il metodo isBounded da BlurredEdgeTreatment in favore del controllo esplicito se il parametro forma è nullo. (I85d68)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
viene rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Modifiche all'API
- PointerEvent ora supporta la lettura dello stato del pulsante del mouse e dello stato del modificatore della tastiera. (I6310c, b/180075467)
- I gesti iniettati ora utilizzano l'ora di MainTestClock come
fonte di riferimento per l'ora. L'ora corrente per gli eventi iniettati in
performGesture
verrà inizializzata con l'ora corrente di MainTestClock. (Ifb364, b/192064452) - È stato aggiunto il costruttore
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Aggiunta la classe DpSize (I7abb1, b/194219828)
Correzioni di bug
- È stato aggiornato l'analisi XML delle immagini vettoriali per supportare ColorStateList come proprietà di tinta del colore di base su VectorDrawables. (I86915, b/195668138)
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Modifiche all'API
RelocationRequester.bringIntoView
ora accetta un rettangolo come parametro, il che ci consente di visualizzare una parte di un composable (Ice2c5, b/194330245)AnimatedImageVector
e le API correlate ora si trovano nel nuovoandroidx.compose.animation:animation-graphics
modulo. (I60873)- È stato aggiunto un modificatore sperimentale per gestire le richieste di trasferimento. (I65a97, b/178211874)
È stata introdotta l'API BrushPainter per supportare il disegno di un pennello arbitrario all'interno di un Painter, in modo simile a ColorPainter
L'API Brush è stata aggiornata in modo da avere un parametro di dimensione intrinseca su cui viene eseguita una query in BrushPainter (Ia2752, b/189466433)
Aggiornamento del metodo DrawScope#drawImage che utilizza i rettangoli di origine e di destinazione per utilizzare un parametro facoltativo FilterQuality. Questa opzione è utile per l'arte pixel che deve essere pixelata quando viene aumentata di dimensioni per l'arte basata su pixel. È stato aggiornato il composable BitmapPainter + Image 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 l'accodamento dei modi di disegno, assicurati che l'implementazione di Modifier.paint chiami drawsContent.
In precedenza, Modifier.paint era previsto per un nodo foglia nella catena di modificatori, ma in questo modo ne viene impedita la configurazione su un contenitore componibile (ad es. una casella) o l'aggiunta di decorazioni aggiuntive come
Modifier.paint().border()
. Se Modifier.paint chiama drawContent dopo aver disegnato i contenuti del pittore specificato, il comportamento è più coerente con il pattern del modificatore. (Ibb2a7, b/178201337, b/186213275) - Ora i dialoghi seguono il comportamento di dimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388) InfiniteAnimationPolicy
è stato spostato in :compose:ui (I5eb09, b/160602714)- Lo scorrimento tramite azioni di semantica per gli elenchi lazy e i componenti con scorrimento regolare ora è animato (Id9066, b/190742024)
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.ui:ui-*:1.0.5
viene rilasciato. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
androidx.compose.ui:ui-*:1.0.4
viene rilasciato. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornata per dipendere da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.ui:ui-*:1.0.3
viene rilasciato. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornata per dipendere da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.ui:ui-*:1.0.2
viene rilasciato. La versione 1.0.2 contiene questi commit.
Aggiornamento per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.ui:ui-*:1.0.1
viene rilasciato. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.ui:ui-*:1.0.0
viene rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o versioni successive nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.ui:ui-*:1.0.0-rc02
viene rilasciato. La versione 1.0.0-rc02 contiene questi commit.
Correzioni di bug
- Ora i dialoghi seguono il comportamento di dimensionamento della piattaforma. Imposta
usePlatformDefaultWidth
su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.ui:ui-*:1.0.0-rc01
viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Suddividi il modulo ui-tooling in
ui-tooling
eui-tooling-preview
(Iefa28, b/190649014)
Modifiche all'API
- Rimossi i valori sperimentali non più supportati
FocusManager#moveFocusIn
eFocusManager#moveFocusOut
(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)
- È stato aggiunto il supporto sperimentale per le rappresentazioni di colori HSV e HSL. (Id7cf8, b/180731008)
Modifiche al comportamento
- Compose
@Preview
ora fornisce unLocalActivityResultRegistryOwner
che ti consente di visualizzare l'anteprima dei Composable che utilizzano API comerememberLauncherForActivityResult()
che dipendono dalla presenza del proprietario. (Ib13d1, b/185693006) - Compose
@Preview
ora fornisce unLocalOnBackPressedDispatcherOwner
che ti consente di visualizzare l'anteprima dei Composable che utilizzano API comeBackHandler
che dipendono dall'esistenza del proprietario. (Ia1c05, b/185693006)
Correzioni di bug
- Dispositivo
InfiniteAnimationPolicy
spostato inandroidx.compose.ui:ui
(I5eb09, b/160602714) - AnimatedImageVector è stato rimosso temporaneamente per modificare la struttura del modulo. (I41906, b/160602714)
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.ui:ui-*:1.0.0-beta09
viene rilasciato. La versione 1.0.0-beta09 contiene questi commit.
Modifiche all'API
- Modifica l'enum Role e LiveRegionMode in classi in linea con il costruttore privato (Id1890)
- KeyboardCapitalization viene convertito in una classe in linea. (Id5a1c)
- Modifica HapticFeedbackType in una classe in linea. (I255ec)
- Modifier.pointerInteropFilter è @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis e TextDirection ora sono classi in linea. (I212fe)
- TextOverflow viene modificato in un'entità in linea. (I433af)
- FontStyle è ora un'entità in linea. (I9e48b)
Correzioni di bug
- Per il momento le costanti principali sono @ExperimentalComposeUiApi. Il codice di consumo può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
- Ora i test di composizione possono essere eseguiti su Robolectric. Finora sono state identificate le seguenti limitazioni:
- Non esiste una bitmap nativa, quindi
ImageBitmap()
genera un NullPointerException. - Non viene eseguito alcun disegno, pertanto
captureToImage()
attenderà indefinitamente il passaggio di disegno successivo (ovvero si verifica un deadlock). - Non è stato caricato alcun carattere, pertanto qualsiasi testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
ComposeTestRule.waitUntil {}
non esegue il thread principale durante l'attesa, pertanto è praticamente uguale aComposeTestRule.mainClock.advanceTimeUntil {}
In futuro è previsto di identificare ulteriori limitazioni. (I284fa)
- Non esiste una bitmap nativa, quindi
Regole del profilo aggiunte
Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
situato nella directorysrc/main
o equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza a metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile da persone che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole possono assumere una di due forme per scegliere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
è uno o più dei caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrà un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametro e i tipi di ritorno del metodo. Ad esempio, il metodofun isPlaced(): Boolean
inLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono contenere caratteri jolly (
**
,*
e?
) per consentire a una singola regola di includere più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.Un metodo che ha il flag
S
indica che si tratta di un metodo chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che si tratta di un metodo chiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.
Come funziona?
- Le librerie possono definire queste regole che verranno pacchettizzate negli elementi AAR. Quando viene compilata un'app che include questi elementi, le regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app è installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare il rendimento dell'applicazione, in particolare la prima esecuzione. Tieni presente che questo non avrà alcun effetto sulle applicazioni di debug.
Versione 1.0.0-beta08
2 giugno 2021
androidx.compose.ui:ui-*:1.0.0-beta08
viene rilasciato. La versione 1.0.0-beta08 contiene questi commit.
Modifiche all'API
- L'enum
NestedScrollSource
viene sostituito da una classe in linea. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
viene rinominato inFocusManager.clearFocus(force = true)
(Ia0c41)- È stato eseguito il refactoring degli utilizzi degli enum nelle classi in linea per evitare problemi con le istruzioni when esaustive quando vengono aggiunti nuovi valori di enum. (I2b5eb)
- Vuoi rimuovere
@ExperimentalComposeUiApi
daPopupProperties
? (I01fa6) PointerType
è stato modificato da un enum a una classe in linea (If5058)- Le proprietà ContentDescription e Semantica testo non sono più valori singoli, ma elenchi. In questo modo è possibile unirli così come sono anziché concatenarli. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
Modifier.focusModifier()
è deprecato e sostituito daModifier.focusTarget()
(I6c860)Modifier.onSizeChanged()
eModifier.onGloballyPositioned()
non sono più funzioni incorporate (I727f6, b/186109675)- L'enum
KeyboardType
viene sostituito da una classe in linea. (I73045, b/187055290) - Enum
FocusState
sostituito con un'interfacciaFocusState
(Iccc1a, b/187055290) - L'enum ImeAction è stato sostituito 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
ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)- Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.
Correzioni di bug
- È stato corretto il bug introdotto nella versione beta07 per cui gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
- Ora
detectDragGesures
,detectVerticalGestures
edetectHorizontalGestures
utilizzeranno automaticamente la modifica della posizione, non è necessario chiamare change.consumePositionChange nelle chiamate di callback onDrag (I42fc4, b/185096350, b/187320697) - È stato corretto il problema relativo ai LayoutModifiers che forniscono linee di allineamento. È stato corretto un bug che impediva la misurazione del livello principale quando le linee di allineamento dei livelli secondari cambiavano. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno registrate. (Ieb67d, b/177926591)
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.ui:ui-*:1.0.0-beta07
viene rilasciato. La versione 1.0.0-beta07 contiene questi commit.
Modifiche all'API
- Interfaccia
ViewRootForInspector
aggiunta per l'utilizzo nello strumento di controllo (Ib70df) SubcomposeLayoutState
ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di spazi di conteggio anziché eliminarli per riutilizzarli la volta successiva che ne avremo bisogno (Ieb981)- L'enum KeyEventType viene sostituito da una classe in linea. (Id670a, b/187055290)
- L'enum
FocusDirection
viene sostituito da una classe in linea. (Ib6d03, b/187055290, b/184086802) - È stata introdotta la possibilità di sollevare lo stato SubcomposeLayout, che consente di precomporre i contenuti in un valore slotId richiesto, il che renderebbe più rapida la misurazione successiva, poiché la prossima volta che proveremo a eseguire la composizione secondaria con lo slotId specificato non sarà necessaria alcuna composizione. (I42580, b/184940225)
- È stato aggiunto il cursore di selezione dei clip (Iff80d, b/183408447)
- Sono state rimosse le API inutilizzate relative al supporto di LayoutInspector. (I2ac78)
Correzioni di bug
- Ora LazyColumn/Row manterrà attivi (non eliminati) fino a due elementi precedentemente visibili anche quando non sono visibili. In questo modo, il componente può riutilizzare le sottocomposizioni attive quando dobbiamo comporre un nuovo elemento, il che migliora le prestazioni di scorrimento. (Ie5555)
TextGeomerticTransform
eTextDecoration
suAnnotatedString
verranno applicati come indicato. (I61900, b/184760917)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.ui:ui-*:1.0.0-beta06
viene rilasciato. La versione 1.0.0-beta06 contiene questi commit.
Modifiche all'API
- Risolvere il conflitto con il gesto di navigazione (I1145e)
@ComposeCompilerApi
non è più@RequiresOptIn
(Iab690)- Sono state aggiunte le API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017)
- È stato aggiunto
SemanticsActions.ScrollToIndex
per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice eSemanticsProperties.IndexForKey
per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni sono implementate da LazyList.- È stato aggiunto
SemanticsNodeInteraction.performScrollToIndex
che scorra un elenco fino all'indice specificato eSemanticsNodeInteraction.performScrollToKey
che scorra un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
- È stato aggiunto
- È stato aggiunto ownerViewId a GraphicLayerInfo (I19f62)
- Sono stati aggiunti sovraccarichi di Font() per caricare i caratteri da asset, File e FileDescriptor (I5d382)
- È stata aggiunta l'API di accessibilità
error
che consente di contrassegnare un nodo contenente input non validi (I12997, b/180584804, b/182142737) - Sono stati aggiunti
Font()
sovraccarichi per caricare i caratteri da asset, File e FileDescriptor (I43007) - Supporto per il salvataggio di AnnotatedString in
TextFieldValue.Saver
. Sono state aggiunte le funzioni di utilitàaddTtsAnnotation
e withAnnotation aAnnotatedString.Builder
(I8cbdc, b/178446304) - È stata aggiunta la funzione di costruttore TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Versione 1.0.0-beta05
21 aprile 2021
androidx.compose.ui:ui-*:1.0.0-beta05
viene rilasciato. La versione 1.0.0-beta05 contiene questi commit.
Modifiche all'API
- Aggiunti
FocusManager.moveFocus(In)
eFocusManager.moveFocus(Out)
sperimentali (Ic5534, b/183746743) - È stata aggiunta l'API
performTextInputSelection
sperimentale (I2dcbb, b/178510628) - L'interfaccia
InputEventCallback
è deprecata. Non è stato possibile utilizzare l'interfaccia in nessuna API pubblica e non è stata utilizzata nel codice. (I34a02, b/184003208) - Funzione
TextLayoutResult/createTextLayoutResult
inutilizzata. Si tratta di una funzione pubblica inutilizzata aggiunta per i test. La funzione non esegue alcuna operazione utilizzabile per le API di composizione di testo. La funzione è stata deprecata e verrà rimossa in un secondo momento. (I80413)
Correzioni di bug
- Sono state corrette le azioni di scorrimento dell'accessibilità per
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
eaccessibilityActionScrollDown
. Invece di scorrere fino alla fine della sezione scorrevole, ora verrà visualizzata una schermata nella direzione indicata. (Ieccb0) - I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
androidx.compose.ui:ui-*:1.0.0-beta04
viene rilasciato. La versione 1.0.0-beta04 contiene questi commit.
Modifiche all'API
- Rinomina
hideSoftwareKeyboard
eshowSoftwareKeyboard
suSoftwareKeyboardController
inhide()
eshow()
rispettivamente.- Fornisci l'interfaccia CompositionLocal completa per LocalSoftwareKeyboardController, consentendo di impostarla (particolarmente utile nei test) (I579a6)
- È stata aggiunta l'API di accessibilità LiveRegion. Se il nodo è contrassegnato come regione in tempo reale, i servizi di accessibilità informeranno automaticamente l'utente delle relative modifiche (Idcf6f, b/172590946)
- Viene introdotto TextOverflow.Visible. (Ic8f89)
Correzioni di bug
- È stato risolto il problema per cui gli elementi di
LazyColumn
/LazyRow
situati sui bordi erano posizionati in modo errato dopo un movimento rapido (Ie4d13, b/183877420) AndroidViewBinding
ora rimuove correttamente i frammenti gonfiati tramiteFragmentContainerView
quandoAndroidViewBinding
viene rimosso dalla gerarchia di composizione. (Ib0248, b/179915946)AndroidViewBinding
ora nidifica correttamente i frammenti gonfiati tramiteFragmentContainerView
quando ilComposeView
si trova all'interno di unFragment
, risolvendo i problemi di salvataggio e ripristino dello stato di questi frammenti. (I70eb0, b/179915946)- Compose ViewBinding ora dipende da
Fragment
1.3.2
e ora mostra in modo coerente i frammenti gonfiati tramiteFragmentContainerView
dopo le modifiche alla configurazione. (I0743d, b/179915946)
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta03
viene rilasciato. La versione 1.0.0-beta03 contiene questi commit.
Modifiche all'API
- Controllo differito delle dipendenze di ViewTree di ComposeView (I8dbbf, b/182466548)
- Sono stati aggiunti i parametri facoltativi
startX
/endX
estartY
/endY
alle funzioniswipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
. (I49e2d, b/182063305)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.ui:ui-*:1.0.0-beta02
viene rilasciato. La versione 1.0.0-beta02 contiene questi commit.
Modifiche all'API
- È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I5951e, b/168778053) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I84472, b/168778053) - Sono stati rimossi i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Ho contrassegnato il seguente
SemanticsMatchers
come @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Sono stati aggiunti i seguenti
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correzioni di bug
- Applicare limitazioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
androidx.compose.ui:ui
non dipende più da AppCompat o Fragment. Se nella tua applicazione utilizzi ComposeView e Fragment e/o AppCompat, assicurati di utilizzare AppCompat 1.3 o versioni successive / Fragment 1.3 o versioni successive. Queste versioni sono necessarie per impostare correttamente il ciclo di vita e i proprietari dello stato salvato richiesti per ComposeView. (I1d6fa, b/161814404)- Correzione del problema relativo a
rememberSaveable { mutableStateOf(0) }
quando viene utilizzato all'interno di una destinazione di navigazione-composizione. (I1312b, b/180042685, b/180701630) - È stata aggiunta una nuova API locale di composizione
LocalSoftwareKeyboardController
per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053) - È stato corretto un raro errore NoSuchElementException in
ComposeRootRegistry
tearDownRegistry()
(Iddce1)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.ui:ui-*:1.0.0-beta01
viene rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 Beta.
Modifiche all'API
- Il callback onStart è stato aggiunto a
detectDragGestures
(I67269, b/179995594) - I modificatori per le dimensioni in base ai valori intrinseci non sono più sperimentali. (I15744)
- MeasureBlocks è stato rinominato MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
è stato sostituito da[Mutable]InteractionSource
- Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
- Anziché passare
interactionState = remember { InteractionState() }
a componenti comeButton
eModifier.clickable()
, utilizzainteractionSource = remember { MutableInteractionSource() }
. - Anziché:
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 lo stream di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in CompositionLocals (I53520)
- Sono stati rimossi i metodi LayoutCoordinates deprecati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
- Alias di tipo sostituiti dai tipi sottostanti:
ColorStop
è diventataPair<Float, Color>
SpanStyleRange
ora è "AnnotatedString.RangeParagraphStyleRange
è diventataAnnotatedString.Range<ParagraphStyle>
StringAnnotation
è diventataAnnotatedString.Range<String>
- (I8dd1a)
- È stata creata una nuova TextInputSession per le sessioni di input da componenti di testo di basso livello come CoreTextField. (I8817f, b/177662148)
- Ora Placeable espone measuredSize, che rappresenta le dimensioni effettive misurate del layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
- Aggiunta del modificatore selectionGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
Il valore
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
ora è obbligatorio anziché facoltativo.Queste modifiche rimuovono un potenziale errore di tipo per i tipi non nulli in cui non è stata fornita una fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non null.
Per i tipi nullable, ti consigliamo di fornire
{ null }
come factory predefinita.Sconsigliamo di utilizzare variabili locali con tipi non null se non è possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la funzione lambda
defaultFactory
deve generare un'eccezione. Tuttavia, se viene lanciata un'eccezione, i consumatori della locale avranno una dipendenza implicita dalla sua indicazione che non viene applicata dal sistema di tipi. (Ifbd2a)I metodi obsoleti dei moduli ui sono stati rimossi (I646f6)
I modificatori delle taglie sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)
Modifier.tapGestureFilter
è stato rimosso. Utilizza inveceModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Il consumo parziale è stato rimosso dal sistema di input del cursore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)
L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è passato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
imageResource e vectorResource ora sono funzioni di estensione rispettivamente per i componenti aggiuntivi ImageBitmap e ImageVector.
load{Image,Vector,Font}Resource
funzioni sono state eliminate. (I89130)AnimationClockObservable e le sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)
Providers è stato rinominato in CompositionLocalProvider
- Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è stata trasformata in una proprietà di primo livello componibile anziché in una funzione di primo livello componibile.
- CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata creata come interfaccia anziché come 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.
- La funzione Composer.collectKeySourceInformation è stata rimossa. Non è più necessario.
- I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe file di Kotlin, la compatibilità binaria verrà interrotta, ma non la compatibilità con il codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
è stato rimosso da compose:ui. Utilizza quello diandroidx.activity:activity-compose:1.3.0-alpha01
.viewModel()
eLocalViewModelStoreOwner
sono stati rimossi da compose:ui. Utilizza quelli diandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Modifier.scrollable è stato rielaborato. Ora utilizza l'interfaccia Scrollable anziché la classe ScrollableController (I4f5a5, b/174485541, b/175294473)
Il supporto di CustomEvents da PointerInputModifier è stato rimosso (I02707, b/175294473)
SnapshotStateObserver non è più sperimentale (Id2e6a)
Sono state eliminate alcune API precedentemente ritirate (Ice5da, b/178633932)
longPressGestureFilter e doubleClickGestureFilter sono stati rimossi. Utilizza Modifier.pointerInput con funzioni di assistenza, ad esempio detectTapGestures (I2fedf, b/175294473)
È stata rimossa l'API String.format e sono stati riorganizzati gli utilizzi in vari metodi toString per non sfruttare String.format internamente. (Id1290)
Affermazioni dp rimosse (I798d2)
androidx.compose.runtime:runtime-dispatch rimosso (I55feb)
Ora le azioni di testo controllano automaticamente lo stato attivo (I13777, b/179648629)
runBlockingWithManualClock
rimosso (I15cdc, b/179664814)La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con interi (I81298)
FlingConfig è stato rinominato in FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché delle decelerazioni predefinite. (I02b86, b/175294473)
È stata aggiunta una funzione di supporto utile per impostare la stessa azione per tutti i callback ImeAction (I63447, b/179226323)
È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per essere sostituito a breve da una nuova API. (Iae869, b/168778053)
FontSpan e FontWeigthStyleSpan non vengono più utilizzati e sono stati rimossi. (Ie5b56, b/177423444)
Sono state apportate le seguenti modifiche all'API Material:
- È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione del padding predefinito.
- I parametri in BackdropScaffold sono stati riordinati in modo da rispettare le linee guida dell'API per i parametri obbligatori che precedono i parametri facoltativi.
- Il parametro
icon
in BottomNavigationItem è stato spostato doposelected
eonClick
. - Il parametro
alwaysShowLabels
in BottomNavigationItem è stato rinominato inalwaysShowLabel
. - I parametri
bodyContent
in alcuni componenti sono stati rinominati incontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo di parametri non è cambiato, non verrà generato un errore nel codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza. - Parametro
secondaryVariant
aggiunto adarkColors()
. Questo colore è in genere uguale asecondary
nel tema scuro, ma viene aggiunto per coerenza e ulteriore personalizzazione. - Sono stati rimossi ElevationDefaults e animateElevation() dall'API pubblica perché non erano di uso comune / utili.
onValueChangeEnd
inSlider
è stato rinominato inonValueChangeFinished
e impostato come nullable.- Il parametro
text
inSnackbar
è stato rinominato incontent
per coerenza. - È stato aggiunto il parametro
contentPadding
aDropdownMenuItem
per consentire la personalizzazione del padding predefinito econtent
è stato reso un'estensione diRowScope
. ModalDrawerLayout
rinominato inModalDrawer
.BottomDrawerLayout
rinominato inBottomDrawer
.- (I1cc66)
Correzioni di bug
- È stata aggiunta l'API per utilizzare le risorse AnimatedVectorDrawable in Compose. Utilizza
animatedVectorResource per caricare un file XML
<animated-vector>
come AnimatedImageVector e animarlo con painterFor (I8ea91) - È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I658b6, b/168778053)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
viene rilasciato. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche all'API
- Il supporto di ViewGroups è stato rimosso da UiApplier. I composabili emitView obsoleti sono stati rimossi. (Ifb214)
- Modifier.pointerInput ora richiede chiavi di memorizzazione per indicare quando deve essere riavviata la coroutine di rilevamento dell'input del cursore per le nuove dipendenze. (I849cd)
- CompositionReference è stato rinominato in CompositionContext (I53fcb)
- Bounds è stato rinominato in DpRect (I4b32a)
- Aggiornamento dei test: la funzione hasText() controllerà sia i testi di input che le etichette/suggerimenti/testo segnaposto nel campo di testo (Iab803)
- Il composable viewModel() e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Per utilizzarlo, dovrai aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
- Consenti un'azione nullable in AccessibilityAction, modifica l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction da CharSequence a String (I0dc82)
- Per una migliore corrispondenza delle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato in BitmapPainter per allinearsi a VectorPainter. (Iba381, b/174565889)
- Miglioramento delle API di test delle sottostringhe con la sottostringa ora come argomento (Icbe78)
- È stato aggiunto un
Modifier.focusOrder()
che accetta un FocusRequester senza specificare un ordine di messa a fuoco personalizzato in una lambda. Questo è utile quando dobbiamo specificare solo un riferimento ma non un ordine di messa a fuoco personalizzato per un composable (I4f52a, b/179180978) - ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- I metodi di destrutturazione e copy() sono stati rimossi da diversi classi in cui venivano utilizzati raramente. (I26702, b/178659281)
- Il popup è stato spostato in modo da essere specifico per la piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e
isFocusable
è stato spostato in un parametrofocusable
inPopupProperties
(Ieeea5) - La funzionalità Dialog è stata spostata in modo da essere specifica per la piattaforma. AndroidDialogProperties è stato rinominato in DialogProperties. (I4ef69, b/179138130)
- LayoutNode è stato reso interno (I8a7b1, b/175103944)
- Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)
- loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Utilizza invece painterResource. (I6b809)
- Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta lambda che restituiscono valori Float anziché valori Float diretti. (If4a35, b/178657186)
- Sono state aggiunte le semantiche di EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificarne la semantica (I8e07a)
- È stato reso interno OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944)
- toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)
- IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)
- L'API Snapshot è stata aggiornata per essere più coerente con le linee guida dell'API e per nascondere le classi di implementazione interna dall'API pubblica. (Id9e32)
- Sono state aggiunte le azioni di semantica di espansione e compressione. Aggiunti expand e halfExpand in ModalBottomSheetState (Ib5064)
- Modifier.dragGestureFilter è stato ritirato. Utilizza invece
Modifier.pointerInput { detectDragGestures (...)}
. In alternativa, utilizza Modifier.draggable per i trascinamenti su un asse (I0ba93, b/175294473) - Gli ambienti sono stati rinominati in modo che corrispondano alla ridenominazione di Ambient -> CompositionLocal. Gli ambienti in precedenza si chiamavano AmbientFoo, ora i CompositionLocals si chiamano LocalFoo. (I2d55d)
- BaseTextField, deprecato, è stato rimosso. Utilizza invece BasicTextField. (I71368)
- La selezione è stata spostata nella base. (I7892b)
- Analogamente a come abbiamo rimosso in precedenza il composable
state { 0 }
e ora promuoviamo l'utilizzo diremember { mutableStateOf(0) }
, rimuoveremo il composablesavedInstanceState { 0 }
. Dovresti utilizzarerememberSaveable { mutableStateOf(0) }
, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno di MutableState può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo sovraccarico di rememberSaveable che ha il parametrostateSaver
. L'utilizzo sarà simile al seguente:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - È stata aggiunta la semantica della password per l'accessibilità (I231ce)
- È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
- Gli strumenti
emptyContent()
e(@Composable () -> Unit).orEmpty()
sono stati ritirati perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d) snapshotFlow
ewithMutableSnapshot
non sono più sperimentali (I6a45f)- Ora i ricostruttori possono essere chiusi. I ricostruttori chiusi continueranno la ricostituzione fino al completamento delle coroutine secondarie di composizione. Recomposer.shutDown è stato rinominato in cancel per distinguerlo da close. (Ib6d76)
- UiSavedStateRegistry è stato rinominato in SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato in AmbientSaveableStateRegistry e entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
- L'elemento artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
- Molte API obsolete nel pacchetto ui sono state eliminate. (I2f2dc)
- L'elemento compose:runtime-dispatch è stato ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher in compose:ui. (Ib5c36)
- Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
- L'elemento
view.captureToImage()
è stato rimosso senza alcuna sostituzione. (I7fcd2) - È stata introdotta l'API ColorMatrix utilizzata per modificare i valori RGB dei contenuti di origine. È stata ristrutturata l'API ColorFilter in modo che sia un'interfaccia e corrisponda all'implementazione di PathEffect. (Ica1e8)
- Aggiungi il parametro layoutDirection a createOutline della forma. In questo modo è possibile creare forme che tengano conto della direzione del layout. (I57c20, b/152756983)
- onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
- È stato introdotto un elemento di contesto della coroutine
InfiniteAnimationPolicy
che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando vengono eseguiti test conComposeTestRule
. (I50ec4, b/151940543) - La proprietà canDrag è stata rimossa da Modifier.scrollable. (Id66e7, b/175294473)
- È stata rinominata la proprietà LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre i LayoutCoordinates del modificatore principale. In questo modo, si potranno creare casi d'uso più completi per onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
- I filtri tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
- La funzione unregisterProvider di SaveableStateRegistry è stata rimossa. Ora registerProvider() restituisce l'oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739)
- rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
- CoreText e CoreTextField sono stati rimossi dall'API pubblica
- È stato rimosso il sovraccarico SelectionContainer deprecato
- (I99c19)
- I test in cui Compose viene utilizzato in gerarchie aggiunte/rimosse direttamente in WindowManager ora sono più stabili. (Ie81ed, b/175765614)
- È stato rimosso Recomposer.current(). [Abstract]ComposeView ora utilizza per impostazione predefinita i Recomposer basati su ambito finestra creati in modo lazy e gestiti da ViewTreeLifecycleOwner per la finestra. I tick di animazione basati su recomposition e withFrameNanos vengono messi in pausa quando il ciclo di vita dell'host è interrotto. (I38e11)
- Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Utilizza questa API anziché Recomposer.current(), che ora è stata ritirata. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver sono stati spostati da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
- I comandi di modifica accettano AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata. (I4c3ea)
- Tempo di attività e Durata sono stati rimossi. (Ib9bf4, b/177420019)
- CompositionData.asTree() e le API correlate sono state spostate in un modulo ui-tooling-data separato e contrassegnate come sperimentali (Ic95b8)
- I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da left/right a start/end per supportare lo specchio automatico della forma nella direzione rtl. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato lo specchio automatico. (I61040, b/152756983)
L'API di destinazione del plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che comporta la rottura del codice binario. (I3b922, b/169406779)
Rimuovere la funzione StringBuilder.deleteAt pubblica involontariamente (Id6ed9)
Correzioni di bug
- Le ComposeView inserite nelle gerarchie di visualizzazione che sono figlie di un'altra composizione ora ospitano composizioni secondarie dei loro antenati (I92883)
- È stata aggiornata l'API imageFromResource di compose per riutilizzare la cache delle risorse drawable al caricamento degli oggetti ImageBitmap. (If3627, b/178751994)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
viene rilasciato. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche all'API
- Con vincoli è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
- Key.DPadUp è deprecato. Utilizza Key.DirectionUp. (Iab335, b/177954892)
- L'interfaccia del proprietario d'ora in poi sarà interna. (If8e35)
- È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
- Modifica PopupPositionProvider in modo che utilizzi coordinate relative alla finestra, non coordinate globali. Rinomina parentGlobalBounds in anchorBounds e modifica windowGlobalBounds in windowSize: IntSize (I2994a)
- La durata e il tempo di attività verranno sostituiti da Long millisecondi e questo passaggio rimuove la dipendenza dell'input del cursore da queste classi. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner è stato aggiunto in modo simile ad AmbientLifecycleOwner e AmbientViewModelStoreOwner già esistenti (I9a3e8, b/176756365)
- È stata aggiornata l'API di grafica vettoriale 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 viene rinominato in AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- Sono stati ritirati i metodi di coordinate globali e sono stati creati nuovi metodi di coordinate basati su finestre. (Iee284)
- È stato aggiunto Modifier.toolingGraphicsLayer, che aggiunge un modificatore del livello grafico quando l'ispezione è attivata. (I315df)
- FocusRequester.createRefs è ora contrassegnato come sperimentale perché potrebbe cambiare. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
- È stato rimosso PointerInputData e modificato PointerInputChange per assegnargli tutti i campi di PointerInputData. È stato reso interno PointerInputEvent e PointerInputEventData perché non vengono utilizzati in alcuna API pubblica. (Ifff97, b/175142755)
- Aggiornamento dell'implementazione di GraphicsLayerScope density per supportare le conversioni di dp in pixel non elaborati. (Ied528, b/176819695)
- L'API matrix è stata aggiornata in modo da seguire l'ordinamento principale delle righe e fornire costanti di indice per facilitare le conversioni tra rappresentazioni diverse della matrice in modo da abbinare internamente la logica di conversione del framework tra SkMatrix e Matrix4. (I432e6)
- Sono stati rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- Spostare String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
- Rinominato TransformedText.transformedText in TransformedText.text
- TransformedText non è più una classe di dati (Ie672a)
data class
è stato rimosso dai seguenti corsi:- InlineTextContent
- LocaleList (I605c7)
- Le seguenti classi non sono più classi di dati:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)
- È stato aggiunto un tipo di parametro di riferimento funzione (I5e1bd)
- Aggiungere i limiti trasformati a InspectorNode (Ice42f)
Correzioni di bug
- onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface
- Sono state aggiunte funzioni di fabbrica che iniziano con una lettera maiuscola
- Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
- Le nuove funzioni di fabbrica restituiscono la famiglia di caratteri anziché le sottoclassi
- Sono stati nascosti i costruttori delle sottoclassi, in modo che possano essere costruiti solo tramite funzioni di fabbrica.
- È stato rinominato Font.asFontFamily in Font.toFontFamily (I42aa7)
È stato introdotto
ComposeContentTestRule
, che estendeComposeTestRule
e definiscesetContent
, che è stato rimosso daComposeTestRule
. È stato aggiunto un metodo di fabbricacreateEmptyComposeRule()
che restituisce unComposeTestRule
e non avvia un'attività per lo sviluppatore. Da utilizzare quando vuoi avviare l'attività durante il test, ad esempio utilizzandoActivityScenario.launch
(I9d782, b/174472899)animateAsState ora è animateFooAsState, dove Foo è il tipo della variabile da animare, ad esempio Float, Dp, Offset e così via (Ie7e25)
Il parametro Descrizione dei contenuti è stato aggiunto a Immagine e Icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)
Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o della finestra. (I62db4)
OnSizeChanged riportava le dimensioni dei contenuti del layout. Ora riporta la dimensione nella relativa posizione all'interno della catena di modificatori. (I36b78, b/177562900)
L'API emit() e tutti i relativi sovraccarichi sono stati ritirati e rinominati in ComposeNode. Le API sono identiche, ma hanno un nome diverso per rispettare le convenzioni di denominazione di Compose (I4137b)
TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata.
initial
è stato rimosso dai parametri del costruttore EditingBuffer. (I326d5)
invalidate e compositionReference() sono ora deprecati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)
AnnotatedString viene modificato in modo da estendere kotlin.CharSequence. Pertanto, length e subSequence ora sono funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429)
RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora deprecato.
RememberObserver
sostituisceCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, che è la prassi consigliata e continuerà a esserlo. Tuttavia, se un riferimento è stato memorizzato più volte in una composizione,onRemembered
viene chiamato per ogni riferimento, mentreonEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, comeWithConstraints
eScaffold
, rendendo inaffidabile la singola chiamataonEnter
, che è stata rimossa perRememberObserver
.RememberObserver
aggiungeonAbandoned
, che viene chiamato se l'istanzaRememberObserver
viene restituita dal callback passato aremember
, ma non è stata memorizzata nello stato della composizione e, pertanto, non verrà mai chiamatoonRemembered
. Ciò può accadere se un'eccezione termina la composizione prima del completamento o se la composizione viene ignorata perché lo stato per cui è stata prodotta non è più attuale o non è più necessario. Se l'istanza diRememberObserver
che segue il singolo consiglio di riferimento riportato sopra monitora una risorsa esterna, siaonForgotten
siaonAbandoned
indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro avviato o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato se viene chiamatoonRemembered
. (I02c36)Operazioni aritmetiche ritirate tra due o più TextUnit. Le funzioni TextUnit.Sp e TextUnit.Em sono state ritirate in favore delle funzioni di estensione come Int.sp e Int.em. (I48369)
Le risorse nelle librerie senza risorse pubbliche dichiarate esplicitamente (ad es. tramite public.xml) ora sono private per impostazione predefinita. (Ia1dcc, b/170882230)
Le colonne/le righe scorrevoli sono state ritirate. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai contenuti di scorrimento di grandi dimensioni, perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino il metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e di promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non avere bisogno del comportamento lazy e utilizzare direttamente i modificatori come questo: 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 le utilizzi. Nuovi sovraccarichi di 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)
Utilizza TestCoroutineDispatcher nei test (I532b6)
TextInputService.onStateUpdated è stato rinominato in updateState (Id4853)
La transizione basata su TransitionDefinition è stata ritirata (I0ac57)
TextUnitType.Inherit viene rimosso. Utilizza invece TextUnitType.Unspecified. (I9ff64)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
viene rilasciato. La versione 1.0.0-alpha10 contiene questi commit.
Modifica che provoca un errore
La ristrutturazione dell'API del compilatore interno consente di raggruppare le modifiche ai nodi generati come risultato della composizione nella fase di composizione "Applica modifiche", dopo il completamento di tutte le funzioni
@Composable
.Si tratta di una modifica di interruzione del comportamento che potrebbe influire sul codice dell'applicazione, poiché i nodi non sono più disponibili dalle API interne ed sperimentali fino a quando le modifiche non sono state applicate. Di solito, questo problema può essere risolto circondando il codice con queste dipendenze in un composable
SideEffect
per posticipare l'esecuzione del codice fino a dopo la creazione e l'inizializzazione dei nodi. (I018da)
Modifiche all'API
- È stato aggiunto Modifier.focusOrder(), che può essere utilizzato per specificare un ordine di attraversamento dell'attenzione personalizzato (I90cf5, b/175899543, b/170155556, b/170155429)
- È stato rimosso l'utilizzo deprecato di focusObserver. Utilizza invece onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
- Modifiche all'API EditOperations
- EditOperation è stata rinominata in EditCommand
- È stato aggiunto il suffisso Command per le implementazioni concrete di EditOperation
- I comandi di modifica non sono più classi di dati
- La funzione EditOperation.process è stata rinominata in applyTo
- Rinomina di InputEventListener in InputEventCallback
- (I0a366)
- Sono stati rimossi PxSquared, PxCubed e PxInverse inutilizzati. È stata modificata la proprietà Size.center() in modo che sia una proprietà. (I973f7)
- Il modulo ui-test ora potrà configurare la creazione di recomposer per le UI testate (Ibebd8)
- Velocità modificata per includere componenti e operazioni matematiche. (Ib0447)
@ExperimentalTesting
è stato rinominato in@ExperimentalTestApi
per essere coerente con annotazioni API sperimentali simili (Ia4502, b/171464963)- Color.useOrElse() rinominato in Color.takeOrElse() (Ifdcf5)
- Sono state rimosse le classi DpInverse, DpSquared e DpCubed non utilizzate. (I4d62b)
- Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
- Aggiungi un callback per notificare al proprietario la modifica dei limiti di layoutnode. (I72fd1)
- Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi in linea con una costante Unspecified. (I93f7b, b/174310811)
Espandi le API [Abstract]ComposeView per consentire il riciclo delle visualizzazioni basate su Compose, eliminando la loro composizione per ricrearle nuovamente in un secondo momento. Aggiungi API per installare e rilevare Recomposers basati su finestra e CompositionReference per creare composizioni secondarie.
Aggiungi ViewCompositionStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews. Il comportamento predefinito è l'eliminazione al distacco della finestra. (I860ab)
È stata rimossa l'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 a Strings.kt di base (I4a5b7, b/172366489)
nativeClass è stato spostato nel modulo UI e reso interno. Sono stati aggiornati gli utilizzi di nativeClass nelle implementazioni di equals in modo da utilizzare "è MyClass". (I4f734)
Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
È stato introdotto SelectionRegistrar.notifySelectableChange per notificare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)
È stata introdotta la proprietà Outline.bounds per ottenere il rettangolo delimitante per varie implementazioni di schemi. (I16e74, b/175093504)
TestUiDispatcher è stato ritirato. Utilizza Dispatchers.Main (Ic171f, b/175385255)
ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)
Modifiche all'API VisualTransformation
- OffsetMap è stato rinominato in OffsetMapping
- È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
- PasswordTransformation non è più una classe di dati
- OffsetMapping è stato spostato in un file dedicato
- (I0bdf3)
È stata rinominata la posizione in DpOffset ed è stato rimosso getDistance() (Ib2dfd)
È stata modificata la funzione Dp.isFinite() in un valore Dp.isFinite (I50e00)
Correzioni di bug
- Ora Recomposer espone un flusso del suo stato attuale, consentendo di monitorare la sua attività e quella degli effetti associati. (Ifb2b9)
- Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
animate()
viene ora sostituito conanimateAsState()
, che restituisce unState<T>
anzichéT
. Ciò consente un miglior rendimento, in quanto l'ambito dell'invalidazione può essere ridotto al punto in cui viene letto il valore di Stato. (Ib179e)- Aggiungi l'API di ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier, che è selezionabile, attivabile e disattivabile. È stato modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
- Nuova API basata su coroutine
Animatable
che garantisce l'esclusività reciproca tra le animazioni.- Nuovo DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale
- (I820f2, b/168014930)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
viene rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche all'API
- KeyEvent.Alt deprecato è stato rimosso. Utilizza KeyEvent.isAltPressed. (Idd695)
- Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati. Utilizza Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Per la sospensione delle API di input del cursore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
- L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
- Aggiunta di dichiarazioni di scomposizione per creare istanze di FocuSRequester (I35d84, b/174817008)
- accessibilityLabel è stata rinominata contentDescription. accessibilityValue è stata rinominata stateDescription. (I250f2)
- Gli eventi personalizzati sono stati rimossi dall'API di input del cursore in sospensione (Ia54d5, b/175142755)
- Sono state introdotte diverse nuove funzioni in SelectionRegistrar e inoltre è stata rinominata la funzione onPositionChange in notifyPositionChange. (Ifbaf7)
- Altri membri di LayoutNode contrassegnati come interni (I443c6)
- LayoutInfo è stato introdotto per essere utilizzato dagli strumenti e dai test (I9b190)
- AndroidOwner impostato come interno (Ibcad0, b/170296980)
- È stata rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
- È stato aggiunto un sistema di scorrimento nidificato. Per ulteriori dettagli, consulta Modifier.nestedScroll (I36e15, b/162408885)
- La funzione subcomposeInto(LayoutNode) è stata resa interna (Id724a)
L'interfaccia
Applier
è cambiata per semplificare la creazione degli alberi dal basso verso l'alto anziché dal basso verso l'alto.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.Un applicatore inserisce i nodi nell'albero in modifica utilizzando
insertTopDown()
oinsertBottomUp()
, a seconda di quale ha un rendimento migliore.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti da creare dal basso verso l'alto rispetto a quelli dall'alto verso il basso. Prima di questa modifica, era necessario un insieme di inserimenti per implementare il metodo dal basso verso l'alto, che doveva essere copiato in ogni applicatore che aveva bisogno di una costruzione dal basso verso l'alto per le prestazioni. Con questa modifica, unApplier
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à dismissOnBackPress e dismissOnClickOutside ad AndroidDialogProperties. Consentono di configurare quando verrà invocato il lambda onDismissRequest della finestra di dialogo. (If5e17)
È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i file PNG) o da VectorDrawables. I consumatori non devono più determinare il tipo di asset in anticipo e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composabili di immagini o nei modificatori di pittura. (I2c703, b/173818471)
È stato aggiunto Modifier.clearAndSetSemantics per cancellare le semantiche dei discendenti e impostarne di nuove. (I277ca)
È stato spostato ContentDrawScope nel modulo ui-graphics per essere associato a DrawScope. (Iee043, b/173832789)
È stata introdotta l'API grafica PathEffect per fornire diversi motivi alle forme con tratto. È stato ritirato l'utilizzo di NativePathEffect a favore dell'implementazione prevista/effettiva di PathEffect. (I5e976, b/171072166)
Sono state aggiunte le interfacce IdlingResource a Compose, come variante supportata da Compose delle risorse inattive di Espresso. Possono essere registrati e annullati tramite ComposeTestRule (I433f3)
È stata rimossa la registrazione (e la relativa annullamento) globale di ComposeIdlingResource e la registrazione (e la relativa annullamento) globale degli orologi in ComposeIdlingResource (I32660)
Correzioni di bug
- Le lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
Sono stati rimossi SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza erano contrassegnati come InternalComposeAPI. Ora sono interne al modulo di composizione.
CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Sono pubblici, ma non sono destinati all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c)
È stato eseguito il refactoring di ShaderBrush per creare in modo lazy un'istanza di shader quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Questo è utile per definire gradienti che occupano l'intero spazio di disegno di un composable al momento della composizione, senza dover implementare DrawModifier personalizzati.
API del costruttore della funzione di gradiente ritirate a favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)
Ritiro di LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)
BuildCompat.isAtLeastR (Idb37e) non più supportato
È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare un oggetto AnnotatedString. Funzione di compilatore annotatedString ritirata. (Idfe0b)
Sono stati rimossi i metodi di estensione su Float e Double per convertire i valori in radianti. È stata spostata in una funzione privata all'interno dell'implementazione PathParser che era l'unico posto in cui veniva utilizzata (I25f52)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
viene rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche all'API
- Aggiungi l'azione di semantica Ignora (I2b706)
- Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere metodi di tipo/helper per facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
- Modifier.drawLayer è stato rinominato in Modifier.graphicsLayer. Inoltre, sono state aggiornate le classi correlate a GraphicsLayer in base al feedback sull'API. (I0bd29, b/173834241)
- Sono stati aggiunti i nuovi metodi placeable.placeWithLayer() e placeable.placeRelativeWithLayer() che consentono ai layout personalizzati e ai modificatori di layout di posizionare un elemento secondario introducendo un livello grafico per il disegno. In questo modo, possiamo prima ottimizzare i ridisegni, quindi, quando dobbiamo spostare un elemento secondario, non dobbiamo ridisegnare i relativi contenuti. In secondo luogo, possiamo applicare le trasformazioni di disegno per un elemento secondario (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>
è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)- Sono state aggiunte le API Modifier.scale/rotate per comodità di drawLayer.
Modifier.drawOpacity
rinominato inModifier.alpha
Modifier.drawShadow
rinominato inModifier.shadow
(I264ca, b/173208140)
- I campi uptime e posizione di PointerInputData non sono più null. (Id468a)
- MaterialTheme ora imposta i colori corretti per i manici 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 controllare se la finestra dell'host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
- L'API TransformOrigin è stata aggiornata per avere una sintassi di destrutturazione che restituisce
pivotFractionX
epivotFractionY
comecomponent1
ecomponent2
(If43c4, b/173586560) - È stato aggiunto il controllo lint per il nome e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
È stata eseguita la migrazione di alcune API che utilizzano
children
come nome per la funzione lambda finale acontent
, in base alle indicazioni e al controllo lint. (Iec48e) - È stata aggiunta un'API per verificare se i tasti di modifica Alt, Ctrl, Meta o Maiusc sono stati premuti quando è stato inviato un evento tastiera. (I50ed9)
- È stato aggiunto un nuovo sovraccarico
Modifier.drawLayer()
. Richiede un blocco lambda in un nuovo GraphicsLayerScope in cui definisci i parametri del livello in modo da saltare la ricompozione e il nuovo layout quando si verifica la modifica dello stato. DrawLayerModifier ora è interno in preparazione alla migrazione della relativa logica nel metodo placeable.placeWithLayer() di LayoutModifier (I15e9f, b/173030831) - Sono stati ritirati gli ambienti con il suffisso
Ambient
e sostituiti con nuove proprietà con prefisso Ambient, seguendo le linee guida per gli altri ambienti e l'API Compose. (I33440) androidx.compose.ui.text.Typeface
spostato inandroidx.compose.ui.text.font.Typeface
(Ic2b81)- L'argomento semantico mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
- Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del cursore, incluso il blocco dell'orientamento. (Icef25)
- È stato rinominato VectorAsset in ImageVector. È stato spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida dell'API. È stato aggiunto un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
- I metodi ImageAsset e correlati sono stati rinominati in ImageBitmap. (Ia2d99)
- Aggiungi il parametro zIndex per place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e qualsiasi layout personalizzato possa impostare gli zIndex per i relativi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
- Le proprietà di semantica di base sono state spostate nella UI (I6f05c)
- Ritirare place(Offset) e placeRelative(Offset). Utilizza invece le sovraccaricamenti con offset int (I4c5e7)
- Le API precedentemente ritirate sono state rimosse: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso, utilizza Modifier.onDrawBehind. Modifier.plus è stato rimosso. Utilizza Modifier.then. Color.Unset è stato rimosso. Utilizza Color.Unspecified. La classe PxBounds è stata rimossa. Utilizza invece Rect. (Ie9d02, b/172562222)
- L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
- Il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione è stato aggiunto utilizzando il nuovo input del cursore in sospensione. Sono state aggiunte anche alcune utilità, che semplificano la scrittura di rilevatori di gesti da parte degli sviluppatori. (I00807)
id
è stato rinominatolayoutId
perLayoutIdParentData
.Measurable.id
è stato rinominatoMeasurable.layoutId
. (Iadbcb, b/172449643)- Nuovo rilevatore di gesti multitouch, inclusi gli elementi di assistenza per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
- Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1)
- Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
Aggiungi API di scorrimento basate su coroutine:
Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di tornare. (Ie5642)
Modifier.focusable deve essere aggiunto in Foundation. Utilizzalo per aggiungere un comportamento di attivazione a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)
Fornisci implementazioni predefinite di metodi e proprietà in AnimationClockTestRule che possono essere delegate al relativo
clock
(I7ea3d, b/173399709)AndroidComposeTestRule ora può accettare avviatori di attività personalizzati (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd è deprecato. Al suo posto, TextLayoutResult.getLineEnd ora ha un nuovo parametro visibleEnd. (I73282)
API TextFieldValue aggiornata
- è stato impostato TextFieldValue.composition come di sola lettura
- Eccezione rimossa lanciata per 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 della casella è stato rinominato in contentAlignment. (I2c957)
- I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché stato. (Ic3021, b/173594846)
- È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- È stato aggiunto il controllo lint per i parametri di modificatore nelle funzioni Composable. Questo controllo di lint verifica la consistenza di denominazione, tipo di ritorno, valore predefinito e ordine del parametro con le linee guida di Compose. (If493b)
- È stata aggiunta temporaneamente l'opzione per consentire a TestAnimationClock di essere gestito da MonotonicFrameClock (I1403b, b/173402197)
- È stato 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 su Modifier, in modo che possano essere collegate in modo fluido. (I07981)
- Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
- Recomposer non accetta più un contesto EmbeddingContext. Le dipendenze di pianificazione richieste vengono ottenute dal contesto effectCoroutineContext. FrameManager è deprecato; le integrazioni della piattaforma devono inizializzare la propria gestione degli snapshot globali. (I02369)
- Passa le informazioni sullo stile al nodo di accessibilità. (If5e8d)
- TextUnit.Inherit viene rinominato in TextUnit.Unspecified per coerenza con le altre unità. (Ifce19)
Interfaccia utente di Compose versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
viene rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche all'API
- È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro al fine di supportare i casi d'uso di scala non uniforme.
- È stato aggiunto il metodo computeScaleFactor a ContentScale
- È stato aggiunto ContentScale.FillBounds per eseguire una scalatura non uniforme in modo da allungare i limiti di src in modo da occupare completamente la destinazione.
- Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Size.
- (Ic96a6, b/172291582)
- Sono state aggiunte le fabbriche BiasAlignment e BiasAbsoluteAlignment per la creazione di allineamenti. (Iac836, b/169406772)
- Consente a uno sviluppatore di annullare forzatamente lo stato attivo. (I90372)
- È stato corretto un bug che impediva di disegnare l'elevazione per le visualizzazioni all'interno di Compose. (If7782)
- È stata creata l'API onDrawBehind all'interno di ContentDrawScope per far corrispondere la convenzione di denominazione a Modifier.drawBehind. (I4fc3a, b/171955269)
- Aggiunta del supporto per la distanza della fotocamera per integrare le trasformazioni 3D rotationX/rotationY sulle API di livello. (I40213, b/171492100)
- È stato aggiunto SelectionContainer senza il callback (Ibfadb)
- L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
- FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
- L'opacità è stata rimossa dal modificatore drawShadow() perché era confusa. (I82c62, b/171624638)
- MeasureResult è stato spostato 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)
- Stato FocusState2 non più supportato rimosso (I686cb, b/168686446)
- ZIndexModifier ora è interno (I1808b, b/171493718)
- Aggiornamento del tipo restituito del metodo lerp sui parametri Size per restituire un valore Size non nullo al fine di evitare un'inutile confezione. (Ib0044)
- È stato aggiunto TestMonotonicFrameClock per testare il codice che si basa su MonotonicFrameClock di Compose per attendere gli eventi del frame di composizione utilizzando runBlockingTest di kotlinx-coroutines-test (I4402f)
- È stato rimosso GestureScope.localToGlobal (I15299, b/171462785)
- È stato aggiunto il cercatore di
onAllNodesWithSubstring
(I81dd7, b/171462889) - Il modulo androidx.ui.test è deprecato. Esegui la migrazione a androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8)
Correzioni di bug
- captureToBitmap è stato spostato in captureToImage. (I86385)
- foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base senza opinioni che non utilizza i valori di un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
- Aggiorna TextFields in modo che accetti KeyboardOptions (Ida7f3)
- Rinomina KeyboardOptions in ImeOptions (I82f36)
- KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
- provideDefault è stato aggiunto come alternativa per fornire ambienti e può essere utilizzato per specificare valori di ambiente che verranno impostati solo se non è già stato fornito un valore di ambiente. (Id6635, b/171024925)
- BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
- Introduzione del modulo ui-test-junit4 (Ib91f8)
relativePaddingFrom
è stato rinominatopaddingFrom
. È stato aggiunto il modificatorepaddingFromBaseline
per specificare le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)- LaunchedTask è stato rinominato in LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. Per promuovere le best practice, non è consentito LaunchedEffect senza parametri subject. (Ifd3d4)
- Sono state introdotte risorse componibili che si ricompongono quando la configurazione viene aggiornata. (I6387c, b/167352819)
- Ora Recomposer richiede un contesto coroutine durante la costruzione (Ic4610)
- Somma i valori
zIndex
quando vengono applicati piùModifier.zIndex()
. In precedenza, era la prima a vincere. (Ic514c, b/170623936) - Modifiche all'implementazione interna di SlotTable che non dovrebbero influire sull'API pubblica. (If9828)
- È stata aggiunta l'opzione di IME di correzione automatica della tastiera (I57b8d)
- androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
- È stata rimossa KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45)
Contributo esterno
- Pubblicazione disabilitata dell'elemento interno androidx.compose.ui:ui-text-android (Ib93fa)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche all'API
- Recomposer ora è un CompositionReference e un elemento composizione padre valido. Ora il ricomposimetro esplicito è obbligatorio in meno punti. (I4036f)
- Ritirare VectorPainter in favore di rememberVectorPainter per indicare meglio che l'API composable internamente sfrutta "remember" per mantenere i dati nelle composizioni. (Ifda43)
- È stata aggiornata l'API Modifier.drawWithCache per esporre ContentDrawScope come ambito del ricevente anziché DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Questo è utile per i casi d'uso di miscelazione/colorazione in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di miscelazione 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 dell'handle Rtl. (I6e1e0)
- È stato eseguito il refactoring di DrawScope e
ContentDrawScope in modo che siano interfacce
invece di classi astratte
- È stata creata l'implementazione di CanvasDrawScope di DrawScope
- Implementazioni ristrutturate di DrawScope per utilizzare CanvasScope
- È stato creato DrawContext per racchiudere le dipendenze per DrawScope
- Sono stati rimossi i metodi obsoleti su DrawScope (I56f5e)
- Modifica non compatibile: è stato rimosso il valore restituito da
PointerInputFilter.onPointerEvent(...)
, dato che l'unico valore che dovrebbe essere modificabile negli eventi del cursore sono i dati di consumo. Anziché restituire i dati daPointerInputFilter.onPointerEvent(...)
, ora puoi semplicemente modificare i dati di consumo degli eventi relativi al mouse passati. (I6acd0) - MeasureScope e IntrinsicMeasureScope sono stati creati come interfacce. (I1a087, b/170461665)
- La funzione di unione per la linea di allineamento è stata nascosta. (I9da1a, b/170612900, b/170611568)
- Aggiunta della possibilità di specificare le informazioni dell'ispettore nel modificatore composto (Idee08, b/163494569)
- È stata aggiunta l'opzione Seleziona tutto al menu di selezione (Ief02b)
- È stato aggiornato DrawTransform.rotate in modo da avere un parametro pivot predefinito di centro in modo da corrispondere alla documentazione.
- Aggiornato DrawScope.rotateRad per utilizzare un offset per il punto di rotazione in modo che corrisponda ad altri metodi di trasformazione.
- È stato ritirato il sovraccarico DrawScope.rotateRad che consumava valori float per le coordinate x e y del pivot.
- (Iffcbb, b/170434992)
Correzioni di bug
- Il controllo lint dell'API per MissingGetterMatchingBuilder è abilitato per androidx (I4bbea, b/138602561)
- Aggiungi il test. (I6b8ae)
- Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
- È stata aggiunta l'opzione IME Maiuscole tastiera (I8ac38)
- È stata aggiunta l'opzione di tastiera a riga singola a CoreTextField (I72e6d)
- Sposta SimpleContainer in PopupTestUtils.kt (I65c3e)
- L'API Radius è stata rinominata in CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. Documentazione aggiornata per indicare che i raggi di angolo negativi vengono bloccati a zero. (I130c7, b/168762961)
- È stata migliorata l'interoperabilità con Android continuando a inviare MotionEvent alle visualizzazioni Android secondarie che restituiscono false per onTouchEvent per tutte le azioni tranne
ACTION_DOWN
(I94c5a, b/170320973) - La casella è stata creata come 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
androidx.compose.ui:ui-*:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche all'API
- Aggiungi un DSL per specificare le informazioni dell'ispettore (Ic9a22)
- Spostare il pulsante di pressione prolungata in Testo. (Iff2bc)
- Modificatore di input sperimentale Modifier.pointerInput che sospende l'input (Ia77d2)
- Sono state aggiunte le azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
- Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
- I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata aggiunta anche l'opzione per configurare questa impostazione in modo esplicito (I64966, b/143778148, b/143778149)
I dati sul consumo sono ora modificabili. Inoltre, le chiamate alle funzioni di estensione che effettuano il consumo ora non restituiscono più un nuovo PointerInputChange, ma mutano il PointerInputChange fornito.
Questo è il primo passaggio di una procedura in due passaggi per rendere mutabili i dati di PointerEvent in modo che altri dati del cursore non possano essere modificati dal codice utente. Il secondo passaggio consisterà nel rimuovere il tipo di reso
List<PointerInputChange>
daPointerInputFilter.onPointerEvent(...)
. (Id067e)Disattivare la selezione nel testo e una demo. (Ie7e97)
È stata creata una funzione in linea per onGloballyPositioned (I15830)
OnPositionedModifier viene rinominato in OnGloballyPositionedModifier e onPositioned() viene rinominato in onGloballyPositioned(). (I587e8, b/169083903)
La proprietà hasPendingMeasureOrLayout è stata aggiunta a Owner per indicare se il proprietario ha operazioni di layout in attesa. (I3d9f8, b/169038599)
È stata aggiunta un'API per cancellare il fuoco in modo programmatico (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
rimosso. Al suo posto devi utilizzarePointerInputFilter.onPointerEvent(...)
. (I6f04a)Modifiche alle dimensioni
- È stata rimossa la funzione Size.getFlipped
- È stato rimosso Size.rem
- È stata rimossa la funzione Size.truncDiv (Ief44d, b/169790720)
Nell'ambito della standardizzazione degli indicatori di valori per le classi in linea, rinomina Color.Unset in Color.Unspecified per garantire la coerenza con le altre classi in linea (I97611, b/169797763)
Viene introdotto TextOverflow.None. Quando overflow è None, Text non gestisce più l'overflow e segnala le sue dimensioni effettive a LayoutNode. (I175c9, b/158830170)
Il parametro ambito in AnnotatedString.Builder.addStringAnnotation è stato rinominato in tag per la coerenza dell'API. (I7c8cb)
Correzioni di bug
- Le prestazioni di scorrimento di LazyColumn/Row sono migliorate riducendo il lavoro nella composizione secondaria a ogni scorrimento. Il nuovo metodo hasInvalidations() è stato aggiunto per la classe Composition. Il metodo hasPendingChanges() di Recomposer è stato rinominato in hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- I parametri aggiornati di Dimensioni.Senza_specifiche sono ora Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per eseguire il controllo rispetto a Dimensioni.Senza specifica e a dimensioni non finite. (I95a7e)
- L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno per gli elementi secondari (Ibc9f6)
- Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
- Sono stati aggiunti stub per le classi Android presenti su piattaforme precedenti per evitare, se possibile, l'utilizzo della riflessione. (Ia1790)
- Bug corretto: se la tastiera software mostrata causava la traduzione dell'app, le coordinate di inserimento del cursore diventavano errate. (Ic4cec, b/163077821)
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche all'API
- È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione del layout e dei disegni una volta che non sono più validi. (Ic4cf8)
- Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback rispettivamente quando il layout dei contenuti è stato rimisurato e quando le dimensioni sono cambiate. (I657cf, b/154108792)
- Aggiungere un'azione di semantica dei clic lunghi (I6281b, b/156468846)
- È stato reso privato FocusManager. (I7872f)
Aggiornamento dell'implementazione per creare un'implementazione di DrawCacheModifier dedicata instead of aggiungere proprietà facoltative a DrawModifier.
Documentazione aggiornata per vari metodi (Ibd166)
Crea un TextRange in linea per evitare la creazione di oggetti. (Id034b)
PlacementScope#parentWidth e PlacementScope#parentLayoutDirection non possono più essere letti dal blocco del posizionamento di un layout personalizzato. (Icc1ae, b/168295623)
Aggiungi AccessibilityScrollState alle proprietà di semantica. (Ifeda9)
È stato introdotto Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea condizionatamente le dipendenze in base alle informazioni su dimensioni/stato (I376dc)
ParagraphConstraints è stato rimosso. Ora la larghezza viene passata direttamente a Paragrafo. (Ica712)
Correzioni di bug
- Sono state aggiornate molte API di grafica
- API di trasformazione di scala e rotazione aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata pivot anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
- Sono stati rimossi i metodi Rect.expandToInclude e Rect.join
- La documentazione di Raggio è stata aggiornata per indicare ovale oltre a ellittico
- È stata aggiunta la documentazione per indicare che il costruttore pubblico della classe Radius inline non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istigati tramite i costruttori delle funzioni.
- Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
- Ritiro di Rect.shift a favore di Rect.translate
- Sono state rimosse le API RoundRect.grow e Rect.shrink
- Rinominata RoundRect.outerRect in Rect.boundingRect
- Sono stati rimossi i metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
- RoundRect.latoPiùLungo è stato rinominato in RoundRect.maxDimension
- Rinominata RoundRect.shortestSide in RoundRect.minDimension
- È stata modificata la proprietà RoundRect.center in modo che sia una proprietà anziché una funzione
- Il costruttore RoundRect è stato aggiornato in modo da utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
- Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con inizio in 0,0
- È stata aggiunta un'API di distruzione a Radius
- È stata eseguita la migrazione di varie funzioni di estensione di RoundRect in modo che diventino proprietà
- (I8f5c7, b/168762961)
- foundation.Box è stato ritirato. Utilizza invece foundation.layout.Box. (Ie5950, b/167680279)
- La funzionalità Stack è stata rinominata in Box. La cassetta esistente verrà ritirata a favore della nuova cassetta in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando sono presenti più elementi secondari. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
- I parametri di decorazione delle caselle sono stati ritirati. Se vuoi aggiungere decorazioni/spaziatura alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Sono state aggiornate molte API di grafica
- API DrawScope aggiornate con metodi di trasformazione basati su ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
- Documentazione di clipPath aggiornata per fare riferimento a Path instead of rounded rectangle
- Spaziatura fissa nella documentazione per il parametro giusto in clipPath
- È stato rinominato DrawScope.drawCanvas in drawIntoCanvas e è stato rimosso il parametro size
- I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
- È stata aggiunta un'overload di inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
- È stata rimossa la documentazione relativa al metodo di inset che indicava che l'inset verrebbe applicato a tutti e quattro i lati
- Documentazione aggiornata per la classe Rect
- Commenti aggiornati sui parametri Rect in modo che corrispondano allo stile kdoc
- Sono stati rimossi Rect.join e Rect.expandToInclude
- È stata creata un'overload per Rect.translate(offset) e ritirato Rect.shift
- (If086a, b/167737376)
- Sono stati annotati rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendendoli API interne e nascondendo il relativo kdoc (I554eb, b/168308412)
- Rimuovi SelectionContainer dalla parte superiore per disattivare la selezione predefinita ed evitare comportamenti imprevisti. È possibile utilizzare in modo specifico un SelectionContainer per racchiudere i contenuti che devono essere selezionabili. (I8dfe0, b/158459594)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche all'API
- Rimuovi le azioni di scorrimento avanti/indietro. Sono stati aggiunti passaggi in AccessibilityRangeInfo. (Ia47b0)
onInvalidate()
è stato rimosso daOwner
.OwnedLayer
gestisce l'invalidazione. (Ica72b, b/162061312)Sono stati rimossi i metodi di operatore nell'API Size che utilizzano i parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è imprevisto. Ad es. la dimensione - offset deve restituire un offset o un risultato della dimensione con la differenza?
Sono stati rimossi anche i metodi deprecati della classe Size. (Iec902, b/166514214)
Correzioni di bug
- Correzione per gli elementi di LazyColumn che a volte venivano disegnati in modo errato, causando anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895)
- DpConstraints e le API che lo utilizzano sono stati ritirati. (I90cdb, b/167389835)
createAndroidComposeRule
eAndroidInputDispatcher
spostati daandroidx.ui.test.android
aandroidx.ui.test
(Idef08, b/164060572)- Gli utilizzi di gravity sono stati rinominati in modo coerente in allineamento o allineamento nelle API di layout. (I2421a, b/164077038)
- È stato aggiunto onNode e altri metodi globali a ComposeTestRule poiché quelli globali attuali verranno ritirati. (Ieae36)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche all'API
- Rimuovi il callback per notificare al proprietario la modifica dei limiti del layoutnode. (If654e, b/166106882)
- È stato aggiunto il supporto per i parametri filltype nei percorsi di grafica vettoriale per supportare i ritagli delle forme in base alle regole di riempimento del percorso evenOdd o NonZero. (I43dd2)
- Uptime e Velocità ora sono classi in linea (I48f4a)
- La durata ora è una classe in linea (I565eb)
- Aggiungi un callback per notificare al proprietario la modifica dei limiti di layoutnode. (Ic40b3)
È stato corretto il problema per cui il costruttore della funzione Rect con offset e raggio creava il rettangolo nell'ordine di sinistra, destra, in alto, in basso anziché sinistra, in alto, destra, in basso.
Sono stati rimossi i metodi companion deprecati su Rect in favore dei costruttori di funzioni.
Sono stati aggiunti test per verificare i metodi in Rect.kt (I08460, b/165822356)
Correzioni di bug
- È stato aggiunto MutableRect, un rettangolo 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 è stata modificata. Si tratta di una modifica che provoca un errore in formato binario. Tutte le librerie devono essere ricompilate per funzionare con questa versione del plug-in del compilatore di compose.
Questa modifica non crea una modifica che comporta una rottura a livello di codice sorgente, in quanto le uniche API che sono state modificate sono le API del compilatore che richiedono un'attivazione esplicita. (I7afd2, b/158123185)
È stato risolto un arresto anomalo che poteva verificarsi quando il dispatching a un PointerInputFilter poteva causare la rimozione sincrona del PointerInputFilter. (I58f25)
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev17
viene rilasciato. La versione 0.1.0-dev17 contiene questi commit.
Modifiche all'API
emitView
è stato deprecato. Se possibile, utilizzaAndroidView
per emettere le visualizzazioni all'interno di Compose. Tieni presente che la composizione diretta di View e ViewGroup non sarà supportata in futuro, a meno che non si tratti di nodi foglia nell'albero di composizione, nel qual caso è possibile utilizzare AndroidView. (I29b1e, b/163871221)FocusState2
è deprecato e sostituito daFocusState
(Ia8b79, b/160822876, b/160923332)- Le sovraccaricamenti di AndroidView non più supportati sono stati rimossi. (I946b9, b/163802393)
- Ora le emissioni personalizzate possono dichiarare che uno o più dei relativi settaggi possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13)
Le classi di vettori non sono più classi di dati perché la stessa istanza di oggetto viene utilizzata per la composizione.
È stato aggiunto il flag mutableStateOf per VectorPainter per ridisegnare condizionatamente se i contenuti del vettore cambiano.
È stata riorganizzata l'istanza VectorComponent in modo che sia parte di VectorPainter, in quanto viene riutilizzata nelle varie composizioni.
Aggiornati GroupComponent e PathComponent in modo che i relativi campi name siano mutabili (Ieae45, b/151378808)
onChildPositioned
eOnChildPositionedModifier
sono stati rimossi. Gli sviluppatori devono utilizzareonPositioned
eOnPositionedModifier
nel layout secondario. (I4522e, b/162109766)L'offset è diventato una classe in linea (Iaec70)
È stato aggiunto un parametro modificatore a SelectionContainer (I4aada, b/161487952)
È stato rimosso FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
È stata aggiunta la lambda
mergePolicy
aSemanticsPropertyKey
. Questo può essere utilizzato per definire un criterio personalizzato per l'unione con la semantica di mergeAllDescendants. Il criterio predefinito è utilizzare il valore principale se già presente, altrimenti il valore secondario. (Iaf6c4, b/161979921)Constraints ora è una classe in linea (I88736)
È stato aggiunto FocusManager che sposta la logica di messa a fuoco comune da AndroidComposeView (I528ef, b/161487952, b/162206799)
Nomi di PointerEventPass aggiornati per la release Alpha. (Ifda6f)
IntOffset è ora una classe in linea (Iac0bf)
IntSize ora è una classe in linea (I2bf42)
PlacementScope.placeAbsolute()
è stato rinominatoPlacementScope.place()
e il precedentePlacementScope.place()
è stato rinominatoPlacementScope.placeRelative()
. Di conseguenza, il metodoPlacementScope.place()
non rispecchierà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza invecePlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog ora utilizza FlowRow per i pulsanti (I00ec1, b/161809319, b/143682374)
Alcune utilità di test non sono più pubbliche perché non si trovano dove dovrebbero. Verrà reso pubblico in futuro. (I32ab1)
Organizzazione rifattoriale del codice di input del cursore. (Ie3f45)
È stato ritirato PxBounds in favore di Rect. Sono stati aggiornati tutti gli utilizzi di PxBounds con rect e sono state aggiunte annotazioni di ritiro/sostituzione appropriate per facilitare la migrazione. (I37038, b/162627058)
È stato rimosso KeyEvent2 deprecato. Utilizza invece KeyEvent. (Ied2d0, b/162097587)
KeyEvent ha una proprietà Unicode che può essere utilizzata per ottenere il carattere Unicode generato dalla combinazione di stato della chiave e della metachiave specificata (If3afc)
L'evento personalizzato DelayUp e le classi correlate sono diventati un'API che richiede l'attivazione in quanto è molto probabile che vengano modificati. (I56d6f)
Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I3dd9d)
Aggiungi i parametri color, shadow e TextDecoration a Paragraph.paint. Questa funzione è utile per evitare la ricostituzione non necessaria di Paragraph. (I81689)
Correzioni di bug
- Sono stati rimossi i callback onFocusChanged da TextField. Utilizza invece Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
Sono state rimosse le chiamate FrameManager deprecate.
Le API di composizione interna sono state modificate per ridurre il carico aggiuntivo per monitorare gli oggetti di stato come
mutableStateof()
(I80ba6)VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)
È stato corretto l'arresto anomalo che si verificava quando all'interno del ciclo for veniva utilizzato qualcosa che salvava lo stato. Ora è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è ora adattata a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Il composable
state { ... }
è stato ritirato a favore di chiamate esplicite aremember { mutableStateOf(...) }
per maggiore chiarezza. Ciò riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e corrisponde al patternby mutableStateOf()
per la delega delle proprietà della classe. (Ia5727)RRect è stato rinominato in RoundRect per adattarsi meglio ai pattern di denominazione di compose Sono stati creati costruttori di funzioni simili a RRect e sono stati ritirati i costruttori di funzioni RRect (I5d325)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.ui:ui-*:0.1.0-dev16
viene rilasciato. La versione 0.1.0-dev16 contiene questi commit.
Modifiche all'API
- OnChildPositioned è stato deprecato. Utilizza invece OnPositioned sul componente figlio. (I87f95, b/162109766)
- setViewContent è stato deprecato. Utilizza setContent. (I7e497, b/160335130)
- È stata aggiunta l'API AndroidViewBinding per l'inflazione e la composizione delle risorse di layout, in base a ViewBinding. (I081c6)
- KeyEvent2 viene sostituito da KeyEvent (I2d770, b/162097585)
- È stato aggiunto il supporto per la chiave hardware Alt (I9036b)
- FocusManager è deprecato. Utilizza Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester(). (I74ae4, b/162211322)
- loadVectorResource supporta gli attributi trimPath (I808fe)
- Spostare la finestra di dialogo nell'interfaccia utente (I47fa6)
- Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I33ca7)
- È stato implementato PointerInteropModifier, che offre la possibilità di ricevere MotionEvent e interagire con Compose come se si trattasse di un'implementazione di una vista Android. (Ieb08c)
- È stato rimosso il modificatore del tag obsoleto. Utilizza invece layoutId. (Idaa05, b/162023919)
- Le API per il supporto della scrittura da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
- Supporto del taglio dei percorsi nelle grafiche vettoriali (Ie16c9, b/158188351)
- È stato aggiunto Modifier.layout() che consente di creare facilmente un modificatore di layout personalizzato (I73b69, b/161355194)
- È stata aggiunta una nuova API AndroidView e sono state ritirate quelle esistenti. (I5bcfd)
- Modifier.plus è deprecato. Utilizza Modifier.then. "Poi" indica più chiaramente l'ordine, ma impedisce anche di digitare
Modifier.padding().background() + anotherModifier
, che interrompe la catena ed è più difficile da leggere (Iedd58, b/161529964) - Aggiungi sottoclassi di vista [Abstract]ComposeView per ospitare i contenuti di Compose in una gerarchia di viste. (I46357)
Row
eColumn
ora sono funzioni in linea che riducono notevolmente il sovraccarico di utilizzo. (I75c10)- SubcomposeLayout viene aggiunto. Si tratta di una primitiva di basso livello che consente di comporre gli elementi secondari durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in un secondo momento durante la misurazione per la composizione del sottoalbero. Ad esempio, WithConstraints non è implementato utilizzando SubcomposeLayout. (I25cc8)
- È 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 poi di nuovo ad Android. (I14be8, b/158034713)
- È stato rimosso dropdownPopup. (I00430)
- Posizione del popup fissa sui display con ritaglio. (Idd7dd)
- Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
- È stato aggiunto RemeasurementModifier, che consente di ricalcolare il layout in modo sincrono. In genere non è necessario perché la misurazione/il nuovo layout avvengono automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
- Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Utilizza getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Aggiungi alcuni segni/annotazioni per seguire le best practice. (I66b20)
- esporre altre API di riga in TextLayoutResult. (I79bd2)
- I convertitori di vettori 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
- Risolvere correzioni generali dell'API (I077bc)
- Rimuovere l'interfaccia OffsetBase non utilizzata
- Allinea le classi Offset e IntOffset per avere una piattaforma API coerente
- Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
- Il metodo nativeCanvas è stato spostato dall'interfaccia Canvas per consentire ai consumatori di creare le proprie istanze Canvas
- È stata creata la classe stub EmptyCanvas per eseguire il refactoring di DrawScope in modo che sia un parametro non nullo anziché lateinit e garantire la non nullità del campo
- I valori enumerati ClipOp sono stati rinominati in Pascal Case
- Le enum FilterQuality sono state rinominate in Pascal Case
- Gli enum StrokeJoin sono stati rinominati in Pascal Case
- Gli enum PointMode sono stati rinominati in Pascal Case
- Gli enum PaintingStyle sono stati rinominati in Pascal Case
- Gli enum PathFillType sono stati rinominati in Pascal Case
- I valori enumerati di StrokeCap sono stati rinominati in Pascal Case
- È stata aggiornata l'implementazione di DrawCache in modo che non utilizzi più i parametri lateinit
- È stato aggiornato DrawScope in modo che non utilizzi più la delega lazy per i parametri interni fillPaint e strokePaint
- Componibile immagine aggiornato per evitare l'utilizzo di Box per un overhead ridotto
- Aggiornamento della classe Outline per includere le annotazioni @Immutable
- PathNode è stato aggiornato in modo da avere annotazioni @Immutable per ogni istruzione del percorso
- È stata aggiornata la composizione secondaria di vettore per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
- Metodi di costruttore complementari di Rect ritirati a favore di costruttori di funzioni
- Classi e costruttori di funzioni di Brush aggiornati con API @Immutable e @Stable
- È stato aggiornato l'enum VertexMode in modo che sia in PascalCase
- Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri di tratto sul colore se sono stati modificati
- È stato aggiornato il parametro Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
- Aggiornamento del consumo dell'API BlendMode per la composizione per mappare correttamente le modalità BlendMode del framework Android e le modalità PorterDuff in base al livello API. È stata introdotta l'API BlendMode#isSupported per fungere da query sulle funzionalità al fine di determinare se BlendMode è supportato sul dispositivo prima che venga utilizzato. (I0ef42)
- È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi lazy. Fornisce modificatori per riempire la dimensione massima del contenitore principale, che risolve il caso d'uso in cui l'elemento deve riempire il viewport e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854)
SemanticsNodeInteraction.performPartialGesture
rimosso. Utilizza inveceSemanticsNodeInteraction.performGesture
. (Id9b62)LazyColumnItems
è stato rinominatoLazyColumnFor
.LazyRowItems
è stato rinominato inLazyRowFor
(I84f84)- Il pacchetto
foundation.shape.corner
è stato appiattito infoundation.share
(I46491, b/161887429) AndroidComposeTestRule
rinominato increateAndroidComposeRule
. (I70aaf)- Sono state aggiunte altre API a
TextLayoutResult
. (Id7e04) - Material
FilledTextField
è stato rinominato inTextField
eTextField
di base è stato rinominato inBaseTextField
per semplificare la ricerca e l'utilizzo dell'API desiderata (Ia6242, b/155482676) - Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.ui:ui-*:0.1.0-dev15
viene rilasciato. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.
Modifiche all'API
- FocusModifier è deprecato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState e FocusDetailedState sono stati ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
- È stato aggiunto un modificatore per osservare la modifica dello stato di messa a fuoco. (I05866, b/160924455, b/160923326)
- È stato aggiunto un modificatore per richiedere modifiche allo stato attivo (I8dd73, b/161182057, b/160924778)
- Modifica il menu della barra degli strumenti in modo che mostri correttamente le opzioni di copia, taglio e incolla. (Id3955)
- Le proprietà di semantica a valore singolo ora utilizzano uno stile di chiamata.
Ad esempio, "semantics { hidden = true }" ora viene scritto come:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - È stato aggiunto Modifier.focus che sostituisce FocusModifier. (Ib852a, b/160924778)
- Aggiungi la barra degli strumenti fluttuante per la selezione del campo di testo. (Ie8b07)
- È stata aggiunta un'annotazione API sperimentale per l'API relativa all'inserimento di chiavi (I53c0a)
- È stata aggiunta un'annotazione API sperimentale per tutte le API correlate a Focus (I53b24, b/160903352)
- È stato aggiunto FocusState2 che sostituirà FocusDetailedState (I0a3ba, b/160822595)
- È stato aggiunto ExperimentalFocus, un'annotazione @OptIn per l'API Focus. (I1544b, b/160820961)
- È stata aggiunta una classe di unità IntBounds che rappresenta i limiti di pixel interi del layout. L'API di PopupPositionProvider è stata aggiornata per utilizzarla. (I0d8d0, b/159596546)
- Applier ora richiede un metodo clear() per eliminare le composizioni (Ibe697)
- KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
- È stato aggiunto un nuovo flag facoltativo useUnmergedTree per testare i finder. (I2ce48)
- È stata creata l'API sperimentale LayoutNode (I4f2e9)
Sono stati aggiunti metodi di copia a vari tipi di classi inline, tra cui:
- Offset
- Dimensioni
- Raggio
- Movimento
TransformOrigin
Metodo dell'oggetto companion Size.copy ritirato in favore del metodo di copia dell'istanza (Ife290, b/159905651)
I popup, le finestre di dialogo e i menu ora ereditano il MaterialTheme contestuale (Ia3665, b/156527485)
TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)
È stato 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 della misura (Ic7d9d)
Ristruttura i SelectionHandles per il riutilizzo. (I420e0)
La funzionalità Cliccabile è stata rimossa. Utilizza Modifier.clickable (I84bdf)
TestTag e Semantics sono stati eliminati. Utilizza Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)
Prima di questa modifica, il plug-in del compilatore di Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
Modifier.tag è stato rinominato in Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)
Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la riga di allineamento sottoposta a query non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)
Al composable AndroidView è stato aggiunto un parametro di modificatore. (I48a88, b/158746303)
Semantics() è deprecato. Utilizza invece Modifier.semantics(). (I72407, b/158841414)
Aggiungi il composable viewModel(), che consente di creare o recuperare un 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é PxSize. Ciò offre i vantaggi di una classe in linea per sfruttare un valore lungo per imballare 2 valori float per rappresentare la larghezza e l'altezza rappresentate come valori float. (Ic0191)
Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. Ciò offre i vantaggi di una classe in linea per sfruttare un valore long per imballare 2 valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Classe Px eliminata nella sua interezza (I3ff33)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su tipi di Dp e primitivi per i parametri dei pixel (Id3434)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)
TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)
L'implementazione predefinita di ParentDataModifier#modifyParentData, che non esegue alcuna operazione, è stata rimossa. Era equivalente a non implementare l'interfaccia. (I0deaa)
La funzionalità ScaleFit, precedentemente deprecata, è stata rimossa. Utilizza invece ContentScale. (Ifbc5b)
È stato sostituito l'utilizzo della classe Px in vari classi di composizione nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)
È stato aggiunto il componente DropdownMenu in ui-material, un'implementazione del menu Material Design. (I9bb3d)
È stato rimosso LayoutTag(), che è deprecato. Utilizza Modifier.tag() al suo posto. È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)
È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)
Modifier.semantics non è più deprecato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)
Implementazioni CanvasScope consolidate ora esistono solo DrawScope e ContentDrawScope CanvasScope è stato rinominato in DrawScope. È stato aggiornato DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. È stato eliminato il sottotipo DrawScope in ContentDrawScope. Painter e PainterModifier sono stati aggiornati in modo da non gestire più autonomamente una proprietà RTL, poiché DrawScope la fornisce già senza doverla fornire manualmente (I1798e)
Ora DoubleTapGestureFilter consente di distinguere SingleTapGestureFilter nell'albero. (If92b1)
È stata aggiornata l'API Alignment e aggiunto il supporto per l'allineamento assoluto (che non esegue la duplicazione automatica nel contesto Rtl) (I38cd3)
L'API dei modificatori DrawLayer è stata modificata: outlineShape è stato rinominato in shape e ha il valore predefinito RectangleShape e ora non è null; clipToOutline è stato rinominato in clip; clipToBounds è stato rimosso perché è uguale a clip == true con RectangleShape (I7ef11, b/155075735)
API compose di livello superiore aggiornate che espongono un Canvas per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che hanno ancora bisogno di accedere a un Canvas possono utilizzare il metodo drawCanvas dell'estensione, che fornisce un callback per emettere comandi di disegno con il Canvas di base. (I80afd)
L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del ricevitore che, oltre a constraints e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)
Interfaccia LayoutModifier deprecata rimossa. (I2a9d6)
Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 ora hanno un ricevitore IntrinsicMeasureScope che fornisce l'API di query intrinseca con la direzione del layout propagata implicitamente. (Id9945)
Gli elementi Layout e LayoutModifier possono essere misurati con una direzione di layout diversa. (Ibd731)
È stato aggiunto il nuovo Modifier.zIndex() per controllare l'ordine di disegno degli elementi secondari all'interno dello stesso layout principale. La proprietà elevation in DrawLayerModifier è stata rinominata in shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri di DrawShadow è cambiato: l'elevazione è ora la prima e la forma è la seconda con un valore predefinito RectangleShape. (I20150, b/152417501)
Sono stati rimossi onSizeChange e onPositionChange in Owner. (I5c718)
È stato aggiunto Constraints2, una copia di Constraints che supporta solo i valori di vincoli Int anziché IntPx. IntPx verrà rimosso e tutti i vincoli di interi verranno considerati come pixel come Android.
- È stato aggiunto anche IntSize, che sostituirà IntPxSize. (I4b43a)
È stato reso possibile creare istanze di Allineamento con valori arbitrari. Sono stati aggiunti gli allineamenti 1D. (Ia0c05)
alignToSiblings ora accetta un valore Measured anziché Placeable. (I5788d)
-
- Il nome ScaleFit è stato rinominato ContentScale
- È stato spostato ContentScale dal modulo ui-graphics al modulo ui-core per essere disponibile nello stesso modulo dell'API Alignment.
- Il nome di FillMaxDimension è stato rinominato in Crop
- Rinominato FillMinDimension in Adatta
- Rinominata Adatta all'interno per una migliore corrispondenza
- Equivalenti di ImageView.ScaleType
- È stata aggiunta la documentazione che indica che la combinazione di Ritaglio e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e che Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER. All'interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
Supporto RTL per i modificatori di disegno. (I0aaf9)
È stata rilasciata l'API per l'inflazione delle visualizzazioni Android da XML. Per ulteriori dettagli, consulta la demo di ViewInCompose. (I42916)
Migliorare l'API DrawModifier:
- È stato creato l'ambito del ricevente per draw() ContentDrawScope
- Sono stati rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia dell'ex CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
Aggiunti positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)
Ora per DrawLayerModifier e drawLayer() il valore predefinito di clipToBounds e clipToOutline è false. (I0eb8b, b/152810850)
LayoutResult è stato rinominato in MeasureResult. (Id8c68)
È stata aggiunta LayoutModifier2, una nuova API per definire i modificatori di layout. È stato deprecato LayoutModifier (If32ac)
Operatore Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)
Sono state aggiunte le proprietà translationX/Y per supportare lo spostamento dell'elenco di visualizzazione dei comandi di disegno per un determinato livello. Questa opzione è utile per spostare i contenuti in risposta ad animazioni o eventi touch. (I8641c)
Sono stati aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e la scalatura attorno a un determinato punto di un livello (Icf7c3)
Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni composable OnPositioned e OnChildPositioned. (I2ec8f)
È stato aggiunto LayerModifier, un modificatore che consente di aggiungere un RenderNode per un layout. Consente di impostare clipping, opacità, rotazione, ridimensionamento e ombre. Verrà sostituito da RepaintBoundary. (I7100d, b/150774014)
La direzione del layout è stata propagata dal nodo del layout principale ai figli. È stato aggiunto il modificatore dell'orientamento del layout. (I3d955)
Il componente Stack supporta la direzione da destra a sinistra (Ic9e00)
Supporto iniziale per la scrittura da destra a sinistra nel layout di composizione (Ia5519)
Density e DensityScope sono stati uniti in un'unica interfaccia. Ora puoi utilizzare DensityAmbient.current anziché ambientDensity(). Anziché withDensity(density), usa semplicemente with(density) (I11cb1)
È stato modificato LayoutCoordinates in modo che le linee di allineamento fornite siano un insieme anziché una mappa e che LayoutCoordinates implementi l'operatore get() per il recupero di un valore. In questo modo, è più facile per i modificatori modificare uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a)
LayoutCoordinates non ha più una proprietà position. La proprietà posizione non ha senso se si prendono in considerazione LayoutModifiers, la rotazione o la scalatura. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da un LayoutCoordinate all'altro.
LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, pertanto tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)
Miglioramenti all'interfaccia API di Constraints (I0fd15)
È stata creata l'API CanvasScope che avvolge un oggetto Canvas per esporre un'API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del ricevitore e le informazioni sulle dimensioni sono limitate anche ai limiti di inset corrispondenti. Non richiede all'utente di gestire un proprio oggetto stato di Paint per la configurazione delle operazioni di disegno.
- È stato aggiunto CanvasScopeSample e l'app di dimostrazione è stata aggiornata in modo da includere una dimostrazione di grafica dichiarativa (Ifd86d)
È stata rimossa l'API MaskFilter non utilizzata poiché ha un utilizzo limitato e non è ottimizzata per l'accelerazione hardware nella maggior parte dei casi d'uso (I54f76)
RectangleShape è passato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984)
Sono stati sostituiti tutti gli utilizzi di Color nullable nell'API con valori non nullable e viene utilizzato Color.Unset anziché null (Iabaa7)
Introduzione di un parametro facoltativo aggiuntivo per il rettangolo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)
È stato aggiunto il colore Non impostato per rappresentare un valore non impostato senza chiudere i colori in una casella. (If901a)
Sono stati aggiunti i metodi di estensione Canvas.rotate e Canvas.scale per utilizzare le coordinate pivot facoltative per le trasformazioni. Questi valori predefiniti si riferiscono all'angolo in alto a sinistra della traduzione della tela corrente.
Inoltre, è stato spostato Canvas.rotateRad in modo da essere un metodo di estensione per coerenza (Ibaca6)
È stata creata l'API PixelMap per supportare la query delle informazioni sui pixel da un asset immagine. (I69ad6)
I metodi toFrameworkRect/toFrameworkRectF sono stati rinominati in toAndroidRect/toAndroidRectF per rispettare la convenzione di denominazione per le conversioni di oggetti tra Compose e le API del framework Android su cui sono basate. Sono state aggiornate anche le documentazioni su queste API (I86337)
È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per le immagini vettoriali. Il risultato della composizione secondaria è un oggetto VectorPainter anziché DrawModifier. Sono stati ritirati i composabili DrawVector precedenti a favore di VectorPainter.
L'API Image(Painter) è stata rinominata in PaintBox(Painter) È stato creato un componibile vettoriale che si comporta come il componibile Immagine, tranne che con un asset vettoriale anziché un asset immagine (I9af9a, b/149030271)
Il nome dell'elemento Image è stato rinominato in ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e il componente composable Image in arrivo utilizzato per partecipare al layout e disegnare i contenuti. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework (Id5bbd)
È stato aggiunto TextDirection.Content (I48f36)
È stato aggiunto l'operatore TextDecoration.plus (I0ad1a)
Force
viene rimosso dai valori dell'enum TextDirectionAlgorithm (Icc944)TextDirectionAlgorithm viene rinominato TextDirection (I75ce8)
Implementa LongPressAndDrag per la selezione del campo di testo. (I17919)
È stata aggiunta AnnotatedString.getStringAnnotations che restituisce tutte le annotazioni nell'intervallo. (I1fa00)
Il nome del pacchetto per Locale e LocaleList è stato modificato da androidx.ui.text in androidx.ui.intl (I8132c)
Il cursore di TextField ha un'animazione lampeggiante (Id10a7)
Modifica all'API: AnnotatedString(builder: Builder) è stato rinominato in annotatedString(builder: Builder). (Ia6377)
Modifica dell'API: AnnotatedString.Item è stato rinominato in AnnotatedString.Range. (I2d44d)
Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)
Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, che viene fornito dal callback onTextInputStarted (I8dc44, b/151860051)
È stato aggiunto l'operatore più per lo stile (Testo/Paragrafo/Spaziatura) che delegato alla funzione merge(). (Ia1add)
La funzione FontWeight.lerp non esegue più lo snap. Si tratta comunque di un corso di dati. (I521c2)
Il costruttore FontWeight è ora pubblico e non è più una classe di dati. (Id6b1f)
Aggiungi getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount a TextLayoutResult (Ibc801)
Il modulo ui-text viene rinominato ui-text-core (I57dec)
È stata rimossa la classe di dimensioni non utilizzata poiché nel modulo ui-geometry è presente una classe di dimensioni duplicata in uso. (I1b602)
È stato aggiunto AdapterList, un componente dell'elenco con 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 ai suoi elementi secondari. (Ib351b)
Aggiungi i parametri padding, border, shape e background a Box (I05027, b/148147281)
Correzioni di bug
- Il callback onFocusChange nei campi di testo è stato rinominato in onFocusChanged (Ida4a1)
- VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ColonnaScorrevole e RigaScorrevole per un'esperienza integrata con il comportamento e i parametri di Colonna/Riga oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleCompose
è stato rinominato inrunOnIdle
(I83607)- Diverse API di test sono state rinominate per essere più intuitive. Tutte le API findXYZ sono state rinominate in onNodeXYZ. Tutte le API doXYZ sono state rinominate in performXYZ. (I7f164)
- Ora l'interfaccia utente di Compose può essere composta all'interno di ViewGroups senza richiedere una nuova composizione. Per un esempio, consulta ViewInteropDemo. (I9ab0b, b/160455080)
- Aggiunti sortWith e removeRange a MutableVector (Icccf7)
- Implementa i punti di manipolazione della selezione per modificare la selezione per TextField. (I27032)
- È stata rimossa la classe Shader in linea che avvolgeva la classe NativeShader. È stato rinominato NativeShader in Shader. La classe inline Shader con wrapping non ha aggiunto nulla di utile all'interfaccia API ed era una classe inline, quindi utilizza direttamente la classe NativeShader. (I25e4d)
PainterModifier è stato sottoposto a refactoring per non fornire più la scalatura in base ai vincoli e al parametro ContentScale specificati. Le implementazioni di Painter devono ridimensionare i contenuti dei disegni in base alle dimensioni specificate del DrawScope in cui vengono disegnati.
È stato risolto il problema per cui la bitmap della cache di VectorPainter aveva le dimensioni predefinite anziché quelle specificate per il disegno.
Aggiornamento di ImagePainter per ridimensionare i contenuti anziché fare affidamento su PainterModifier per farlo per suo conto. (I6ba90)
Aggiunta della funzione di primo livello withFrameNanos per la durata dell'animazione (Ie34c5)
L'annotazione @Untracked è stata ritirata. Sostituire con @ComposableContract(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i composabili 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 di input del cursore causava un arresto anomalo se i filtri di input del cursore venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (I1f48b, b/157998762)
È stato risolto il problema per cui l'invio dell'input del cursore causava un arresto anomalo se i filtri di input del cursore venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (Iab398, b/157998762)
La classe Radius è stata sottoposta a refactoring per diventare una classe in linea. Sono stati rimossi i metodi di creazione di compagni in favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio sull'asse y corrisponda a quello del parametro obbligatorio del raggio sull'asse x.
È stato aggiornato DrawScope.drawRoundRect in modo da utilizzare un singolo parametro Radius anziché due valori float distinti per il raggio lungo gli assi x e y (I46d1b)
Il composable Recompose non è più un'astrazione utile. La maggior parte delle ricostruzioni dovrebbe avvenire a seguito delle assegnazioni di MutableState. Per qualsiasi altro caso, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricostituzione dell'ambito corrente. (Ifc992)È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Iede0b)
Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore di composizione trasformava le chiamate in funzioni componibili. Con questa modifica, ora trasformiamo il corpo di una funzione composable e lasciamo invariato il sito di chiamata (per lo più).
Ciò significa che la maggior parte della logica di comunicazione con il runtime di composizione avviene all'inizio del corpo della funzione, anziché nel sito di chiamata.
Questa dovrebbe essere una modifica compatibile con la sorgente 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 composable è cambiata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta 3 parametri, i parametri aggiuntivi sono il compositore, un numero intero "chiave" e un numero intero con maschera di bit utilizzato per propagare i metadati tramite le chiamate.
Ora Compose trasforma anche gli argomenti predefiniti in una funzione componibile. Ciò avviene senza introdurre un sovraccarico predefinito sintetico aggiuntivo della funzione stessa, pertanto questa modifica comporterà la definizione di un numero inferiore di funzioni.
Modifiche comportamentali intenzionali note derivanti da quanto segue:
- Alcune chiamate verranno ignorate, mentre in precedenza non sarebbe stato così
- Le espressioni componibili nelle espressioni degli argomenti predefiniti ora vengono sottoscritte e gestite correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti dei parametri viene propagato tramite il grafo delle chiamate ad altre funzioni composable. Ciò comporterà meno confronti in fase di esecuzione, una riduzione delle dimensioni della tabella degli slot e un maggiore salto delle funzioni componibili che in precedenza non venivano saltate. 2 I parametri che vengono determinati come "statici" in fase di compilazione non vengono più confrontati o memorizzati in fase di runtime. In questo modo si riduce il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e il lavoro per il runtime 4. I parametri di invio e di ricezione inutilizzati per le funzioni non sono inclusi nel determinare la possibilità di saltare la funzione se non vengono utilizzati all'interno del corpo della funzione.
La maggior parte delle modifiche non compatibili riguarda le API di destinazione del compilatore e l'utilizzo tipico di compose non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call è stato ritirato 4. Le sovraccaricamenti non varargs di
key
sono stati rimossi. Utilizza la versionevararg
in futuro. 5. L'annotazione Pivotal è stata ritirata. Utilizzakey
come sostituto. 6. ScopeUpdateScope::updateScope è stato modificato in modo da attendere una funzione 3 anziché una funzione 1 7. restartableFunction e restartableFunctionN sono stati aggiornati per includere parametri aggiuntivi in fase di compilazione (I60756, b/143464846)Sono stati rimossi i modificatori LayoutAlign non più supportati. (I10877)
È stato rimosso RepaintBoundary in favore di DrawLayerModifier (I00aa4)
Button, FloatingActionButton e Clickable ora hanno un parametro
enabled
separato. Alcuni dei parametri di Button sono stati rinominati o riordinati. (I54b5a)È stato sostituito ButtonStyle con funzioni distinte ed è stato rimosso il sovraccarico di testo (stringa). Consulta i sample aggiornati per informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)
Modifiche non compatibili all'API Ambient. Per informazioni dettagliate, consulta il log e la documentazione di
Ambient<T>
(I4c7ee, b/143769776)È stato modificato il comportamento di TextDirection predefinito in modo che sia determinato da LayoutDirection. Ad esempio, se LayoutDirection è RTL, TextDirection predefinito sarà RTL. In precedenza era TextDirection.ContentOrLtr/Rtl (I4e803)
Correzione di bug: quando lo spessore e lo stile del carattere sono nidificati in una stringa annotata, il testo non viene visualizzato correttamente. (I77a9d)
Aggiunge i parametri di uso comune a Text(). Se al momento stai creando uno stile di testo locale per passare un numero ridotto di questi parametri, ad esempio Text(style = TextStyle(textAlign = TextAlign.Center)), ora puoi semplicemente fornire i parametri direttamente: Text(textAlign = TextAlign.Center) (I82768)
Il modulo ui-android-text viene rinominato in ui-text-android (I68cbe)