UI di composizione

Componenti fondamentali dell'interfaccia utente di Compose necessari per interagire con il dispositivo, inclusi layout, disegno e input.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Alpha Release
2 luglio 2025 1.8.3 - 1.9.0-beta02 -

Struttura

Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx. Ogni gruppo contiene un sottoinsieme mirato di funzionalità, ognuna con il proprio insieme di note di rilascio.

Questa tabella spiega i gruppi e fornisce i link a ogni insieme di note di rilascio.

GruppoDescrizione
compose.animationCreare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente.
compose.compilerTrasforma le funzioni @Composable e attiva le ottimizzazioni con un plug-in del compilatore Kotlin.
compose.foundationScrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le fondamenta per creare i tuoi elementi del sistema di progettazione.
compose.materialCrea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti che corrispondono a quelli descritti all'indirizzo www.material.io.
compose.material3Crea UI Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include componenti e temi aggiornati e funzionalità di personalizzazione Material You come il colore dinamico. È progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12.
compose.runtimeElementi costitutivi fondamentali del modello di programmazione e della gestione dello stato di Compose e runtime di base per il plug-in del compilatore Compose da utilizzare come target.
compose.uiComponenti fondamentali dell'interfaccia utente di Compose necessari per interagire con il dispositivo, inclusi layout, disegno e input.

Dichiarazione di dipendenze

Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle per la tua app o il tuo modulo:

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.8.3"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.8.3")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.9

Versione 1.9.0-beta02

2 luglio 2025

androidx.compose.ui:ui-*:1.9.0-beta02 viene ritirata. La versione 1.9.0-beta02 contiene questi commit.

Modifiche alle API

  • Modifica l'oggetto complementare in sperimentale in modo che corrisponda alla classe. (I8452a)
  • Rimosso il flag sperimentale isTrackFocusEnabled (I003fd)

Correzioni di bug

  • Quando non si verifica alcuna WindowInsets sui contenuti di ComposeView, i valori di WindowInsetsRulers non vengono forniti. (I71221)

Versione 1.9.0-beta01

18 giugno 2025

androidx.compose.ui:ui-*:1.9.0-beta01 viene ritirata. La versione 1.9.0-beta01 contiene questi commit.

Modifiche alle API

  • ShadowContext è stata modificata in un'interfaccia sigillata (I3ce40)
  • Aggiunge un modo cross-module per creare un evento di tocco indiretto (per i test) (I22e4c)
  • Rende IndirectTouchEvent.nativeEvent sperimentale. (I6fda5)
  • Revisiona la superficie API in base al feedback del consiglio API. (Ibf378)
  • Rimuovi la costante FrameRateCategory.NoPreference. Rinomina Modifier.requestedFrameRate in Modifier.preferredFrameRate. (I2f976)
  • WindowInsetsRulers: rulersIgnoringVisibility impostato sul valore massimo. getDisplayCutoutBounds() è stata modificata in modo da essere una funzione di estensione di PlacementScope. WindowInsetsAnimationProperties è stato modificato in WindowInsetsAnimation e getAnimationProperties() è stato modificato in getAnimation(). (I3816f)
  • Classe ShadowParams modificata in Shadow (I11cca)
  • Modifica del pacchetto per l'API frame rate da androidx.compose.ui.ui a androidx.compose.ui (I8994e)
  • InsetsRulers è stato modificato per essere in un codice comune con il nome WindowInsetsRulers. L'API è stata semplificata in modo che tutti gli inserti siano WindowInsetsRulers. Le proprietà di animazione non righelli sono state estratte in una classe AnimationProperties. WindowInsetsRulers.innermostOf() può essere utilizzato per unire più WindowInsetsRulers. (I2f0c6, b/415012444)
  • È stata aggiunta un'API di strumentazione per l'analisi delle informazioni sull'origine aggiunte dal compilatore Compose. (Iceaf9, b/408492167)

Correzioni di bug

  • Il flag per isGetFocusedRectReturnEmptyEnabled è stato rimosso ora che la funzionalità è stata completamente verificata. (Ife722)
  • Corregge un bug in performScrollToNode, che in alcuni casi non raggiungeva il nodo di destinazione. Con questa correzione, dovrebbe sempre raggiungere il nodo di destinazione in questi casi. Un effetto collaterale di questa modifica è che la posizione di scorrimento esatta alla fine dell'azione potrebbe ora essere diversa, il che influisce sui test degli screenshot e sui test che fanno ipotesi sulla posizione di scorrimento esatta. (I2c8a1)

Versione 1.9.0-alpha04

4 giugno 2025

androidx.compose.ui:ui-*:1.9.0-alpha04 viene ritirata. La versione 1.9.0-alpha04 contiene questi commit.

Modifiche alle API

  • Aggiunte API di modifica per ombre personalizzabili. (I2058d, b/160665122)
  • Aggiungi una proprietà SemanticsModifierNode.isImportantForBounds che determina se il nodo deve essere preso in considerazione durante il calcolo dei limiti. La proprietà è vera per impostazione predefinita e può essere impostata su false per indicare che il nodo non deve essere preso in considerazione per i limiti. (I7ebec)
  • Aggiungi una funzione di fabbrica SemanticsPropertyKeyper dichiarare proprietà semantiche specifiche di Android che vengono rese disponibili come extra di accessibilità esposti tramite AccessibilityNodeInfo.getExtras. (I2ed51)
  • Sono stati rimossi gli utilizzi di ComposeUiFlags.isRemoveFocusedViewFixEnabled e il flag è stato ritirato. (I50328)
  • Introduzione di un nuovo framework delle ombre personalizzabile. Sono inclusi DropShadowPainter e InnerShadowPainter, nonché le dipendenze DropShadow/InnerShadow. L'infrastruttura shadow è condivisa in modo che le stesse ombre generate possano essere condivise in più call center senza doverle rigenerare n volte. (I24f7a, b/160665122)
  • Introduci CompositeShader e CompositeShaderBrush, che crea un risultato composito tra due shader. Aggiungi anche ShaderBrush#transform per impostare una matrice di trasformazione per lo shader. (I2621a, b/160665122)

Correzioni di bug

  • È stato corretto un bug in NestedScrollInteropConnection per cui i metodi di scorrimento rapido erano nell'ordine errato rispetto alle visualizzazioni. (I56ad4)
  • In precedenza, le finestre di dialogo che venivano visualizzate a schermo intero non venivano disegnate all'interno della regione di ritaglio del display. Questo bug è stato corretto in modo che le finestre di dialogo con decorFitsSystemWindows = false e usePlatformDefaultWidth = false possano occupare la regione di ritaglio del display. (I9e975)
  • È stato corretto un bug a causa del quale l'indicatore di messa a fuoco verde di TalkBack non veniva visualizzato dopo l'attivazione mentre l'app Compose è in background. (Ifd12a)

Versione 1.9.0-alpha03

20 maggio 2025

androidx.compose.ui:ui-*:1.9.0-alpha03 viene ritirata. La versione 1.9.0-alpha03 contiene questi commit.

Modifiche alle API

  • Il flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled fa sì che, quando non è possibile mettere a fuoco nulla in un ComposeView, il rettangolo venga impostato su un valore vuoto. In questo modo, una ricerca mirata non può scegliere la visualizzazione su cui concentrarsi. Ciò è particolarmente importante quando un IME ha un'opzione NEXT in cui potrebbe tentare di concentrarsi su ComposeView e requestFocus() non riesce. (Ibd0e2, b/369256395)
  • Introduci il flag isNestedScrollDispatcherNodeFixEnabled. (I0d24a)
  • Rinomina DialogProperties' dialogContentTitle in windowTitle (Ibd27b)
  • Sono stati introdotti i modificatori Modifier.onFirstVisible e Modifier.onVisibilityChanged, che sono modificatori di alto livello basati su Modifier.onLayoutRectChanged. Questi modificatori sono creati appositamente per gestire molti requisiti comuni delle applicazioni, come la registrazione delle impressioni, la riproduzione automatica dei video e così via. Sono stati creati pensando alle prestazioni, in modo che possano essere utilizzati in scenari critici basati su elenchi senza rischiare di compromettere le prestazioni di scorrimento. Oltre a queste API di modifica, sono state aggiunte altre API per RelativeLayoutBounds per supportare questi casi d'uso, nonché per consentire agli sviluppatori di creare facilmente modificatori personalizzati simili adatti al loro caso d'uso. (I759b8)
  • Modifica setDiagnosticStackTraceEnabled in sperimentale per tenere conto del futuro sviluppo di questa funzionalità. (I11db3)
  • Introduci Modifier.scrollable2D, Scrollable2DState e le API companion per la creazione di stati. Sono state introdotte anche funzioni di estensione di scorrimento comuni. (Ic61c8, b/214410040)
  • I valori di colore a 64 bit di Compose non sono direttamente confrontabili con Android ColorLongs perché gli ID dello spazio colore non sono in ordine per alcuni spazi colore. Per la conversione da e verso gli spazi colore Android, vengono aggiunte due nuove API: toColorLong() e fromColorLong(). (I36899)
  • È stato introdotto ViewConfiguration.minimumFlingVelocity per consentire il controllo della velocità di scorrimento del limite inferiore. (I11aab)

Versione 1.9.0-alpha02

7 maggio 2025

androidx.compose.ui:ui-*:1.9.0-alpha02 viene ritirata. La versione 1.9.0-alpha02 contiene questi commit.

Modifiche alle API

  • Aggiungi dialogContentTitle a DialogProperties, che imposta il titolo della finestra dei contenuti. bf9d670

Correzioni di bug

  • I righelli degli inset della finestra sono stati disattivati temporaneamente durante la correzione dei test interni. 8d1402
  • È stato corretto il modo in cui le modifiche all'input del puntatore vengono aggiunte a VelocityTracker in DragGestureNode. Questa operazione può essere controllata con il nuovo flag isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled.254ddb

Versione 1.9.0-alpha01

23 aprile 2025

androidx.compose.ui:ui-*:1.9.0-alpha01 viene ritirata. La versione 1.9.0-alpha01 contiene questi commit.

Modifiche al comportamento

  • I controlli Lint forniti con Compose ora richiedono una versione minima di AGP 8.8.2. Se non riesci a eseguire l'upgrade di AGP, puoi eseguire l'upgrade di Lint separatamente utilizzando android.experimental.lint.version=8.8.2 (o una versione più recente) in gradle.properties. Per eseguire i controlli lint di Compose all'interno dell'IDE, è necessario Android Studio Ladybug o versioni successive.

Modifiche alle API

  • Rimuove il flag per attivare le istruzioni di tracciamento per il tracker del percorso hit (debug). (I1b2a1)
  • InnerRectRulers e OuterRectRules sono stati modificati in metodi. Rimosso il parametro name dall'API pubblica RectRulers. DerivedRulers ora è un'opzione del costruttore per i righelli verticale e orizzontale. MergedHorizontalRulers e MergedVerticalRulers sono stati sostituiti dai metodi minOf e maxOf per generare istanze. (Iee89f, b/408192133)
  • Depreca androidx.compose.ui.LocalSavedStateRegistryOwner a favore di androidx.savedstate.compose.LocalSavedStateRegistryOwner. (I5439f, b/377946781)
  • Aggiungi un Modifier.keepScreenOn per impostare la visualizzazione in modo che non si metta in modalità sospensione quando è presente (Ib5af4, b/408284174)
  • Aggiungi una nuova proprietà semantica Shape, che può essere impostata quando la forma dell'elemento UI è diversa dal rettangolo di selezione, ad esempio un rettangolo con angoli arrotondati. (I1376f)
  • È stato risolto il problema relativo all'invio di eventi puntatore in AndroidViews ed è stato aggiunto il flag isPointerInteropFilterDispatchingFixEnabled per proteggere le modifiche. (I0e272, b/372055500, b/408002332)
  • FocusRestorer non blocca più l'elemento attivo in precedenza. Gli utenti devono utilizzare un tasto per assicurarsi che l'elemento precedentemente selezionato abbia lo stesso hash di composizione, in modo che la selezione venga ripristinata correttamente. (I4203b, b/330696779)
  • Consenti a Compose di attivare ViewTreeObserver.OnScrollChanged. Questo comportamento viene introdotto con il flag isOnScrollChangedCallbackEnabled. Abbiamo anche introdotto una funzione di estensione di DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • currentCompositeKeyHash è stato ritirato. Utilizza invece currentCompositeKeyHashCode. L'API di sostituzione codifica lo stesso hash con più bit, il che riduce in modo esponenziale la possibilità che due gruppi casuali non correlati nella gerarchia di composizione abbiano la stessa chiave hash. (I4cb6a, b/177562901)
  • I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
  • Aggiunto il supporto del controllo lint per FocusRequester per assicurarsi che venga ricordato all'interno della composizione (I6bf91)
  • Aggiunta la possibilità di impostare la frequenza fotogrammi preferita o la categoria di frequenza fotogrammi in cui deve essere visualizzato il componente componibile (Ie5201)
  • Esporre l'API MotionEvent nativa su Android. (I17286)
  • Aggiungi getChecked() + setChecked(int), ritira isChecked + setChecked(boolean) (Iaac9d)
  • Il modificatore graphicsLayer ora accetta un blendMode e un colorFilter (Iab0e6)
  • Aggiunta della composizione LocalResources locale alle risorse di query. La chiamata di LocalResources.current verrà ricomposta quando la configurazione cambia, quindi le chiamate alle API come stringResource() restituiranno valori aggiornati. (I50c13, b/274786917)
  • Esporre l'API sperimentale per i componenti componibili per gestire gli eventi di tocco indiretti (Icff57)
  • Questa release migliora la segnalazione delle eccezioni non gestite generate durante le fasi di layout e disegno dei contenuti componibili. In precedenza, un'eccezione non rilevata in questo punto causava l'arresto anomalo del test runner e la chiusura anticipata della suite di test. Queste eccezioni ora possono essere segnalate in modo più elegante senza terminare la suite di test. (I9928b, b/314128080)
  • È stata ritirata l'API sperimentale GlobalAssertions. Il suo utilizzo previsto era quello di eseguire controlli di accessibilità. Per questo scopo, consulta enableAccessibilityChecks(). (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection non è più sperimentale e ora supporta un parametro relativeToOriginal aggiuntivo che ti consente di applicare la selezione al testo originale non trasformato o al testo trasformato. (I3a905, b/261561038, b/277018945)
  • Introduzione dell'API per la creazione di elenchi puntati personalizzati tramite AnnotatedString (I1d066, b/383269496, b/139326648)
  • Ritira runWithTimingDisabled a favore di runWithMeasurementDisabled, che descrive più chiaramente il comportamento: tutte le metriche vengono messe in pausa. Inoltre, espone la superclasse MicrobenchmarkScope poiché non è possibile dichiarare nuovamente la funzione runWithMeasurementDisabled per aprire l'accesso, in quanto è inline. (I9e23b, b/389149423, b/149979716)
  • È stata aggiornata l'API ui-tooling Devices per includere dispositivi più recenti. (Ia2ac1)
  • Aggiungi Tablet Portrait alla raccolta di dimensioni dello schermo di anteprima per aiutare lo sviluppatore a considerare finestre più grandi (Ia1976)
  • Introduzione dell'API per il valore di traccia per contrassegnare/registrare la traccia con valori in un determinato momento. I valori di traccia vengono visualizzati in Prefetto come una nuova corsia visibile nella sequenza temporale di una traccia. Su Android vengono implementate utilizzando Trace.setCounter. (Idcf48)

Correzioni di bug

  • Correzione dell'invio degli osservatori memorizzati nella composizione sospendibile per evitare l'invio di osservatori memorizzati/dimenticati nella stessa applicazione (I570b2, b/404645679, b/407931790)
  • Ora android:dialogTheme può essere impostato per controllare le proprietà della finestra di dialogo quando decorFitsSystemWindows è false (I7922f, b/246909281)
  • È stato corretto un bug per cui qualsiasi evento di movimento rilevato al di fuori di una finestra di dialogo poteva chiuderla. (Ia78fd)
  • I controlli lint di Compose ora richiedono una versione minima di AGP 8.8.2 dalla riga di comando e almeno Android Studio Ladybug per il supporto IDE. Se utilizzi una versione precedente di AGP, puoi impostare android.experimental.lint.version=8.8.2 in gradle.properties per eseguire l'upgrade della versione di Lint senza influire su AGP. (I6f2a8)
  • È stata aggiunta una nuova proprietà semantica InputText che acquisisce il valore di textfield prima che venga applicata la trasformazione dell'output. (Iae46a, b/395911609, b/176949051)
  • È stata spostata l'API enableAccessibilityChecks() che attiva i controlli di accessibilità per Android in pacchetti separati, che sono compose:ui:ui-test-accessibility se non utilizzi TestRule e compose:ui:ui-test-junit4-accessibility quando chiami TestRule (I3c318, b/391560768)
  • Aggiunto il supporto per la composizione delle analisi dello stack in LaunchedEffect e rememberCoroutineScope (I705c0, b/354163858)

Contributo esterno

  • Modifica della funzione sperimentale runComposeUiTest per accettare un blocco della sospensione. È stata aggiunta anche una funzione deprecata runComposeUiTest per la compatibilità binaria (I3b88c, b/361577328)

Versione 1.8

Versione 1.8.3

18 giugno 2025

androidx.compose.ui:ui-*:1.8.3 viene ritirata. La versione 1.8.3 contiene questi commit.

Correzioni di bug

  • Il flag per isGetFocusedRectReturnEmptyEnabled è stato rimosso ora che la funzionalità è stata completamente verificata. (Ife722)
  • Il flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled fa sì che, quando non è possibile mettere a fuoco nulla in un ComposeView, il rettangolo venga impostato su un valore vuoto. In questo modo, una ricerca mirata non può scegliere la visualizzazione su cui concentrarsi. Ciò è particolarmente importante quando un IME ha un'opzione NEXT che potrebbe tentare di concentrarsi su ComposeViewe requestFocus() non riesce. (Ibd0e2, b/369256395)

Versione 1.8.2

20 maggio 2025

androidx.compose.ui:ui-*:1.8.2 viene ritirata. La versione 1.8.2 contiene questi commit.

Correzioni di bug

  • Correzioni di NPE quando la finestra di dialogo viene rimossa durante il flusso di eventi attivo nella finestra di dialogo (6a7e7f)
  • Correzione di onLayoutRectChange che non si aggiorna in base alla sequenza temporale limitata quando si verificano aggiornamenti di sola visualizzazione. (03b82d)

Versione 1.8.1

7 maggio 2025

androidx.compose.ui:ui-*:1.8.1 viene ritirata. La versione 1.8.1 contiene questi commit.

Correzioni di bug

  • Risoluzione di alcuni problemi relativi a onLayoutRectChanged e LazyLayout d791b11
  • Ignora le richieste di ri-misurazione per gli elementi pre-composti. Questo bug ha influito sul rendimento dello scorrimento dei layout pigri, in quanto il precaricamento non funzionava in modo efficiente in alcuni casi e la misurazione avveniva all'interno del frame. 742087a

Versione 1.8.0

23 aprile 2025

androidx.compose.ui:ui-*:1.8.0 viene ritirata. La versione 1.8.0 contiene questi commit.

Modifiche importanti dalla versione 1.7.0

  • Compose 1.8 include il supporto appena aggiunto per il completamento automatico semantico. Assicurati che le versioni di UI e Foundation che utilizzi siano la 1.8 o versioni successive, poiché il completamento automatico per i componenti di testo richiede le versioni più recenti di entrambi i moduli. Per l'utilizzo e gli esempi dell'API, consulta la documentazione sulla compilazione automatica per ulteriori dettagli qui.
  • Compose 1.8 supporta altri tipi di feedback aptico: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. È accessibile tramite LocalHapticFeedback e su Android è disponibile per impostazione predefinita quando l'API Vibrator indica che la tecnologia aptica è supportata.
  • Diverse API Focus sono ora stabili, tra cui Modifier.focusRestorer(), onEnter, onExit e FocusProperties (I6e667). Ora puoi specificare un FocusDirection quando chiami requestFocus. Abbiamo aggiunto un'API requestFocus(FocusDirection) sia a focusRequester sia a FocusTargetModifierNode per consentire la messa a fuoco in una direzione specifica. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

Versione 1.8.0-rc03

9 aprile 2025

androidx.compose.ui:ui-*:1.8.0-rc03 viene ritirata. La versione 1.8.0-rc03 contiene questi commit.

Correzioni di bug

Versione 1.8.0-rc02

26 marzo 2025

androidx.compose.ui:ui-*:1.8.0-rc02 viene ritirata. La versione 1.8.0-rc02 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui le visualizzazioni mirate incorporate nella gerarchia di Compose causavano una composizione rientrante quando la visualizzazione mirata veniva rimossa da una LazyList. (765562)

Versione 1.8.0-rc01

12 marzo 2025

androidx.compose.ui:ui-*:1.8.0-rc01 viene ritirata. La versione 1.8.0-rc01 contiene questi commit.

Correzioni di bug

  • È stato corretto l'arresto anomalo quando un AndroidView attivo viene rimosso con la tastiera virtuale attiva. (Ic725a)
  • Corregge alcuni problemi nella nuova implementazione della gestione dello stato attivo. (b/395895685)
  • Corregge un problema che blocca la compilazione automatica quando si utilizza LaunchedEffect per richiedere lo stato attivo su un campo di testo. (b/392539099)

Versione 1.8.0-beta03

26 febbraio 2025

androidx.compose.ui:ui-*:1.8.0-beta03 viene ritirata. La versione 1.8.0-beta03 contiene questi commit.

Modifiche alle API

  • È stata spostata l'API enableAccessibilityChecks() che attiva i controlli di accessibilità per Android in pacchetti separati, che sono compose:ui:ui-test-accessibility se non utilizzi TestRule e compose:ui:ui-test-junit4-accessibility quando chiami TestRule (I547ef, b/391560768)
  • È stata aggiunta una nuova proprietà semantica InputText che acquisisce il valore di un campo di testo prima che venga applicata la trasformazione dell'output. (Iae46a)

Correzioni di bug

  • È stato risolto un problema che causava il salvataggio del testo trasformato nell'output anziché del testo di input da parte dei servizi di compilazione automatica. (Iae46a, b/395911609, b/176949051)

Versione 1.8.0-beta02

12 febbraio 2025

androidx.compose.ui:ui-*:1.8.0-beta02 viene ritirata. La versione 1.8.0-beta02 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto un controllo lint per avvisare in caso di chiamate a Configuration#screenWidth/heightDp. In alternativa, è possibile utilizzare LocalWindowInfo.current.containerSize per recuperare la dimensione della finestra corrente.

Versione 1.8.0-beta01

29 gennaio 2025

androidx.compose.ui:ui-*:1.8.0-beta01 viene ritirata. La versione 1.8.0-beta01 contiene questi commit.

Modifiche alle API

  • ContextualFlowRow e ContextualFlowColumn sono stati contrassegnati come deprecati. Questo componente sperimentale è stato introdotto nella versione 1.7 e non era ancora stato stabilizzato, pertanto l'implementazione è stata ritenuta indesiderabile. In futuro, potrebbe essere fornito un componente che risolve i casi d'uso che questo componente era destinato a risolvere.
    • FlowRow e FlowColumn hanno sovraccarichi sperimentali introdotti nella versione 1.7 che includono un parametro overflow. L'utilizzo di questo parametro è stato ritirato e al suo posto possono essere utilizzate le sovraccariche senza questo parametro. Il comportamento predefinito di "overflow" per questi sovraccarichi sarà "Clip", come fin dalla sua introduzione.
    • Molti casi d'uso per ContextualFlowRow possono essere realizzati utilizzando FlowRow, ma riconosciamo che non è vero in generale. ContextualFlowRow è completamente implementabile nello spazio utente ed è possibile tentare di copiarne l'implementazione e adattarla, se necessario. In futuro, speriamo di risolvere questi casi d'uso in modo diverso. (Ibafec)
  • SemanticsNodeInteraction.semanticsId() è stato rimosso. Utilizza invece SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Le vecchie API di compilazione automatica sono obsolete. Utilizza invece la nuova API basata sulla semantica. (I943ff)
  • Riscrivi l'API requestAutofill in modo che esista al di fuori del gestore della compilazione automatica. (Id1929)

Correzioni di bug

  • È stato risolto il problema di messa a fuoco per cui requestFocus() con un parametro previouslyFocusedRect senza senso (relativo alla direzione della messa a fuoco) saltava un ComposeView. (Ifdc2f, b/388590015)
  • È stato risolto un errore NPE occasionale durante l'utilizzo di GraphicsLayer.record { this@ContentDrawScope.drawContent() }. Se registri drawContent() in questo modo, assicurati di utilizzare la funzione di estensione GraphicsLayer#record all'interno di DrawScope e non la funzione membro su GraphicsLayer. (I75fc0, b/389046242)
  • Correzione del layout del testo con i puntini di sospensione che a volte vengono tradotti in modo errato durante le animazioni. Per saperne di più, consulta b/389707025 (Ie55b1, b/389707025)

Versione 1.8.0-alpha08

15 gennaio 2025

androidx.compose.ui:ui-*:1.8.0-alpha08 viene ritirata. La versione 1.8.0-alpha08 contiene questi commit.

Modifiche alle API

  • Rendere AutofillManager una classe astratta. (I0a3b0)
  • Sono stati risolti diversi problemi relativi alla messa a fuoco, inclusi arresti anomali quando l'IME tenta di mettere a fuoco ComposeView senza elementi selezionabili, cambio di messa a fuoco all'interno di AndroidViews secondario e richiesta di messa a fuoco che lascia un AndroidView. (Ia03c3, b/369256395, b/378570682, b/376142752)
  • Modifica FocusEnterExitScope.cancelFocus() in cancelFocusChange() (I89959)
  • Ora puoi calcolare le occlusioni componibili con RectInfo.calculateOcclusions().
  • È stata aggiunta la funzione di estensione su DelegatableNode per registrare un listener per le modifiche globali del layout. (I68b59)

Correzioni di bug

  • L'attività utilizzata come host per il composable in fase di test quando si utilizza ComposeContentTestRule.setContent ora utilizza il tema Theme.Material.Light.NoActionBar, per evitare che ActionBar si sovrapponga ai contenuti di test quando si ha come target l'SDK 35. Per disattivare questo comportamento, puoi rimuovere la dipendenza da ui-test-manifest e aggiungere una voce di attività nel file AndroidManifest.xml dell'app di test per ComponentActivity con il tema che preferisci. (I7ae1b, b/383368165)
  • I caratteri delle risorse con le stesse impostazioni di variante ora evitano l'over-caching, che causa l'applicazione di impostazioni di variante errate. (If3dff, b/372044241)
  • AnnotatedString.fromHtml ora supporta i tag <ul>/<li>. (I7c2fe, b/299662276, b/139326648)

Contributo esterno

  • È stata aggiunta una nuova interfaccia degli appunti e una composizione locale. (I80809)

Versione 1.8.0-alpha07

11 dicembre 2024

androidx.compose.ui:ui-*:1.8.0-alpha07 viene ritirata. La versione 1.8.0-alpha07 contiene questi commit.

Modifiche alle API

  • Proprietario esposto da LayoutNode per gli strumenti. (I26f7f)
  • Ha LocalAutofillHighlightColor composizione locale che utilizza un tipo di colore. (I0e05b)
  • Mantieni UrlAnnotation deprecato e i relativi metodi contrassegnati come sperimentali. (Ic0021)

Correzioni di bug

  • È stato corretto l'arresto anomalo di IndexOutOfBoundsException quando si utilizza LinkAnnotation all'interno di BasicText o del composable Text (be7605, b/374115892)
  • È stato risolto il problema a causa del quale i campi di testo compilati con una forma personalizzata non ritagliavano la linea dell'indicatore. (I4f87f, b/380704151)
  • Sono stati corretti gli sfondi mancanti negli screenshot lunghi. (I4d57a)
  • Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto: -Xjspecify-annotations=strict (questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (Idfef8, b/326456246)
  • Aggiorna il supporto di Compose per i colori HDR e ad ampia gamma quando viene eseguito su Android Q+. (Icd8be, b/379135036)
  • I caratteri delle risorse che non vengono caricati ora vengono sostituiti automaticamente con il carattere predefinito, anziché generare un'eccezione nella misura, come avveniva in precedenza. (Ib6a49)
  • È stato corretto il problema relativo alla perdita della messa a fuoco quando AndroidView viene staccato e ricollegato. (I53446)
  • Accetta requestFocus() dall'azione di layout oltre i limiti. (Ia8461)

Contributo esterno

  • Aggiungi BringIntoViewResponderModifierNode alla UI, che fornisce un nuovo modo per implementare la funzionalità Porta in visualizzazione 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 ritirata. La versione 1.8.0-alpha06 contiene questi commit.

Modifiche alle API

  • Aggiunge il modificatore stylusHoverIcon. (Iff20a, b/331289114)
  • Modifica la gestione della compilazione automatica in modo che diventi un'interfaccia. (I84914, b/376080755)
  • Aggiunge requestFocus(FocusDirection) sia a focusRequester che a FocusTargetModifierNode per consentire la messa a fuoco in una direzione specifica. (I5d9ec, b/245755256)
  • FocusProperties.enter e FocusProperties.exit sono stati sostituiti da onEnter e onExit, utilizzando un ambito del destinatario anziché il parametro FocusDirection. (I6e667)
  • Aggiunta del supporto del completamento automatico nella barra degli strumenti di testo. (Ie6a4c)
  • Modifiche all'API Modifier.focusRestorer() (I99c03):
    • Nome del parametro modificato in "fallback"
    • Il parametro ora è un FocusRequester e non una funzione lambda
    • Il parametro ora non è NULL e il valore predefinito è Default
  • Rimozione dell'annotazione @Experimental dall'interfaccia di gestione del completamento automatico. La funzionalità è ancora in fase di sviluppo per questa release, ma non vogliamo introdurre l'API @Expemiental (Id8398)
  • LocalHapticFeedback ora fornisce un'implementazione HapticFeedback predefinita quando l'API Vibrator indica che la tecnologia aptica è supportata. Sono stati aggiunti i seguenti elementi: HapticFeedbackType - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. I componenti di Wear Compose su cui è possibile fare clic prolungato, come Button, IconButton, TextButton e Card, ora eseguono la vibrazione LONG_PRESS quando è stato fornito un gestore di clic prolungato. (I5083d)
  • Rimuove OverscrollConfiguration e LocalOverscrollConfiguration e aggiunge rememberPlatformOverscrollFactory per creare un'istanza di / personalizzare i parametri dell'implementazione predefinita dell'overscroll. Per disattivare l'overscroll, utilizza LocalOverscrollFactory provides null anziché LocalOverscrollConfiguration provides null. Per modificare il colore / il padding della luce, anziché LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), utilizza LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • È stata rimossa l'API GlobalAssertions sperimentale. Il suo utilizzo previsto era quello di eseguire controlli di accessibilità. Per questo scopo, consulta enableAccessibilityChecks(). (I59322)

Versione 1.8.0-alpha05

30 ottobre 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 viene ritirata. La versione 1.8.0-alpha05 contiene questi commit.

Nuove funzionalità

In questa release, il riempimento automatico è esposto dietro un flag funzionalità. Stiamo lavorando per migliorare le prestazioni e siamo alla ricerca di feedback iniziali sulle API. Si prevede che le API si evolveranno prima di diventare stabili in base al feedback.

  • Per attivare la compilazione automatica, imposta ComposeUiFlags.isSemanticAutofillEnabled su true in onCreate e utilizza l'ultima istantanea di bozza.
  • Questa versione della compilazione automatica supporta il salvataggio manuale delle credenziali, tramite Suggerisci password efficace e tramite navigazione. Supporta anche il riempimento quando un campo compilabile automaticamente riceve lo stato attivo o quando la compilazione automatica viene attivata tramite la barra degli strumenti di testo sui componenti di testo. Il componente verrà evidenziato per indicare il completamento del riempimento automatico.

Modifiche alle API

  • Modifica l'interfaccia di compilazione automatica in modo che segua la struttura expect/actual. (I22dce)
  • Introduci CompositionLocal che può essere utilizzato per modificare la tonalità dell'evidenziazione della compilazione automatica riuscita. (I32092)
  • È stata aggiunta l'API Modifier.onRectChanged, che consente di abbonarsi alla posizione e alle dimensioni relative alla radice/alla finestra/allo schermo di un LayoutNode. L'API risolve molti casi d'uso del modificatore onGloballyPositioned esistente, ma con un overhead molto inferiore e offre funzionalità per il debounce e la limitazione della frequenza di chiamata di callback in base alle esigenze del caso d'uso. (Id28c7, b/372765423, b/372757007, b/372994338)
  • Espande Gestore della compilazione automatica per includere le API commit() e cancel() che aiutano gli utenti a salvare le credenziali appena inserite. (I2da00)
  • Introduce una nuova interfaccia AutofillManager che può essere utilizzata per perfezionare il percorso di compilazione automatica degli utenti e un flag isSemanticAutofillEnabled per attivare questa nuova versione della compilazione automatica. (I9d484)
  • È stata aggiunta l'API Modifier.onRectChanged, che consente di abbonarsi alla posizione e alle dimensioni relative alla radice/alla finestra/allo schermo di un LayoutNode. L'API risolve molti casi d'uso del modificatore onGloballyPositioned esistente, ma con un overhead molto inferiore e offre funzionalità per il debounce e la limitazione della frequenza di chiamata di callback in base alle esigenze del caso d'uso. (I3c8fa)
  • Aggiungi proprietà semantiche e tipi di dati per un supporto esteso della compilazione automatica. (I52c7d)
  • Tutti i metodi nel builder AnnotatedString non sono più sperimentali (Ia89c8, b/261561823)

Correzioni di bug

  • Le visualizzazioni incorporate nella composizione ora possono ricevere eventi di rotazione se sono selezionate (I4d53a, b/320510084)
  • Risolto un problema per cui vari tipi di risorse non venivano aggiornati in seguito a 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 alle finestre di dialogo visualizzate nella parte inferiore dello schermo anziché al centro (Ia2ec, b/373093006).
  • Il targeting API 35+ non forza più l'impostazione di decorFitsSystemWindows su false per le finestre di dialogo. (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 ritirata. La versione 1.8.0-alpha04 contiene questi commit.

Modifiche alle API

  • Aggiunge i callback DelegatableNode#onDensityChange e DelegatableNode#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 utilizzando LocalWindowInfo. (Idc38c, b/369334429, b/360343819)
  • È stata introdotta una correzione per gli elementi scorrevoli nidificati che vengono rimossi dall'albero dei nodi durante uno scorrimento in corso. Ora questi nodi annulleranno lo scorrimento e invieranno correttamente l'evento onPostFling con la velocità rimanente. Stiamo anche introducendo il flag NewNestedScrollFlingDispatchingEnabled per controllare il comportamento in caso di regressioni. Il flag verrà rimosso prima della 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 puntatore. (Iccf02, b/335339283)
  • Aggiunge WindowInfo#containerSize per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzando LocalWindowInfo. (I27767, b/369334429, b/360343819)
  • Rimuovi readOnly da TextFields per bloccare la versione stabile di Foundation. (I3aaba)
  • Paragraph e ParagraphIntrinsics ora accettano un elenco di tutte le annotazioni applicate a AnnotatedString, in precedenza avevano solo un elenco di SpanStyles (I12f80)

Correzioni di bug

  • È stato aggiornato il modo in cui vengono trattati i paragrafi in AnnotatedString. In precedenza, potevi creare solo paragrafi non sovrapposti. Ora AnnotatedString consente paragrafi completamente sovrapposti che verranno uniti 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).
  • Correzione dell'arresto anomalo in AnnotatedString con un LinkAnnotation di lunghezza zero. (89aac6)

Versione 1.8.0-alpha03

2 ottobre 2024

androidx.compose.ui:ui-*:1.8.0-alpha03 viene ritirata. La versione 1.8.0-alpha03 contiene questi commit.

Modifiche alle API

  • Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
  • È stato introdotto un nuovo ruolo semantico chiamato Carosello per emulare il comportamento dell'elenco nei pager per i servizi di accessibilità. (Id354b, b/354109776, b/239672673)
  • Rinomina invisibleToUser() in hideFromAccessibility. 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 il problema per cui alcuni clip di contorno 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 venivano specificati clip di contorno generici su alcune versioni di Android.
  • È stata corretta l'eccezione generata quando l'IME è attivo in una visualizzazione esterna e l'azione Successivo viene utilizzata per impostare lo stato attivo su ComposeView. Il comportamento di clearFocus() è in linea con il comportamento di View nell'API < 28, dove clearFocus() può causare la messa a fuoco della visualizzazione predefinita.
  • Risolto il problema per cui il posizionamento avveniva su nodi separati in LazyList separando la gestione della composizione secondaria per diversi passaggi di layout.
  • È stato risolto un problema per cui la tastiera software sfarfallava quando lo stato attivo passava da un TextField a un EditText o a qualsiasi altro editor basato su View.
  • I nodi di scorrimento nidificati ora 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 ritirata. La versione 1.8.0-alpha02 contiene questi commit.

Modifiche alle API

  • Ora sono disponibili TextOverflow.StartEllipsis e TextOverflow.MiddleEllipsis, che consentono di inserire i puntini di sospensione all'inizio o al centro della riga del testo su una sola riga. (I38913, b/185418980)

Correzioni di bug

  • Correggi finestra di dialogo dismissOnClickoutside (39a3d, b/364508685)
  • Non tagliare le ombre dei contenuti della finestra di dialogo (e8e2f, b/363027803)
  • Correzione del comportamento errato quando la ricerca dello stato attivo si sposta tra Scrivi e una visualizzazione (58377, b/350534714)

Contributo esterno

  • Il AlignmentLines Map ora accetta tipi di calcestruzzo VerticalAlignmentLine o HorizontalAlignmentLine. (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 ritirata. La versione 1.8.0-alpha01 contiene questi commit.

Versione 1.7

Versione 1.7.8

12 febbraio 2025

androidx.compose.ui:ui-*:1.7.8 viene ritirata. La versione 1.7.8 contiene questi commit.

Versione 1.7.7

29 gennaio 2025

androidx.compose.ui:ui-*:1.7.7 viene ritirata. La versione 1.7.7 contiene questi commit.

Correzioni di bug

  • È stato corretto IndexOutOfBoundsException quando si passa un AnnotatedString con LinkAnnotation al componibile Text. (Ic96d2)
  • Risolto un problema di timeout nei test in alcuni rari casi in cui LinkAnnotation viene utilizzato in AnnotatedString. (I04a03)

Versione 1.7.6

11 dicembre 2024

androidx.compose.ui:ui-*:1.7.6 viene ritirata. La versione 1.7.6 contiene questi commit.

Correzioni di bug

  • In precedenza, generavamo un errore ogni volta che rilevavamo un evento chiave quando il sistema di messa a fuoco aveva invalidazioni in attesa. Ora viene registrato un errore (I7ea0, b/346370327).
  • Rimossa l'annotazione sperimentale da SemanticsPropertyReceiver.invisibleToUser(). Questa funzionalità verrà ritirata nella versione 1.8 e sostituita con SemanticsPropertyReceiver.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)
  • Risolto un problema di accessibilità per cui inlineContent di BasicText non veniva annunciato da TalkBack. (I67bcb, b/376479686)

Versione 1.7.5

30 ottobre 2024

androidx.compose.ui:ui-*:1.7.5 viene ritirata. La versione 1.7.5 contiene questi commit.

Correzioni di bug

  • Risolti i problemi per cui l'elevazione e il ritaglio con contorni personalizzati non venivano visualizzati correttamente.
  • Corregge un arresto anomalo del testo che si verifica con un carattere LinkAnnotation di larghezza zero. (Ic1e2e)
  • Corregge un annuncio in Talkback del pulsante quando viene creato come elemento componibile di testo selezionabile. (I1f588)

Versione 1.7.4

16 ottobre 2024

androidx.compose.ui:ui-*:1.7.4 viene ritirata. La versione 1.7.4 contiene questi commit.

Versione 1.7.3

2 ottobre 2024

androidx.compose.ui:ui-*:1.7.3 viene ritirata. La versione 1.7.3 contiene questi commit.

Correzioni di bug

  • Risolto il problema per cui la specifica di un clip di contorno generico comportava un limite del clip vuoto su alcune versioni di Android.
  • È stata corretta l'eccezione generata quando l'IME è attivo in una visualizzazione esterna e l'azione Successivo viene utilizzata per impostare lo stato attivo su ComposeView. Il comportamento di clearFocus() è in linea con il comportamento di View nell'API < 28, dove clearFocus() può causare la messa a fuoco della visualizzazione predefinita.
  • Risolto un problema per cui veniva utilizzato un placeOrder errato per l'invalidazione del lookahead, risolvendo così un caso limite in cui il posizionamento del lookahead veniva ignorato.

Versione 1.7.2

18 settembre 2024

androidx.compose.ui:ui-*:1.7.2 viene ritirata. La versione 1.7.2 contiene questi commit.

Correzioni di bug

  • Miglioramento delle prestazioni delle informazioni sui nodi di accessibilità e degli eventi semantici mediante la rimozione della tracciatura dettagliata. (I89156, b/362530618)
  • ComposeView non si arresterà più in modo anomalo quando viene superata una dimensione di misurazione eccezionalmente grande (da5db, b/347036173)
  • Risolto un problema di accessibilità dello screen reader per cui gli annunci LiveRegion sui pulsanti non venivano effettuati. (f66fa7, b/348590026)

Versione 1.7.1

10 settembre 2024

  • Nessuna modifica agli artefatti Android. Sono stati rimossi -desktop artefatti e sono stati aggiunti -jvmStubs e -linuxx64Stubs artefatti. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose.

Versione 1.7.0

4 settembre 2024

androidx.compose.ui:ui-*:1.7.0 viene ritirata.

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 ritirata. La versione 1.7.0-rc01 contiene questi commit.

Modifiche importanti

  • Il modulo ui:ui ora impone il requisito di una versione minima di foundation:foundation pari almeno a 1.7.0-rc01 o successiva. Questa applicazione viene applicata per correggere un'incompatibilità di comportamento tra l'interfaccia utente e la libreria di base in merito alle modifiche di 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 ritirata. La versione 1.7.0-beta07 contiene questi commit.

Correzioni di bug

  • L'input di testo relativo alle funzioni SemanticsNodeInteraction performTextReplacement, performTextInput e performTextClearance ora genererà errori di asserzione quando vengono chiamate su TextFields di sola lettura. (I4ae8f)

Versione 1.7.0-beta06

24 luglio 2024

androidx.compose.ui:ui-*:1.7.0-beta06 viene ritirata. La versione 1.7.0-beta06 contiene questi commit.

Versione 1.7.0-beta05

10 luglio 2024

androidx.compose.ui:ui-*:1.7.0-beta05 viene ritirata. La versione 1.7.0-beta05 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug a causa del quale la modifica della tastiera software impediva a TextField di accettare l'input della nuova tastiera finché il focus non veniva perso e riacquisito.
  • Risolto un problema per cui i tentativi di rendere persistenti i contenuti dei livelli causavano effetti collaterali indesiderati durante il rendering con contenuti SurfaceView.

Versione 1.7.0-beta04

26 giugno 2024

androidx.compose.ui:ui-*:1.7.0-beta04 viene ritirata. La versione 1.7.0-beta04 contiene questi commit.

Correzioni di bug

  • Evita arresti anomali durante la misurazione di righe di testo molto lunghe (ad es.10. 000 caratteri) (8157ab)
  • Disattiva il supporto del rendering software per l'API GraphicsLayer. (35ddd8)
  • Correzione per un arresto anomalo nella logica di persistenza dei livelli. (70b13e)
  • L'ottimizzazione del riutilizzo degli oggetti dei livelli è stata ripristinata, in quanto causava problemi di rendering. (70b13e)

Versione 1.7.0-beta03

12 giugno 2024

androidx.compose.ui:ui-*:1.7.0-beta03 viene ritirata. La versione 1.7.0-beta03 contiene questi commit.

Versione 1.7.0-beta02

29 maggio 2024

androidx.compose.ui:ui-*:1.7.0-beta02 viene ritirata. La versione 1.7.0-beta02 contiene questi commit.

Modifiche alle API

  • SemanticsProperties.Editable è stato rinominato in IsEditable e SemanticsPropertyReceiver.editable è stato modificato in isEditable. La proprietà ora è booleana e viene sempre specificata dai campi di testo. (I8acd8)
  • Rinomina il parametro di benchmark di accessibilità. (I3d440)
  • API aggiornata per lo stile dei link: TextLinkStyles ora fa parte del costruttore LinkAnnotation e del metodo AnnotatedString.fromHtml (I90b2b). È stato rimosso anche TextDefaults dal materiale (I5477b)

Correzioni di bug

  • LayoutCoordinates.introducesFrameOfReference è stato rinominato in LayoutCoordinates.introducesMotionFrameOfReference per riflettere meglio il suo scopo. È 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 ritirata. La versione 1.7.0-beta01 contiene questi commit.

Modifiche alle API

  • performCustomAccessibilityActionLabelled è stato rinominato in performCustomAccessibilityActionWithLabel e performCustomAccessibilityActionWhere in performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations è diventato hasEqualAnnotations (I685c0)
  • È stata aggiornata l'API per ottenere link con tema Material nel testo. In particolare, sono stati rimossi i metodi da TextDefaults per costruire LinkAnnotations a tema e analizzare l'HTML con link a tema. È stata invece aggiunta una classe TextLinkStyles che consente di applicare uno stile ai link come parametro del composable Text. (I31b93)

Correzioni di bug

  • Correzioni di ulteriori casi d'uso quando vengono aggiunti dinamicamente modificatori di input del puntatore durante gli eventi 63e1504

Versione 1.7.0-alpha08

1° maggio 2024

androidx.compose.ui:ui-*:1.7.0-alpha08 viene ritirata. La versione 1.7.0-alpha08 contiene questi commit.

Modifiche alle API

  • Aggiunge il supporto per le implementazioni di forme modificabili. Shape#createOutline ora viene osservato all'interno dei livelli grafici, quindi la lettura dei valori di stato all'interno causerà invalidazioni quando lo stato cambia, consentendo animazioni di forme più performanti. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation rinominato in introducesFrameOfReference. Tieni presente che ora ha l'effetto contrario, il che significa che per impostazione predefinita la maggior parte degli elementi LayoutCoordinates introduce un frame di riferimento e solo quando viene posizionata sotto manipolazione diretta la proprietà sarà false. Per eseguire query sulla posizione solo con quelle che introducono un frame di riferimento, utilizza positionInLocalFrameOfReference(...). Oppure positionInLocalLookaheadFrameOfReference da un LookaheadScope. (Ifc5f7)
  • LookaheadScope Le API sono state rese stabili (I21507)
  • Modifica della lambda di azione per getScrollViewportLength in base al feedback del consiglio API. (Ibc74a)
  • API di contorno GraphicsLayer aggiornate per utilizzare parametri float anziché int. Valori sentinella UnsetOffset/UnsetSize IntSize rimossi a favore di costanti Unspecified già esistenti nelle classi inline Offset e Size basate su float (I2fb03, b/333863462)
  • Quando inserisci l'input del mouse durante i test, MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick(), MouseInjectionScope.longClick() ora accettano un parametro button: MouseButton per renderli più applicabili a livello universale. Il valore predefinito è MouseButton.Primary per tutti i metodi. (I31a23, b/190493367, b/261439695)
  • onClicked rinominato in onClick all'interno di LinkInteractionListener. (Iaa35c)
  • Rinomina TextInclusionStrategy.isInside in isIncluded. Rendi il tipo restituito Paragraph/MultiParagraph#getRangeForRect() non annullabile. (I51f26)

Correzioni di bug

  • È stata corretta l'acquisizione di screenshot lunghi per i contenitori a scorrimento con reverseScrolling=true. (I7c59c)

Contributo esterno

  • È stato aggiunto il supporto per il recupero preventivo degli elementi in LazyLists nidificati (ad es. un LazyColumn che esegue il rendering di LazyRows nidificati). Questa modifica dovrebbe ridurre i cali di frame durante lo scorrimento di questi LazyLists. L'implementazione predefinita prevede il recupero anticipato dei primi due elementi nidificati, ma questo comportamento può essere controllato dalle nuove API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Versione 1.7.0-alpha07

17 aprile 2024

androidx.compose.ui:ui-*:1.7.0-alpha07 viene ritirata. La versione 1.7.0-alpha07 contiene questi commit.

Modifiche alle API

  • ClickableText è contrassegnato come deprecato. Per aggiungere link al testo, crea un AnnotatedString con un LinkAnnotation corrispondente al link e passa questo AnnotatedString al composable Text. (I34d4b, b/323346994)
  • Introduci ViewConfiguration.HandwritingGestureLineMargin per i gesti di scrittura a mano libera. Supporto del gesto JoinOrSplit per BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter e FocusProperties.exit non sono più sperimentali. FocusDirection.Enter e FocusDirection.Exit non sono più sperimentali. FocusRequester.Cancel non è più sperimentale (I461a1, b/261564106)
  • Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento excludeDirectManipulationOffset per escludere l'offset impostato dai layout principali che hanno posizionato i relativi elementi secondari utilizzando Placeable.PlacementScope.withDirectManipulationPlacement. Allo stesso modo, un layout che cambia spesso la posizione dei relativi elementi secondari ora può posizionarli utilizzando withDirectManipulationPlacement (ad esempio lo scorrimento, implementato per impostazione predefinita). In questo modo, le animazioni basate su approachLayout sono più intuitive, in quanto ora è possibile differenziare l'offset da animare e quello da applicare direttamente quando si decide di animare l'approccio. (I60ec7)
  • Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
  • LazyColumn ora esegue il rendering corretto delle intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)
  • Le origini NestedScroll Drag and Fling vengono sostituite da UserInput e SideEffect per tenere conto della definizione estesa di queste origini, che ora includono animazioni (Side Effect) e rotellina del mouse e tastiera (UserInput). (I40579)
  • ApproachLayoutModifierNode e Modifier.approachLayout sono ora stabili, con nuovi isMeasurementApproachInProgress() e isPlacementApproachInProgress() che sostituiscono i vecchi isMeasurementApproachComplete() e isPlacementApproachComplete() rispettivamente.
  • Rimosso il modificatore intermediateLayout obsoleto. (I3e91c)
  • Rinomina GraphicsLayer#buildLayer in record per rispecchiare i metodi begin/endRecording delle API basate su Displaylist come RenderNode e Picture.
  • rememberGraphicsLayer aggiornato per sfruttare rememberObserver. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation è deprecato, utilizza LinkAnnotation.Url. Se utilizzi i temi Material, usa l'oggetto TextDefaults per creare l'annotazione con i temi Material applicati (I8d180, b/323346545).
  • I link di testo hanno ricevuto l'opzione di stile dello stato premuto, oltre allo stile normale, al passaggio del mouse e alla messa a fuoco (I5f864, b/139312671)
  • String.parseAsHtml rinominato in AnnotatedString.Companion.fromHtml. (I43dcd)
  • Sono stati aggiunti argomenti di stile (linkStyle, focusedLinkStyle, hoveredLinkStyle) e un listener di interazione con i link al metodo parseAsHtml. Quando analizza la stringa con tag HTML con tag <a>, il metodo costruisce un LinkAnnotation.Url per ogni tag e passa gli oggetti di stile e il listener di interazione con i link a ogni annotazione. (I7c977)
  • Ora LinkAnnotation accetta gli argomenti di stile basati sullo stato e un LinkInteractionListener. Aggiungi questa annotazione a AnnotatedString per ottenere un link ipertestuale. Passando focusedState e/o hoveredState puoi definire lo stile visivo configuration per i link quando sono selezionati e/o quando il cursore li sorvola. (I81ce4, b/139312671)
  • ImeOptions.hintLocales non è più annullabile. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizza LocaleList.Empty. (Ic5bc4)

Correzioni di bug

  • Gestisce correttamente i dati degli eventi di input storici danneggiati/corrotti (ignora i dati di offset errati).
  • Corregge gli eventi puntatore imprevisti quando un modificatore di input del puntatore viene aggiunto dinamicamente prima di un altro modificatore di input del puntatore durante un flusso di eventi di input del puntatore attivo (ad esempio, tra un evento hover enter e hover exit [mouse/stilo]).

Versione 1.7.0-alpha06

3 aprile 2024

androidx.compose.ui:ui-*:1.7.0-alpha06 viene ritirata. La versione 1.7.0-alpha06 contiene questi commit.

Nuove funzionalità

  • Aggiunto il metodo parseAsHtml per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML in AnnotatedString. Tieni presente che non tutti i tag sono supportati, ad esempio non potrai ancora visualizzare gli elenchi puntati. (I84d3d, I30626, b/139326648)
  • È stato implementato il supporto sperimentale per gli screenshot lunghi nei contenitori di scorrimento di Compose utilizzando l'API Android ufficiale (ScrollCaptureCallback). Questa funzionalità è sperimentale e al momento potrebbe non gestire correttamente tutti i casi. Per questo motivo, al momento è disattivato per impostazione predefinita. Per attivare la funzionalità, imposta il flag ComposeFeatureFlag_LongScreenshotsEnabled su true. (I2b055, b/329296471)

Modifiche alle API

  • fun ClipEntry.getMetadata() è stato modificato in val ClipEntry.clipMetadata. (I50155)
  • Sono state rimosse le funzioni ClipboardManager.getClipMetadata e ClipboardManager.hasClip. Utilizza clipEntry.getMetadata() per leggere i metadati della voce del clip attuale. Controlla anche il risultato di ClipboardManager.getClip per capire se negli appunti è presente un clip corrente. (I50498)
  • Ora puoi passare oggetti GraphicsLayer nelle funzioni placeable.placeWithLayer() (I1b22f)
  • ClipboardManager.setClip ora accetta il valore null per poter cancellare gli appunti. (I7d2e9)
  • Sono stati aggiunti ID risorsa per facilitare l'occultamento delle visualizzazioni utilizzate come dettagli di implementazione all'interno degli strumenti di build (I99531).
  • È stato aggiunto il metodo di sospensione GraphicsLayer#toImageBitmap per supportare il rendering dei contenuti di una bitmap in un GraphicsLayer. Si tratta di un'operazione di rendering con accelerazione hardware a partire dal livello API 22 (incluso), che supporta oltre il 99% di tutti i dispositivi Android. Nel livello API Android 21, viene eseguito il rendering software. (I9e114)
  • Metodo helper per convertire un RectF Android in ComposeRect (I39925, b/325660505)
  • Per impostazione predefinita, tutti i parametri KeyboardOptions ora hanno un valore non specificato. Metodo KeyboardOptions.merge aggiunto.
  • KeyboardOptions.autoCorrect è stato rinominato in autoCorrectEnabled ed è stato reso annullabile, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492)
  • Le varianti BasicTextField(state) e BasicSecureTextField ora utilizzano KeyboardActionHandler 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 ritirata. La versione 1.7.0-alpha05 contiene questi commit.

Nuove funzionalità

  • Introduzione della 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. In questo modo viene fornito un limite di isolamento per dividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a un GraphicsLayer possono essere eseguite senza registrare nuovamente l'elenco visualizzato. A differenza di Modifier.graphicsLayer, GraphicsLayer consente il rendering dei contenuti componibili altrove ed è utile nei casi d'uso animati in cui è previsto il rendering dei contenuti in scene diverse.

Modifiche alle API

  • GraphicsLayer.draw(Canvas) non è più un'API pubblica. Utilizza invece la funzione di estensione DrawScope.drawLayer(GraphicsLayer) per disegnare il livello. (I7a7c0)
  • Suddivisione di restrictedConstraints() in due metodi: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd)
  • È stato introdotto lo stub HardwareCanvas per l'utilizzo di Android L (I1c3b5, b/288494724)
  • Aggiorna il framework Compose per esporre un locale di composizione GraphicsContext insieme all'aggiornamento delle implementazioni di Owner, DelegateableNode e drawWithCache Modifier per esporre l'accesso a GraphicsContext per l'accesso con ambito che pulirà automaticamente le istanze GraphicsLayer quando i modificatori vengono eliminati. (I64a2f, b/288494724)
  • È stato introdotto InterceptPlatformTextInput per facilitare la scrittura di test di basso livello relativi agli IME e di altri casi d'uso di basso livello degli IME. PlatformTextInputTestOverride è stato ritirato. (I862ed, b/322680547)
  • È stata aggiunta la funzione di estensione GraphicsLayer.setOutline(Outline). (Ib81f4)
  • Introduci il costruttore di funzioni GraphicsContext per creare una factory per creare istanze GraphicsLayer (Ib98d6, b/288494724)
  • API GraphicsLayer esposta per offrire agli sviluppatori la flessibilità di acquisire comandi di disegno che possono essere utilizzati per disegnare altrove e applicare diversi effetti visivi al risultato finale. (I80245, b/288494724)
  • Introduci Paragraph#getRangeForRect, che restituisce un intervallo di testo coperto da una determinata area rettangolare. (Iee516, b/325660505)
  • È stato rimosso l'override sperimentale di BasicText con l'argomento onLinkClicked. In futuro verrà implementata un'API sostitutiva per il supporto degli hyperlink. (I107d5)

Correzioni di bug

  • È stata aggiunta la definizione dell'API GraphicsLayer expect/actual per supportare l'acquisizione e la riproduzione di comandi di disegno con trasformazioni ed effetti visivi di composizione facoltativi. Introduci l'interfaccia GraphicsContext per contenere le dipendenze grafiche, inclusa la creazione e la gestione delle istanze GraphicsLayer. (I4a8d6, b/288494724)
  • È stato risolto un problema di interoperabilità con la ricerca dello stato attivo 1D in cui lo stato attivo rimaneva bloccato all'interno di un ComposeView incorporato in altre visualizzazioni. (I08fd4)

Contributo esterno

  • LocalLifecycleOwner è stato spostato dall'interfaccia utente Compose a lifecycle-runtime-compose in modo che le relative API helper basate su Compose possano essere utilizzate al di fuori dell'interfaccia utente Compose. Grazie a Jake Wharton per il suo contributo. (I6c41b, b/328263448)
  • Esporre in modo coerente le proprietà di bias float in tutti i sottotipi di allineamento basati sul bias. (I69f0f, b/328088992)

Versione 1.7.0-alpha04

6 marzo 2024

androidx.compose.ui:ui-*:1.7.0-alpha04 viene ritirata. La versione 1.7.0-alpha04 contiene questi commit.

Modifiche alle API

  • Supporta la funzionalità di scrittura a mano libera con lo stilo per BasicTextField2 sui dispositivi con Android U e versioni successive. (I002e4)
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength in modo da poter inviare informazioni sui componenti di cui viene eseguito lo scorrimento in Compose al sistema di accessibilità. Questa CL applica anche l'utilizzo della proprietà negli elenchi scorrevoli di base. (Ic5fa2)
  • FocusRequester.createRefs è ora stabile (I4d92c, b/261436820)
  • È stato introdotto DelegatableNode.requireView() per consentire ai nodi modificatori di ottenere l'attuale View di Android senza leggere una composizione locale. (I40768)
  • Nuova API Path.reverse() per invertire la direzione di un percorso (I36348)
  • È stato aggiunto hintLocales a KeyboardOptions per consentire a TextFields di suggerire IME con impostazioni internazionali specifiche per preimpostare una lingua preferita.
  • Esporre la proprietà platformLocale di Locale che restituisce l'oggetto della piattaforma sottostante, ad esempio java.util.Locale. (I921c6)

Versione 1.7.0-alpha03

21 febbraio 2024

androidx.compose.ui:ui-*:1.7.0-alpha03 viene ritirata. La versione 1.7.0-alpha03 contiene questi commit.

Modifiche alle API

  • Ti presentiamo ContextualFlowRow e FlowRow/Column avanzato con MaxLines e Overflow. Siamo felici di annunciare i miglioramenti apportati alle proprietà sperimentali FlowRow e FlowColumn, che ora supportano maxLines e overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cui ContextualFlow* è perfetto per un numero elevato di elementi che utilizzano una piccola configurazione maxLines e pulsanti dinamici +N Mostra altro, mentre FlowRow e FlowColumn sono perfetti per un numero ridotto di elementi, meno di 100. Importante: per mantenere il comportamento esistente in FlowRow o FlowColumn in cui tutti gli elementi vengono composti indipendentemente dal fatto che rientrino nel valore massimo dell'asse trasversale, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Esplora ContextualFlowRowSample e FlowRowSample per vedere esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
  • Aggiungi la proprietà semantica maxTextLength da impostare nei campi di testo che filtrano il numero massimo consentito di caratteri. (I24d9f, b/170648072)
  • Il wrapper Modifier.inspectable è stato ritirato. Questa API creerà più invalidazioni del modificatore del necessario, pertanto il suo utilizzo è ora sconsigliato. Gli sviluppatori sono invitati a implementare il metodo inspectableProperties() su ModifierNodeElement se vogliono esporre le proprietà dei modificatori agli strumenti. (Ib3236)
  • Nuovo costruttore per PopupProperties che consente il controllo completo dei flag WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • È stato introdotto DelegatableNode.requireLayoutCoordinates() come modo per ottenere l'Modifier.Node attuale di un LayoutCoordinates senza dover eseguire l'override di onPlaced e memorizzare le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere l'Modifier.Node attuale di un LayoutCoordinates senza dover eseguire l'override di onPlaced e memorizzare le coordinate in una proprietà. (Iaebaa)
  • BasicTextField2 e le API correlate nel pacchetto androidx.compose.foundation.text2 vengono spostati in androidx.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 aggiunta anche una nuova API DeferredTargetAnimation sperimentale per le animazioni il cui target è sconosciuto al momento dell'istanza. (I60745)
  • Nuove API Path per eseguire query sulla direzione di un percorso ed estrarre le curve di livello da un Path. (I63d04)
  • Sono stati aggiunti PathHitTest e Path.contains(Offset) per verificare se un Path contiene un punto specifico. (I3b218)
  • Ora TextLayoutResult espone il metodo getLineBaseline(lineIndex). Ciò consente di leggere la linea di base di una riga arbitraria del testo, oltre alle proprietà di convenienza esistenti firstBaseline e lastBaseline. (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 e SemanticsActions.PerformImeAction. (Id0528, b/322269946)

Versione 1.7.0-alpha02

7 febbraio 2024

androidx.compose.ui:ui-*:1.7.0-alpha02 viene ritirata. La versione 1.7.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stato risolto un problema di compatibilità binaria con SemanticsPropertyReceiver.performImeAction. (I65865, b/322269946)
  • Il costruttore PopupProperties che accetta un parametro usePlatformDefaultWidth non è più sperimentale. (I8f8d2)
  • È stato aggiunto un overload di ComposeTestRule.waitUntil che accetta una descrizione stringa della condizione da includere nel messaggio di timeout. (I9413e)
  • Nuova API per la semantica unset() per rimuovere le proprietà semantiche aggiunte nella stessa catena di modificatori. Nuova proprietà semantica isOpaque. (I8c583, b/317966058, b/246056649)
  • Rimosso originalEventPosition dal metodo di copia nell'API pubblica di PointerInputChange. (I7bead)

Correzioni di bug

  • È stato corretto un bug di accessibilità che consentiva di fare clic su elementi diversi da schede e pulsanti di opzione quando selezionati. (I2181c)
  • VelocityTracker ora avrà la correzione per l'aggiunta di punti per impostazione predefinita. La correzione può comunque essere disattivata impostando VelocityTrackerAddPointsFix su false in caso di problemi. (Ib3877, b/269487059)
  • È stata corretta l'incompatibilità binaria con le versioni precedenti in TextStyle e ParagraphStyle. (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 ritirata. La versione 1.7.0-alpha01 contiene questi commit.

Modifiche alle API

  • È stato ampliato ClipboardManager aggiungendo ClipEntry e ClipMetadata per supportare contenuti arbitrari come le immagini.
  • Aggiunge l'API DeviceConfigurationOverride a ui-test per consentire di eseguire l'override locale del comportamento dei contenuti in fase di test, ad esempio per specificare una dimensione, una lingua, una direzione del layout, una scala dei caratteri o un tema disponibili.

Versione 1.6

Versione 1.6.8

12 giugno 2024

androidx.compose.ui:ui-*:1.6.8 viene ritirata. 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 definita più bassa. In questo caso, ora eseguiamo l'interpolazione tra la scala lineare 1x e la tabella più bassa definita, in modo che la dimensione del carattere aumenti in modo monotono all'aumentare delle scale. (Icbae3)

Versione 1.6.7

1° maggio 2024

androidx.compose.ui:ui-*:1.6.7 viene ritirata. La versione 1.6.7 contiene questi commit.

Versione 1.6.6

17 aprile 2024

androidx.compose.ui:ui-*:1.6.6 viene ritirata. 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 ritirata. La versione 1.6.5 contiene questi commit.

Versione 1.6.4

20 marzo 2024

androidx.compose.ui:ui-*:1.6.4 viene ritirata. La versione 1.6.4 contiene questi commit.

Versione 1.6.3

6 marzo 2024

androidx.compose.ui:ui-*:1.6.3 viene ritirata. La versione 1.6.3 contiene questi commit.

Versione 1.6.2

21 febbraio 2024

androidx.compose.ui:ui-*:1.6.2 viene ritirata. 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 di SemanticsPropertyReceiver.performImeAction e SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Ora i layout generano un errore durante la misurazione quando uno restituisce una dimensione eccessivamente grande. Questo tipo di errore si verifica normalmente quando la misurazione utilizza direttamente i vincoli massimi senza verificare la presenza di Constraints.Infinity. Il controllo aiuterà gli sviluppatori a trovare problemi con il layout che ha dimensioni errate anziché in un layout che lo contiene. (I339a9)

Versione 1.6.0

24 gennaio 2024

androidx.compose.ui:ui-*:1.6.0 viene ritirata. 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 ritirata. La versione 1.6.0-rc01 contiene questi commit.

Correzioni di bug

  • Implementazione di grafica vettoriale ottimizzata per migliorare il rendimento riducendo al minimo le ricomposizioni aggiuntive.

Versione 1.6.0-beta03

13 dicembre 2023

androidx.compose.ui:ui-*:1.6.0-beta03 viene ritirata. La versione 1.6.0-beta03 contiene questi commit.

Nuove funzionalità

  • Ora è possibile scollegare un LayoutCoordinates senza scollegare il nodo. Proteggiti da questo problema in Layout Inspector di Compose (If693)

Correzioni di bug

  • PlatformImeOptions ora è una classe concreta anziché un'interfaccia. (If40a4)
  • Sono state corrette le ricomposizioni downstream aggiuntive causate da LocalSoftwareKeyboardController e LocalTextInputService a cui vengono forniti nuovi valori ogni volta che viene ricomposto un nodo principale. (I42190, b/310510985)

Versione 1.6.0-beta02

29 novembre 2023

androidx.compose.ui:ui-*:1.6.0-beta02 viene ritirata. 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 ritirata. La versione 1.6.0-beta01 contiene questi commit.

Modifiche alle API

  • Il modificatore DragAndDropTarget ora accetta esplicitamente DragAndDropTarget e ha una lambda per attivare una sessione di trascinamento. Ora esistono due funzioni di fabbrica per un DragAndDropModifierNode. Uno per ricevere i trasferimenti e uno per trasferire i dati (I69481)
  • maximumFlingVelocity aggiornato per essere rappresentato come Float. Documentazione aggiornata per maggiore chiarezza sull'unità maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart nella fabbrica DragAndDropModifierNode è stato rinominato in acceptDragAndDropTransfer.acceptsDragAndDropTransfer è stato aggiunto al modificatore dragAndDropTarget per l'accettazione da una sessione di trascinamento. Questa espressione lambda restituisce un DragAndDropTarget valido se ti interessa una sessione di trascinamento. Altre espressioni lambda per l'elaborazione degli eventi di trascinamento sono state sostituite da questa. È stata aggiunta una funzione di fabbrica DragAndDropTarget per ricevere dalle sessioni di trascinamento (Iebf3a)
  • Rimossa DragAndDropInfo come tipo DragAndDropModifierNode.drag ora accetta parametri per transferData, dimensione della decorazione e lambda di trascinamento della decorazione DrawScope

    DragAndDropTarget ha metodi per particolari eventi di trascinamento della selezione anziché essere un singolo metodo astratto

    onDragAndDropEvent nella funzione di fabbrica per un DragAndDropModifierNode è stato rinominato in onDragAndDropStart per comunicare meglio che il DragAndDropTarget fornito è valido solo per una determinata sessione di trascinamento

    DragAndDropEventType è stato rimosso (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession rinominato in establishTextInputSession. (I03cd0)

  • Migliora i nomi delle API dei nodi attraversabili per renderli più comprensibili. (Ia4474)

  • Sostituisci OriginalText con TextSubstitution. (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession rinominato in runTextInputSession. (Ie9c6b)

  • Gli elementi secondari di SubcomposeLayout (e i layout come LazyColumn basati su di esso) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di test assertIsDeactivated() per testare questi nodi. Le altre API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981)

  • Rimozione di FocusDirection.In e FocusDirection.Out, utilizza FocusDirection.Enter e FocusDirection.Exit (I2f660)

  • Le API Material SwipeToReveal (per schede e chip) ora si basano su un'API basata su slot (come consigliato da Compose) anziché su istanze basate su classi di dati per creare questi slot. Si tratta di una modifica che causa interruzioni. Consulta la demo e il codice campione per esempi su come utilizzare la nuova API. (Ia8943)

  • Il costruttore FontStyle(int) è deprecato. Utilizza FontStyle.Normal o FontStyle.Italic. (I66610)

  • Interfaccia FontScalable rinominata in FontScaling (Ie804a)

Correzioni di bug

  • SoftwareKeyboardController.show() non mostrerà più la tastiera software se non è selezionato alcun editor di testo. (I2165a, b/301477279)
  • Gli eventi di pressione dei tasti hardware per i tasti che non hanno ricevuto un evento di rilascio nella stessa visualizzazione di composizione verranno ora ignorati. (Ib37b4, b/305518328)
  • Aggiungi il supporto del renderer per il gradiente radiale in ArcLine. (I4d5bb)
  • Implementa equals e hashcode per PageSize.Fixed. (Ie3ede, b/300134276)
  • Risolvi il problema di compatibilità binaria con la modifica dell'inserimento della finestra (Iee695)
  • Rimuovi il livello principale del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza. (I55555)
  • TestDispatchers passed as the effectContext to Compose tests will now be used to create the test and frame clocks. (Ia7178)

Versione 1.6.0-alpha08

18 ottobre 2023

androidx.compose.ui:ui-*:1.6.0-alpha08 viene ritirata. La versione 1.6.0-alpha08 contiene questi commit.

Modifiche alle API

  • La funzione Modifier.dragAndDrawSource ha rinominato la lambda onDrawDragShadow in drawDragDecoration e la funzione DragAndDropInfo ha rinominato il parametro size in dragDecorationSize. (Id0e30, b/303904810)
  • Introduci SemanticsNodeInteraction.isDisplayed() e SemanticsNodeInteraction.isNotDisplayed() per verificare se un nodo corrispondente è visibile o meno senza anche asserire su di esso. (I2c196, b/302100809)
  • È stato introdotto un valore speciale Unspecified per i campi TextAlign, TextDirection, Hyphens e LineBreak di ParagraphTextStyle per sostituire null. Poiché queste classi sono classi inline, sostituendo nullable con Unspecified, evitiamo il boxing dei tipi primitivi. I costruttori, i getter e altri metodi in TextStyle e nello stile Paragrafo sono stati aggiornati per accettare i parametri menzionati come tipi non nulli. (I4197e, b/299490814)
  • Aggiungi l'overload GoogleFont per la lettura di un GoogleFont da XML. (If8f59)
  • Ha reso LoremIpsum PreviewParameterProvider un corso aperto. (I41bf5, b/266918816, b/300116360)

Correzioni di bug

  • FontFamilyResolver ora utilizza Dispatchers.Main per le coroutine di gestione della cache. (Ie8dd9)
  • AndroidViewBinding ora rimuove in modo sincrono le istanze Fragment aumentate includendo un FragmentContainerView nel layout nell'ambito del relativo onRelease utilizzando commitNow (anziché commit, come in precedenza), risolvendo così i problemi relativi al metodo di Live Edit con la sostituzione della composizione in seguito alle modifiche. (I58fbf)

Versione 1.6.0-alpha07

4 ottobre 2023

androidx.compose.ui:ui-*:1.6.0-alpha07 viene ritirata. La versione 1.6.0-alpha07 contiene questi commit.

Modifiche alle API

  • È stato introdotto PlatformTextInputMethodTestOverride per scrivere test per gli editor di testo personalizzati. (Id159b)
  • Aggiunge il modificatore dragAndDropSource per avviare le sessioni di trascinamento e il modificatore dragAndDropTarget per ricevere dalle sessioni di trascinamento. (Ib7828, b/286038936)
  • Sono state aggiunte le raccolte ColorList e ColorSet che evitano le allocazioni. (I744bd)
  • È stato aggiunto il flag temporaneo DisableNonLinearFontScalingInCompose per disattivare il ridimensionamento non lineare dei caratteri. Imposta DisableNonLinearFontScalingInCompose = true nei test se hai bisogno di tempo per pulirli. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)

Correzioni di bug

  • Analisi ottimizzata dei drawables vettoriali XML. (Ibb015)

Versione 1.6.0-alpha06

20 settembre 2023

androidx.compose.ui:ui-*:1.6.0-alpha06 viene ritirata. La versione 1.6.0-alpha06 contiene questi commit.

Modifiche alle API

  • Ulteriori ottimizzazioni alle icone Material. (I3e08d)
  • Aggiunge la possibilità di attraversare l'albero dei modificatori verso l'alto/il basso per trovare nodi simili. (I2d234)
  • Aggiunto il callback onRestoreFailed() al modificatore focusRestorer() (Ie1d43)
  • Sono state aggiunte annotazioni androidx a varie API grafiche per specificare ColorInt, FloatRange, IntRange, Size e altro ancora. (Id65c8, b/290950582)
  • Aggiungi showSystemUi=true alla definizione di PreviewScreenSizes (Ib61d3)

Modifiche al comportamento

  • Ora la composizione utilizza il ridimensionamento non lineare dei caratteri per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è > 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumenteranno normalmente, mentre quelle del testo già grande aumenteranno solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente per rimanere proporzionali all'altezza prevista della scala al 100%. Per saperne di più, consulta le best practice per il ridimensionamento dei caratteri. (I11518)

Versione 1.6.0-alpha05

6 settembre 2023

androidx.compose.ui:ui-*:1.6.0-alpha05 viene ritirata. La versione 1.6.0-alpha05 contiene questi commit.

Modifiche alle API

  • Attiva l'acquisizione dei contenuti in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Le velocità di scorrimento rapido nei componenti View come ScrollView e RecyclerView sono limitate a ViewConfiguration.ScaledMaximumFlingVelocity. Compose ora contiene la propria versione di maximumFlingVelocity, che ora si applica a Draggable. (Ibf974)
  • Aggiunge lo scaffolding iniziale per supportare le API di trascinamento della piattaforma. (If84ce)
  • Aggiungi deviceId in RotaryScrollEvent (Iba3bf)
  • Aggiornamento dell'API Devices ui-tooling per includere dispositivi più recenti (Ib25b4)

Versione 1.6.0-alpha04

23 agosto 2023

androidx.compose.ui:ui-*:1.6.0-alpha04 viene ritirata. La versione 1.6.0-alpha04 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un metodo per disattivare ReusableComposition, rimuovendo le osservazioni ma mantenendo i nodi. La composizione disattivata può essere riattivata chiamando il numero setContent. (Ib7f31)
  • Aggiungi l'interfaccia ReusableComposition per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
  • Modifier.focusGroup è stata promossa ad API stabili. (I7ffa3)
  • Sono state aggiunte annotazioni androidx a varie API grafiche 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 migliore ispezionabilità dei parametri. (I5fe29)
  • Introduci la libreria wear-tooling-preview per elencare i dispositivi indossabili validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
  • È stata creata l'interfaccia FontScalable per gestire il ridimensionamento dei caratteri dell'interfaccia Densità. (I2cf3f)

Versione 1.6.0-alpha03

9 agosto 2023

androidx.compose.ui:ui-*:1.6.0-alpha03 viene ritirata. La versione 1.6.0-alpha03 contiene questi commit.

Modifiche alle API

  • Nuovo tipo di transizione di entrata/uscita che ridimensiona i contenuti in base alle dimensioni del contenitore di animazione durante l'animazione di entrata/uscita. LookaheadScope Composable fun e l'interfaccia sono ora stabili. (Ifb2ce)
  • Aggiunta del supporto per la configurazione di privateImeOptions (Idb772)

Correzioni di bug

  • PopupPositionProvider.calculatePosition ora aggiornerà automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547)
  • Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando readOnly è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quando readOnly viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)
  • Applicazione estesa delle asserzioni globali nel test della UI. (I1f90d)

Versione 1.6.0-alpha02

26 luglio 2023

androidx.compose.ui:ui-*:1.6.0-alpha02 viene ritirata. La versione 1.6.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stata aggiunta un'interfaccia di localizzazione dei servizi che può essere implementata dagli implementatori di Composition e che consente un'implementazione di Composition che delega a un altro servizio di ricerca dei delegati di composizione la composizione originale. Questo metodo non deve essere chiamato direttamente e viene utilizzato per consentire la creazione di API sperimentali nel runtime che possono essere trovate nelle versioni wrapper del compositore, come fa il modulo UI. (I296b9)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. LocalSoftwareKeyboardController ora è anche un CompositionLocal vero e proprio. (I4c364)
  • LookaheadLayout e LookaheadLayoutScope sono stati ritirati da alcune versioni e ora sono stati rimossi. Le API sostitutive sono LookaheadScope che possono funzionare con qualsiasi layout. (I12ac3)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più comodo e facile da scoprire per richiedere la messa a fuoco nei test. (Ie8722)
  • Aggiungi API sperimentali per la registrazione di asserzioni globali, da utilizzare in futuro dai framework di test. (I12d77)

Correzioni di bug

  • La prima chiamata di callback di update di AndroidView verrà ora posticipata fino al collegamento della visualizzazione, anziché essere eseguita quando viene applicata la composizione che introduce AndroidView. Questo corregge un bug per cui il callback update 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 ritirata. La versione 1.6.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Supporta la ricerca predittiva in LazyList. In questo modo, LazyList nel passaggio di prelettura può ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi, AnimatedVisibility e così via) e calcolare le dimensioni e la posizione della prelettura per tutti gli elementi secondari. Dopo la bozza di animazione, i bambini di LazyList possono animare in modo indipendente la realtà come si vede nella bozza di animazione.

Modifica del comportamento: includeFontPadding è ora false per impostazione predefinita in Compose

includeFontPadding ora è false per impostazione predefinita (21d806) in Compose.

includeFontPadding è un attributo legacy 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 Compose modificherà il rendering di tutti i testi nella tua UI rimuovendo il padding aggiuntivo nella parte superiore della prima riga e dell'ultima riga di ogni testo visualizzato.

A seconda dei requisiti dell'interfaccia utente e delle metriche dei caratteri che utilizzi, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare problemi come: - Test degli screenshot non riusciti. Correggi la UI, se necessario, e rigenera le immagini di riferimento. - Il testo è leggermente disallineato. Rimuovi eventuali padding negativi personalizzati o aggiungi il padding, 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 correlati a questa modifica, segnalali utilizzando lo strumento di monitoraggio dei problemi.

Modifiche alle API

  • Supporto InputConnection#requestCursorUpdates (I0c69b)
  • Aggiunti FocusRequester.saveFocusedChild e FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Aggiungi il tipo ResourceResolutionException per eseguire il wrapping delle eccezioni generate durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset che non è stato caricato. (I19f44, b/230166331, b/278424788)
  • Accessibilità ottimizzata per le prestazioni e le allocazioni di memoria. (Iede48)
  • Sono state aggiunte proprietà e azioni semantiche per supportare la traduzione del testo. (I4a6bc)
  • Nuova proprietà in IntrinsincMeasureScope e relative implementazioni (ad es. MeasureScope) per indicare se la misura corrente è una misura di previsione. (I7a812)
  • È stata aggiornata l'API DrawScope per introdurre la possibilità di eseguire il retargeting del rendering in un'altra tela con densità/direzione del layout e dimensioni alternative.
  • DrawContext è stato aggiornato per supportare la configurazione della densità e della direzione del layout, nonché per rendere configurabile il canvas. (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 un'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (I9790e)
  • I parametri fallback* nel costruttore TextMeasurer sono stati rinominati in default*. (I940a5)
  • SemanticsPropertyReceiver.performImeAction è stato rinominato in onImeAction e SemanticsActions.PerformImeAction in OnImeAction. (I8e841)
  • Aggiunge Wheel per distinguere lo scorrimento del mouse dal trascinamento nello scorrimento nidificato (in particolare in NestedScrollConnection). (Ie57e4)
  • Aggiunta dell'API asComposePaint per sostituire toComposePaint, in quanto l'oggetto restituito racchiude l'android.graphics.Paint originale (I22b4c)
  • Ritira SemanticsProperties.imeAction e sostituiscilo con un nuovo parametro SemanticsActions.performImeAction. (I4a587)
  • Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande di una parola e si riduce di un carattere. (Ic0c6c, b/180639271)
  • I metodi Paragraph che prima generavano AssertionError per gli offset fuori dai limiti ora generano IllegalArgumentException come MultiParagraph. (I549d3, b/243338896)

Versione 1.5

Versione 1.5.4

18 ottobre 2023

androidx.compose.ui:ui-*:1.5.4 viene ritirata. La versione 1.5.4 contiene questi commit.

Versione 1.5.3

4 ottobre 2023

androidx.compose.ui:ui-*:1.5.3 viene ritirata. La versione 1.5.3 contiene questi commit.

Correzioni di bug

  • (b/301209788) TextField a volte applicava in modo errato i comandi precedenti quando si concentrava e inseriva l'input coreano, causando la perdita di caratteri.

Versione 1.5.2

27 settembre 2023

androidx.compose.ui:ui-*:1.5.2 viene ritirata. La versione 1.5.2 contiene questi commit.

Correzioni di bug

  • È stata aggiunta una soluzione alternativa per i blocchi anomali quando si accedeva all'API di scorrimento per l'accessibilità dal thread in background.
  • Correggi l'aggiunta di nodi non collegati all'albero semantico.

Versione 1.5.1

6 settembre 2023

androidx.compose.ui:ui-*:1.5.1 viene ritirata. La versione 1.5.1 contiene questi commit.

Correzioni di bug

  • Sono stati corretti i campi di testo che mostrano la tastiera e sono modificabili quando readOnly è true. È stato inoltre corretto il problema della tastiera che non viene visualizzata quando readOnly viene modificato da true a false durante la messa a fuoco. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

androidx.compose.ui:ui-*:1.5.0 viene ritirata. 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 ritirata. La versione 1.5.0-rc01 contiene questi commit.

Correzioni di bug

  • È stato risolto l'arresto anomalo che si verificava quando SubcomposeLayout veniva utilizzato all'interno di movableContentOf().

Versione 1.5.0-beta03

28 giugno 2023

androidx.compose.ui:ui-*:1.5.0-beta03 viene ritirata. 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 con i composable Dialog e Popup che poteva causare 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 ritirata. La versione 1.5.0-beta02 contiene questi commit.

Modifiche alle API

  • È stata aggiunta l'API asComposePaint per consentire l'utilizzo di un'istanza android.graphics.Paint da utilizzare in Compose

Correzioni di bug

  • Aggiunta dell'API asComposePaint per sostituire toComposePaint, 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 ritirata. La versione 1.5.0-beta01 contiene questi commit.

Modifiche alle API

  • Allocazioni rimosse in ricomposizione, animazioni a colori e AndroidComposeView (Ib2bfa)
  • Aggiunge la funzione di assistenza CacheDrawModifierNode() per consentire la delega (Icf8f9)
  • Ti presentiamo la proprietà isLookingAhead, accessibile da MeasureScope, per osservare i risultati di lookahead e influenzare la passata principale, se vuoi. (Ibf4c3)
  • Nuova proprietà semantica traversalIndex, un numero in virgola mobile utilizzato per riordinare i nodi nella traversata TalkBack (i valori più bassi vengono prima). (I9a81b, b/186443263)
  • Ridenominazione della proprietà Semantica isContainer in isTraversalGroup (I121f6)
  • ColorProducer ora ha un operator fun invoke invece di produce (I4a9a2)
  • Aggiungi l'API di trasformazione Path per applicare trasformazioni di traslazione/scalatura/rotazione agli oggetti percorso. (I23434, b/233772232)
  • Il metodo ColorProducer viene chiamato produce. (I78bde)
  • Rinomina toFrameworkColorSpace in toAndroidColorSpace (I4f547)
  • Rinomina ColorLambda in ColorProducer. (I73b1a)
  • Introduzione di API per la conversione tra i tipi di spazi colore Android e Compose. (Ie7db4, b/279979665)
  • È stato aggiunto un parametro di colore a BasicText per consentire l'animazione o l'impostazione del colore del testo in modo efficiente. (Iffd88, b/246961787)
  • TextRange.constrain rinominato in TextRange.coerceIn. (I31be2)
  • È stato aggiunto TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787)
  • Sono state stabilizzate molte API Text, 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. Il nostro intento iniziale era di rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la deprecazione viene rimossa dal campo (I98e96, b/277703184)
  • È stato aggiunto il metodo pubblico TextRange.constrain. (I97912)
  • Ora è possibile aprire i UrlAnnotation nei AnnotatedString tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta l'azione 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 semantica PerformImeAction per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)
  • Le API PlatformTextInput non sono più sperimentali per Android. (I668eb)
  • Nome del parametro del valore per Enum.valueOf modificato (Ia9b89)
  • Altre eccezioni generate da enum valueOf (I818fe)
  • È stata introdotta una nuova API PlatformTextInputAdapter di basso livello per la creazione di implementazioni personalizzate di input di testo che comunicano direttamente con le API della piattaforma. (I58df4)
  • È stato aggiunto il parametro BlendMode ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508)
  • Rinomina Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis. Solo rinomina. (I07af5)
  • Valori DPI aggiornati dei dispositivi di riferimento @Preview (Id6151, b/254528382)
  • Aggiungi i parametri brush e alpha a BasicText per animare o impostare in modo efficiente il pennello di testo.
  • Definisci i tipi lambda senza scatola per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)

Correzioni di bug

  • Rimozione di più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
  • Allocazioni ridotte nella gestione dell'input di layout e puntatore (I5333a)
  • Ottimizza l'utilizzo della memoria vettoriale e il rendering dei primi frame (I2f3c6)
  • Rimozione delle allocazioni durante il disegno di 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 ritirata. La versione 1.5.0-alpha04 contiene questi commit.

Nuove funzionalità

  • Modifier.Node Miglioramenti della delega È stata aggiunta una funzionalità avanzata per delegare ad altre istanze di Modifier.Node da un DelegatingNode. Puoi farlo con le API delegate e undelegate. Prima di questa modifica, ogni API del nodo di delega doveva essere delegata esplicitamente al nodo delegato. Dopo questa modifica, le interfacce dei nodi verranno delegate implicitamente, a meno che DelegatingNode non le esegua l'override in modo esplicito. (67352bc)

Modifiche alle API

  • Presenta NestedScrollModifierNode, un NestedScroll Modifier.Node a cui è possibile delegare le credenziali utente. (I69513)
  • Sono stati aggiunti i parametri onReset e onRelease al composable AndroidViewBinding, che rispecchia il composable AndroidView e consente il supporto del riutilizzo delle visualizzazioni con ViewBinding. (I00b1e, b/276802519)
  • Aggiornamento dell'API Compose Path per supportare le operazioni di riavvolgimento e i casi d'uso di manipolazione frequente dei percorsi con riutilizzo più rapido. (I7b797)
  • È stato aggiunto TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787)
  • Sono state stabilizzate molte API Text, 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. Il nostro intento iniziale era di rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, la deprecazione viene rimossa dal campo (I98e96, b/277703184)

Correzioni di bug

  • È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile Dialog. (I82551, b/262140644)

Versione 1.5.0-alpha03

19 aprile 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 viene ritirata. La versione 1.5.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Nuovo comportamento predefinito per SubcomposeLayout in LookaheadScope: SubcomposeLayouts che non hanno slot condizionali (ad es. TabRow, Scaffold, BoxWithConstraints e così via) ora funzionano correttamente con le animazioni di prelettura.

Modifiche alle API

  • Il nuovo intermediateMeasurePolicy predefinito che riutilizza la norma di misurazione del passaggio lookahead consente ai sottotipi SubcomposeLayout senza slot condizionali come Scaffold, TabRow e BoxWithConstraints di funzionare con lookahead per impostazione predefinita. (Id84c8)
  • Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a withFrameNanos anziché tutta la composizione quando riceve una notifica ON_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 di withFrameNanos verranno bloccate. (Id9e7f, b/240975572)
  • Modifiche motionEventSpy alla modalità 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 passare e testare l'impostazione includeFontPadding su false. (I98e96, b/277703184)

Versione 1.5.0-alpha02

5 aprile 2023

androidx.compose.ui:ui-*:1.5.0-alpha02 viene ritirata. La versione 1.5.0-alpha02 contiene questi commit.

Modifiche alle API

  • Nuova API SubcomposeLayout che accetta una policy di misurazione intermedia aggiuntiva per la gestione della logica di misurazione/layout durante le animazioni basate sulla previsione. (I017d3)
  • PointerInput ora è lazy e utilizza Modifier.Node per un rendimento migliore (scopri di più sulla piccola modifica del comportamento). (15dab9)
  • Modifica le API sperimentali in API stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368)
  • Modifica le API sperimentali in API stabili in PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Aggiunge un modo per creare un'istanza di un SuspendingPointerInputModifierNode per implementazioni di Modifier.Node più complesse. (Ic4933)
  • Ora è possibile aprire i UrlAnnotation nei AnnotatedString tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta un'API per intercettare i tasti hardware prima che vengano inviati alla tastiera virtuale (I4f4c6, b/186800395)
  • È stata aggiunta l'azione semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test correlate al testo (ad es. performTextInput) ora richiedono direttamente lo stato attivo, utilizzando l'azione semantica, anziché fare clic sul campo. (I6ed05)

Correzioni di bug

  • Ora le azioni di test del testo 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 ritirata. La versione 1.5.0-alpha01 contiene questi commit.

Modifiche alle API

  • Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misurazione in intermediateLayout ha IntermediateMeasureScope come destinatario, che fornisce CoroutineScope, LookaheadScope e MeasureScope convenienti.(Ibe2e5)
  • LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti secondari in un LookaheadScope possono essere controllati direttamente dalla MeasurePolicy del genitore. (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 ritirata. 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 della messa a fuoco 2D che interessava i menu DropDown (b/276811828)
  • È stato corretto un bug nelle proprietà di entrata/uscita dello stato attivo personalizzato che eseguiva il blocco di entrata/uscita solo la prima volta che veniva richiamata la 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 ritirata. La versione 1.4.2 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui AndroidView non riutilizzava correttamente i modificatori, il che poteva causare comportamenti imprevisti e arresti anomali. (Ib67ee, b/275919849)
  • È stato corretto un problema di regressione a causa del quale la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal componente componibile Dialog (I82551, b/262140644)

Versione 1.4.1

5 aprile 2023

androidx.compose.ui:ui-*:1.4.1 viene ritirata. La versione 1.4.1 contiene questi commit.

Correzioni di bug

  • Correzione di un problema relativo a ParentDataModifier che non influisce su AndroidView (b/274797771)

Versione 1.4.0

22 marzo 2023

androidx.compose.ui:ui-*:1.4.0 viene ritirata. 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 pigro, in modo che non vengano eliminati quando vengono spostati fuori dai limiti. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010)
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API Modifier.Node sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Aggiunta della proprietà semantica IsContainer sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379)
  • È stato aggiunto un nuovo ruolo di accessibilità DropdownList. Può essere utilizzato per replicare il comportamento di TalkBack quando si mette a fuoco android.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)
  • I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato di inattività (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che asseriscono singoli frame delle animazioni di layout. (I8ea08, b/222093277)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7)

Versione 1.4.0-rc01

8 marzo 2023

androidx.compose.ui:ui-*:1.4.0-rc01 viene ritirata. La versione 1.4.0-rc01 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un overload della funzione componibile AndroidView, che accetta il parametro onReset. Consente di riutilizzare le istanze View quando il nodo nella composizione viene eliminato e riutilizzato in modo compatibile. Ciò è particolarmente utile per LazyRows e LazyColumns delle visualizzazioni. (I3f10d, b/230099236)
  • È stata introdotta una nuova API PlatformTextInputAdapter di basso livello per la creazione di implementazioni personalizzate di input di testo che comunicano direttamente con le API della piattaforma. (I58df4)

Correzioni di bug

  • L'azione semantica SetText di BasicTextField ora aggiornerà il buffer di testo utilizzando lo stesso percorso di codice degli aggiornamenti IME e delle funzioni di test (ad es. performTextReplacement).
  • Le funzioni di test del testo performTextClearance, performTextReplacement e performTextSelection ora utilizzano SemanticsActions. (I0807d, b/269633168, b/269624358)

Versione 1.4.0-beta02

22 febbraio 2023

androidx.compose.ui:ui-*:1.4.0-beta02 viene ritirata. La versione 1.4.0-beta02 contiene questi commit.

Modifiche alle API

  • Rimozione dell'API modifierElementOf(). Estendi direttamente da ModifierNodeElement. (I2256b)
  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che consente di reimpostare alcuni stati locali per gestire correttamente il caso in cui Layout verrà riutilizzato (ad esempio come elemento di LazyColumn). È stato corretto FocusTargetModifierNode per reimpostare correttamente lo stato attivo. (I65495, b/265201972)
  • È stato aggiunto il parametro BlendMode ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione durante il disegno del testo su Canvas. (I57508)

Correzioni di bug

  • Algoritmo dell'ordine di messa a fuoco dell'accessibilità migliorato, ad esempio le barre superiore/inferiore vengono lette più spesso rispettivamente per prime/ultime (74e9c5)

Versione 1.4.0-beta01

8 febbraio 2023

androidx.compose.ui:ui-*:1.4.0-beta01 viene ritirata. La versione 1.4.0-beta01 contiene questi commit.

Modifiche alle API

  • PinnableContainer.PinnedHandle.unpin() è stato rinominato in release() (I4667a)
  • Sono stati aggiunti waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists e waitUntilDoesNotExist come API sperimentali a ComposeTestRule, estendendo l'API waitUntil per accettare qualsiasi matcher e qualsiasi numero di nodi. Per ulteriore documentazione, consulta ComposeTestRule. (Ifa1b9, b/226934294)
  • Rinomina Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis. (I07af5)
  • GoogleFont.Provider.AllFontsListUri rimosso e collegato in ktdoc. (I16f29)

Correzioni di bug

  • Aggiungi documenti per AndroidFont.fontVariationSettings (I7d9e2)

Versione 1.4.0-alpha05

25 gennaio 2023

androidx.compose.ui:ui-*:1.4.0-alpha05 viene ritirata. La versione 1.4.0-alpha05 contiene questi commit.

Modifiche alle API

  • Sono stati introdotti nuovi overload sperimentali per la funzione runComposeUiTest e le funzioni create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione del test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() nella composizione. (I10614, b/265177763)
  • Aggiungi una nuova API per monitorare la velocità unidimensionale (If5a82)
  • FocusRequester è ora contrassegnato come @Stable. (I580ee)
  • Rimuovi un'annotazione sperimentale dal costruttore DialogProperties che accetta un parametro usePlatformDefaultWidth. (Ic4048)
  • Aggiunta della funzione per calcolare la posizione e la tangente a una distanza su un percorso, con PathMeasure.getPosition() e PathMeasure.getTangent() (I3b47c)
  • Rimosso setter pubblico esposto accidentalmente il giorno PlatformParagraphStyle. (I07f47)
  • Più tipi/nullabilità di funzioni inline/deprecate-nascoste (I24f91)
  • Aggiungi AnnotatedString.hasStringAnnotations alla query per cercare annotazioni con allocazioni pari a zero. (I94dfe, b/246960758)
  • È stato aggiunto un nuovo overload per la funzione TextMeasurer.measure che accetta un String come testo. (I47b2d, b/242705342)
  • Le API LineBreak e Hyphens in TextStyle sono state promosse alla versione stabile. (Ic1e1d)

Contributo esterno

  • I metodi notifyFocusedRect in TextInputSession e TextInputService non sono di nuovo deprecati. (I23a04, b/262648050)

Versione 1.4.0-alpha04

11 gennaio 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 viene ritirata. 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 pigro, in modo che non vengano eliminati quando vengono spostati fuori dai limiti. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente selezionato. (Ib8881, b/259274257, b/195049010)
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API Modifier.Node sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Aggiunta della proprietà semantica IsContainer sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379)
  • È stato aggiunto il nuovo ruolo di accessibilità DropdownList. Può essere utilizzato per replicare il comportamento di TalkBack's quando si mette a fuoco android.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)
  • I test dell'interfaccia utente di Android Compose ora eseguiranno passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato di inattività (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che asseriscono singoli frame delle animazioni di layout. (I8ea08, b/222093277)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo verrà scalato, tradotto o ruotato tramite animazione. (I24dd7)

Modifiche alle API

  • L'argomento maxSize: IntSize in drawText è stato sostituito con size: Size per essere in linea con le altre funzioni DrawScope. size è impostato su Size.Unspecified per impostazione predefinita, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)
  • È stato rimosso il costruttore di caratteri sperimentale deprecato. (I8a724, b/261435386)
  • La classe di dati ui tooling Group ora ha un campo, isInline, che indica se il gruppo è per una chiamata a una funzione componibile inline. Se isInline è true, la chiamata è a una funzione componibile inline. Tuttavia, il valore potrebbe essere false per le chiamate a funzioni componibili inline provenienti da moduli compilati con una versione del plug-in del compilatore Compose che non genera le informazioni sulla funzione inline. (Idb846)
  • È stato eseguito l'upgrade di una serie di API precedentemente sperimentali a stabili
  • L'API Rotary Scroll Event è ora stabile (I42ad3, b/261561229)
  • L'API FontVariation è ora stabile (I8779f, b/241016309)
  • Tutti i costruttori Font() sono ora API stabili (I5948b, b/261435386)
  • DeviceFontFamilyName è ora stabile (I8b640, b/261435386)
  • Il costruttore AndroidFont con variationSettings è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori di caratteri. (I5adcc, b/261565807)
  • L'API createFontFamilyResolver è ora stabile. Può essere utilizzato per rilevare 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 ritirata. La versione 1.4.0-alpha03 contiene questi commit.

Modifiche alle API

  • Rimozione di ExperimentalComposeUiApi da PointerIcon (I23af8)
  • Introduzione delle azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che queste sono disponibili solo a partire dall'API 29. (Ida4ab)
  • Visualizzazione del parametro rememberNestedScrollConnection aggiornata dalla visualizzazione principale alla visualizzazione host. (Ia5200)
  • È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli elementi principali. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni di pressione, quando i gesti potrebbero diventare eventi di scorrimento.
  • È stato corretto il problema per cui Clickables non ritardava correttamente gli effetti ripple quando veniva utilizzato all'interno di un Scrollable ViewGroup.
  • Aggiornamento di riquadri e fogli per ritardare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
  • CompositingStrategy.Always è stato rinominato in Offscreen per indicare che graphicsLayer verrà sempre sottoposto a rendering in un buffer intermedio (I47dc1)
  • L'overload del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
  • Sono state aggiunte nuove API sperimentali PerfettoTrace.record {} e PerfettoTraceRule per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, per esaminare il comportamento e le prestazioni del test. (I3ba16)
  • Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni riprese durante i callback withFrameNanos non verranno inviate finché non saranno terminati tutti i callback dei frame. Questo comportamento corrisponde a quello della composizione in esecuzione normale. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Ciò dovrebbe influire solo sul codice che chiama direttamente withFrameNanos o withFrameMillis e che ha una logica al di fuori del callback passato a queste funzioni che potrebbe dover essere spostata all'interno dei callback. Per esempi, consulta le modifiche al test dell'animazione in questo elenco di modifiche.
  • È stato aggiunto il parametro facoltativo onPerformTraversals: (Long) -> Unit al costruttore e alla funzione di fabbrica TestMonotonicFrameClock per eseguire il codice dopo i callback withFrameNanos, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670)
  • Aggiunta di EmojiCompat a Compose (Ibf6f9, b/139326806)
  • È stato aggiunto un nuovo parametro dello sfondo a @Preview per il supporto dei colori dinamici (I9f512)

Correzioni di bug

  • Le notifiche di applicazione dello snapshot vengono ora inviate dopo che Recomposer ha terminato l'applicazione delle modifiche. (Iad6c0, b/222093277)
  • Sono state introdotte modifiche in captureToImage per consentire l'acquisizione di screenshot in modalità multi-finestra. Questa opzione è utile per i test degli screenshot che utilizzano i popup di Compose. (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 ritirata. La versione 1.4.0-alpha02 contiene questi commit.

Modifiche alle API

  • GraphicsLayerScope aggiornato per mostrare le dimensioni attuali di graphicsLayer. Ciò è utile per calcolare le trasformazioni graphicsLayer in funzione delle dimensioni del composable. (If8c43,b/181387080)
  • È stato introdotto CompositingStrategy per determinare quando utilizzare un livello di composizione off-screen per il rendering dei contenuti graphicsLayer. Auto mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato un valore alfa o un RenderEffect/Overscroll. Always introdurrà sempre un buffer off-screen, mentre ModulateAlpha eviterà di utilizzare un buffer off-screen e modulerà invece ciascuna delle istruzioni di disegno registrate all'interno di graphicsLayer. L'utilizzo di ModulateAlpha continuerà a sfruttare un buffer fuori schermo per gli utilizzi di RenderEffect/Overscroll (I25e82, b/256382834)
  • invalidateSubtree() è stato aggiunto a Modifier.Node per consentire l'invalidazione di intere gerarchie per il layout e il disegno. (I4bd90)
  • Promuovi rememberNestedScrollInteropConnection alla versione stabile. È stata introdotta la possibilità di passare una visualizzazione principale a rememberNestedScrollInteropConnection. In questo modo, la visualizzazione personalizzata può reagire meglio ai vincoli di scorrimento, soprattutto nelle visualizzazioni non standard (ad es. ModalBottomSheetDialog). (I9e107)
  • È stata aggiunta l'interfaccia ObserverNode che può essere utilizzata dalle implementazioni Modifier.Node che devono ricevere una notifica quando un valore letto in precedenza è stato modificato (I5728b, b/247716483).
  • È stato aggiunto un nuovo costruttore a Paint che accetta un android.graphics.Paint nativo. È stata aggiunta anche una funzione di estensione toComposePaint() 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)
  • Refactoring degli strumenti per un migliore supporto delle nuove animazioni aggiunte (I8677b)
  • È stato aggiunto il parametro minLines a Text, TextField e OutlinedTextField di Material e Material3, 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 ritirata. La versione 1.4.0-alpha01 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Funziona in modo simile a forEachGesture(), ma il ciclo sui gesti opera interamente all'interno di AwaitPointerEventScope, quindi gli eventi non possono essere persi tra le iterazioni.
  • forEachGesture() è stato ritirato a favore di awaitEachGesture() perché consente di perdere eventi tra i gesti. (Iffc3f, b/251260206)
  • Ritiro del riciclo degli oggetti di accessibilità in androidx. Abbiamo riscontrato variazioni di rendimento trascurabili anche nelle versioni supportate più vecchie. (I0a961)
  • È stato aggiunto DrawStyle come attributo sperimentale a TextStyle e SpanStyle per consentire il disegno di testo con contorno. (If24b8, b/155421273)
  • AnnotatedString.Builder ora implementa kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder ora ha un metodo append(AnnotatedString, start: Int, end: Int) per aggiungere una sottostringa di un AnnotatedString e gli stili che si intersecano.
  • È stato aggiunto il parametro DrawStyle alle funzioni di pittura Paragraph e MultiParagraph, che consente di disegnare testo con contorno. (Ic8102, b/155421273)

Contributo esterno

  • Grazie per vighnesh per aver aggiunto i dispositivi TV alle anteprime (Ie15cd)

Versione 1.3

Versione 1.3.3

11 gennaio 2023

androidx.compose.ui:ui-*:1.3.3 viene ritirata. La versione 1.3.3 contiene questi commit.

Correzioni di bug

  • Correzione di un arresto anomalo che a volte si verifica su Android 9 quando l'attività salva lo stato della visualizzazione di composizione. (I0b755, b/260322832)

Versione 1.3.2

7 dicembre 2022

androidx.compose.ui:ui-*:1.3.2 viene ritirata. La versione 1.3.2 contiene questi commit.

Correzioni di bug

  • Aggiornato per utilizzare Profobuf 3.21.8, che evita un avviso di sicurezza in protobuf-javalite:3.19.4 (CVE-2022-3171) (b/255545055)

Versione 1.3.1

9 novembre 2022

androidx.compose.ui:ui-*:1.3.1 viene ritirata. La versione 1.3.1 contiene questi commit.

Versione 1.3.0

24 ottobre 2022

androidx.compose.ui:ui-*:1.3.0 viene ritirata. La versione 1.3.0 contiene questi commit.

Modifiche importanti dalla versione 1.2.0

  • Nuova suite di API sperimentali LookaheadLayout (che consentono comportamenti di animazione precedentemente impossibili)
  • Nuova suite di API sperimentali Modifier.Node (alternativa più performante a Modifier.composed)
  • Supporto migliorato per gli inset della finestra.
  • Supporto della messa a fuoco per i D-pad e la tastiera hardware in LazyList.
  • L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica del comportamento che causa interruzioni per alcuni sistemi di progettazione personalizzati. Motivazione nelle note di rilascio di beta01)
  • Molti miglioramenti minori e non distruttivi all'API
  • Numerose correzioni di bug e miglioramenti delle prestazioni

Versione 1.3.0-rc01

5 ottobre 2022

androidx.compose.ui:ui-*:1.3.0-rc01 viene ritirata. La versione 1.3.0-rc01 contiene questi commit.

Modifiche alle API

  • È stata aggiunta una nuova API sperimentale, Hyphens, per supportare la sillabazione automatica in Text (Iaa869)

Correzioni di bug

  • I caratteri DeviceFontFamilyName non configureranno le impostazioni delle varianti wght e ital per impostazione predefinita, ma utilizzeranno l'impostazione della piattaforma per i caratteri Typeface caricati. (Ia7a6d, b/246989332)
  • Correzione della perdita di memoria 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 ritirata. La versione 1.3.0-beta03 contiene questi commit.

Modifiche alle API

  • Aggiungi opzioni per personalizzare l'interruzione di riga in Testo. (I86907)
  • Modificato l'argomento size:IntSize con constraints: Constraints nel metodo TextMeasurer.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 composable Dialog. (I35342)

Versione 1.3.0-beta02

7 settembre 2022

androidx.compose.ui:ui-*:1.3.0-beta02 viene ritirata. La versione 1.3.0-beta02 contiene questi commit.

Modifiche alle API

  • È stato aggiunto un overload sperimentale per Layout che accetta un elenco di più lambda di contenuti componibili, il che consente di trattare le misurazioni inserite in lambda di contenuti diversi in modo diverso (Ic1b4e).

Modifiche alle API Focus sperimentali:

  • FocusDirection.In e FocusDirection.Out sono deprecati e sostituiti da FocusDirection.Enter e FocusDirection.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) e FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Ora puoi utilizzare FocusRequester.Cancel per annullare lo spostamento della messa a fuoco. FocusRequester.Cancel può essere utilizzato in una qualsiasi delle seguenti proprietà di messa a fuoco: up, down, left, right, next, previous, start, end, enter e exit. (Ib300f)

Versione 1.3.0-beta01

24 agosto 2022

androidx.compose.ui:ui-*:1.3.0-beta01 viene ritirata. La versione 1.3.0-beta01 contiene questi commit.

Refactoring del nodo modificatore

Il livello che gestisce le istanze Modifier/Modifier.Element e coordina il loro comportamento su LayoutNodes è stato sottoposto a un refactoring importante. Allo stato attuale, si tratta di un refactoring che non ha interessato l'API pubblica di nessuno dei numerosi modificatori in Compose e può essere considerato una modifica solo di implementazione. Nonostante ciò, si tratta di un cambiamento importante per vari motivi. (Ie4313)

Riepilogo delle modifiche

Le API Modifier.Node sperimentali aggiunte forniscono un'astrazione che consente di mantenere lo stato su un'istanza che verrà conservata 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 termini generali, questa astrazione fornisce un meccanismo alternativo per produrre modificatori stateful senza fare affidamento sui meccanismi dell'API Modifier.composed.

Rischio

Questa modifica è strettamente compatibile a livello binario con le versioni precedenti ed è pensata per essere retrocompatibile in termini di comportamento osservabile nella misura in cui è pratico e ragionevole. Detto questo, sono pochi i sottosistemi di Compose che non sono stati interessati da questo refactoring ed è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e non ancora trovati e corretti.

Esegui l'upgrade a questa release con cautela. Se ritieni che questo abbia causato problemi, comunicacelo.

API sperimentali

Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "nodo modificatore". Modifier.Node 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 causa un'interruzione del comportamento

L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp.

L'elevazione massima supportata per le finestre di dialogo e i popup di Compose è stata ridotta da 30 dp a 8 dp. Questa modifica riguarda sia le finestre di dialogo personalizzate sia i popup di Material e dell'interfaccia utente. Questa modifica viene apportata per mitigare un bug di accessibilità nelle versioni di Android precedenti alla S e per garantire che i servizi di accessibilità all'interno di queste finestre possano interagire con i contenuti all'interno della finestra di dialogo o del popup.

Questa modifica ti interesserà solo se stai creando un'implementazione personalizzata di finestre di dialogo o popup 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, valuta la possibilità di creare un tuo dialogo o popup con il livello di elevazione desiderato. Questa operazione non è consigliata, in quanto l'accessibilità potrebbe essere compromessa e spetta allo sviluppatore garantire che la parte inferiore della finestra di dialogo o del popup sia interattiva e leggibile dai servizi di accessibilità.

Modifiche alle API

  • Risolto un problema per cui painterResource non veniva aggiornato in seguito alle modifiche alla configurazione (I58e73, b/228862715)
  • rememberTextMeasurer non accetta più i parametri FontFamily.Resolver, Density o LayoutDirection. Utilizza il costruttore TextMeasurer per fornire valori personalizzati per questi parametri. (Ia1da3)
  • È stata aggiunta la proprietà DialogProperties.decorFitsSystemWindows per consentire alle finestre di dialogo di supportare WindowInsets. (I57742, b/229378542)
  • I costruttori di 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, senza alcun effetto. (I6c309)
  • FontVariation.Setting è un'interfaccia sigillata per consentire future API di bloccaggio. (I11021, b/143703328)
  • Aggiungi CompositionGroup.findParameters a SlotTree.kt. In questo modo, gli strumenti possono recuperare i parametri per un CompositionGroup 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 ritirata. La versione 1.3.0-alpha03 contiene questi commit.

Modifiche alle API

  • LayoutCoordinates.findRootCoordinates() è ora pubblico (I7fa37, b/204723384)
  • È stata aggiunta un'API sperimentale per ottenere LayoutCoordinates in PlacementScope. In questo modo, gli sviluppatori sanno dove si trova il layout corrente per posizionare gli elementi secondari rispetto alla sua posizione. (I5482b, b/238632578)
  • È stato aggiunto LayoutCoordinates.transformFrom per ottenere la trasformazione della matrice da un LayoutCoordinates all'altro. (Ic5ab1, b/238632578)
  • SemanticsModifier.id è stato ritirato e l'ID semantica è stato spostato in LayoutInfo.semanticsId. (Iac808, b/203559524)
  • I caratteri delle risorse ora supportano l'impostazione delle varianti dei caratteri (API 26+). (I900dd, b/143703328)
  • Supporto dei caratteri variabili in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • I costruttori di caratteri ora accettano un elenco di FontVariation.Setting per configurare i caratteri variabili sui dispositivi O+. (I11a9d, b/143703328)
  • Aggiungi l'API FontVariation per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328)
  • Il costruttore LineHeightStyle.Alignment è ora pubblico (sperimentale) (I4bbbe, b/235876330)
  • Il paragrafo ora è expect|actual e definito per Android e computer. (Id387e, b/239962983)
  • L'interfaccia Paragrafo è ora l'interfaccia Paragrafo sigillata. Non esiste un caso d'uso per la sottoclasse del paragrafo e ti consigliamo di contattarci se questa modifica ti riguarda. (If5247, b/239962983)
  • Annotazione sperimentale rimossa da PlatformTextStyle e LineHeightStyle. (I64bef)
  • Depreca TextInputService.show|hideSoftwareKeyboard. Utilizza invece SoftwareKeyboardController nel codice dell'app e TextInputSession nel codice di gestione IME. (I14e4c, b/183448615)
  • Aggiungi una nuova API per i tipi di animazione esistenti (I26179)

Correzioni di bug

  • È stato aggiunto @RequiresPermission alle API che richiedono la concessione dell'autorizzazione POST_NOTIFICATIONS su SDK 33 e versioni successive. (Ie542e, b/238790278)

Versione 1.3.0-alpha02

27 luglio 2022

androidx.compose.ui:ui-*:1.3.0-alpha02 viene ritirata. La versione 1.3.0-alpha02 contiene questi commit.

Modifiche alle API

  • È stata aggiunta una nuova proprietà PointerInputChange#pressure per recuperare la pressione. (I45a5e, b/205164819)
  • È stato aggiunto rememberTextMeasurer per creare e ricordare facilmente le istanze di TextMeasurer nella composizione. (I8d66e)
  • Rect, RoundRect e MutableRect ora supportano la sintassi in di Kotlin per chiamare la funzione contains. (Ie42b0, b/238642990)
  • Rimuovi le funzioni non necessarie da KeyInjectionScope, in quanto possono essere implementate facilmente con parti più semplici dell'API. Le funzioni rimosse includono pressKeys, keysDown e keysUp. (I81d77)
  • È stato eseguito il refactoring dei nomi di costanti e parametri in KeyInjectionScope per includere il suffisso "Millis" quando le unità di misura di queste costanti e parametri sono i millisecondi. (Iabef5)
  • È stato aggiunto il metodo toStringForLog() a EditCommand per facilitare la risoluzione dei problemi di modifica del testo. (I53354, b/228862731)
  • Aggiunta della funzione di estensione drawText su DrawScope per fornire un modo per disegnare testo con più stili su composable e modificatori che operano su un DrawScope come Canvas e drawBehind. (I16a62, b/190787898)
  • È stata introdotta una nuova API sperimentale chiamata TextMeasurer che consente il calcolo arbitrario del layout del testo, creando risultati identici a BasicText, indipendentemente dal runtime di Compose. (I17101)
  • Aggiungi mapTree a SlotTree.kt. Ciò consente agli strumenti di esaminare SlotTree senza prima creare una copia in memoria come fa asTree. Per Layout Inspector, questo comporta un miglioramento delle prestazioni di circa un fattore 10. (I5e113)
  • È stata modificata l'anteprima di Compose in modo che venga memorizzata nei file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni MultiPreview dalle librerie. (I85699, b/233511976)

Correzioni di bug

  • Quando aggiungiamo eventi InputEventChange al tracker Velocity, ora considereremo le differenze anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente in tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803).
  • Correzione di 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 ritirata. La versione 1.3.0-alpha01 contiene questi commit.

Modifiche alle API

  • Nuovo LookaheadLayout che supporta una passata di prelettura prima della misurazione/layout effettivo. Ciò consente un pre-calcolo del layout quando cambia, consentendo al layout/misura post-lookahead di utilizzare le dimensioni/la posizione precalcolate per animare le dimensioni e le posizioni verso la destinazione. SubcomposeLayouts non sono ancora supportati, ma lo saranno in una prossima release. (I477f5)
  • Aggiungi il parametro alfa facoltativo al tipo di pennello di TextStyle e SpanStyle per modificare l'opacità dell'intero Text. (Ic2fac, b/234117635)
  • È stato introdotto il tipo di annotazione UrlAnnotation e i metodi associati per supportare i link TalkBack nei AnnotatedString. (I1c754, b/231495122)
  • Spostamento della funzionalità di utilità nel runtime (I4f729)

Correzioni di bug

Contributo esterno

  • È stata aggiunta una nuova API WindowInfo.keyboardModifiers per osservarne lo stato all'interno di funzioni componibili o tramite snapshotFlow (Icdb8a)

Versione 1.2

Versione 1.2.1

10 agosto 2022

androidx.compose.ui:ui-*:1.2.1 viene ritirata. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • È stato corretto un errore di puntatore nullo nello strumento di controllo (b/237987764)
  • È stata corretta l'eccezione di cast della classe durante il ricordo nell'ispettore (b/235526153)

Versione 1.2.0

27 luglio 2022

androidx.compose.ui:ui-*:1.2.0 viene ritirata. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • Miglioramenti dello spostamento del focus:

    • Lo scorrimento basato sulla messa a fuoco degli elenchi pigri ora funziona utilizzando la nuova API principale BeyondBoundsLayout.
    • Nuove API di personalizzazione del comportamento in FocusOrder e FocusProperties
    • Comportamento migliorato con la tastiera fisica o il telecomando della TV
  • Nuove API per:

    • Inserti per finestre
    • Primitive di base per animazioni basate su gesti, infinite e di layout
    • Funzionalità di GraphicsLayer, tra cui RenderEffect
  • Numerose correzioni di bug e miglioramenti delle prestazioni

Versione 1.2.0-rc03

29 giugno 2022

androidx.compose.ui:ui-*:1.2.0-rc03 viene ritirata. 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 ritirata. 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 ritirata. La versione 1.2.0-rc01 contiene questi commit.

Modifiche alle API

  • Le interfacce nelle librerie Compose ora sono create utilizzando i metodi di interfaccia predefiniti di jdk8 (I5bcf1)
  • Sono state aggiunte funzioni di ordine superiore a KeyInjectionScope per l'inserimento di pressioni di tasti mentre altri tasti sono tenuti premuti o attivati/disattivati. Queste funzioni includono withKeysDown, withKeysToggled e così via. Sono state aggiunte anche proprietà per verificare se un determinato tasto meta è premuto, ad esempio isCtrlDown per verificare se uno dei tasti Control è premuto. Consulta KeyInjectionScope per la documentazione relativa a ogni funzione. (I9f6cd, b/229831515)
  • È stato introdotto un OverscrollEffect sperimentale per consentire effetti di overscroll personalizzati, insieme agli overload Modifier.scrollable che lo accettano.
  • LocalOverScrollConfiguration sperimentale è stato spostato da foundation.gesture al pacchetto di base e rinominato in LocalOverscrollConfiguration (If19fb, b/204650733)
  • Rinomina runComposeUiTestWithoutActivity {} in runEmptyComposeUiTest {}, in modo che sia in linea con createEmptyComposeRule() (I6fed7)

Versione 1.2.0-beta03

1 giugno 2022

androidx.compose.ui:ui-*:1.2.0-beta03 viene ritirata. La versione 1.2.0-beta03 contiene questi commit.

Modifiche alle API

  • Sono stati aggiunti pressKeyTimes, isCapsLockOn e amici a KeyInjectionScope. Inoltre, l'API ora supporta pattern di inserimento combinati di mouse e tastiera, ad esempio fare clic su un pulsante del mouse tenendo premuto un tasto meta. (I4c8da, b/229831515)
  • Aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Utilizza performKeyInput per inviare gli eventi chiave oppure inviali tramite la proprietà key di MultiModalInjectionScope durante un gesto di input multimodale con performMultiModalInput. Consulta KeyInjectionScope 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.
  • Migliorare i messaggi di errore rilanciati quando Google Fonts non viene caricato in Compose. (I0416c)

Correzioni di bug

  • Quando aggiungiamo eventi InputEventChange a Velocity Tracker, ora prendiamo in considerazione i delta anziché le posizioni. In questo modo, la velocità viene calcolata correttamente in tutti i casi, anche se l'elemento target si sposta (I51ec3, b/216582726, b/223440806, b/227709803).
  • L'impostazione Show Layout Bounds verrà ora applicata ai composable immediatamente dopo l'attivazione 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 causava arresti anomali se FontFamily.Resolver era stato sovrascritto. (I4609d)
  • Se premi il tasto di eliminazione in avanti quando il cursore si trova alla fine di un campo di testo, non si verifica più un arresto anomalo.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand ora richiedono che gli argomenti del costruttore non siano negativi. (Ica8e6, b/199919707)

Versione 1.2.0-beta02

18 maggio 2022

androidx.compose.ui:ui-*:1.2.0-beta02 viene ritirata. La versione 1.2.0-beta02 contiene questi commit.

Modifiche alle API

  • Riutilizzo della funzionalità in altri tipi di anteprima (I19f39)

Correzioni di bug

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer è stato rinominato DisposeOnDetachedFromWindowOrReleasedFromPool per riflettere meglio che quando si verificano 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 ritirata. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • Questa è la prima release beta della versione 1.2.

Modifiche alle API

  • È stato aggiunto BeyondBoundsInterval sperimentale che può essere utilizzato dalle implementazioni personalizzate di LazyList quando dispongono gli elementi oltre i limiti visibili (Ifabfb, b/184670295).
  • Le versioni con chiave di Modifier.composed sono ora API stabili (Ie65e4, b/229988420)
  • È stata semplificata l'API rememberNestedScrollConnection per utilizzare le variabili locali di composizione per acquisire le informazioni sulla visualizzazione corrente (I67ca7)
  • L'annotazione @ComposableTarget e le annotazioni contrassegnate da @ComposableTargetMarker ora possono essere utilizzate a livello di file utilizzando il prefisso @file. L'utilizzo di un'annotazione di destinazione nell'ambito del file fa sì che il compilatore presupponga che tutte le funzioni componibili nel file siano destinate a essere destinate all'applier associato. Ad esempio, l'utilizzo di @file:UiComposable dichiara che tutte le funzioni @Composable hanno come target l'applicazione dell'interfaccia utente di Compose. Una funzione che deve avere come target un altro applicatore deve fornire esplicitamente l'annotazione del marcatore di destinazione per l'applicatore desiderato. (I40804)
  • È stata introdotta una nuova API di test sperimentale, indipendente dalla piattaforma: un interface ComposeUiTest e un fun runComposeUiTest(block: ComposeUiTest.() -> Unit), che possono essere utilizzati per eseguire test dell'interfaccia utente di Compose senza la necessità di un TestRule. Per eseguire un test senza un ComposeTestRule, trasmetti il test come lambda a runComposeUiTest e utilizza i metodi e i membri nell'ambito del destinatario ComposeUiTest, che sono gli stessi di ComposeContentTestRule.

    Vengono aggiunti interface AndroidComposeUiTest e fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) specifici per Android per fornire l'accesso all'attività sottostante, in modo simile a AndroidComposeTestRule. Per un controllo ancora maggiore, puoi creare un class AndroidComposeUiTestEnvironment.

    L'implementazione per computer è class DesktopComposeUiTest, ma al momento non vengono offerte funzioni di esecuzione specifiche per computer.

    La migrazione di un test da ComposeTestRule a ComposeUiTest può essere eseguita in questo modo (esempio per Android). Da:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    Segui le istruzioni per eseguire le operazioni indicate:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Per ora, ComposeContentTestRule e ComposeTestRule non derivano da ComposeUiTest, il che significa che le funzioni di estensione su ComposeUiTest non possono ancora essere chiamate nell'interfaccia TestRule. Quando ComposeUiTest diventerà un'API stabile, ComposeContentTestRule e ComposeTestRule verranno modificati per estendersi da ComposeUiTest. (Ib4e90)

  • LineHeightBehavior è stato rinominato in LineHeightStyle

  • LineVerticalAlignment è stato rinominato in LineHeightStyle.Alignment

  • Il nome di LineHeightTrim è stato cambiato in LineHeightStyle.Trim

  • I valori del costruttore predefinito di LineHeightStyle sono stati rimossi (I582bf, b/181155707)

  • Sono stati aggiunti Brush a TextStyle e SpanStyle per fornire un modo per disegnare testo con colorazione sfumata. (I53869, b/187839528)

  • Gli attributi trimFirstLineTop e trimLastLineBottom di LineHeightBehavior sono stati modificati in un unico enum: LineHeightTrim. LineHeightTrim hanno valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)

  • Aggiunta di LineHeightBehavior a TextStyle e ParagraphStyle. LineHeightBehavior controlla se l'altezza della linea viene applicata alla parte superiore della prima riga e alla parte inferiore dell'ultima riga. Definisce anche l'allineamento della linea nello spazio fornito da TextStyle(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 e trimLastLineBottom funzionano correttamente solo quando includeFontPadding è false. (I97332, b/181155707)

  • Le funzioni PlatformParagraphStyle.lerp e PlatformSpanStyle.lerp sono state modificate per essere funzioni di primo livello (I9a268)

Correzioni di bug

  • La documentazione PointerInputChange::copy ora indica correttamente che si tratta di una copia superficiale. (I182f5)
  • Supporta i puntini di sospensione quando l'altezza è limitata e non contiene tutte le righe di testo (Ie528c, b/168720622)
  • Attivato per impostazione predefinita includeFontPadding. È possibile disattivare includeFontPadding utilizzando l'attributo TextStyle.platformTextStyle. Nel prossimo futuro cambieremo il comportamento predefinito, ma fino ad allora questo ci consente di integrare meglio i miglioramenti dell'altezza della linea (aosp/2058653) e risolvere i problemi di ritaglio TextField. (I01423, b/171394808)

Contributo esterno

  • MouseInjectionScope.scroll(delta = someDelta) ora è invertito su Android se scorriamo verticalmente (se someDelta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)

Versione 1.2.0-alpha08

20 aprile 2022

androidx.compose.ui:ui-*:1.2.0-alpha08 viene ritirata. La versione 1.2.0-alpha08 contiene questi commit.

Modifiche alle API

  • Le funzioni pluralStringResource sono state contrassegnate come sperimentali per consentire l'evoluzione a supporto di una migliore internazionalizzazione in futuro. (If24e4)
  • Paragraph e MultiParagraph ora accettano il parametro Constraints. Il passaggio di Constraints.maxHeight è un'operazione no-op al momento, ma consentirà di eseguire alcuni calcoli in futuro, ad esempio l'ellissi in base all'altezza. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi. (Icd314)
  • PointerIcon ora è un'interfaccia @Stable (I9dafe)
  • Il consumo parziale (in basso O posizione) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per utilizzare completamente la modifica. Puoi utilizzare isConsumed per determinare se qualcun altro ha già utilizzato la modifica.
  • PointerInputChange::copy() ora crea sempre una copia superficiale. Ciò significa che le copie di PointerInputChange verranno consumate una volta che una delle copie sarà stata consumata. Se vuoi creare un PointerInputChange non associato, utilizza il costruttore. (Ie6be4, b/225669674)
  • Attiva l'interoperabilità dello scorrimento nidificato tra Compose e View nella direzione Compose > View. Ciò significa che un elemento padre di composizione potrà ricevere i delta di scorrimento nidificati da una visualizzazione a 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 sulle API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 sulle API 21-28. (I380fe, b/156048036, b/226441992)
  • Gli istruttori Paragraph e Multiparagraph 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 ritirata. La versione 1.2.0-alpha07 contiene questi commit.

Modifiche alle API

  • È stata aggiunta la nuova funzione Snapshot.withoutReadObservation { ... }. Consente agli utenti di eseguire la lambda passata senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potrebbe essere utile nei casi d'uso in cui vuoi usufruire di letture/scritture thread-safe basate su snapshot, ma vuoi poter leggere il valore senza causare ricomposizioni o misurazioni non necessarie. (I9f365, b/214054486)
  • La proprietà di estensione consumeWindowInsets di ComposeView consente agli sviluppatori di disattivare l'utilizzo di WindowInsets di Android. In questo modo, i diversi ComposeViews nella gerarchia possono applicare WindowInsets senza interferire tra loro. (I0ef08, b/220943142)
  • È stato aggiunto KeyboardType.Decimal come alternativa a Keyboard.Number per includere in modo specifico il separatore decimale nell'IME. (Iec4c8, b/209835363)
  • PointerEventType.Scroll e PointerEvent.scrollDelta sono ora API stabili (I574c5, b/225669674)
  • Attiva l'interoperabilità dello scorrimento nidificato tra View e Compose per le classi View che cooperano. Ciò significa che ora Compose è in grado di inviare delta di scorrimento a un elemento View padre (cooperativo). (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 da Font(String, AssetManager, ...). Questa è un'API sperimentale. (I1c7a4)
  • Aggiungi il nuovo descrittore di caratteri Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati nel sistema durante le catene di fallback dei caratteri. (I30468, b/219754572)
  • Aggiunta una configurazione di compatibilità temporanea per includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding può essere modificato tramite TextStyle(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 con il debug. (I64e31)
  • Aggiungi il costruttore GoogleFont.Provider per l'utilizzo con @ArrayRes (Ic5ee1, b/225984280)
  • Compose GoogleFont ora si chiama Font(GoogleFont), l'API rimane stabile. (I125f2)

Correzioni di bug

  • È stato aggiunto il controllo lint a material/Scaffold per garantire l'utilizzo del padding interno (Ifb111)

Versione 1.2.0-alpha06

23 marzo 2022

androidx.compose.ui:ui-*:1.2.0-alpha06 viene ritirata. La versione 1.2.0-alpha06 contiene questi commit.

Modifiche alle API

  • Aggiunta dell'azione semantica RequestFocus per richiedere la messa a fuoco del target selezionabile. (I17b71)
  • È stata aggiornata l'analisi dei drawables vettoriali per supportare il mirroring automatico e invertire i contenuti di un VectorPainter se la direzione del layout corrente è da destra a sinistra. (I79cd9, b/185760237)
  • Aggiornamento dei colori dell'ombra/dell'ambiente in modo che siano parametri finali di Modifier.graphicsLayer per la compatibilità dell'API (I3f864, b/160665122)

  • Sono state aggiunte implementazioni predefinite al colore dell'ombra/ambientale su GraphicsLayerScope per garantire modifiche API non distruttive

  • Aggiunta dell'ora dell'evento agli eventi RSB (Ief8ae)

  • FocusOrder è stato unito a FocusProperties e focusProperties() ora ha tutte le funzionalità di focusOrder(). FocusOrder e focusOrder() sono stati ritirati. focusOrder() che accetta un focusRequester deve essere sostituito da un modificatore focusRequester() in combinazione con focusProperties(). In questo modo, i modificatori possono avere una separazione più netta delle responsabilità. (I601b7)

  • L'upgrade sia di RecyclerView che di Compose ora comporta prestazioni di scorrimento molto migliori per RecyclerView con visualizzazioni Compose come elementi secondari.

  • Aggiungi ViewCompositionStrategy.Default come mezzo per recuperare la strategia predefinita integrata

  • Aggiungi 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 passo per l'aggiunta della funzionalità di anteprima multipla. Queste annotazioni potrebbero essere utilizzate per annotare metodi componibili o altre classi di annotazioni, che potrebbero poi essere considerate annotate indirettamente con la @Preview specificata. (I12eff)

  • Dispositivi di riferimento aggiunti all'elenco dei dispositivi per @Preview (I071c9)

Correzioni di bug

  • API di grafica vettoriale aggiornate per utilizzare l'annotazione componibile corretta @VectorComposable anziché @UiComposable (I942bc)
  • Rimuovi crossinline da AnnotatedString.Builder.withStyle (If84d5)

Contributo esterno

  • compose-ui: aggiungi le proprietà ambientShadowColor e spotShadowColor a GraphicsLayerScope (I1ba1a, b/160665122)
  • Ora le risorse plurali sono 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 ritirata. La versione 1.2.0-alpha05 contiene questi commit.

Modifiche alle API

  • TextToolbar ora accetta argomenti lambda anziché ActionCallback. (Ib2eb9, b/197950089)
  • Aggiornamento della nullabilità in core e appcompat in modo che corrisponda a Tiramisu DP2 (I0cbb7)
  • L'interfaccia misurata ora espone la proprietà parentData (I3313f)
  • Modifier.onPlaced e l'interfaccia OnPlacedModifier sono ora stabili. (Ib5482)
  • Evviva! L'animazione di composizione ora supporta l'impostazione "Scala durata animatore" delle 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 genererà un IllegalStateException se provi a impostare contenuti quando sono già presenti. (I888a5, b/199631334)
  • Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • Migliora gli esempi di scorrimento della barra di scorrimento. (I6a596)

Contributo esterno

  • Aggiornamento per l'utilizzo delle coroutine Kotlinx 1.6.0 (I3366d)

Versione 1.2.0-alpha04

23 febbraio 2022

androidx.compose.ui:ui-*:1.2.0-alpha04 viene ritirata. La versione 1.2.0-alpha04 contiene questi commit.

Modifiche alle API

  • Sono stati aggiunti ComposableTarget, ComposableTargetMarker e ComposableOpenTarget che consentono la generazione di report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per cui non è stata progettata.

    Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore Compose, quindi l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un'applicazione personalizzata, funzioni componibili astratte (come metodi di interfaccia), campi o variabili globali che sono espressioni lambda componibili (le variabili e i parametri locali vengono dedotti), o quando si utilizza ComposeNode o una funzione componibile correlata.

    Per gli applicatori personalizzati, le funzioni componibili che chiamano ComposeNode o ReusableComposeNode devono aggiungere un'annotazione ComposableTarget per la funzione e per tutti i tipi di parametri lambda componibili. Tuttavia, ti consigliamo di creare un'annotazione contrassegnata con ComposableTargetMarker e di utilizzare l'annotazione contrassegnata anziché ComposableTarget direttamente. Un'annotazione componibile contrassegnata con ComposableTargetMarker equivale a un ComposbleTarget con il nome completo della classe dell'attributo come parametro di applicazione. Per un esempio di utilizzo di ComposableTargetMarker, vedi anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) ora accetta loadingStrategy sull'API stabile. (Ief3d2)

  • FontLoadingStrategy è ora un'API stabile. (I1ee35, b/174162090)

  • Supporto del caricamento asincrono dei caratteri in Text (I77057, b/214587005)

  • Aggiungi l'API bridge per convertire Font.ResourceLoader personalizzati in FontFamily.Resolver. (Ia0060)

Correzioni di bug

  • I FontFamily.Resolver forniti vengono passati alle composizioni secondarie come Popup.
  • I Font.ResourceLoader forniti vengono passati alle composizioni secondarie come Popup. (I48fa5)

Versione 1.2.0-alpha03

9 febbraio 2022

androidx.compose.ui:ui-*:1.2.0-alpha03 viene ritirata. La versione 1.2.0-alpha03 contiene questi commit.

Modifiche alle API

  • I metodi notifyFocusedRect in TextInputSession e TextInputService sono ora deprecati e non verranno chiamati. Utilizza BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • È stato introdotto il metodo destroyDisplayListData nella classe stub RenderNode (I1e659, b/216660268)
  • È stata aggiunta una nuova API che consente di misurare in anticipo i figli di SubcomposeLayout che hai precompilato. (I857ea)
  • È stata aggiunta movableContentOf, che converte una funzione lambda componibile in una funzione lambda che sposta il suo stato e i nodi corrispondenti in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata alla lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta una nuova chiamata, lo stato viene rimosso definitivamente e gli osservatori vengono avvisati.

    Se una lambda movableContentOf viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, man mano che le chiamate escono dalla composizione e ne entrano di nuove, lo stato viene spostato dalle prime chiamate in uscita a quelle in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi in modo permanente. (Ib4850)

  • FontFamilyResolver è ora disponibile tramite LocalFontFamilyResolver.current

  • Sono stati aggiunti createFontFamilyResolver(context) e createFontFamilyResolver(context, coroutineScope) per creare nuovi resolver FontFamily al di fuori dell'utilizzo di Compose.

  • Paragrafo e MultiParagrafo ora accettano FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver ora contiene il resolver utilizzato per questo layout, deprecato TextLayoutResult.layoutInput.resourceLoader in quanto non viene più utilizzato. (Id5a45, b/174162090)

  • Supporto per il caricamento asincrono e facoltativo dei caratteri, con comportamento di fallback. Questo percorso viene utilizzato da Text e TextField ed esposto tramite FontFamilyResolver

  • Supporto per il precaricamento dei caratteri tramite FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext consente di impostare il contesto globale delle coroutine utilizzato per caricare i caratteri asincroni. (I87fe8, b/174162090)

  • È stata aggiunta AndroidFont, una nuova API di basso livello per fornire nuovi tipi di descrittori di risorse dei caratteri su Android. Ad esempio, caricare i caratteri da un backend specifico dell'app, individuare facoltativamente i caratteri preinstallati sul dispositivo o caricare un carattere da una risorsa non fornita dalle attuali fabbriche di caratteri.

  • API Font.ResourceLoaded estesa per supportare il caricamento dei caratteri facoltativo e asincrono. Non è consigliabile che gli sviluppatori di applicazioni utilizzino questa API direttamente. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont.

  • La funzione di estensione Font.AndroidResourceLoader consente la costruzione di un Font.ResourceLoader al di fuori della composizione.

  • È stato aggiunto il parametro loadingStrategy ai caratteri basati su risorse per consentire il caricamento asincrono quando i riferimenti ai caratteri delle risorse fanno riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)

  • Il costruttore Typeface(FontFamily) è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Utilizza invece FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che potrebbe richiedere fino a 10 secondi per i caratteri scaricabili. Utilizza invece FontFamilyResolver.preload (If8e7c, b/174162090)

  • Il costruttore SubcomposeLayoutState che accetta maxSlotsToRetainForReuse è ora deprecato. Esiste invece un nuovo costruttore che accetta SubcomposeSlotReusePolicy, 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 colore Oklab è ora un'API pubblica. (I08fb6, b/180731008)

  • AndroidComposeTestRule.AndroidComposeStatement deprecato, che non doveva far parte dell'API pubblica e non ti è mai stato utile. (Ibc46b)

  • Ridenominazione della classe kt generata internamente (Ia0b9e, b/174162090)

  • Rimozione di FontLoadingStrategy.values (I42a9d, b/174162090)

  • Il caricatore di caratteri globale ora si chiama FontFamilyResolver. (I4f773, b/174162090)

  • Utilizza il nuovo sistema di caricamento dei caratteri per il computer. (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve restituisce State<Any> (I4406c, b/174162090)

Correzioni di bug

  • I campi di testo ora vengono mantenuti sopra la tastiera quando sono selezionati e la tastiera viene mostrata, quando la modalità di inserimento soft è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Il computer utilizza la composizione locale per FontFamily.Resolver
  • FontLoader per computer è deprecato
  • Nuova fabbrica createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di input della tastiera virtuale non sfarfalla più quando si sposta lo stato attivo tra i campi di testo. (I1bf50, b/187746439)

Versione 1.2.0-alpha02

26 gennaio 2022

androidx.compose.ui:ui-*:1.2.0-alpha02 viene ritirata. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • Aggiunta di Modifier.onRotaryScrollEvent() e Modifier.onPreRotaryScrollEvent() per i dispositivi indossabili con un pulsante laterale rotante (I18bf5, b/210748686)
  • Aggiungi l'estensione sperimentale View.createLifecycleAwareRecomposer (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 ritirata. La versione 1.2.0-alpha01 contiene questi commit.

Modifiche alle API

  • FontFamily.canLoadSynchronously deprecato. Questa proprietà non ha alcun significato semantico. (Ica5ef)
  • È stato aggiunto il campo dell'identità a CompositionData per generare ID invarianti in Layout Inspector. (Ic116e)
  • Sono stati aggiunti ID dispositivo 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 ritirata. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • Correzione NullPointerException alle ore androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • RTL corretto in LazyVerticalGrid (aosp/1931080, b/207510535)

Versione 1.1.0

9 febbraio 2022

androidx.compose.ui:ui-*:1.1.0 viene ritirata. La versione 1.1.0 contiene questi commit.

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto di overscroll di Android 12
  • Miglioramenti al dimensionamento del touch target
    • Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del target di tocco. Ad esempio, il touch target del pulsante si espanderà fino a raggiungere una dimensione minima di 48 x 48 dp, anche se imposti dimensioni più piccole per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, fornendo un comportamento coerente se combini Views e Compose. Questa modifica garantisce inoltre che, quando crei la tua UI utilizzando i componenti di Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
  • Supporto stabile per la barra di spostamento
  • Viene eseguito l'upgrade di una serie di API sperimentali precedenti alla versione stabile
  • Supporto per le versioni più recenti di Kotlin

Versione 1.1.0-rc03

26 gennaio 2022

androidx.compose.ui:ui-*:1.1.0-rc03 viene ritirata. La versione 1.1.0-rc03 contiene questi commit.

Correzioni di bug

  • Aggiornato per supportare Compose Material 1.1.0-rc03

Versione 1.1.0-rc01

15 dicembre 2021

androidx.compose.ui:ui-*:1.1.0-rc01 viene ritirata. La versione 1.1.0-rc01 contiene questi commit.

Correzioni di bug

  • Correzione di un bug che causava la scomparsa delle azioni di scorrimento per l'accessibilità (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() ora funzionerà anche se HardwareRenderer.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 ritirata. La versione 1.1.0-beta04 contiene questi commit.

Nuove funzionalità

  • Aggiornato per essere compatibile con Kotlin 1.6.0

Modifiche alle API

  • È stata pulita la nullabilità in androidx.core.view (I7078a, b/204917439)
  • Sono state aggiunte API sperimentali che consentono 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 UI. (Ia14eb, b/198214718)
  • Aggiungi sovraccarichi sperimentali di Modifier.composed che accettano chiavi da confrontare per l'uguaglianza e per la qualificazione per l'ottimizzazione del salto. (Ice799, b/205851704)
  • ComposeNotIdleException ora si estende da Exception anziché direttamente da Throwable. Tieni presente che ciò significa che le clausole catch che rilevavano Exception ora potrebbero rilevare ComposeNotIdleException, cosa che non facevano in precedenza. (I9c217)

Correzioni di bug

  • È stato risolto il problema a causa del quale i punti di manipolazione del testo non si spostavano quando cambiava la visibilità dell'IME. (I25f2e)

Versione 1.1.0-beta03

17 novembre 2021

androidx.compose.ui:ui-*:1.1.0-beta03 viene ritirata. La versione 1.1.0-beta03 contiene questi commit.

Modifiche alle API

  • È stato aggiunto il nuovo modificatore Modifier.onPlaced per consentire l'osservazione della modifica del posizionamento. Pertanto, è possibile apportare ulteriori modifiche all'offset del modificatore figlio in base alla modifica del posizionamento osservata. (I558fd)
  • Rimossi InjectionScope.flush() e InjectionScope.dispose(). Lo svuotamento di tutti gli eventi e l'eliminazione dell'ambito ora avvengono alla fine del metodo perform*Input() chiamato come prima. (I2bed8)
  • Rimossi MultiModalInjectionScope.Touch e MultiModalInjectionScope.Mouse. Per inserire eventi di tocco e mouse per i gesti multimodali, ora puoi utilizzare MultiModalInjectionScope.touch() e MultiModalInjectionScope.mouse(), entrambi accettano una lambda che ha l'ambito del ricevitore di quella modalità. (Idde18)

Correzioni di bug

  • Il valore predefinito di durationMillis in TouchInjectionScope.swipeWithVelocity ora viene calcolato in modo che lo scorrimento sia fattibile. (I19deb)

Versione 1.1.0-beta02

3 novembre 2021

androidx.compose.ui:ui-*:1.1.0-beta02 viene ritirata. La versione 1.1.0-beta02 contiene questi commit.

Modifiche alle API

  • È stata aggiunta l'API sperimentale BringIntoView che consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare un elemento (Ib918d, b/195353459).
  • Nuove API di animazione per supportare gli strumenti. In particolare, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in una transizione. (I4116e)

Contributo esterno

  • Aggiunto Modifier.pointerHoverIcon (I95f01)

Versione 1.1.0-beta01

27 ottobre 2021

androidx.compose.ui:ui-*:1.1.0-beta01 viene ritirata. La versione 1.1.0-beta01 contiene questi commit.

Modifiche alle 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. In particolare, consentono agli strumenti di ispezionare le animazioni e le relative configurazioni in una transizione. (I4116e)

Versione 1.1.0-alpha06

13 ottobre 2021

androidx.compose.ui:ui-*:1.1.0-alpha06 viene ritirata. La versione 1.1.0-alpha06 contiene questi commit.

Modifiche alle API

  • Rimuovi ExperimentalComposeUiApi da ViewRootForInspector e LayoutInfo.ownerViewId (I5c2e3)
  • È stato aggiunto un sovraccarico senza figli per Layout, con una maggiore efficienza (Ib0d9a)
  • Rimozione di InternalCompilerApi dai metodi Composer che devono essere chiamati tra moduli diversi (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce il SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db)
  • È stato aggiunto CompositionLocal a LocalInputModeManager per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786)
  • È stato aggiunto viewConfiguration: ViewConfiguration a LayoutInfo per consentire ai consumatori di ottenere il valore corretto per elementi come il timeout della pressione prolungata. (I76ca6)
    • Aggiunta di viewConfiguration: ViewConfiguration a InjectionScope per consentire ai test di modificare l'inserimento dell'input in base a elementi come il timeout della pressione prolungata o la tolleranza al tocco.
    • È stata modificata la durata predefinita della pressione prolungata e del doppio tocco per l'input da tocco e mouse in modo che si basi sui valori in InjectionScope.viewConfiguration.
  • Implementazione di ExposedDropdownMenu basato 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ù preciso sull'invocazione o meno di onDismissRequest. Ad esempio, può essere utile per impedire la chiusura dell'ancora quando viene toccata.
    • updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo di basso livello sui flag passati dal popup a WindowManager di Android. Il parametro della funzione lambda saranno i flag calcolati dai valori PopupProperties che generano flag WindowManager, ad esempio focusable. Il risultato della 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 ha requisiti di comportamento molto specifici. (I6e9f9)
  • Recomposer.state è stato ritirato e sostituito da Recomposer.currentState per modificare il suo tipo in StateFlow (Ic2ab3, b/197773820)
  • Aggiunta di flush() e dispose() a InjectionScope. Utilizzali quando vuoi svuotare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito, rispettivamente. (Ifb73a)
  • È stato aggiunto performScrollToNode(matcher: SemanticsMatcher) che scorrono un contenitore scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8)
  • InjectionScope ora implementa Density, consentendoti di convertire facilmente tra px e dp in performTouchInput e altri. (I8fe1f)

Correzioni di bug

  • AndroidView ora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla sua visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Correzione di un problema per cui a volte WearOS SwipeToDismissBox non gestisce gli scorrimenti. (I9387e)
  • Il tempo predefinito tra gli eventi di input inseriti è stato modificato da 10 ms a 16 ms. Ciò potrebbe modificare il risultato dei test che eseguono gesti di input, come uno scorrimento specifico. (I829fd)

Versione 1.1.0-alpha05

29 settembre 2021

androidx.compose.ui:ui-*:1.1.0-alpha05 viene ritirata. La versione 1.1.0-alpha05 contiene questi commit.

Modifiche alle API

  • È stato aggiunto il supporto per la comunicazione tra modificatori (Id5467, b/198826874)
  • Sono stati aggiunti puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • Aggiunta di density: Density e layoutDirection: LayoutDirection a LayoutInfo. In questo modo, i consumatori di LayoutInfo possono interpretare correttamente le dimensioni e la posizione esposte in LayoutInfo. (I002f1)
  • È stato aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Utilizza performMouseInput per iniziare a inviare eventi del mouse oppure invia eventi del mouse tramite la proprietà Mouse di MultiModalInjectionScope durante un gesto di input multimodale con performMultiModalInput. Consulta MouseInjectionScope per la documentazione dell'API disponibile. (Iaa4a8, b/190493367)

Correzioni di bug

  • È stato corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lazy che non lazy) rispetto 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 swipe (I40fbe, b/182477143)

Versione 1.1.0-alpha04

15 settembre 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 viene ritirata. La versione 1.1.0-alpha04 contiene questi commit.

Modifiche alle API

  • PointerEvent ora ha un PointerEventType per supportare gli eventi al passaggio del mouse. (I091fa)
  • Consentire ai bambini di accettare l'input del puntatore al di fuori dei limiti dell'input del puntatore del genitore. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • performGesture e GestureScope sono stati ritirati e sostituiti da performTouchInput e TouchInjectionScope. (Ia5f3f, b/190493367)
  • È stato aggiunto touchBoundsInRoot a SemanticsNode che include le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214)
  • Esegui di nuovo l'implementazione di inspectable (I927bc, b/191017532)
  • Modificato il nome del parametro di ispezionabilità in modo che corrisponda a quello composto (I3a482, b/191017532)
  • Sono stati introdotti performTouchInput e TouchInjectionScope in sostituzione di performTouchInput e TouchInjectionScope, aprendo la strada ad altre modalità (come il mouse).

    TouchInjectionScope ha gli stessi metodi di GestureScope, con l'eccezione di movePointerTo e movePointerBy, che sono stati rinominati updatePointerTo e updatePointerBy. Tutti gli altri metodi sono gli stessi.

    Il comportamento di TouchInjectionScope è quasi identico a GestureScope, con due piccoli dettagli:

    1. Quando si invia un evento down mentre i puntatori sono stati spostati senza inviare un evento move (in altre parole, è stato utilizzato updatePointerTo(), ma non move(), e poi viene chiamato down()), l'implementazione precedente avrebbe fatto avanzare l'ora dell'evento e inviato un evento move prima di inviare l'evento down. La nuova implementazione invia comunque l'evento spostamento, ma non fa avanzare l'ora dell'evento in questo scenario specifico.
    2. Quando si invia un evento di sollevamento mentre i puntatori sono stati spostati senza inviare un evento di movimento (come sopra), l'implementazione precedente avanzava l'ora dell'evento e inviava un evento di movimento prima di inviare l'evento di sollevamento. La nuova implementazione non lo fa: le nuove posizioni dei puntatori verranno riflesse solo tramite l'evento di rilascio.

    Infine, TouchInjectionScope introduce un nuovo metodo currentPosition(pointerId: Int) per ottenere la posizione attuale del puntatore specificato. (If1191, b/190493367)

Correzioni di bug

  • Consenti al clip di estendere i limiti del touch target oltre la regione del clip per scopi di touch target minimo. (I43e10, b/171509422)
  • È stato aggiunto il supporto per lo scorrimento eccessivo sui dispositivi Android 12. (Iccf3c, b/171682480)

Versione 1.1.0-alpha03

1° settembre 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 viene ritirata. La versione 1.1.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Aggiornamento di Compose 1.1.0-alpha03 in modo che dipenda da Kotlin 1.5.30. (I74545)

Modifiche alle API

  • Aggiunta di Modifier.inspectable per il wrapping di altri modificatori. (I1909b, b/191017532)
  • È stata aggiunta l'API BlurredEdgeTreatment per semplificare i casi d'uso della sfocatura in combinazioni più comunemente utilizzate di flag di clip e TileMode. 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)
  • Aggiunto il supporto per RenderEffect in Compose for Desktop. È stato introdotto OffsetEffect e il modificatore di sfocatura come modo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia di 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. Può essere utilizzato per sfocare i contenuti di un elemento componibile e degli elementi componibili secondari all'interno di una gerarchia di composizione. (I47c4d, b/166927547)
  • AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • È stata aggiunta la dimensione minima del touch target a ViewConfiguration per l'utilizzo nell'input semantico e del puntatore per garantire l'accessibilità. (Ie861c)
  • Aggiungi il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per RenderEffects basati sulla sfocatura. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction e hasScrollToKeyAction sono ora API stabili (I142ae, b/178483889)
  • È stato aggiunto un metodo di test per ottenere i limiti ritagliati. (I6b28e)

Correzioni di bug

  • È stato rimosso il metodo isBounded da BlurredEdgeTreatment a favore del controllo esplicito se il parametro shape è nullo. (I85d68)

Versione 1.1.0-alpha02

18 agosto 2021

androidx.compose.ui:ui-*:1.1.0-alpha02 viene ritirata. La versione 1.1.0-alpha02 contiene questi commit.

Modifiche alle API

  • PointerEvent ora supporta la lettura dello stato dei pulsanti del mouse e dello stato dei modificatori della tastiera. (I6310c, b/180075467)
  • Le gesture inserite ora utilizzano l'ora di MainTestClock come fonte di riferimento per l'ora. L'ora corrente per gli eventi inseriti in performGesture verrà inizializzata all'ora corrente di MainTestClock. (Ifb364, b/192064452)
  • Aggiunto il costruttore DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Aggiunta della classe DpSize (I7abb1, b/194219828)

Correzioni di bug

  • Aggiornamento dell'analisi XML della grafica vettoriale per supportare ColorStateList come proprietà di tinta del colore principale su VectorDrawable. (I86915, b/195668138)

Versione 1.1.0-alpha01

4 agosto 2021

androidx.compose.ui:ui-*:1.1.0-alpha01 viene ritirata. La versione 1.1.0-alpha01 contiene questi commit.

Modifiche alle API

  • RelocationRequester.bringIntoView ora accetta un rettangolo come parametro, il che ci consente di visualizzare una parte di un componente componibile (Ice2c5, b/194330245)
  • AnimatedImageVector e le API correlate si trovano ora nel nuovo modulo androidx.compose.animation:animation-graphics. (I60873)
  • È stato aggiunto un modificatore sperimentale per gestire le richieste di trasferimento. (I65a97, b/178211874)
  • È stata introdotta l'API BrushPainter per supportare il disegno di un pennello arbitrario all'interno di un pittore, in modo simile a ColorPainter

    Aggiornamento dell'API Brush per includere un parametro di dimensione intrinseca interrogato all'interno di BrushPainter (Ia2752, b/189466433)

  • Aggiornamento del metodo DrawScope#drawImage che utilizza i rettangoli di origine e destinazione per utilizzare un parametro FilterQuality facoltativo. Questa opzione è utile per la pixel art che deve essere pixelata quando viene ingrandita. Aggiornamento di BitmapPainter e del composable Image per utilizzare anche un parametro FilterQuality facoltativo (Ie4fb0, b/180311607)

  • Aggiunto il metodo GestureScope.advanceEventTime per avere un maggiore controllo sulla tempistica degli eventi in un gesto (Ibf3e2)

Correzioni di bug

  • Per supportare meglio il concatenamento dei modificatori di disegno, assicurati che l'implementazione di Modifier.paint chiami drawsContent. In precedenza, Modifier.paint era previsto come nodo foglia nella catena di modificatori, ma in questo modo impedisce di configurarlo su un contenitore componibile (ad es. box) o di aggiungere decorazioni aggiuntive, ad esempio Modifier.paint().border(). Se Modifier.paint chiama drawContent dopo aver disegnato i contenuti del pittore specificato, otteniamo una maggiore coerenza del comportamento con il pattern del modificatore. (Ibb2a7, b/178201337, b/186213275)
  • Le finestre di dialogo ora seguono il comportamento di ridimensionamento della piattaforma. Imposta usePlatformDefaultWidth su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
  • Spostato InfiniteAnimationPolicy in :compose:ui (I5eb09, b/160602714)
  • Lo scorrimento tramite azioni semantiche per elenchi pigri e componenti di scorrimento regolari ora è animato (Id9066, b/190742024)

Versione 1.0

Versione 1.0.5

3 novembre 2021

androidx.compose.ui:ui-*:1.0.5 viene ritirata. 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 ritirata. La versione 1.0.4 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipenda da Kotlin 1.5.31

Versione 1.0.3

29 settembre 2021

androidx.compose.ui:ui-*:1.0.3 viene ritirata. La versione 1.0.3 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipenda da Kotlin 1.5.30

Versione 1.0.2

1° settembre 2021

androidx.compose.ui:ui-*:1.0.2 viene ritirata. La versione 1.0.2 contiene questi commit.

Aggiornato per supportare la release di Compose 1.0.2. Compose 1.0.2 è ancora compatibile con Kotlin 1.5.21.

Versione 1.0.1

4 agosto 2021

androidx.compose.ui:ui-*:1.0.1 viene ritirata. 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 ritirata. La versione 1.0.0 contiene questi commit.

Funzionalità principali della versione 1.0.0

Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.

Problemi noti

  • Se utilizzi Android Studio Bumblebee Canary 4 o AGP 7.1.0-alpha04/7.1.0-alpha05, potresti riscontrare il seguente arresto anomalo:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24 o superiore nel file build.gradle. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP 7.1. (b/194289155)

Versione 1.0.0-rc02

14 luglio 2021

androidx.compose.ui:ui-*:1.0.0-rc02 viene ritirata. La versione 1.0.0-rc02 contiene questi commit.

Correzioni di bug

  • Le finestre di dialogo ora seguono il comportamento di ridimensionamento 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 ritirata. La versione 1.0.0-rc01 contiene questi commit.

Nuove funzionalità

  • Dividi il modulo ui-tooling in ui-tooling e ui-tooling-preview (Iefa28, b/190649014)

Modifiche alle API

  • Rimossi i flag sperimentali FocusManager#moveFocusIn e FocusManager#moveFocusOut ritirati (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas ora supporta un parametro contentDescription per l'accessibilità. (Ib547c)
  • useDefaultMaxWidth in PopupProperties è stato rinominato in usePlatformDefaultWidth. (I05710)
  • Ora le finestre di dialogo possono utilizzare l'intera larghezza dello schermo. (I83929, b/190810877)
  • È stato aggiunto il supporto sperimentale per le rappresentazioni dei colori HSV e HSL. (Id7cf8, b/180731008)

Modifiche al comportamento

  • Compose @Preview ora fornisce un LocalActivityResultRegistryOwner che ti consente di visualizzare l'anteprima dei composable che utilizzano API come rememberLauncherForActivityResult() che dipendono dall'esistenza di questo proprietario. (Ib13d1, b/185693006)
  • Compose @Preview ora fornisce un LocalOnBackPressedDispatcherOwner che ti consente di visualizzare l'anteprima dei composable che utilizzano API come BackHandler che dipendono dall'esistenza di questo proprietario. (Ia1c05, b/185693006)

Correzioni di bug

  • Dispositivo InfiniteAnimationPolicy spostato su androidx.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 ritirata. La versione 1.0.0-beta09 contiene questi commit.

Modifiche alle API

  • Modifica enum Role e LiveRegionMode in classi inline con costruttore privato (Id1890)
  • KeyboardCapitalization viene convertito in una classe inline. (Id5a1c)
  • Modifica HapticFeedbackType in classe inline. (I255ec)
  • Modifier.pointerInteropFilter è @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis e TextDirection sono ora classi in linea. (I212fe)
  • TextOverflow viene modificato in una classe in linea. (I433af)
  • FontStyle è ora una classe inline. (I9e48b)

Correzioni di bug

  • Per ora, le costanti chiave sono @ExperimentalComposeUiApi. Il codice che utilizza l'API può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
  • Ora è possibile eseguire test di composizione su Robolectric. Finora sono state identificate le seguenti limitazioni:
    • Non esiste una bitmap nativa, quindi ImageBitmap() genera un'eccezione NullPointerException.
    • Non è presente alcun disegno, quindi captureToImage() attenderà indefinitamente il passaggio di disegno successivo (ovvero si blocca).
    • Non è stato caricato alcun carattere, quindi 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, il che lo rende di fatto uguale a ComposeTestRule.mainClock.advanceTimeUntil {} In futuro è previsto che vengano identificate ulteriori limitazioni. (I284fa)

Regole del profilo aggiunte

Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Che cosa sono le regole del profilo?

  • Le regole del profilo per una raccolta sono specificate in un file di testo baseline-prof.txt che si trova nella directory src/main o in una directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile, utilizzato quando si utilizza adb shell profman --dump-classes-and-methods .... Queste regole assumono una delle due forme per scegliere come target metodi o classi.

  • Una regola del metodo avrà il seguente pattern:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Una regola della classe avrà il seguente pattern:

    <CLASS_DESCRIPTOR>
    
  • Qui <FLAGS> è uno o più dei caratteri H, S e P per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".

  • <CLASS_DESCRIPTOR> è il descrittore della classe a cui appartiene il metodo di destinazione. Ad esempio, la classe androidx.compose.runtime.SlotTable avrebbe un descrittore Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> è la firma del metodo e include il nome, i tipi di parametri e i tipi restituiti del metodo. Ad esempio, il metodo fun isPlaced(): Boolean su LayoutNode ha la firma isPlaced()Z.

  • Questi pattern possono contenere caratteri jolly (**, * e ?) per consentire a una singola regola di includere più metodi o classi.

A cosa servono le regole?

  • Un metodo con il flag H indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.

  • Un metodo con il flag S indica che viene chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.

  • Un metodo con il flag P indica che viene chiamato dopo l'avvio.

  • Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.

Come funziona?

  • Le librerie possono definire queste regole, che verranno incluse nei file AAR. Quando viene creata un'app che include questi artefatti, queste regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app viene installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione per migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che questa operazione non avrà alcun effetto sulle applicazioni sottoposte a debug.

Versione 1.0.0-beta08

2 giugno 2021

androidx.compose.ui:ui-*:1.0.0-beta08 viene ritirata. La versione 1.0.0-beta08 contiene questi commit.

Modifiche alle API

  • L'enumerazione NestedScrollSource viene sostituita da una classe inline. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) è stato rinominato in FocusManager.clearFocus(force = true) (Ia0c41)
  • È stato eseguito il refactoring degli utilizzi di enum per le classi inline per evitare problemi con le istruzioni esaustive quando vengono aggiunti nuovi valori enum. (I2b5eb)
  • Vuoi rimuovere @ExperimentalComposeUiApi da PopupProperties? (I01fa6)
  • PointerType è stato modificato da un'enumerazione a una classe inline (If5058)
  • Le proprietà semantiche ContentDescription e Text non sono più valori singoli, ma elenchi. In questo modo, possono essere uniti così come sono anziché concatenati. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
  • Modifier.focusModifier() è deprecato e sostituito da Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() e Modifier.onGloballyPositioned() non sono più funzioni inline (I727f6, b/186109675)
  • L'enumerazione KeyboardType viene sostituita da una classe inline. (I73045, b/187055290)
  • Sostituito l'enum FocusState con un'interfaccia FocusState (Iccc1a, b/187055290)
  • L'enum ImeAction viene sostituito da una classe inline. (I18be5, b/187055290)
  • PlaceholderVerticalAlign viene convertito in una classe inline. (If6290)
  • TextUnitType è ora una classe inline. (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 in cui gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica della posizione, senza dover chiamare change.consumePositionChange nei callback onDrag (I42fc4, b/185096350, b/187320697)
  • È stato corretto LayoutModifiers che forniva linee di allineamento. È stato corretto un bug che impediva la misurazione del genitore quando le linee di allineamento dei figli 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 riportate. (Ieb67d, b/177926591)

Versione 1.0.0-beta07

18 maggio 2021

androidx.compose.ui:ui-*:1.0.0-beta07 viene ritirata. La versione 1.0.0-beta07 contiene questi commit.

Modifiche alle API

  • Aggiunta dell'interfaccia ViewRootForInspector 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 slot anziché eliminarli per riutilizzarli la prossima volta che ne avremo bisogno (Ieb981).
  • L'enum KeyEventType viene sostituito da una classe inline. (Id670a, b/187055290)
  • L'enumerazione FocusDirection viene sostituita da una classe inline. (Ib6d03, b/187055290, b/184086802)
  • Introduce la possibilità di sollevare lo stato di SubcomposeLayout, che consente di precomporre i contenuti in un elemento slotId richiesto, il che velocizzerebbe il passaggio di misurazione successivo, in quanto la volta successiva che proviamo a eseguire la composizione secondaria con lo slotId specificato non sarà necessaria alcuna composizione. (I42580, b/184940225)
  • Aggiunta maniglia di selezione dei clip (Iff80d, b/183408447)
  • Sono state rimosse le API inutilizzate relative al supporto di Layout Inspector. (I2ac78)

Correzioni di bug

  • LazyColumn/Row ora mantiene attivi (non eliminati) fino a due elementi precedentemente visibili anche quando sono già stati scorri. Ciò consente al componente di riutilizzare le composizioni secondarie attive quando sarà necessario comporre un nuovo elemento, migliorando le prestazioni di scorrimento. (Ie5555)
  • TextGeomerticTransform e TextDecoration su AnnotatedString verranno applicati così come sono. (I61900, b/184760917)

Versione 1.0.0-beta06

5 maggio 2021

androidx.compose.ui:ui-*:1.0.0-beta06 viene ritirata. La versione 1.0.0-beta06 contiene questi commit.

Modifiche alle API

  • Risolvi il conflitto con il gesto di navigazione (I1145e)
  • @ComposeCompilerApi non più @RequiresOptIn (Iab690)
  • Sono state aggiunte 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 e SemanticsProperties.IndexForKey per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni vengono implementate da LazyList.
    • Aggiunta di SemanticsNodeInteraction.performScrollToIndex che scorrono un elenco fino all'indice specificato e SemanticsNodeInteraction.performScrollToKey che scorrono un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
  • Aggiunta di ownerViewId a GraphicLayerInfo (I19f62)
  • Sono stati aggiunti overload di Font() per caricare i caratteri da asset, file e FileDescriptor (I5d382)
  • Aggiunta dell'API di accessibilità error che consente di contrassegnare un nodo contenente input non validi (I12997, b/180584804, b/182142737)
  • Aggiunte Font() sovraccarichi per caricare i caratteri da asset, file e FileDescriptor (I43007)
  • Supporto del salvataggio di AnnotatedString in TextFieldValue.Saver. Aggiunte le funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
  • Aggiunta della funzione di costruzione 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 ritirata. La versione 1.0.0-beta05 contiene questi commit.

Modifiche alle API

  • Aggiunte le funzionalità sperimentali FocusManager.moveFocus(In) e FocusManager.moveFocus(Out) (Ic5534, b/183746743)
  • Aggiunta dell'API sperimentale performTextInputSelection (I2dcbb, b/178510628)
  • L'interfaccia InputEventCallback è obsoleta. Non è stato possibile utilizzare l'interfaccia in nessuna API pubblica e non è stato utilizzato nel codice. (I34a02, b/184003208)
  • Funzione TextLayoutResult/createTextLayoutResult ritirata. È una funzione pubblica inutilizzata aggiunta per i test. La funzione non esegue alcuna operazione utilizzabile per le API di composizione del testo. La funzione è ora deprecata e verrà rimossa in un secondo momento. (I80413)

Correzioni di bug

  • Correzione delle azioni di scorrimento per l'accessibilità ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. Anziché scorrere fino alla fine dell'area scorrevole, ora scorrerà di una schermata nella direzione indicata. (Ieccb0)
  • I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)

Versione 1.0.0-beta04

7 aprile 2021

androidx.compose.ui:ui-*:1.0.0-beta04 viene ritirata. La versione 1.0.0-beta04 contiene questi commit.

Modifiche alle API

  • Rinomina hideSoftwareKeyboard e showSoftwareKeyboard su SoftwareKeyboardController in hide() e show() 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à notificheranno automaticamente all'utente le modifiche (Idcf6f, b/172590946).
  • Viene introdotto TextOverflow.Visible. (Ic8f89)

Correzioni di bug

  • Risolto il problema per cui gli elementi di LazyColumn/LazyRow posizionati sui bordi venivano posizionati in modo errato dopo lo scorrimento rapido (Ie4d13, b/183877420)
  • AndroidViewBinding ora rimuove correttamente i frammenti inseriti tramite FragmentContainerView quando AndroidViewBinding viene rimosso dalla gerarchia di composizione. (Ib0248, b/179915946)
  • AndroidViewBinding ora nidifica correttamente i frammenti gonfiati tramite FragmentContainerView quando il tuo ComposeView si trova all'interno di un Fragment, risolvendo i problemi relativi al salvataggio e al 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 fragment visualizzati tramite FragmentContainerView 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 ritirata. La versione 1.0.0-beta03 contiene questi commit.

Modifiche alle API

  • Controllo posticipato delle dipendenze ViewTree di ComposeView (I8dbbf, b/182466548)
  • Aggiunti parametri facoltativi startX/endX e startY/endY alle funzioni swipeUp/swipeDown/swipeLeft/swipeRight in GestureScope. (I49e2d, b/182063305)

Versione 1.0.0-beta02

10 marzo 2021

androidx.compose.ui:ui-*:1.0.0-beta02 viene ritirata. La versione 1.0.0-beta02 contiene questi commit.

Modifiche alle API

  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I5951e, b/168778053)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I84472, b/168778053)
  • 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)
  • Ha 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

  • Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
  • androidx.compose.ui:ui non dipende più da AppCompat o Fragment. Se utilizzi un ComposeView nella tua applicazione e utilizzi Fragment e/o AppCompat, assicurati di utilizzare AppCompat 1.3+ / Fragment 1.3+, queste versioni sono necessarie per impostare correttamente i proprietari del ciclo di vita e dello stato salvato richiesti per ComposeView. (I1d6fa, b/161814404)
  • Correzione di rememberSaveable { mutableStateOf(0) } danneggiato 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 in TextField. (I658b6, b/168778053)
  • È stata corretta una rara eccezione NoSuchElementException in ComposeRootRegistry's tearDownRegistry() (Iddce1)

Versione 1.0.0-beta01

24 febbraio 2021

androidx.compose.ui:ui-*:1.0.0-beta01 viene ritirata. La versione 1.0.0-beta01 contiene questi commit.

Questa è la prima release di Compose 1.0.0 Beta.

Modifiche alle API

  • È stato aggiunto il callback onStart a detectDragGestures (I67269, b/179995594)
  • I modificatori per il dimensionamento in base alle dimensioni intrinseche non sono più sperimentali. (I15744)
  • MeasureBlocks è stato rinominato MeasurePolicy, che è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState è stato sostituito da [Mutable]InteractionSource
    • Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
    • Anziché passare interactionState = remember { InteractionState() } a componenti come Button e Modifier.clickable(), utilizza interactionSource = remember { MutableInteractionSource() }.
    • Invece di: Interaction.Pressed in interactionState, dovresti utilizzare le funzioni di estensione su InteractionSource, ad esempio InteractionSource.collectIsPressedAsState().
    • Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in CompositionLocals (I53520)
  • Sono stati rimossi i metodi LayoutCoordinates ritirati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
  • Alias di tipo sostituiti dai tipi sottostanti:
    • ColorStop è diventata Pair<Float, Color>
    • SpanStyleRange ora è `AnnotatedString.Range
    • ParagraphStyleRange è diventata AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation è diventata AnnotatedString.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)
  • Placeable ora espone measuredSize, che rappresenta le dimensioni effettive misurate dal layout secondario. Queste dimensioni potrebbero non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
  • Aggiungi il modificatore selectionGroup che consente di contrassegnare la raccolta di schede o pulsanti di opzione per scopi di accessibilità (Ie5c29)
  • Il defaultFactory per compositionLocalOf e staticCompositionLocalOf ora è obbligatorio anziché facoltativo.

    Questa modifica rimuove un potenziale errore di tipo per i tipi non nullabili per i quali non è stata fornita alcuna fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non annullabile.

    Per i tipi che accettano valori Null, valuta la possibilità di fornire { null } come factory predefinita.

    Sconsigliamo di utilizzare le impostazioni internazionali con tipi non annullabili, a meno che non sia possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda defaultFactory deve generare un'eccezione. Tuttavia, generare un'eccezione significa che i consumer del locale avranno una dipendenza implicita dalla sua fornitura che non viene applicata dal sistema di tipi. (Ifbd2a)

  • Sono stati rimossi i metodi ritirati dai moduli UI (I646f6)

  • I modificatori di dimensioni sono stati rinominati. Modifier.width/height/size sono stati rinominati in requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize sono stati rinominati in width/height/size. (I5b414)

  • Modifier.tapGestureFilter è stato rimosso. Utilizza invece Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • Il consumo parziale è stato rimosso dal sistema di input del puntatore. Il modo consigliato per coordinare il consumo parziale è Modifier.nestedScroll. (Ie9c9b)

  • L'orientamento è stato spostato nel pacchetto di base. VelocityTracker è stato spostato da ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)

  • imageResource e vectorResource ora sono funzioni di estensione rispettivamente per i companion ImageBitmap e ImageVector. Sono state eliminate load{Image,Vector,Font}Resource funzioni. (I89130)

  • AnimationClockObservable e le relative 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 è diventata una proprietà componibile di primo livello anziché una funzione componibile di primo livello.
    • CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è diventata un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata resa un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
    • La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
    • Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
    • La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
    • Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
    • Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
    • I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
    • Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe di file di Kotlin, la compatibilità binaria verrà interrotta, ma non quella del codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() è stato rimosso da compose:ui. Utilizza quello di androidx.activity:activity-compose:1.3.0-alpha01. viewModel() e LocalViewModelStoreOwner sono stati rimossi da compose:ui. Utilizza quelli di androidx.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 CustomEvens da PointerInputModifier è stato rimosso (I02707, b/175294473)

  • SnapshotStateObserver non è più sperimentale (Id2e6a)

  • Sono state eliminate alcune API ritirate in precedenza (Ice5da, b/178633932)

  • longPressGestureFilter e doubleClickGestureFilter sono stati rimossi. Utilizza Modifier.pointerInput con funzioni di assistenza, ad esempio detectTapGestures (I2fedf, b/175294473)

  • Rimossa l'API String.format Utilizzi refactoring in vari metodi toString per non sfruttare String.format internamente. (Id1290)

  • Rimozione delle asserzioni dp (I798d2)

  • Rimossa androidx.compose.runtime:runtime-dispatch (I55feb)

  • Le azioni di testo ora controllano automaticamente lo stato attivo (I13777, b/179648629)

  • Rimozione di runBlockingWithManualClock (I15cdc, b/179664814)

  • La posizione di scorrimento in Modifier.verticalScroll()/horizontalScroll() è ora rappresentata con numeri interi (I81298)

  • FlingConfig è stato rinominato FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché i decadimenti predefiniti. (I02b86, b/175294473)

  • È stata aggiunta una funzione helper utile per impostare la stessa azione per tutti i callback ImeAction (I63447, b/179226323)

  • Callback SoftwareKeyboardController rimosso da tutti i campi di testo da sostituire a breve con 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.
    • Riorganizzazione dei parametri in BackdropScaffold in modo che seguano le linee guida dell'API per i parametri obbligatori prima di quelli facoltativi.
    • Il parametro icon in BottomNavigationItem è stato spostato dopo selected e onClick.
    • Il parametro alwaysShowLabels in BottomNavigationItem è stato rinominato in alwaysShowLabel.
    • È stato rinominato il parametro bodyContent in alcuni componenti in content.
    • Parametri riordinati in ButtonDefaults.buttonColors(). Tieni presente che, poiché il tipo di parametri non è cambiato, non si verificherà un errore nel codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza.
    • Aggiunto il parametro secondaryVariant a darkColors(). Questo colore è in genere lo stesso di secondary nel tema scuro, ma viene aggiunto per coerenza e per una maggiore personalizzazione.
    • Rimossi ElevationDefaults e animateElevation() dalla superficie dell'API pubblica perché non erano di uso comune / utili.
    • Rinominato onValueChangeEnd in Slider in onValueChangeFinished e reso nullabile.
    • Il parametro text in Snackbar è stato rinominato in content per coerenza.
    • È stato aggiunto il parametro contentPadding a DropdownMenuItem per consentire la personalizzazione del padding predefinito e content è diventata un'estensione di RowScope.
    • ModalDrawerLayout rinominato in ModalDrawer.
    • BottomDrawerLayout rinominato in BottomDrawer.
    • (I1cc66)

Correzioni di bug

  • È stata aggiunta un'API per utilizzare le risorse AnimatedVectorDrawable in Compose. Utilizza animatedVectorResource per caricare un file <animated-vector> XML come AnimatedImageVector e animarlo con painterFor (I8ea91)
  • È stata aggiunta una nuova API LocalSoftwareKeyboardController di composizione locale per sostituire la precedente interfaccia SoftwareKeyboardController in TextField. (I658b6, b/168778053)

Versione 1.0.0-alpha12

10 febbraio 2021

androidx.compose.ui:ui-*:1.0.0-alpha12 viene ritirata. La versione 1.0.0-alpha12 contiene questi commit.

Modifiche alle API

  • Il supporto per ViewGroups è stato rimosso da UiApplier. I composable emitView ritirati sono stati rimossi. (Ifb214)
  • Modifier.pointerInput ora richiede chiavi remember per indicare quando la coroutine di rilevamento dell'input del puntatore deve essere riavviata per nuove dipendenze. (I849cd)
  • CompositionReference rinominato in CompositionContext (I53fcb)
  • Bounds è stato rinominato DpRect (I4b32a)
  • Aggiornamento dei test: hasText() controllerà sia il testo di input sia il testo dell'etichetta/suggerimento/segnaposto nel campo di testo (Iab803)
  • I composable viewModel() e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Ora, per utilizzarla, devi aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
  • Consenti l'azione Nullable in AccessibilityAction, modifica l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction da CharSequence a String (I0dc82)
  • Per adattarsi meglio alle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato BitmapPainter per essere parallelo a VectorPainter. (Iba381, b/174565889)
  • API di test delle sottostringhe migliori con la sottostringa ora come argomento (Icbe78)
  • È stato aggiunto un Modifier.focusOrder() che accetta un FocusRequester senza specificare un ordine di messa a fuoco personalizzato di una lambda. Ciò è utile quando dobbiamo specificare solo un riferimento ma non un ordine di messa a fuoco personalizzato per un elemento componibile (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 diverse classi in cui venivano utilizzati raramente. (I26702, b/178659281)
  • Il popup è stato spostato per essere specifico della piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e isFocusable è stato spostato in un parametro focusable in PopupProperties (Ieeea5)
  • La finestra di dialogo è stata spostata per essere specifica della piattaforma. È stato rinominato AndroidDialogProperties in DialogProperties. (I4ef69, b/179138130)
  • LayoutNode è stato reso interno (I8a7b1, b/175103944)
  • Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)
  • loadFontResource è deprecato. Utilizza fontResource. Le API imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecate. Usa painterResource. (I6b809)
  • Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta espressioni lambda che restituiscono valori float anziché valori float diretti. (If4a35, b/178657186)
  • Aggiunta la semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per controllare la semantica (I8e07a)
  • 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 per le API, nonché per nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
  • Sono state aggiunte azioni semantiche di espansione e compressione. Aggiunta di 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 solo asse (I0ba93, b/175294473)
  • Rinominate le impostazioni di Ambienti in modo che corrispondano al nuovo nome Ambient -> CompositionLocal. Gli ambienti venivano denominati AmbientFoo, ora le variabili locali di composizione vengono denominate LocalFoo. (I2d55d)
  • 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 di remember { mutableStateOf(0) }, rimuoveremo il composable savedInstanceState { 0 }. Devi utilizzare rememberSaveable { mutableStateOf(0) }, che salverà e ripristinerà automaticamente il tipo utilizzato all'interno di MutableState se può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo overload di rememberSaveable che ha il parametro stateSaver. L'utilizzo sarà simile al seguente: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Aggiunta della semantica delle password per l'accessibilità (I231ce)
  • È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
  • Le utilità emptyContent() e (@Composable () -> Unit).orEmpty() sono state ritirate perché non hanno più alcun impatto o valore positivo sul rendimento (I0484d)
  • snapshotFlow e withMutableSnapshot non sono più sperimentali (I6a45f)
  • Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno la ricomposizione finché le coroutine secondarie di composizione non saranno completate. Recomposer.shutDown rinominato in cancel per contrastare close. (Ib6d76)
  • UiSavedStateRegistry è stato rinominato SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato AmbientSaveableStateRegistry ed entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
  • L'artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
  • Molte API obsolete da tempo nel pacchetto ui vengono eliminate. (I2f2dc)
  • L'artefatto compose:runtime-dispatch è ora ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher si trova in compose:ui. (Ib5c36)
  • Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
  • view.captureToImage() è stato rimosso senza alcuna sostituzione. (I7fcd2)
  • È stata introdotta l'API ColorMatrix utilizzata per modificare i valori RGB dei contenuti di origine. È stata eseguita la refactoring dell'API ColorFilter per renderla un'interfaccia e corrispondere all'implementazione di PathEffect. (Ica1e8)
  • Aggiungi il parametro layoutDirection a createOutline di Shape. Ciò consente di creare forme che tengono 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 alcun criterio, tranne quando vengono eseguiti test con ComposeTestRule. (I50ec4, b/151940543)
  • canDrag è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
  • È stato rinominato LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre LayoutCoordinates del modificatore principale. In questo modo si otterranno casi d'uso più completi per onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
  • È stato rimosso unregisterProvider di SaveableStateRegistry. Ora registerProvider() restituisce un 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)
  • Rimozione di CoreText e CoreTextField dall'API pubblica
    • Rimozione dell'overload di SelectionContainer obsoleto
    • (I99c19)
  • I test in cui Compose viene utilizzato in gerarchie che vengono aggiunte/rimosse direttamente a WindowManager sono ora più stabili. (Ie81ed, b/175765614)
  • È stato rimosso Recomposer.current(). [Abstract]ComposeView ora per impostazione predefinita crea Recomposer in modo differito e con ambito finestra, basati su ViewTreeLifecycleOwner per la finestra. La ricomposizione e i tick di animazione basati su withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host è interrotto. (I38e11)
  • Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato di composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è ritirata. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
  • EditCommands accetta AnnotatedString. Tuttavia, questa è una modifica solo dell'API e la modifica del testo in più stili non è ancora implementata. (I4c3ea)
  • Uptime e Durata sono stati rimossi. (Ib9bf4, b/177420019)
  • CompositionData.asTree() e le API correlate sono state spostate nel modulo ui-tooling-data separato e contrassegnate come sperimentali (Ic95b8)
  • I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione da destra a sinistra. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato il mirroring automatico. (I61040, b/152756983)
  • L'API a cui fa riferimento il plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.

    Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica binaria che causa interruzioni. (I3b922, b/169406779)

  • Rimozione della funzione StringBuilder.deleteAt resa pubblica per errore (Id6ed9)

Correzioni di bug

  • Le ComposeView inserite nelle gerarchie di visualizzazione che sono elementi secondari di un'altra composizione ora ospitano le composizioni secondarie dei relativi elementi principali (I92883)
  • È stata aggiornata l'API imageFromResource di Compose per riutilizzare la cache disegnabile delle risorse durante il caricamento degli oggetti ImageBitmap. (If3627, b/178751994)

Versione 1.0.0-alpha11

28 gennaio 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 viene ritirata. La versione 1.0.0-alpha11 contiene questi commit.

Modifiche alle API

  • WithConstraints è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
  • Key.DPadUp è obsoleto. Utilizza invece Key.DirectionUp. (Iab335, b/177954892)
  • L'interfaccia del proprietario sarà interna d'ora in poi. (If8e35)
  • È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
  • Modifica PopupPositionProvider in modo che utilizzi le coordinate relative alla finestra, non quelle globali. Rinomina parentGlobalBounds in anchorBounds e modifica windowGlobalBounds in windowSize: IntSize (I2994a)
  • Durata e Uptime verranno sostituiti da Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore da queste classi. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner è stato aggiunto in modo simile a AmbientLifecycleOwner e AmbientViewModelStoreOwner già esistenti (I9a3e8, b/176756365)
  • API per la grafica vettoriale aggiornata per supportare l'analisi della colorazione applicata alla radice della grafica vettoriale. (Id9d53, b/177210509)
  • Aggiunta di toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
  • AmbientWindowManager è stato 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 di grafica quando l'ispezione è attivata. (I315df)
  • FocusRequester.createRefs è ora contrassegnato come sperimentale, in quanto potrebbe cambiare. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato con @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
  • Rimozione di PointerInputData e modifica di PointerInputChange per fornire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData sono stati resi interni perché non vengono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)
  • Implementazione di GraphicsLayerScope density aggiornata per supportare le conversioni di dp in pixel grezzi. (Ied528, b/176819695)
  • API matrice aggiornata per seguire l'ordinamento principale delle righe e fornire costanti di indice per facilitare le conversioni tra diverse rappresentazioni della matrice in modo da corrispondere alla logica di conversione del framework tra SkMatrix e Matrix4 internamente. (I432e6)
  • Rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
  • Sposta String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
  • 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 alla funzione (I5e1bd)
  • Aggiungi 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

    • Aggiunta di funzioni di fabbrica che iniziano con una lettera maiuscola
    • Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
    • Le nuove funzioni di fabbrica restituiscono FontFamily anziché sottoclassi
    • Ha nascosto i costruttori delle sottoclassi, in modo che possano essere costruite solo tramite funzioni di fabbrica.
    • È stato rinominato Font.asFontFamily in Font.toFontFamily (I42aa7)
  • È stato introdotto ComposeContentTestRule, che estende ComposeTestRule e definisce setContent, che è stato rimosso da ComposeTestRule. È stato aggiunto un metodo di fabbrica createEmptyComposeRule() che restituisce un ComposeTestRule e non avvia un'attività per te. Utilizza questo intent quando vuoi avviare l'attività durante il test, ad esempio utilizzando ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState ora è animateFooAsState, dove Foo è il tipo di variabile animata. Ad esempio, Float, Dp, Offset e così via (Ie7e25)

  • Al parametro Descrizione contenuti sono state aggiunte le immagini e le icone. 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 segnalava le dimensioni dei contenuti del layout. Ora indica le dimensioni nella posizione all'interno della catena di modificatori. (I36b78, b/177562900)

  • L'API emit() e tutti gli overload 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, questa è una modifica solo dell'API e la modifica del testo in più stili non è ancora implementata.

    • Rimozione di initial dai parametri del costruttore EditingBuffer. (I326d5)
  • invalidate e compositionReference() sono ora ritirati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)

  • AnnotatedString viene modificata per estendersi da kotlin.CharSequence. Pertanto, length e subSequence sono ora funzioni di istanza e le funzioni di estensione sono state rimosse. (Iaf429)

  • RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora ritirato.

    RememberObserver è un sostituto di CompositionLifecycleObserver con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati una sola volta, il che è e continua a essere la prassi consigliata. Tuttavia, se un riferimento è stato memorizzato più di una volta in una composizione, onRemembered viene chiamato per ogni riferimento, mentre onEnter viene chiamato una sola volta. onEnter è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, come WithConstraints e Scaffold, rendendo inaffidabile la singola chiamata onEnter, che è stata rimossa per RememberObserver.

    RememberObserver aggiunge onAbandoned, che viene chiamato se l'istanza RememberObserver viene restituita dal callback passato a remember, ma non è stata memorizzata nello stato di composizione e, pertanto, non verrà mai chiamato onRemembered. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o la composizione viene eliminata perché lo stato per cui stava producendo una composizione non è più attuale o non è più necessario. Se l'istanza di RememberObserver che segue il singolo suggerimento di riferimento riportato sopra monitora una risorsa esterna, sia onForgotten che onAbandoned indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro iniziato o le risorse allocate in onRemembered, onAbandoned può essere ignorato perché non verrà chiamato se viene chiamato onRemembered. (I02c36)

  • Operazioni aritmetiche deprecate tra due o più TextUnit. Sono state ritirate le funzioni TextUnit.Sp e TextUnit.Em a 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)

  • ScrollableColumn/Row sono stati ritirati. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai un grande contenuto scorrevole perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per impedire agli utenti di utilizzare il metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non utilizzare il comportamento pigro e utilizzare i modificatori direttamente in questo modo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Nuovo metodo di fabbrica items(count: Int) per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) e itemsIndexed(items: List) ora sono funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi overload di estensione per gli array: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574)

  • Utilizza ImeAction.None anziché ImeAction.NoAction

    • Utilizza ImeAction.Default anziché ImeAction.Unspecified (Ie1bcc)
  • Utilizza TestCoroutineDispatcher nei test (I532b6)

  • Ridenominato TextInputService.onStateUpdated come 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 ritirata. 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 a seguito della composizione nella fase "Applica modifiche" della composizione, dopo il completamento di tutte le funzioni @Composable.

    Si tratta di una modifica comportamentale che potrebbe influire sul codice dell'applicazione, in quanto i nodi non sono più disponibili dalle API interne ed sperimentali finché le modifiche non sono state applicate. In genere, questo problema può essere risolto racchiudendo il codice con queste dipendenze in un SideEffect componibile per posticipare l'esecuzione del codice fino a quando i nodi non sono stati creati e inizializzati. (I018da)

Modifiche alle API

  • È stato aggiunto Modifier.focusOrder() che può essere utilizzato per specificare un ordine di attraversamento personalizzato della messa a fuoco (I90cf5, b/175899543, b/170155556, b/170155429)
  • Rimozione dell'utilizzo di focusObserver deprecato. Utilizza onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
  • Modifiche all'API EditOperations
    • EditOperation rinominato in EditCommand
    • Aggiunto il suffisso Command per le implementazioni concrete di EditOperation
    • EditCommand non sono più classi di dati
    • È stata rinominata la funzione EditOperation.process in applyTo
    • Rinomina InputEventListener in InputEventCallback
    • (I0a366)
  • Sono state rimosse le unità PxSquared, PxCubed e PxInverse inutilizzate. È stato modificato Size.center() in modo che sia una proprietà. (I973f7)
  • Il modulo ui-test ora sarà in grado di configurare la creazione di ricompositori per le UI in fase di test (Ibebd8)
  • Modifica di Velocity per includere componenti e operazioni matematiche. (Ib0447)
  • @ExperimentalTesting è stato rinominato in @ExperimentalTestApi per essere coerente con annotazioni API sperimentali simili (Ia4502, b/171464963)
  • Rinominata Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
  • Sono state rimosse le classi DpInverse, DpSquared e DpCubed inutilizzate. (I4d62b)
  • Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
  • Aggiungi un callback per inviare una notifica al proprietario quando cambiano i limiti di layoutnode. (I72fd1)
  • Sono stati aggiunti isSpecified, isUnspecified e useOrElse per le classi inline con una costante Unspecified. (I93f7b, b/174310811)
  • Espandi le API [Abstract]ComposeView per consentire il riciclo Visualizzazioni basate su Compose, eliminando la composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e l'individuazione di Recomposer e CompositionReference con ambito finestra per la creazione di 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)

  • Rimossa l'API pubblica Any.identityHashCode() (I025d7)

  • Rimossa l'API toStringAsFixed a favore dell'utilizzo diretto di String.format. (Iaba6b)

  • Aggiungi l'opzione di attivazione/disattivazione a foundation Strings.kt (I4a5b7, b/172366489)

  • nativeClass è stato spostato nel modulo ui ed è stato reso interno. Utilizzi aggiornati di nativeClass nelle implementazioni di equals per utilizzare 'is MyClass' invece. (I4f734)

  • Modifier.focus() e Modifier.focusRequester() sono deprecati. Utilizza invece Modifier.focusModifier() e Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)

  • È stato introdotto SelectionRegistrar.notifySelectableChange per comunicare gli aggiornamenti di Selectable a SelectionManager. (I6ff30, b/173215242)

  • È stata introdotta la proprietà Outline.bounds per ottenere il rettangolo di selezione per varie implementazioni del contorno. (I16e74, b/175093504)

  • TestUiDispatcher deprecato. 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 OffsetMapping
    • È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
    • PasswordTransformation non è più una classe di dati
    • OffsetMapping è stato spostato in un file separato
    • (I0bdf3)
  • Rinomina di Position in DpOffset e rimozione di getDistance() (Ib2dfd)

  • Modificato fun Dp.isFinite() in val Dp.isFinite (I50e00)

Correzioni di bug

  • Recomposer ora 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() è ora sostituito da animateAsState(), che restituisce un State<T> anziché un T. Ciò consente prestazioni migliori, in quanto l'ambito di invalidazione può essere ristretto al punto in cui viene letto il valore State. (Ib179e)
  • Aggiungi l'API del ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier selezionabile, attivabile e disattivabile. Modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le animazioni.
    • Nuova DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale
    • (I820f2, b/168014930)

Versione 1.0.0-alpha09

16 dicembre 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 viene ritirata. La versione 1.0.0-alpha09 contiene questi commit.

Modifiche alle API

  • KeyEvent.Alt deprecato è stato rimosso. Utilizza invece KeyEvent.isAltPressed. (Idd695)
  • Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati. Utilizza invece 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 puntatore, è 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 destrutturazione per creare istanze FocuSRequester (I35d84, b/174817008)
  • accessibilityLabel è stato rinominato in contentDescription. accessibilityValue è stato rinominato in stateDescription. (I250f2)
  • Gli eventi personalizzati sono stati rimossi dall'API di input del puntatore di sospensione (Ia54d5, b/175142755)
  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar ed è stato rinominato onPositionChange in notifyPositionChange. (Ifbaf7)
  • Altri membri di LayoutNode contrassegnati come interni (I443c6)
  • LayoutInfo è stato introdotto per essere utilizzato da strumenti e test (I9b190)
  • AndroidOwner made internal (Ibcad0, b/170296980)
  • Rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
  • Aggiunto sistema di scorrimento nidificato. Per ulteriori dettagli, consulta Modifier.nestedScroll (I36e15, b/162408885).
  • subcomposeInto(LayoutNode) è stato reso interno (Id724a)
  • L'interfaccia di Applier è stata modificata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.

    Il metodo insert() è stato rinominato in insertTopDown().

    È stato aggiunto un nuovo metodo, insertBottomUp().

    Un'applicazione inserisce i nodi nell'albero che sta modificando utilizzando insertTopDown() o insertBottomUp() a seconda di quale ha un rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da costruire dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserti per implementare la costruzione bottom-up, che doveva essere copiato in ogni applicatore che richiedeva la costruzione bottom-up per le prestazioni. Con questa modifica, un Applier sostituisce insertBottomUp() per creare una struttura ad albero dal basso verso l'alto e insertTopDown() per creare la struttura ad albero dall'alto verso il basso. (Icbdc2)

  • Sono state aggiunte le proprietà dismissOnBackPress e dismissOnClickOutside a AndroidDialogProperties. Questi consentono di configurare il momento in cui verrà richiamata la 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 PNG) o VectorDrawable. I consumatori non devono più determinare in anticipo il tipo di asset e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composable Image o nei modificatori di Painter. (I2c703, b/173818471)

  • È stato aggiunto Modifier.clearAndSetSemantics per cancellare la semantica dei discendenti e impostarne di nuove. (I277ca)

  • Spostato ContentDrawScope nel modulo ui-graphics per essere con DrawScope. (Iee043, b/173832789)

  • È stata introdotta l'API grafica PathEffect per fornire diversi pattern alle forme con tratto. Utilizzo deprecato di NativePathEffect a favore dell'implementazione prevista/effettiva di PathEffect. (I5e976, b/171072166)

  • Sono state aggiunte interfacce IdlingResource a Compose, come variante di Compose supportata delle risorse di inattività di Espresso. Possono essere registrati e annullati tramite ComposeTestRule (I433f3)

  • Rimozione della registrazione globale di ComposeIdlingResource e rimozione della registrazione globale degli orologi in ComposeIdlingResource (I32660)

Correzioni di bug

  • Le espressioni lambda nei modificatori di offset ora restituiscono IntOffset anziché Float. (Ic9ee5, b/174137212, b/174146755)
  • Sono state rimosse SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza, questi erano contrassegnati come InternalComposeAPI. Ora sono interni al modulo di composizione.

    CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Queste sono pubbliche, ma non sono destinate all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c).

  • È stato eseguito il refactoring di ShaderBrush per creare in modo differito un'istanza dello shader quando sono disponibili le informazioni sulle dimensioni dell'ambiente di disegno. Ciò è utile per definire gradienti che occupano i limiti di disegno completi di un elemento componibile al momento della composizione, senza dover implementare implementazioni personalizzate di DrawModifier.

    API costruttori di funzioni di sfumatura deprecate a favore dei metodi di fabbrica su un oggetto sfumatura. (I511fc, b/173066799)

  • Ritira LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza invece LazyColumn e LazyRow (I5b48c)

  • BuildCompat.isAtLeastR deprecato (Idb37e)

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una AnnotatedString. Funzione di creazione di annotatedString ritirata. (Idfe0b)

  • Metodi di estensione rimossi su Float e Double per convertire i valori in radianti. Spostato per essere una funzione privata all'interno di PathParser che era l'unico posto in cui veniva utilizzato (I25f52)

Versione 1.0.0-alpha08

2 dicembre 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 viene ritirata. La versione 1.0.0-alpha08 contiene questi commit.

Modifiche alle API

  • Aggiungi azione semantica Ignora (I2b706)
  • Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere alias di tipo/metodi helper per facilitare la migrazione dalle API deprecate a quelle attuali. (Id6044, b/173834241)
  • È stato rinominato Modifier.drawLayer in Modifier.graphicsLayer Sono state aggiornate anche le classi correlate a GraphicsLayer in base al feedback dell'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, in modo che quando dobbiamo spostare un elemento secondario non dobbiamo ridisegnarne i contenuti. In secondo luogo, possiamo applicare le trasformazioni di disegno a un elemento secondario (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • <T> è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)
  • Aggiunte API Modifier.scale/rotate come comodità per drawLayer.
    • Modifier.drawOpacity rinominato in Modifier.alpha
    • Modifier.drawShadow rinominato in Modifier.shadow (I264ca, b/173208140)
  • I campi uptime e posizione di PointerInputData non sono più nullabili. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i punti di manipolazione della selezione e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
  • È stato aggiunto WindowManager.isWindowFocused per verificare se la finestra host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
  • API TransformOrigin aggiornata per avere la sintassi di destrutturazione per restituire pivotFractionX e pivotFractionY come component1 e component2 (If43c4, b/173586560)
  • È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose. Inoltre, sono state migrate alcune API utilizzando children come nome per la lambda finale in content, in base al controllo lint e alle indicazioni. (Iec48e)
  • È stata aggiunta un'API per verificare se sono stati premuti i tasti di modifica Alt, Ctrl, Meta o Maiusc durante l'invio di un evento di 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 ricomposizione e il ricalcolo del layout quando si verifica la modifica dello stato. DrawLayerModifier è ora interno in preparazione alla migrazione della sua logica nel metodo placeable.placeWithLayer() di LayoutModifier (I15e9f, b/173030831)
  • Gli Ambients ritirati denominati con Ambient come suffisso sono stati sostituiti con nuove proprietà con il prefisso Ambient, seguendo le altre linee guida per Ambients e API Compose. (I33440)
  • androidx.compose.ui.text.Typeface spostato in androidx.compose.ui.text.font.Typeface (Ic2b81)
  • L'argomento Semantica mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25)
  • VectorAsset è stato rinominato ImageVector VectorAsset è stato spostato e rinominato Builder per essere una classe interna di ImageVector in conformità con le linee guida per le API. Aggiunta di un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
  • ImageAsset e i metodi correlati sono stati rinominati ImageBitmap. (Ia2d99)
  • Aggiungi il parametro zIndex a place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e qualsiasi layout personalizzato possa impostare zIndex per i relativi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
  • Proprietà semantiche di base spostate nell'interfaccia utente (I6f05c)
  • Deprecare place(Offset) e placeRelative(Offset). Utilizza invece gli overload con offset interi (I4c5e7)
  • Le API precedentemente deprecate 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 Rect. (Ie9d02, b/172562222)
  • L'interfaccia di allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
  • Sono stati aggiunti il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere più facilmente i propri rilevatori di gesti. (I00807)
  • id è stato rinominato in layoutId per LayoutIdParentData. Measurable.id è stato rinominato in Measurable.layoutId. (Iadbcb, b/172449643)
  • Nuovo rilevatore di gesti multitocco, inclusi helper 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 restituire un valore. (Ie5642)

  • Modifier.focusable ha aggiunto il requisito in foundation. Utilizzalo per aggiungere un comportamento selezionabile a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)

  • Fornisci implementazioni predefinite di metodi e proprietà in AnimationClockTestRule che possono essere delegate al relativo clock (I7ea3d, b/173399709)

  • AndroidComposeTestRule ora può accettare launcher di attività personalizzati (Ib8288, b/153623653, b/154135019)

  • TextLayoutResult.getLineVisibleEnd è deprecato. In sostituzione, TextLayoutResult.getLineEnd ora ha un nuovo parametro visibleEnd. (I73282)

  • API TextFieldValue aggiornata

    • TextFieldValue.composition è ora di sola lettura
    • rimossa l'eccezione generata per l'intervallo di selezione non valido (I4a675, b/172239032)
  • Supporta TtsAnnotation per il motore di sintesi vocale. (I54cc6)

  • Nuove API per l'esecuzione di animazioni nelle coroutine (Ied662)

Correzioni di bug

  • Il parametro di allineamento di Box è stato rinominato contentAlignment. (I2c957)
  • I modificatori offsetPx sono stati rinominati in offset. Ora accettano parametri lambda anziché State. (Ic3021, b/173594846)
  • È stato aggiunto il parametro resetInput a TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • È stato aggiunto il controllo lint per i parametri Modifier nelle funzioni composable. Questo controllo lint verifica la denominazione, il tipo restituito, il valore predefinito e l'ordine del parametro per garantire la coerenza con le linee guida di Compose. (If493b)
  • Opzione aggiunta temporaneamente per consentire a TestAnimationClock di essere controllato da MonotonicFrameClock (I1403b, b/173402197)
  • Aggiunto wrapper Android Typeface. Puoi caricare un carattere Android tramite la funzione typeface, ad esempio typeface(Typeface.DEFAULT). Ha anche rinominato typefaceFromFontFamily() in typeface() (I52ab7)
  • È stato aggiunto un controllo lint per verificare che le funzioni di fabbrica dei modificatori siano definite come estensioni del modificatore, in modo che possano essere concatenate in modo fluido. (I07981)
  • Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
  • Recomposer non accetta più un EmbeddingContext; le dipendenze di pianificazione richieste vengono ottenute da effectCoroutineContext. FrameManager è deprecato; le integrazioni della piattaforma devono inizializzare la propria gestione degli snapshot globali. (I02369)
  • Trasferisci le informazioni sullo stile al nodo di accessibilità. (If5e8d)
  • TextUnit.Inherit viene rinominato TextUnit.Unspecified per coerenza con le altre unità. (Ifce19)

Compose UI versione 1.0.0-alpha07

11 novembre 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 viene ritirata. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche alle API

  • È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendenti l'uno dall'altro per supportare i casi d'uso di scalabilità non uniforme.
    • Aggiunto il metodo computeScaleFactor a ContentScale
    • È stato aggiunto ContentScale.FillBounds per eseguire il ridimensionamento non uniforme per estendere i limiti dell'origine in modo da occupare completamente la destinazione.
    • Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Size.
    • (Ic96a6, b/172291582)
  • Sono state aggiunte le fabbriche BiasAlignment e BiasAbsoluteAlignment per la creazione di allineamenti. (Iac836, b/169406772)
  • Consente a uno sviluppatore di cancellare 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 rispettare la convenzione di denominazione con Modifier.drawBehind. (I4fc3a, b/171955269)
  • Aggiungi il supporto della distanza della videocamera per completare le trasformazioni 3D rotationX/rotationY nelle API dei livelli. (I40213, b/171492100)
  • Aggiunta di 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)
  • Rimossa l'opacità dal modificatore drawShadow() perché era confusa. (I82c62, b/171624638)
  • MeasureResult è stato spostato fuori da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli correlati al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Rimozione di FocusState2 deprecato (I686cb, b/168686446)
  • ZIndexModifier è ora interno (I1808b, b/171493718)
  • È stato aggiornato il tipo restituito del metodo lerp sui parametri Size in modo che restituisca un valore Size non nullo per evitare boxing inutile. (Ib0044)
  • È stato aggiunto TestMonotonicFrameClock per testare il codice che si basa su MonotonicFrameClock di Compose per l'attesa di eventi di frame di composizione utilizzando runBlockingTest di kotlinx-coroutines-test (I4402f)
  • Rimozione di GestureScope.localToGlobal (I15299, b/171462785)
  • Aggiunta dello strumento di ricerca 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 e non soggettiva che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
  • Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
  • Rinomina KeyboardOptions come ImeOptions (I82f36)
  • KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
  • provideDefault è stato aggiunto come alternativa per fornire gli ambient e può essere utilizzato per specificare i valori ambient che verranno impostati solo se non è già stato fornito un valore ambient. (Id6635, b/171024925)
  • BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
  • Introduzione del modulo ui-test-junit4 (Ib91f8)
  • relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per facilitare la specifica delle distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
  • LaunchedTask è stato rinominato LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. LaunchedEffect senza parametri del soggetto non è consentito per incoraggiare le best practice. (Ifd3d4)
  • Sono state introdotte risorse componibili che vengono ricomposte quando la configurazione viene aggiornata. (I6387c, b/167352819)
  • Ora Recomposer richiede un CoroutineContext al momento della creazione (Ic4610)
  • Somma i valori di zIndex quando vengono applicati più Modifier.zIndex(). In precedenza, vinceva il primo. (Ic514c, b/170623936)
  • Modifiche all'implementazione interna di SlotTable che non dovrebbero influire sull'API pubblica. (If9828)
  • Aggiunta dell'opzione IME di correzione automatica della tastiera (I57b8d)
  • androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
  • Rimossa KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45)

Contributo esterno

  • Pubblicazione disabilitata dell'artefatto 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 ritirata. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche alle API

  • Recomposer è ora un CompositionReference e un elemento padre di composizione valido. Ora Explicit Recomposer è obbligatorio in meno posizioni. (I4036f)
  • VectorPainter è stato ritirato a favore di rememberVectorPainter per indicare meglio che l'API componibile sfrutta internamente "remember" per rendere persistenti i dati tra le composizioni. (Ifda43)
  • API Modifier.drawWithCache aggiornata per esporre ContentDrawScope come ambito ricevitore anziché DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Ciò è utile per i casi d'uso di fusione/colorazione in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di fusione corrispondente venga applicato correttamente. (Ie7ec8)
  • Sposta SimpleContainer in PopupTestUtils.kt (I78c57)
  • ConsumedData non è più una classe di dati. Per i dettagli, vedi https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • Fix Rtl Handle Position. (I6e1e0)
  • DrawScope e ContentDrawScope sono stati sottoposti a refactoring per essere interfacce anziché classi astratte
    • Implementazione di CanvasDrawScope di DrawScope
    • Implementazioni sottoposte a refactoring di DrawScope per utilizzare CanvasScope
    • Creato DrawContext per racchiudere le dipendenze per DrawScope
    • Rimossi metodi obsoleti in DrawScope (I56f5e)
  • Modifica che causa interruzione: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...), dato che l'unico valore che dovrebbe poter essere modificato negli eventi puntatore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo degli eventi puntatore passati. (I6acd0)
  • MeasureScope e IntrinsicMeasureScope sono diventate interfacce. (I1a087, b/170461665)
  • La funzione di unione per AlignmentLine è stata nascosta. (I9da1a, b/170612900, b/170611568)
  • Aggiunta della possibilità di specificare le informazioni dello strumento di controllo nel modificatore composto (Idee08, b/163494569)
  • Aggiunta dell'opzione Seleziona tutto nel menu di selezione (Ief02b)
  • È stato aggiornato DrawTransform.rotate in modo che accetti un parametro pivot predefinito del centro in modo che corrisponda alla documentazione.
    • Aggiornato DrawScope.rotateRad per utilizzare un offset per il punto pivot in modo che corrisponda ad altri metodi di trasformazione.
    • Overload di DrawScope.rotateRad deprecato che utilizzava valori float per le coordinate x e y del pivot.
    • (Iffcbb, b/170434992)

Correzioni di bug

  • Il controllo lint API per MissingGetterMatchingBuilder è abilitato per androidx (I4bbea, b/138602561)
  • Aggiungi test. (I6b8ae)
  • Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
  • Aggiunta dell'opzione IME KeyboardCapitalization (I8ac38)
  • È stata aggiunta l'opzione della tastiera a una sola riga a CoreTextField (I72e6d)
  • Sposta SimpleContainer in PopupTestUtils.kt (I65c3e)
  • È stata rinominata l'API Radius in CornerRadius per esprimere meglio il modo in cui viene utilizzata in tutto Compose. Documentazione aggiornata per indicare che i raggi d'angolo negativi sono bloccati a zero. (I130c7, b/168762961)
  • Miglioramento dell'interoperabilità di Android continuando a inviare MotionEvent alle visualizzazioni Android secondarie che restituiscono false per onTouchEvent per tutte le azioni tranne ACTION_DOWN (I94c5a, b/170320973)
  • Box è stato reso una funzione in linea. (Ibce0c, b/155056091)

Contributo esterno

  • Supporto di impostazioni internazionali diverse per AnnotatedString.capitalize e AnnotatedString.decapitalize (I4aa7f)

Versione 1.0.0-alpha05

14 ottobre 2020

androidx.compose.ui:ui-*:1.0.0-alpha05 viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.

Modifiche alle API

  • Aggiungi un DSL per specificare le informazioni dello strumento di controllo (Ic9a22)
  • Sposta LongPress in Text. (Iff2bc)
  • Modificatore sperimentale Modifier.pointerInput che sospende il modificatore di input (Ia77d2)
  • Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
  • I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata 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 eseguono il consumo ora non restituiscono più un nuovo PointerInputChange, ma modificano invece il PointerInputChange fornito.

    Questo è il primo passaggio di una procedura in due fasi per rendere modificabili i dati PointerEvent in modo che altri dati del puntatore non possano essere modificati dal codice utente. Il secondo passaggio sarà rimuovere il tipo di reso List<PointerInputChange> da PointerInputFilter.onPointerEvent(...). (Id067e)

  • Disattiva Selezione nel testo e una demo. (Ie7e97)

  • È stata resa inline la funzione onGloballyPositioned (I15830)

  • OnPositionedModifier è stato rinominato in OnGloballyPositionedModifier e onPositioned() è stato rinominato in onGloballyPositioned(). (I587e8, b/169083903)

  • La proprietà hasPendingMeasureOrLayout è stata aggiunta a Owner per indicare se il proprietario ha lavori di layout in attesa. (I3d9f8, b/169038599)

  • È stata aggiunta un'API per cancellare programmaticamente lo stato attivo (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) rimosso. PointerInputFilter.onPointerEvent(...) deve essere utilizzato al suo posto. (I6f04a)

  • Modifiche alle dimensioni

    • Rimossa Size.getFlipped
    • Removed Size.rem
    • Rimossa Size.truncDiv (Ief44d, b/169790720)
  • Nell'ambito della standardizzazione dei valori sentinella per le classi inline, rinomina Color.Unset in Color.Unspecified per coerenza con altre classi inline (I97611, b/169797763)

  • Viene introdotto TextOverflow.None. Quando l'overflow è None, Text non gestirà più l'overflow e segnalerà le dimensioni effettive a LayoutNode. (I175c9, b/158830170)

  • Il parametro scope all'interno di AnnotatedString.Builder.addStringAnnotation viene rinominato in tag per coerenza dell'API. (I7c8cb)

Correzioni di bug

  • Le prestazioni di scorrimento di LazyColumn/Row vengono migliorate riducendo il lavoro nella composizione secondaria a ogni scorrimento. È stato aggiunto il nuovo metodo hasInvalidations() per la classe Composition. Il metodo hasPendingChanges() di Recomposer è stato rinominato hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Parametri Size.Unspecified aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Implementazioni di Painter aggiornate per il controllo rispetto a Size.Unspecified e alle dimensioni non finite. (I95a7e)
  • L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno per i figli (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 l'uso della reflection, se possibile. (Ia1790)
  • Corretto il bug: se la tastiera software visualizzata causava la traduzione dell'app, le coordinate di input del puntatore diventavano errate. (Ic4cec, b/163077821)

Versione 1.0.0-alpha04

1° ottobre 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.

Modifiche alle API

  • È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione di layout e disegno una volta che non sono più validi. (Ic4cf8)
  • Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback quando il layout dei contenuti è stato misurato di nuovo e la dimensione è cambiata, rispettivamente. (I657cf, b/154108792)
  • Aggiungi l'azione semantica di clic lungo (I6281b, b/156468846)
  • FocusManager è stato reso privato. (I7872f)
  • Implementazione aggiornata per creare un'implementazione DrawCacheModifier dedicata anziché aggiungere proprietà facoltative a DrawModifier.

    Documentazione aggiornata per vari metodi (Ibd166)

  • Rendi TextRange inline per evitare la creazione di oggetti. (Id034b)

  • PlacementScope#parentWidth e PlacementScope#parentLayoutDirection non possono più essere letti dal blocco di posizionamento di un layout personalizzato. (Icc1ae, b/168295623)

  • aggiungi AccessibilityScrollState alle proprietà semantiche. (Ifeda9)

  • È stato introdotto Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea in modo condizionale le dipendenze che dipendono dalle informazioni su dimensioni/stato (I376dc).

  • ParagraphConstraints è stato rimosso. La larghezza viene ora passata direttamente al paragrafo. (Ica712)

Correzioni di bug

  • Aggiornamento di molte API grafiche
    • API di trasformazione di rotazione e scalabilità aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata del punto di rotazione anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Rimossi i metodi Rect.expandToInclude e Rect.join
    • Aggiornamento della documentazione sul raggio per indicare ovale oltre a ellittico
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius incorporata non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istanziati tramite i relativi costruttori di funzioni
    • Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
    • Rect.shift ritirato a favore di Rect.translate
    • Sono state rimosse le API RoundRect.grow e Rect.shrink
    • È stato rinominato RoundRect.outerRect in Rect.boundingRect
    • Rimozione dei metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
    • Rinominato RoundRect.longestSide in RoundRect.maxDimension
    • È stato rinominato RoundRect.shortestSide in RoundRect.minDimension
    • Modifica di RoundRect.center in modo che sia una proprietà anziché una funzione
    • Aggiornamento del costruttore RoundRect per utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
    • Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con origine in 0,0
    • È stata aggiunta un'API di eliminazione a Radius
    • È stata eseguita la migrazione di varie funzioni di estensione RoundRect in modo che siano invece proprietà
    • (I8f5c7, b/168762961)
  • foundation.Box è stato ritirato. Utilizza invece foundation.layout.Box. (Ie5950, b/167680279)
  • L'elenco filtri è stato rinominato in Box. Il Box esistente verrà ritirato a favore del nuovo Box in compose.foundation.layout. Il comportamento della nuova casella è quello di impilare gli elementi secondari uno sopra l'altro quando ne ha più di uno. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
  • I parametri di decorazione del riquadro sono stati ritirati. Se vuoi aggiungere decorazioni/spazi interni alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Aggiornamento di molte API grafiche
    • API DrawScope aggiornate con metodi di trasformazione con ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
    • È stata aggiornata la documentazione di clipPath in modo che faccia riferimento a Path anziché al rettangolo arrotondato
    • Spaziatura fissa nella documentazione per il parametro right in clipPath
    • Rinominate DrawScope.drawCanvas in drawIntoCanvas e rimosso il parametro size
    • I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
    • È stato aggiunto l'override dell'inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
    • È stata rimossa la documentazione sul metodo di inserimento che indicava che l'inserimento sarebbe stato applicato a tutti e quattro i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri Rect per corrispondere allo stile kdoc
    • Rimossi Rect.join e Rect.expandToInclude
    • È stato creato l'overload per Rect.translate(offset) e Rect.shift è stato ritirato
    • (If086a, b/167737376)
  • Annota rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendili API interne e nascondi la relativa documentazione (I554eb, b/168308412)
  • Rimuovi SelectionContainer dalla parte superiore per disattivare la selezione predefinita ed evitare comportamenti imprevisti. In alternativa, puoi utilizzare un elemento 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 ritirata. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche alle API

  • Rimuovi le azioni semantiche di scorrimento in avanti/indietro. Sono stati aggiunti passaggi in AccessibilityRangeInfo. (Ia47b0)
  • onInvalidate() rimosso da Owner. OwnedLayer gestisce l'invalidazione. (Ica72b, b/162061312)
  • Metodi dell'operatore rimossi nell'API Size che utilizzano i parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è inaspettato per queste. Ad es. la dimensione - offset deve restituire un offset o una dimensione con la differenza?

    Sono stati rimossi anche i metodi ritirati nella classe Size. (Iec902, b/166514214)

Correzioni di bug

  • Correzione del problema di disegno errato degli elementi di LazyColumn, che causava anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints e le API che lo utilizzano sono state ritirate. (I90cdb, b/167389835)
  • createAndroidComposeRule e AndroidInputDispatcher spostati da androidx.ui.test.android a androidx.ui.test (Idef08, b/164060572)
  • Gli utilizzi di gravity sono stati rinominati in modo coerente in align o alignment nelle API di layout. (I2421a, b/164077038)
  • Sono stati aggiunti onNode e altri metodi globali a ComposeTestRule, in quanto quelli globali attuali verranno ritirati. (Ieae36)

Versione 1.0.0-alpha02

2 settembre 2020

androidx.compose.ui:ui-*:1.0.0-alpha02 viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.

Modifiche alle API

  • rimuovi il callback per notificare al proprietario quando cambiano i limiti di layoutnode. (If654e, b/166106882)
  • È stato aggiunto il supporto per i parametri filltype nei percorsi della grafica vettoriale per supportare i ritagli delle forme in base alle regole di riempimento dei percorsi evenOdd o NonZero. (I43dd2)
  • Uptime e Velocity sono ora classi inline (I48f4a)
  • La durata è ora una classe inline (I565eb)
  • Aggiungi un callback per inviare una notifica al proprietario quando cambiano i limiti di layoutnode. (Ic40b3)
  • È stato risolto il problema per cui il costruttore della funzione Rect con Offset e raggio creava il rettangolo nell'ordine sinistra, destra, alto, basso anziché sinistra, alto, destra, basso.

    Sono stati rimossi i metodi companion deprecati su Rect a favore dei costruttori di funzioni.

    Sono stati aggiunti test per verificare i metodi in Rect.kt (I08460, b/165822356)

Correzioni di bug

  • È stato aggiunto MutableRect, un rettangolo modificabile. (I71bd2, b/160140398)
  • Matrix4 è stato sostituito da Matrix. Tutte le altre parti del pacchetto vectormath sono state rimosse. (Ibd665, b/160140398)
  • La convenzione di chiamata per le funzioni componibili è cambiata. Si tratta di una modifica che provoca un errore binario. Tutte le librerie devono essere ricompilate per funzionare con questa versione del plug-in del compilatore Compose.

    Questa modifica non crea una modifica che causa interruzioni a livello di origine, in quanto le uniche API modificate sono le API del compilatore che hanno un opt-in esplicito. (I7afd2, b/158123185)

  • Risolto l'arresto anomalo che poteva verificarsi quando l'invio 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 ritirata. 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 ritirata. La versione 0.1.0-dev17 contiene questi commit.

Modifiche alle API

  • emitView è stato ritirato. Se possibile, utilizza AndroidView per emettere Views 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 foglie nell'albero di composizione, nel qual caso è possibile utilizzare AndroidView. (I29b1e, b/163871221)
  • FocusState2 è deprecato e sostituito da FocusState (Ia8b79, b/160822876, b/160923332)
  • Gli overload di AndroidView deprecati sono stati rimossi. (I946b9, b/163802393)
  • Ora le emissioni personalizzate possono dichiarare che uno o più dei relativi setter possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13)
  • Le classi Vector non sono più classi di dati perché la stessa istanza dell'oggetto viene utilizzata per la composizione.

    È stato aggiunto il flag mutableStateOf per VectorPainter per ridisegnare in modo condizionale se i contenuti del vettore cambiano.

    È stato eseguito il refactoring dell'istanza VectorComponent in modo che faccia parte di VectorPainter, in quanto viene riutilizzata in tutte le composizioni.

    Aggiornamento di GroupComponent e PathComponent per rendere modificabili i campi del nome (Ieae45, b/151378808)

  • Rimossi onChildPositioned e OnChildPositionedModifier. Gli sviluppatori devono utilizzare onPositioned e OnPositionedModifier nel layout secondario. (I4522e, b/162109766)

  • L'offset è diventato una classe in linea (Iaec70)

  • È stato aggiunto un parametro modificatore a SelectionContainer (I4aada, b/161487952)

  • Rimozione di FocusModifier deprecato (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Aggiunta della lambda mergePolicy a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per la semantica di mergeAllDescendants unione. Il criterio predefinito prevede l'utilizzo del valore principale se già presente, altrimenti del valore secondario. (Iaf6c4, b/161979921)

  • Constraints è ora una classe inline (I88736)

  • È stato aggiunto FocusManager, che sposta la logica di messa a fuoco comune da AndroidComposeView (I528ef, b/161487952, b/162206799)

  • Nomi PointerEventPass aggiornati per la release alpha. (Ifda6f)

  • IntOffset è ora una classe inline (Iac0bf)

  • IntSize è ora una classe inline (I2bf42)

  • PlacementScope.placeAbsolute() è stato rinominato in PlacementScope.place() e il precedente PlacementScope.place() è stato rinominato in PlacementScope.placeRelative(). Di conseguenza, il metodo PlacementScope.place() non rifletterà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza PlacementScope.placeRelative(). (I873ac, b/162916675)

  • AlertDialog ora utilizza FlowRow per i pulsanti (I00ec1, b/161809319, b/143682374)

  • Alcune utilità di test non sono pubbliche perché non si trovano nella posizione corretta. Verrà reso pubblico in futuro. (I32ab1)

  • Riorganizzazione del codice di input del puntatore. (Ie3f45)

  • PxBounds è stato ritirato a favore di Rect. Sono stati aggiornati tutti gli utilizzi di PxBounds con rect e sono state aggiunte annotazioni di deprecazione/sostituzione appropriate per facilitare la migrazione. (I37038, b/162627058)

  • Rimozione di KeyEvent2 deprecato. Utilizza KeyEvent. (Ied2d0, b/162097587)

  • KeyEvent ha una proprietà Unicode che può essere utilizzata per ottenere il carattere Unicode generato dalla combinazione specificata di tasti e tasti meta (If3afc).

  • L'evento personalizzato DelayUp e le classi correlate sono diventati un'API di attivazione, in quanto è molto probabile che vengano modificati. (I56d6f)

  • Sono stati rimossi due PointerEventPass che non sono più necessari. (I3dd9d)

  • Aggiungi colore, ombra e TextDecoration al parametro Paragraph.paint. Questa funzione è utile per evitare la ricreazione non necessaria del paragrafo. (I81689)

Correzioni di bug

  • Sono stati rimossi i callback onFocusChanged da TextField. Utilizza Modifier.focusObserver. (I51089, b/161297615)
  • Modifier.drawBorder è stato ritirato. Utilizza invece Modifier.border. La classe di dati del bordo è stata sostituita da BorderStroke (I4257d, b/158160576)
  • Sono state rimosse le chiamate FrameManager deprecate.

    Le API di composizione interne sono state modificate per ridurre la quantità di overhead 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 un arresto anomalo che si verificava quando veniva utilizzata un'istruzione che salva lo stato all'interno del ciclo for. Ora è consentito avere la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è stata modificata in base a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • Il composable state { ... } è ora ritirato a favore di chiamate esplicite a remember { mutableStateOf(...) } per maggiore chiarezza. In questo modo si riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e si adatta al pattern by mutableStateOf() per la delega delle proprietà della classe. (Ia5727)

  • RRect è stato rinominato RoundRect per adattarsi meglio ai pattern di denominazione di Compose Sono stati creati costruttori di funzioni simili a RRect e sono stati ritirati i costruttori di funzioni RRect (I5d325)

Versione 0.1.0-dev16

5 agosto 2020

androidx.compose.ui:ui-*:0.1.0-dev16 viene ritirata. La versione 0.1.0-dev16 contiene questi commit.

Modifiche alle API

  • OnChildPositioned è stato ritirato. Utilizza OnPositioned sul figlio. (I87f95, b/162109766)
  • setViewContent è stato ritirato. Al suo posto deve essere utilizzato setContent. (I7e497, b/160335130)
  • È stata aggiunta l'API AndroidViewBinding per gonfiare e comporre le risorse di layout, in base a ViewBinding. (I081c6)
  • KeyEvent2 è sostituito da KeyEvent (I2d770, b/162097585)
  • Aggiunto il supporto per il tasto hardware Alt (I9036b)
  • FocusManager è deprecato. Utilizza invece Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource supporta gli attributi trimPath (I808fe)
  • Sposta la finestra di dialogo nell'interfaccia utente (I47fa6)
  • Sono stati rimossi due PointerEventPass che non sono più necessari. (I33ca7)
  • Implementato PointerInteropModifier che offre la possibilità di ricevere MotionEvent e interagire con Compose come se fosse un'implementazione di una visualizzazione 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 ritaglio dei tracciati nella grafica vettoriale (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 quelle esistenti sono state ritirate. (I5bcfd)
  • Modifier.plus è stato ritirato, utilizza invece Modifier.then. "Poi" ha un segnale di ordinamento più forte e impedisce anche di digitare Modifier.padding().background() + anotherModifier, che interrompe la catena e rende più difficile la lettura (Iedd58, b/161529964)
  • Aggiungi sottoclassi di [Abstract]ComposeView per ospitare contenuti di Compose in una gerarchia di visualizzazioni. (I46357)
  • Row e Column sono ora funzioni inline che riducono significativamente l'overhead del loro utilizzo. (I75c10)
  • Viene aggiunto SubcomposeLayout. È una primitiva di basso livello che consente di comporre i figli 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)
  • Aggiunta di SemanticsNode.positionInRoot per ottenere la posizione di un SemanticsNode rispetto alla radice della gerarchia di Compose (Icdf26, b/161336532)
  • MotionEvents passed all the way through from Android, into Compose, and back into Android. (I14be8, b/158034713)
  • Rimozione di dropdownPopup. (I00430)
  • Posizione fissa del popup sui display con ritaglio. (Idd7dd)
  • Aggiungi l'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
  • È stato aggiunto RemeasurementModifier. Consente di misurare nuovamente il layout in modo sincrono. In generale non è mai necessario, poiché la misurazione/il layout vengono eseguiti automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
  • Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Usa getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Aggiungi alcuni segni/annotazioni per motivi di best practice. (I66b20)
  • esporre più API di riga in TextLayoutResult. (I79bd2)
  • I convertitori vettoriali integrati per convertire le unità integrate sono ora accessibili tramite Foo.VectorConverter. Ad esempio, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273).

Correzioni di bug

  • Correzioni generali dell'API Address (I077bc)
    1. Rimuovi l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset in modo da avere una superficie API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per coerenza con l'API Offset
    4. Il metodo nativeCanvas è stato spostato dall'interfaccia Canvas per consentire ai consumatori di creare le proprie istanze Canvas
    5. È stata creata la classe stub EmptyCanvas per eseguire il refactoring di DrawScope in modo che sia un parametro non nullo anziché lateinit e garantire la non nullabilità del campo
    6. Rinominate le enumerazioni ClipOp in Pascal Case
    7. Rinominate le enumerazioni FilterQuality in Pascal Case
    8. Rinominate le enumerazioni StrokeJoin in Pascal Case
    9. Rinominate le enumerazioni PointMode in Pascal Case
    10. Rinominate le enumerazioni PaintingStyle in Pascal Case
    11. Rinomina le enumerazioni PathFillType in Pascal Case
    12. Rinomina gli enum StrokeCap in Pascal Case
    13. Implementazione di DrawCache aggiornata per non utilizzare più i parametri lateinit
    14. Aggiornamento di DrawScope per non utilizzare più la delega pigra per i parametri interni fillPaint e strokePaint
    15. Aggiornamento del composable Image per evitare l'utilizzo di Box per un overhead inferiore
    16. Aggiornamento della classe Outline per includere annotazioni @Immutable
    17. Aggiornamento di PathNode per includere annotazioni @Immutable per ogni istruzione del percorso
    18. Aggiornamento della composizione secondaria Vector per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi costruttori del componente complementare rettangolare ritirati a favore dei costruttori di funzioni
    20. Classi Brush e costruttori di funzioni aggiornati con le API @Immutable e @Stable
    21. Aggiornamento dell'enumerazione VertexMode in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto sulla pittura se sono cambiati
    23. Aggiornamento di Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
  • Consumo dell'API BlendMode di Compose aggiornato per mappare correttamente le modalità BlendMode del framework Android e PorterDuff a seconda del livello API. È stata introdotta l'API BlendMode#isSupported per fungere da query di funzionalità per determinare se BlendMode è supportato sul dispositivo prima dell'utilizzo. (I0ef42)
  • È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima del contenitore, il che risolve il caso d'uso in cui l'elemento deve riempire la finestra e il modificatore normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli infiniti. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture rimosso. Utilizza SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stato rinominato in LazyRowFor (I84f84)
  • Il pacchetto foundation.shape.corner è stato compresso in foundation.share (I46491, b/161887429)
  • AndroidComposeTestRule rinominato in createAndroidComposeRule. (I70aaf)
  • Sono state aggiunte altre API a TextLayoutResult. (Id7e04)
  • Material FilledTextField è stato rinominato in TextField e foundational TextField è stato rinominato in BaseTextField per semplificare l'individuazione 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 ritirata. 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 nella sezione Dichiarazione delle dipendenze.

Modifiche alle API

  • FocusModifier è obsoleto a favore di Modifier.focus, Modifier.focusRequester e Modifier.focusObserver. FocusState e FocusDetailedState sono ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
  • È stato aggiunto un modificatore per osservare la modifica dello stato attivo. (I05866, b/160924455, b/160923326)
  • È stato aggiunto un modificatore per richiedere modifiche dello stato attivo (I8dd73, b/161182057, b/160924778)
  • Regola il menu della barra degli strumenti per mostrare correttamente copia, taglia e incolla. (Id3955)
  • Le proprietà semantiche a valore singolo ora utilizzano uno stile di chiamata. Ad esempio, "semantics { hidden = true }" ora viene scritto come: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • È stato aggiunto Modifier.focus che sostituisce FocusModifier. (Ib852a, b/160924778)
  • Aggiungi FloatingToolbar per la selezione di TextField. (Ie8b07)
  • È stata aggiunta un'annotazione API sperimentale per l'API relativa all'input della chiave (I53c0a)
  • È stata aggiunta un'annotazione API sperimentale per tutte le API correlate alla messa a fuoco (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 dei pixel interi dal 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 ai test finder. (I2ce48)
  • 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 complementare Size.copy deprecato a favore del metodo di copia dell'istanza (Ife290, b/159905651)

  • Popup, finestre di dialogo e menu ora ereditano il tema Material contestuale (Ia3665, b/156527485)

  • TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)

  • Rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). Tuttavia, la direzione del layout è disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d).

  • Refactor SelectionHandles per il riutilizzo. (I420e0)

  • Clickable è stato rimosso. Utilizza Modifier.clickable (I84bdf)

  • TestTag e Semantics sono stati eliminati. Utilizza invece Modifier.testTag e Modifier.semantics (I15ff0, b/158841414)

  • Prima di questa modifica, il plug-in del compilatore Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)

  • Modifier.tag è stato rinominato 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 linea di allineamento richiesta non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)

  • Al composable AndroidView è stato aggiunto un parametro modificatore. (I48a88, b/158746303)

  • Semantics() è deprecato. Utilizza invece Modifier.semantics(). (I72407, b/158841414)

  • Aggiungi il composable viewModel() che consente di creare o ottenere ViewModel già creato in modo simile a come funziona in Activity o Fragment (I5fdd1)

  • Sostituito l'utilizzo di IntPx con Int. Sostituito IntPxPosition con IntOffset. IntPxSize è stato 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. In questo modo si ottengono i vantaggi di una classe inline per sfruttare un valore long per comprimere due valori float per rappresentare larghezza e altezza rappresentate come valori float. (Ic0191)

  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sul posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. In questo modo, puoi sfruttare i vantaggi di una classe inline per utilizzare un valore long per comprimere due valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)

  • È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Eliminazione dell'intera classe Px (I3ff33)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I086f4)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (Id3434)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I97a5a)

  • TestTag è ora deprecato. Utilizza invece Modifier.testTag. (If5110, b/157173105)

  • L'implementazione predefinita, no-op, di ParentDataModifier#modifyParentData è stata rimossa. Era equivalente a non implementare l'interfaccia. (I0deaa)

  • ScaleFit precedentemente deprecato come rimosso. Utilizza invece ContentScale. (Ifbc5b)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)

  • È stato aggiunto il componente DropdownMenu in ui-material, un'implementazione del menu Material Design. (I9bb3d)

  • È stato rimosso LayoutTag(), utilizza invece Modifier.tag(). È stato rimosso Modifier.matchParent(), che è deprecato. Utilizza invece Modifier.matchParentSize(). (If8044)

  • Sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I57bff)

  • Modifier.semantics è stato ripristinato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)

  • Implementazioni consolidate di CanvasScope Ora sono disponibili solo DrawScope e ContentDrawScope CanvasScope è stato rinominato DrawScope. DrawScope è stato aggiornato per implementare l'interfaccia Density e fornire LayoutDirection La sottoclasse DrawScope è stata eliminata in ContentDrawScope Painter e PainterModifier sono stati aggiornati per non mantenere più una proprietà RTL in quanto DrawScope la fornisce già senza doverla fornire manualmente (I1798e)

  • DoubleTapGestureFilter ora disambigua SingleTapGestureFilter nell'albero. (If92b1)

  • API Alignment aggiornata e aggiunto il supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto da destra a sinistra) (I38cd3)

  • L'API dei modificatori DrawLayer è stata modificata: outlineShape è stato rinominato in shape e ha il valore predefinito RectangleShape ed è ora non nullabile; 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 una tela per esporre invece CanvasScope. In questo modo i consumatori non devono più gestire i propri oggetti Paint. Per i consumatori che hanno ancora bisogno di accedere a un canvas, possono utilizzare il metodo drawCanvas dell'estensione che fornisce un callback per emettere comandi di disegno con il canvas sottostante. (I80afd)

  • L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del destinatario che, oltre a vincoli e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)

  • LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)

  • Rimossa l'interfaccia LayoutModifier deprecata. (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 secondari Layout e LayoutModifier possono essere misurati con una direzione del 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 di DrawLayerModifier è stata rinominata shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri di DrawShadow è cambiato: l'elevazione è ora il primo e la forma è il secondo con un RectangleShape predefinito. (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 interi verranno considerati come pixel come in Android.

    • È stato aggiunto anche IntSize, che alla fine sostituirà IntPxSize. (I4b43a)
  • È stato reso possibile creare istanze di Alignment con valori arbitrari. Aggiunta di allineamenti 1D. (Ia0c05)

  • alignToSiblings ora accetta un Measured anziché un Placeable. (I5788d)

  • (I45f09, b/152842521)

    • È stato cambiato il nome di ScaleFit in ContentScale
    • ContentScale è stato spostato dal modulo ui-graphics al modulo ui-core per trovarsi nello stesso modulo dell'API Alignment.
    • Rinominato FillMaxDimension in Crop
    • Rinominato FillMinDimension in Fit
    • Rinominato Adatta all'interno per una migliore corrispondenza
    • ImageView.ScaleType equivalenti
    • È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e Adatta utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER Interno utilizzato con Allineamento.Centro ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
  • Supporto RTL per i modificatori di disegno. (I0aaf9)

  • API rilasciata per gonfiare le visualizzazioni Android da XML. Per ulteriori dettagli, guarda la demo di ViewInCompose. (I42916)

  • Migliora l'API DrawModifier:

    • È stato creato l'ambito del ricevitore per draw() ContentDrawScope
    • Rimossi tutti i parametri in draw()
    • DrawScope ha la stessa interfaccia di CanvasScope
    • ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
  • Aggiunta di positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)

  • DrawLayerModifier e drawLayer() ora impostano clipToBounds e clipToOutline su false per impostazione predefinita. (I0eb8b, b/152810850)

  • LayoutResult è stato rinominato in MeasureResult. (Id8c68)

  • Aggiunta di LayoutModifier2, una nuova API per la definizione dei modificatori di layout; deprecazione di LayoutModifier (If32ac)

  • Sostituito l'operatore Modifier plus con le funzioni di estensione della fabbrica (I225e4)

  • Sono state aggiunte le proprietà translationX/Y per supportare l'offset dell'elenco di visualizzazione dei comandi di disegno per un determinato livello. Ciò è utile per spostare i contenuti in risposta ad animazioni o eventi di tocco. (I8641c)

  • Aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e il ridimensionamento intorno a un punto specifico di un livello (Icf7c3)

  • Aggiungi OnPositionedModifier e OnChildPositionedModifier per sostituire le funzioni componibili OnPositioned e OnChildPositioned. (I2ec8f)

  • Aggiunta di LayerModifier, un modificatore che consente di aggiungere un RenderNode per un layout. Consente di impostare ritaglio, opacità, rotazione, scalabilità e ombre. Questo sostituirà RepaintBoundary. (I7100d, b/150774014)

  • È stata propagata la direzione del layout dal nodo del layout principale ai nodi secondari. È stato aggiunto il modificatore della direzione del layout. (I3d955)

  • Il componente Stack supporta la direzionalità da destra a sinistra (Ic9e00)

  • Supporto iniziale per la direzione da destra a sinistra nel layout di Compose (Ia5519)

  • Density e DensityScope sono stati uniti in un'unica interfaccia. Anziché ambientDensity(), ora puoi utilizzare DensityAmbient.current. Invece di withDensity(density), usa with(density) (I11cb1)

  • È stato modificato LayoutCoordinates per fare in modo che providedAlignmentLines sia un set anziché una mappa e che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, è più facile per i modificatori modificare uno o più valori del set senza creare una nuova raccolta per ogni modificatore. (I0245a)

  • LayoutCoordinates non ha più una proprietà position. La proprietà position non ha senso se si considerano LayoutModifiers, rotazione o scalabilità. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da una LayoutCoordinate a un'altra.

    LayoutCoordinates utilizza IntPxSize per la proprietà size anziché PxSize. I layout utilizzano dimensioni in pixel interi, quindi tutte le dimensioni del layout devono utilizzare numeri interi e non valori in virgola mobile. (I9367b)

  • Miglioramenti alla superficie API dei vincoli (I0fd15)

  • È stata creata l'API CanvasScope che racchiude un oggetto Canvas per esporre una superficie API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del destinatario e le informazioni sulle dimensioni sono anche limitate ai limiti dell'inserto corrispondente. Non richiede a un consumatore di mantenere il proprio oggetto stato Paint per configurare le operazioni di disegno.

    • È stato aggiunto CanvasScopeSample ed è stata aggiornata l'app demo per includere una demo di grafica dichiarativa (Ifd86d).
  • Rimossa l'API MaskFilter inutilizzata in quanto ha un utilizzo limitato e non è ottimizzata per l'accelerazione hardware nella maggior parte dei casi d'uso (I54f76)

  • RectangleShape è stato spostato da androidx.ui.foundation.shape.* a androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Sono stati sostituiti tutti gli utilizzi di Color che accettano valori null nell'API con valori non nulli e viene utilizzato Color.Unset al posto di null (Iabaa7)

  • Introduci un parametro rect facoltativo aggiuntivo in ImagePainter per supportare il disegno di una sottosezione dell'asset immagine sottostante (I0ea9e)

  • È stato aggiunto il colore Annulla per rappresentare un valore non impostato senza racchiudere i colori in una casella. (If901a)

  • Sono stati aggiunti i metodi di estensione Canvas.rotate e Canvas.scale per utilizzare le coordinate del punto di rotazione facoltative per le trasformazioni. Questi valori predefiniti si riferiscono all'angolo in alto a sinistra della traduzione corrente del canvas.

    Inoltre, Canvas.rotateRad è stato spostato per essere un metodo di estensione per coerenza (Ibaca6)

  • È stata creata l'API PixelMap per supportare l'interrogazione delle informazioni sui pixel da un ImageAsset. (I69ad6)

  • Rinominate in toFrameworkRect/toFrameworkRectF in toAndroidRect/toAndroidRectF per corrispondere alla convenzione di denominazione per le conversioni di oggetti tra Compose e le API 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 la grafica vettoriale. Il risultato della composizione secondaria è un oggetto VectorPainter anziché un DrawModifier. Sono stati ritirati i composable DrawVector precedenti a favore di VectorPainter.

    È stata rinominata l'API Image(Painter) in PaintBox(Painter). È stato creato un composable Vector che si comporta come il composable Image, ma con un VectorAsset anziché un ImageAsset (I9af9a, b/149030271)

  • È stato rinominato Image in ImageAsset per distinguere meglio la differenza tra i dati Image e il composable Image in arrivo utilizzato per partecipare al layout e disegnare i contenuti. _Body:Metodo di estensione creato su android.graphics.Bitmap, Bitmap.asImageAsset(), per creare un'istanza di ImageAsset utile per combinare lo sviluppo di applicazioni Android tradizionali con il framework Compose (Id5bbd)

  • Aggiunta di TextDirection.Content (I48f36)

  • Aggiunto l'operatore TextDecoration.plus (I0ad1a)

  • Force viene rimosso dai valori enum TextDirectionAlgorithm (Icc944)

  • TextDirectionAlgorithm è stato rinominato TextDirection (I75ce8)

  • Implementa LongPressAndDrag per la selezione di TextField. (I17919)

  • È stato aggiunto AnnotatedString.getStringAnnotations che restituisce tutte le annotazioni all'interno dell'intervallo. (I1fa00)

  • È stato modificato il nome del pacchetto per Locale e LocaleList da androidx.ui.text ad androidx.ui.intl (I8132c)

  • Il cursore di TextField ha un'animazione lampeggiante (Id10a7)

  • Modifica API: AnnotatedString(builder: Builder) è stato rinominato in annotatedString(builder: Builder). (Ia6377)

  • Modifica API: AnnotatedString.Item viene rinominato in AnnotatedString.Range. (I2d44d)

  • Rinomina AnnotatedString.Builder.addAnnotationString in addStringAnnotation. (I5059e)

  • Ora è possibile nascondere/mostrare la tastiera software utilizzando SoftwareKeyboardController, fornito dal callback onTextInputStarted (I8dc44, b/151860051)

  • È stato aggiunto l'operatore più per (Text/Paragraph/Span)Style che delega alla funzione merge(). (Ia1add)

  • FontWeight.lerp non esegue più lo snapping. Si tratta comunque di una classe di dati. (I521c2)

  • Il costruttore FontWeight ora è pubblico e non è più una classe di dati. (Id6b1f)

  • Aggiungi getLineStart, getLineEnd, getEllipsisOffset e getEllipsisCount a TextLayoutResult (Ibc801)

  • Il modulo ui-text viene rinominato ui-text-core (I57dec)

  • Rimossa la classe Size inutilizzata perché nel modulo ui-geometry è presente una classe Size duplicata. (I1b602)

  • È stato aggiunto AdapterList, un componente di elenco scorrevole che compone e dispone solo gli elementi visibili. I problemi noti al momento includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai relativi elementi secondari. (Ib351b)

  • Aggiungi parametri di spaziatura interna, bordo, forma e sfondo a Box (I05027, b/148147281)

Correzioni di bug

  • Callback onFocusChange nei campi di testo rinominato in onFocusChanged (Ida4a1)
  • VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ScrollableColumn e ScrollableRow per un'esperienza integrata con il comportamento e i parametri di Column/Row oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose rinominato in runOnIdle (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 ViewGroup senza richiedere una nuova composizione. Per un esempio, vedi ViewInteropDemo. (I9ab0b, b/160455080)
  • Aggiunta di sortWith e removeRange a MutableVector (Icccf7)
  • Implementa i punti di manipolazione di selezione per modificare la selezione per TextField. (I27032)
  • Rimossa la classe inline Shader che conteneva la classe prevista NativeShader NativeShader è stata rinominata Shader. La classe inline Shader wrapper non ha aggiunto nulla di utile alla superficie dell'API ed era una classe inline, quindi utilizza direttamente la classe NativeShader. (I25e4d)
  • È stato eseguito il refactoring di PainterModifier per non fornire più la scalabilità in base ai vincoli specificati e al parametro ContentScale. Le implementazioni di Painter devono scalare i propri contenuti di disegno in base alle dimensioni specificate del DrawScope in cui vengono disegnati.

    È stato risolto il problema a causa del quale la bitmap della cache di VectorPainter aveva le dimensioni predefinite anziché le dimensioni specificate per il disegno.

    Aggiornamento di ImagePainter per scalare i contenuti anziché fare affidamento su PainterModifier per farlo per suo conto. (I6ba90)

  • aggiungi la funzione di primo livello withFrameNanos per la durata dell'animazione (Ie34c5)

  • L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)

  • androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono anch'essi deprecati. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)

  • È stato risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se i filtri PointerInputFilters 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 puntatore causava un arresto anomalo se i filtri PointerInputFilters venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (Iab398, b/157998762)

  • È stato eseguito il refactoring della classe Radius per renderla una classe inline. Sono stati rimossi i metodi di creazione del componente aggiuntivo a favore del costruttore di funzioni con il parametro predefinito per fare in modo che il raggio lungo l'asse y corrisponda a quello del parametro del raggio dell'asse x obbligatorio.

    Aggiornamento di DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori float separati per il raggio lungo gli assi x e y (I46d1b)

  • Il composable Recompose non è più un'astrazione utile. La maggior parte delle ricomposizioni dovrebbe avvenire in seguito alle assegnazioni di MutableState. Per qualsiasi altro elemento, ti consigliamo di utilizzare la funzione invalidate per attivare una ricomposizione dell'ambito corrente. (Ifc992)

  • È stato sostituito l'utilizzo della classe Px in varie classi Compose nell'ambito del grande refactoring per fare affidamento solo su Dp e sui tipi primitivi per i parametri dei pixel (Iede0b).

  • 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 componibile e lasciamo invariato (per lo più) il punto di chiamata.

    Ciò significa che la maggior parte della logica di comunicazione con il runtime di composizione si verifica all'inizio del corpo della funzione, anziché nel punto di chiamata.

    Questa modifica dovrebbe essere compatibile con l'origine per tutto l'utilizzo di Compose. La maggior parte degli utenti di Compose non dovrà aggiornare alcun codice a seguito di questa modifica.

    Per supportare questo lavoro, la firma JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta tre parametri. I parametri aggiuntivi sono il compositore, un numero intero "chiave" e un numero intero bitmask utilizzato per propagare i metadati attraverso le chiamate.

    Compose ora trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un sovraccarico predefinito sintetico aggiuntivo della funzione stessa, quindi questa modifica comporterà la definizione di un numero inferiore di funzioni.

    Modifiche intenzionali note del comportamento risultanti da questa operazione:

    1. Alcune chiamate verranno saltate, cosa che non sarebbe successa in precedenza
    2. Le espressioni componibili nelle espressioni degli argomenti predefiniti ora vengono gestite e sottoscritte correttamente

    Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti dei parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Ciò comporterà un minor numero di confronti in fase di runtime, ridurrà le dimensioni della tabella degli slot e aumenterà l'omissione di funzioni componibili che in precedenza non venivano omesse 2. I parametri che vengono considerati "statici" in fase di compilazione non vengono più confrontati o archiviati 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 runtime deve eseguire meno lavoro 4. I parametri di invio e ricezione inutilizzati per le funzioni non sono inclusi nella determinazione della possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.

    La maggior parte delle modifiche che causano interruzioni riguardava le API a cui si rivolge direttamente il compilatore e l'utilizzo tipico di Compose non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call was deprecated 4. Gli overload non varargs di key sono stati rimossi. Utilizza la versione vararg da ora in poi. 5. L'annotazione Pivotal è stata ritirata. Utilizza key come sostituzione. 6. ScopeUpdateScope::updateScope è stato modificato in modo da prevedere una Function3 anziché una Function1 7. restartableFunction e restartableFunctionN sono stati aggiornati per includere parametri aggiuntivi in fase di compilazione (I60756, b/143464846)

  • Sono stati rimossi i modificatori LayoutAlign ritirati. (I10877)

  • Rimozione di RepaintBoundary a favore di DrawLayerModifier (I00aa4)

  • Button, FloatingActionButton e Clickable ora hanno un parametro enabled separato. Alcuni parametri del pulsante sono stati rinominati o riordinati. (I54b5a)

  • Sostituito ButtonStyle con funzioni distinte e rimosso l'overload di testo (stringa). Consulta gli esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)

  • Modifiche che causano interruzioni all'API ambients. Per maggiori dettagli, consulta la documentazione relativa ai log e a Ambient<T> (I4c7ee, b/143769776)

  • È stato modificato il comportamento di TextDirection predefinito in modo che venga 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 AnnotatedString, il testo non viene visualizzato correttamente. (I77a9d)

  • Aggiunge parametri di uso comune a Text(). Se attualmente crei uno stile di testo locale per passare un numero ridotto di questi parametri, ad esempio Text(style = TextStyle(textAlign = TextAlign.Center)), ora puoi fornire i parametri direttamente: Text(textAlign = TextAlign.Center) (I82768)

  • Il modulo ui-android-text è stato rinominato ui-text-android (I68cbe)