Interfaccia utente di Componi

Componenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Versione alpha
13 novembre 2024 1.7.5 - - 1.8.0-alpha06

Struttura

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

Questa tabella illustra i gruppi e i link a ogni set di note di rilascio.

GruppoDescrizione
compose.animationCreare animazioni nelle loro applicazioni Jetpack Compose per arricchire l'esperienza utente.
compose.compilerTrasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in del compilatore Kotlin.
compose.foundationScrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed espandi la base per creare i componenti del tuo sistema di progettazione.
compose.materialCrea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di contatto di primo livello di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io.
compose.material3Crea interfacce utente Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You come i colori dinamici ed è progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12.
compose.runtimeComponenti di base del modello di programmazione e della gestione dello stato di Compose, nonché del runtime di base per il plug-in del compilatore Compose come target.
compose.uiComponenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input.

Dichiarazione delle dipendenze

Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

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

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Versione 1.8

Versione 1.8.0-alpha06

13 novembre 2024

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

Modifiche all'API

  • Aggiunge il modificatore stylusHoverIcon. (Iff20a, b/331289114)
  • Modifica il gestore della compilazione automatica in modo che sia un'interfaccia. (I84914, b/376080755)
  • Aggiunge requestFocus(FocusDirection) sia a focusRequester che a FocusTargetModifierNode per consentire la messa a fuoco con una direzione specifica. (I5d9ec, b/245755256)
  • FocusProperties.enter e FocusProperties.exit sono stati sostituiti da onEnter e onExit, utilizzando un ambito del ricevitore anziché il parametro FocusDirection. (I6e667)
  • È stato aggiunto il supporto della compilazione automatica nella barra degli strumenti di testo. (Ie6a4c)
  • L'API diventa Modifier.focusRestorer() (I99c03):
    • Il nome del parametro è stato modificato in "fallback"
    • Il parametro ora è FocusRequester e non lambda
    • Il parametro ora non è NULL con Default come valore predefinito
  • Rimozione dell'annotazione @Experimental dall'interfaccia di Gestione automazione. La funzionalità è ancora in fase di elaborazione per questa release, ma non vogliamo introdurre l'API @Expemiental (Id8398)
  • LocalHapticFeedback ora fornisce un'implementazione predefinita di HapticFeedback quando l'API Vibratore indica che le tecnologie aptica sono supportate. I seguenti elementi sono stati aggiunti a HapticFeedbackType: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. I componenti di Wear Compose che possono essere selezionati con un clic prolungato, come Button, IconButton, TextButton e Card, ora eseguono il feedback aptico LONG_PRESS quando è stato fornito un gestore del clic prolungato. (I5083d)
  • Rimuove OverscrollConfiguration e LocalOverscrollConfiguration e aggiunge rememberPlatformOverscrollFactory per creare un'istanza di / personalizza i parametri dell'implementazione dell'overscroll predefinita. Per disattivare lo scorrimento eccessivo, utilizza LocalOverscrollFactory provides null anziché LocalOverscrollConfiguration provides null. Per modificare il colore dell'effetto bagliore / il padding, anziché LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding), utilizza LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • È stata rimossa l'API GlobalAssertions sperimentale. L'utilizzo previsto era eseguire controlli di accessibilità. Per questo scopo, consulta enableAccessibilityChecks(). (I59322)

Versione 1.8.0-alpha05

30 ottobre 2024

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

Nuove funzionalità

La compilazione automatica è visibile dietro un flag di funzionalità in questa release. Stiamo lavorando per migliorare le prestazioni e cerchiamo feedback iniziali sulle API. Le API dovrebbero evolversi prima di diventare stabili in base al feedback.

  • Per attivare la compilazione automatica, imposta ComposeUiFlags.isSemanticAutofillEnabled su true in onCreate e utilizza l'istantanea di composizione più recente.
  • Questa versione della compilazione automatica supporta il salvataggio manuale delle credenziali, tramite Suggerisci password sicura e tramite la navigazione. Supporta anche il completamento quando un campo con compilazione automatica riceve lo stato attivo o quando la compilazione automatica viene attivata tramite la barra degli strumenti dei componenti di testo. Il componente verrà evidenziato per indicare il completamento della compilazione automatica.

Modifiche all'API

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

Correzioni di bug

  • Le visualizzazioni incorporate nella composizione ora possono ricevere eventi di rotazione se sono attive (I4d53a, b/320510084)
  • Risolto un problema per cui vari tipi di risorse non si aggiornavano in caso di modifiche alla configurazione (Ia9b99, b/352336694)
  • È stato risolto un problema che impediva il corretto funzionamento di TextField quando si utilizzava la tastiera giapponese POBox su alcuni dispositivi Sony meno recenti. (Ia9b99, b/373743376)
  • È stato risolto il problema relativo alla visualizzazione delle finestre di dialogo nella parte inferiore dello schermo anziché al centro (Ia2ec, b/373093006)
  • L'API Targeting 35 e versioni successive non impone più che le finestre di dialogo abbiano decorFitsSystemWindows impostato su false. (Ibc94, b/364492593)
  • Correzione dell'arresto anomalo quando i livelli vengono spostati tra le finestre (ad es. finestra di dialogo e contenuti principali) (I675ba, b/330955281)

Versione 1.8.0-alpha04

16 ottobre 2024

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

Modifiche all'API

  • Aggiunge i callback DelegatableNode#onDensityChange 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 un movimento in corso. Ora questi nodi annulleranno il fling e invieranno correttamente l'evento onPostFling con la velocità rimanente. Stiamo anche introducendo il flag NewNestedScrollFlingDispatchingEnabled per controllare il comportamento in caso di regressioni. L'indicatore verrà rimosso prima della versione beta. (I05c37, b/371168883)
  • È stato introdotto PointerInputModifierNode#touchBoundsExpansion, che può essere utilizzato per ingrandire i limiti di tocco di un singolo modificatore di input del cursore. (Iccf02, b/335339283)
  • Aggiunge WindowInfo#containerSize per fornire le dimensioni del contenitore dei contenuti della finestra corrente. Puoi recuperarlo utilizzando LocalWindowInfo. (I27767, b/369334429, b/360343819)
  • Rimuovi readOnly da TextFields per bloccare la versione stabile della base. (I3aaba)
  • Paragraph e ParagraphIntrinsics ora accettano un elenco di tutte le annotazioni applicate a AnnotatedString, in precedenza era presente solo un elenco di SpanStyles (I12f80)

Correzioni di bug

  • È stata aggiornata la modalità di trattamento dei paragrafi in AnnotatedString. In precedenza, era possibile creare solo paragrafi non sovrapposti. Ora AnnotatedString consente di unire paragrafi completamente sovrapposti e paragrafi nidificati, nel qual caso il paragrafo esterno verrà suddiviso in base ai limiti di quello interno e lo stile del paragrafo interno verrà unito a quello del paragrafo esterno (Ic9554)
  • Correggere l'arresto anomalo in AnnotatedString con un LinkAnnotation di lunghezza pari a zero. (89aac6)

Versione 1.8.0-alpha03

2 ottobre 2024

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

Modifiche all'API

  • Aggiornamento della versione di Kotlin alla 1.9 (I1a14c)
  • È stato introdotto un nuovo ruolo di semantica denominato Carosello per emulare il comportamento dell'elenco nei pager per i servizi a11y. (Id354b, b/354109776, b/239672673)
  • Rinomina invisibleToUser() 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 un problema per cui alcuni clip di contorni generici venivano ignorati in combinazione con le ombre di elevazione su alcune versioni di Android
  • È stato risolto il problema per cui venivano applicati clip vuoti quando veniva specificato un clip di sfondo generico su alcune versioni di Android.
  • È stata corretta un'eccezione lanciata quando l'IME è attivo in una visualizzazione esterna e l'azione Avanti viene utilizzata per inserire il focus su ComposeView. Il comportamento di clearFocus() è in linea con il comportamento della visualizzazione in API < 28, dove clearFocus() può causare il ribaltamento della visualizzazione predefinita.
  • È stato risolto un problema per cui il posizionamento avveniva su nodi scollegati in LazyList separando la gestione della composizione secondaria per diversi passaggi di layout.
  • È stato risolto un problema per cui la tastiera software tremola quando lo stato attivo passa da TextField a EditText o a qualsiasi altro editor basato su visualizzazione.
  • Ora i nodi di scorrimento nidificati inviano correttamente gli eventi onPostFling dopo essere stati scollegati.
  • Miglioramenti generali delle prestazioni

Versione 1.8.0-alpha02

18 settembre 2024

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

Modifiche all'API

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

Correzioni di bug

  • Correggi il dialogo dismissOnClickoutside (39a3d, b/364508685)
  • Non tagliare le ombre dei contenuti della finestra di dialogo (e8e2f, b/363027803)
  • Correggere il comportamento errato quando la ricerca di attivazione si sposta tra Scrittura e una visualizzazione (58377, b/350534714)

Contributo esterno

  • AlignmentLines Map ora accetta tipi concreti 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 rilasciato. La versione 1.8.0-alpha01 contiene questi commit.

Versione 1.7

Versione 1.7.5

30 ottobre 2024

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

Correzioni di bug

  • Sono stati risolti i problemi relativi al rendering non corretto dell'elevazione e del ritaglio con contorni personalizzati.
  • È stato corretto un arresto anomalo del testo che si verifica con un carattere LinkAnnotation di larghezza zero. (Ic1e2e)
  • Corregge un annuncio in Talkback del pulsante quando è creato come componente di testo selezionabile. (I1f588)

Versione 1.7.4

16 ottobre 2024

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

Versione 1.7.3

2 ottobre 2024

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

Correzioni di bug

  • È stato risolto il problema per cui la specifica di un clip di sfondo generico generava un confine del clip vuoto su alcune versioni di Android.
  • È stata corretta un'eccezione lanciata quando l'IME è attivo in una visualizzazione esterna e l'azione Avanti viene utilizzata per inserire il focus su ComposeView. Il comportamento di clearFocus() è in linea con il comportamento della visualizzazione in API < 28, dove clearFocus() può causare il ribaltamento della visualizzazione predefinita.
  • È stato risolto un problema per cui veniva utilizzato un placeOrder errato per l'invalidazione dell'anticipazione, risolvendo così un caso limite in cui il posizionamento dell'anticipazione veniva saltato.

Versione 1.7.2

18 settembre 2024

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

Correzioni di bug

  • Miglioramento delle prestazioni delle informazioni sui nodi di accessibilità e degli eventi di semantica mediante la rimozione del monitoraggio dettagliato. (I89156, b/362530618)
  • ComposeView non avrà più arresti anomali quando vengono passate dimensioni di misurazione eccezionalmente grandi (da5db, b/347036173)
  • Risolto un problema di accessibilità dello screen reader per cui non venivano annunciati i pulsanti LiveRegion. (f66fa7, b/348590026)

Versione 1.7.1

10 settembre 2024

  • Nessuna modifica agli elementi Android. Sono stati rimossi -desktop elementi e aggiunti -jvmStubs e -linuxx64Stubs elementi. Nessuno di questi target è destinato all'uso, ma sono segnaposto per supportare le attività di JetBrains Compose.

Versione 1.7.0

4 settembre 2024

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

Modifiche importanti dalla versione 1.6.0

Le modifiche importanti nella versione 1.7.0 sono descritte in questo post del blog.

Versione 1.7.0-rc01

21 agosto 2024

androidx.compose.ui:ui-*:1.7.0-rc01 viene rilasciato. La versione 1.7.0-rc01 contiene questi commit.

Modifiche significative

  • Il modulo ui:ui ora impone il requisito di una versione minima di foundation:foundation pari ad almeno 1.7.0-rc01 o successiva. Questo viene applicato per porre rimedio a un'incompatibilità di comportamento tra ui e foundation in merito alle modifiche a NestedScrollSource apportate all'inizio della versione 1.7.0-alpha01.

Versione 1.7.0-beta07

7 agosto 2024

androidx.compose.ui:ui-*:1.7.0-beta07 viene rilasciato. La versione 1.7.0-beta07 contiene questi commit.

Correzioni di bug

  • Le funzioni SemanticsNodeInteraction relative all'inserimento di testo performTextReplacement, performTextInput e performTextClearance ora genereranno 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 rilasciato. La versione 1.7.0-beta06 contiene questi commit.

Versione 1.7.0-beta05

10 luglio 2024

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

Correzioni di bug

  • È stato corretto un bug per cui la modifica della tastiera software causava il mancato accettazione dell'input della nuova tastiera da parte di TextField finché l'input non veniva perso e recuperato.
  • È stato risolto un problema per cui i tentativi di mantenere i contenuti dei livelli causavano effetti collaterali indesiderati durante il rendering con contenuti SurfaceView.

Versione 1.7.0-beta04

26 giugno 2024

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

Correzioni di bug

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

Versione 1.7.0-beta03

12 giugno 2024

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

Versione 1.7.0-beta02

29 maggio 2024

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

Modifiche all'API

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

Correzioni di bug

  • LayoutCoordinates.introducesFrameOfReference è stato rinominato in LayoutCoordinates.introducesMotionFrameOfReference per rispecchiare meglio la sua finalità. È stata rinominata la funzione correlata per calcolare le coordinate in base a questo flag. (I3a330)

Versione 1.7.0-beta01

14 maggio 2024

androidx.compose.ui:ui-*:1.7.0-beta01 viene rilasciato. La versione 1.7.0-beta01 contiene questi commit.

Modifiche all'API

  • performCustomAccessibilityActionLabelled è stato rinominato in performCustomAccessibilityActionWithLabel e performCustomAccessibilityActionWhere in performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations è diventato hasEqualAnnotations (I685c0)
  • L'API è stata aggiornata per ottenere link con temi Material nel testo. Nello specifico, sono stati rimossi i metodi dal TextDefaults per la costruzione di LinkAnnotations a tema e l'analisi del codice HTML con link a tema. È stata invece aggiunta una classe TextLinkStyles che consente di applicare uno stile ai link come parametro al composable di testo. (I31b93)

Correzioni di bug

  • Corregge ulteriori casi d'uso quando vengono aggiunti dinamicamente i modificatori di input del cursore durante gli eventi 63e1504

Versione 1.7.0-alpha08

1° maggio 2024

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

Modifiche all'API

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

Correzioni di bug

  • È stato corretto il problema di acquisizione di screenshot lunghi per i contenitori con scorrimento con reverseScrolling=true. (I7c59c)

Contributo esterno

  • È stato aggiunto il supporto per il pre-caricamento degli elementi in LazyLists nidificati (ad es. un LazyColumn che esegue il rendering di LazyRows nidificati). Questa modifica dovrebbe ridurre i cali di frame durante lo scorrimento per questi LazyLists. L'impostazione predefinita dell'implementazione è il pre-caricamento dei primi 2 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 rilasciato. La versione 1.7.0-alpha07 contiene questi commit.

Modifiche all'API

  • ClickableText è deprecato. Per aggiungere link al testo, crea un AnnotatedString con un LinkAnnotation corrispondente al link e passa questo AnnotatedString al composable di testo. (I34d4b, b/323346994)
  • Presenta 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 una query sulle coordinate del layout, ora puoi utilizzare l'argomento excludeDirectManipulationOffset per escludere l'offset impostato dai layout principali che hanno posizionato i figli utilizzando Placeable.PlacementScope.withDirectManipulationPlacement. Analogamente, un layout che modifica di frequente la posizione dei relativi elementi secondari ora può posizionarli utilizzando withDirectManipulationPlacement (ad esempio Scroll, implementato per impostazione predefinita). In questo modo, le animazioni basate su approachLayout sono più intuitive, perché ora è possibile distinguere l'offset da animare e cosa applicare direttamente quando si decide di animare l'approccio. (I60ec7)
  • Il flag della funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
  • LazyColumn ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635)
  • Le origini NestedScroll Trascina e Fling vengono sostituite da UserInput e SideEffect per supportare la definizione estesa di queste origini, che ora includono animazioni (Side Effect), rotella del mouse e tastiera (UserInput). (I40579)
  • ApproachLayoutModifierNode e Modifier.approachLayout sono ora stabili, con i nuovi isMeasurementApproachInProgress() e isPlacementApproachInProgress() che sostituiscono rispettivamente i vecchi isMeasurementApproachComplete() e isPlacementApproachComplete().
  • È stato rimosso il modificatore intermediateLayout obsoleto. (I3e91c)
  • Rinomina GraphicsLayer#buildLayer in record per rispecchiare i metodi begin/endRecording delle API supportate da Displaylist come RenderNode e Picture.
  • rememberGraphicsLayer è stato aggiornato per sfruttare rememberObserver. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation è deprecato. Utilizza LinkAnnotation.Url. Se utilizzi il tema Material, utilizza l'oggetto TextDefaults per creare l'annotazione con il tema Material applicato (I8d180, b/323346545)
  • I link di testo hanno ricevuto l'opzione di stile per lo stato premuto, oltre allo stile normale, al passaggio del mouse e allo stato attivo (I5f864, b/139312671)
  • String.parseAsHtml è stato rinominato in AnnotatedString.Companion.fromHtml. (I43dcd)
  • Sono stati aggiunti argomenti di stile (linkStyle, focusedLinkStyle, hoveredLinkStyle) e un gestore di interazioni con i link al metodo parseAsHtml. Durante l'analisi della stringa con tag HTML con tag <a>, il metodo creerà un LinkAnnotation.Url per ogni tag di questo tipo e passerà gli oggetti di stile e l'ascoltatore di interazioni con i link a ogni annotazione. (I7c977)
  • LinkAnnotation ora accetta gli argomenti di stile basati sullo stato e un LinkInteractionListener. Aggiungi questa annotazione al AnnotatedString per ottenere un link ipertestuale. Passando focusedState e/o hoveredState puoi definire l'aspetto configuration dei link quando sono attivi e/o quando il mouse passa sopra. (I81ce4, b/139312671)
  • ImeOptions.hintLocales non è più nullable. Se vuoi passare un elenco di lingue vuoto, utilizza LocaleList.Empty. (Ic5bc4)

Correzioni di bug

  • Gestisce in modo corretto i dati sugli eventi di input storici errati/corrotti (ignora i dati sugli offset errati).
  • Corregge gli eventi del cursore imprevisti quando un modificatore di input del cursore viene aggiunto dinamicamente prima di un altro modificatore di input del cursore durante uno stream di eventi di input del cursore attivo (ad esempio tra un evento di ingresso e un evento di uscita del passaggio del mouse [mouse/penna]).

Versione 1.7.0-alpha06

3 aprile 2024

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

Nuove funzionalità

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

Modifiche all'API

  • fun ClipEntry.getMetadata() viene 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 corrente. Controlla anche il risultato di ClipboardManager.getClip per capire se è nullo o meno per capire se gli appunti contengono un clip corrente. (I50498)
  • Ora puoi passare oggetti GraphicsLayer alle funzioni placeable.placeWithLayer() (I1b22f)
  • ClipboardManager.setClip ora accetta null per poter svuotare la clipboard. (I7d2e9)
  • Sono stati aggiunti ID risorsa per aiutare a nascondere le visualizzazioni utilizzate come dettagli di implementazione all'interno degli strumenti di compilazione (I99531)
  • È stato aggiunto il metodo di sospensione GraphicsLayer#toImageBitmap per supportare il rendering dei contenuti di una bitmap in un GraphicsLayer. Si tratta di un'operazione di rendering con accelerazione hardware a partire dal livello API 22 (incluso), supportata da oltre il 99% di tutti i dispositivi Android. Sul livello API Android 21, viene eseguito il rendering software di riserva. (I9e114)
  • Metodo di assistenza per convertire un RectF Android in ComposeRect (I39925, b/325660505)
  • Tutti i parametri KeyboardOptions ora hanno un valore non specificato per impostazione predefinita. Metodo KeyboardOptions.merge aggiunto.
  • Il campo KeyboardOptions.autoCorrect è stato rinominato in autoCorrectEnabled e impostato come nullable, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492)
  • La variante 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 rilasciato. La versione 1.7.0-alpha05 contiene questi commit.

Nuove funzionalità

  • È stata introdotta la nuova API GraphicsLayer per registrare i comandi di disegno in un elenco di visualizzazione, nonché proprietà aggiuntive che influiscono sul rendering dell'elenco di visualizzazione. Questo fornisce un confine di isolamento per suddividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a un GraphicsLayer possono essere eseguite senza registrare di nuovo l'elenco di visualizzazione. A differenza di Modifier.graphicsLayer, GraphicsLayer consente il rendering dei contenuti composibili altrove ed è utile nei casi d'uso animati in cui i contenuti devono essere visualizzati in scene diverse.

Modifiche all'API

  • GraphicsLayer.draw(Canvas) non è più un'API pubblica. Utilizza invece la funzione di estensione DrawScope.drawLayer(GraphicsLayer) per disegnare il livello. (I7a7c0)
  • Suddividi 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 una composizione locale GraphicsContext insieme all'aggiornamento delle implementazioni di Owner, DelegateableNode e drawWithCache Modifier per esporre l'accesso a GraphicsContext per l'accesso basato sugli ambiti che pulirà automaticamente le istanze GraphicsLayer quando i modificatori vengono smantellati. (I64a2f, b/288494724)
  • È stato introdotto InterceptPlatformTextInput per aiutare a scrivere test di basso livello relativi all'IME e altri casi d'uso di basso livello dell'IME. PlatformTextInputTestOverride è stato deprecato. (I862ed, b/322680547)
  • È stata aggiunta la funzione di estensione GraphicsLayer.setOutline(Outline). (Ib81f4)
  • Introduzione del costruttore di funzioni GraphicsContext per creare una factory per creare istanze GraphicsLayer (Ib98d6, b/288494724)
  • È stata esposta l'API GraphicsLayer per offrire agli sviluppatori la flessibilità di acquisire comandi di disegno che possono essere utilizzati per disegnare altrove e applicare anche diversi effetti visivi al risultato finale. (I80245, b/288494724)
  • Inserisci Paragraph#getRangeForRect che restituisce un intervallo di testo coperto da una determinata area rettangolare. (Iee516, b/325660505)
  • È stata rimossa l'override sperimentale di BasicText con l'argomento onLinkClicked. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)

Correzioni di bug

  • È stata aggiunta la definizione dell'API GraphicsLayer expect/actual per supportare l'acquisizione e la riproduzione dei comandi di disegno con effetti visivi di composizione e trasformazioni facoltativi. Introduzione dell'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 dell'attenzione 1D, in cui lo stato attivo rimaneva bloccato all'interno di un ComposeView incorporato tra altre visualizzazioni. (I08fd4)

Contributo esterno

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

Versione 1.7.0-alpha04

6 marzo 2024

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

Modifiche all'API

  • Supporto della funzionalità di scrittura a mano libera con lo stilo per BasicTextField2 sui dispositivi successivi ad Android U. (I002e4)
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength per poter inviare al sistema a11y informazioni sui componenti su cui si scorre in composizione. Questo CL applica l'utilizzo di questa proprietà anche agli elenchi scorrevoli di Foundation. (Ic5fa2)
  • FocusRequester.createRefs è ora stabile (I4d92c, b/261436820)
  • È stato introdotto DelegatableNode.requireView() per consentire ai nodi di modifica di ottenere l'View Android corrente senza leggere una composizione locale. (I40768)
  • Nuova API Path.reverse() per invertire la direzione di un percorso (I36348)
  • È stato aggiunto hintLocales a KeyboardOptions per fornire a TextFields la possibilità di suggerire agli IME con impostazioni internazionali specifiche di preimpostare una lingua preferita.
  • Esponi la proprietà platformLocale da 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 rilasciato. La versione 1.7.0-alpha03 contiene questi commit.

Modifiche all'API

  • Ti presentiamo ContextualFlowRow e FlowRow/Column avanzati con MaxLines e Overflow. Siamo lieti di annunciare i miglioramenti apportati a FlowRow e FlowColumn sperimentali, che ora supportano maxLines e overflow, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti ottimizzati per le prestazioni, dove ContextualFlow* è perfetto per un numero elevato di elementi che utilizzano una piccola configurazione maxLines e pulsanti dinamici +N per visualizzare altri elementi, 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 si adattino all'asse trasversale massimo, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Consulta ContextualFlowRowSample e FlowRowSample per esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
  • Aggiungi la proprietà di semantica maxTextLength che deve essere impostata sui campi di testo che filtrano il numero massimo di caratteri consentiti. (I24d9f, b/170648072)
  • Il wrapper Modifier.inspectable è stato deprecato. Questa API crea più invalidazioni del modificatore del necessario, pertanto il suo utilizzo è sconsigliato. Gli sviluppatori sono invitati a implementare il metodo inspectableProperties() su ModifierNodeElement se vogliono esporre le proprietà dei modificatori agli strumenti. (Ib3236)
  • Nuovo costruttore per PopupProperties che consente il controllo completo sui flag WindowManager.LayoutParams. (Ibb33e, b/312485503)
  • È stato introdotto DelegatableNode.requireLayoutCoordinates() come modo per ottenere il LayoutCoordinates corrente di un Modifier.Node senza dover sostituire onPlaced e memorizzare autonomamente le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere il LayoutCoordinates corrente di un Modifier.Node senza dover sostituire onPlaced e memorizzare autonomamente le coordinate in una proprietà. (Iaebaa)
  • BasicTextField2 e le API correlate nel pacchetto androidx.compose.foundation.text2 vengono spostate 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 inoltre aggiunta una nuova API DeferredTargetAnimation sperimentale per le animazioni il cui target è sconosciuto al momento dell'inizializzazione. (I60745)
  • Nuove API Path per eseguire query sulla direzione di un percorso ed estrarre i contorni da un Path. (I63d04)
  • Sono stati aggiunti PathHitTest e Path.contains(Offset) per verificare se un Path contiene un punto specifico. (I3b218)
  • TextLayoutResult ora espone il metodo getLineBaseline(lineIndex). In questo modo è possibile leggere la linea di base di una riga arbitraria del testo, oltre alle proprietà di utilità 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 relativo a 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 rilasciato. La versione 1.7.0-alpha02 contiene questi commit.

Modifiche all'API

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

Correzioni di bug

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

Modifiche all'API

  • È stato esteso 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 test, ad esempio per specificare dimensioni, lingua, direzione del layout, scala dei caratteri o tema disponibili.

Versione 1.6

Versione 1.6.8

12 giugno 2024

androidx.compose.ui:ui-*:1.6.8 viene rilasciato. La versione 1.6.8 contiene questi commit.

Correzioni di bug

  • Sono state corrette le incoerenze nella scalabilità dei caratteri quando la scala dei caratteri è inferiore alla tabella più bassa definita. In questo caso, ora interpoliamo tra la scala lineare 1x e la tabella definita più bassa, in modo che le dimensioni dei caratteri aumentino in modo monotono con l'aumento delle scale. (Icbae3)

Versione 1.6.7

1° maggio 2024

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

Versione 1.6.6

17 aprile 2024

androidx.compose.ui:ui-*:1.6.6 viene rilasciato. La versione 1.6.6 contiene questi commit.

Correzioni di bug

  • Corregge un raro arresto anomalo di BasicTextField.

Versione 1.6.5

3 aprile 2024

androidx.compose.ui:ui-*:1.6.5 viene rilasciato. La versione 1.6.5 contiene questi commit.

Versione 1.6.4

20 marzo 2024

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

Versione 1.6.3

6 marzo 2024

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

Versione 1.6.2

21 febbraio 2024

androidx.compose.ui:ui-*:1.6.2 viene rilasciato. La versione 1.6.2 contiene questi commit.

Versione 1.6.1

7 febbraio 2024 androidx.compose.ui:ui-*:1.6.1 viene rilasciato. La versione 1.6.1 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema di compatibilità con le versioni precedenti relativo a SemanticsPropertyReceiver.performImeAction e SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946)
  • Ora i layout generano un errore durante la misurazione quando uno restituisce una dimensione anormalmente grande. Questo tipo di errore si verifica in genere quando la misurazione utilizza direttamente i vincoli massimi senza verificare la presenza di Constraints.Infinity. Il controllo aiuterà gli sviluppatori a trovare i problemi relativi alle dimensioni errate del layout anziché in un layout che lo contiene. (I339a9)

Versione 1.6.0

24 gennaio 2024

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

Versione 1.6.0-rc01

10 gennaio 2024

androidx.compose.ui:ui-*:1.6.0-rc01 viene rilasciato. La versione 1.6.0-rc01 contiene questi commit.

Correzioni di bug

  • Implementazione ottimizzata della grafica vettoriale per migliorare le prestazioni riducendo al minimo le ricostruzioni aggiuntive.

Versione 1.6.0-beta03

13 dicembre 2023

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

Nuove funzionalità

  • Ora è possibile scollegare un LayoutCoordinates senza scollegare il nodo. Evita questo problema nello strumento di controllo del layout di Compose (If693)

Correzioni di bug

  • PlatformImeOptions ora è una classe concreta anziché un'interfaccia. (If40a4)
  • Sono state corrette le ricostruzioni aggiuntive a valle causate dal fatto che a LocalSoftwareKeyboardController e LocalTextInputService venivano forniti nuovi valori ogni volta che veniva eseguita una ricostituzione della radice. (I42190, b/310510985)

Versione 1.6.0-beta02

29 novembre 2023

androidx.compose.ui:ui-*:1.6.0-beta02 viene rilasciato. La versione 1.6.0-beta02 contiene questi commit.

Versione 1.6.0-beta01

15 novembre 2023

androidx.compose.ui:ui-*:1.6.0-beta01 viene rilasciato. La versione 1.6.0-beta01 contiene questi commit.

Modifiche all'API

  • Il modificatore DragAndDropTarget ora prende in modo esplicito il DragAndDropTarget di ricezione e ha un 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 in modo da essere rappresentato come numero decimale. La documentazione è stata aggiornata per maggiore chiarezza in merito all'unità maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart nella fabbrica DragAndDropModifierNode è stato rinominato in acceptDragAndDropTransfer.acceptsDragAndDropTransfer è stato aggiunto al modificatore dragAndDropTarget per accettare da una sessione di trascinamento. Questa funzione lambda restituisce un DragAndDropTarget valido se ti interessa una sessione di trascinamento. Altri lambda per l'elaborazione degli eventi di trascinamento sono stati sostituiti da questo. È stata aggiunta una funzione di fabbrica DragAndDropTarget per ricevere dalle sessioni di trascinamento (Iebf3a)
  • DragAndDropInfo è stato rimosso come tipo. DragAndDropModifierNode.drag ora accetta i parametri per la lambda DrawScope transferData, la dimensione della decorazione e la decorazione trascinata

    DragAndDropTarget ha metodi per eventi di trascinamento specifici 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 è stato rinominato in establishTextInputSession. (I03cd0)

  • Migliora i nomi dell'API dei nodi percorribili 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 questo) 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)

  • Sono stati rimossi FocusDirection.In e FocusDirection.Out, utilizza invece FocusDirection.Enter e FocusDirection.Exit (I2f660)

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

  • Il costruttore FontStyle(int) è deprecato. 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 è attivo alcun editor di testo. (I2165a, b/301477279)
  • Gli eventi di tasti hardware Up per i tasti che non hanno ricevuto un evento Down nella stessa visualizzazione di composizione verranno ora ignorati. (Ib37b4, b/305518328)
  • È stato aggiunto il supporto del renderer per il gradiente a scorrimento in ArcLine. (I4d5bb)
  • Implementa equals e hashcode per PageSize.Fixed. (Ie3ede, b/300134276)
  • Risolvere il problema di compatibilità binaria con la modifica dell'Inserimento finestra (Iee695)
  • Rimuovi il livello di base del materiale per il chip/pulsante Material3, poiché i microbenchmark mostrano un rendimento migliore senza questo livello. (I55555)
  • I TestDispatcher passati come effectContext ai test di composizione verranno ora utilizzati per creare i test e i frame dei clock. (Ia7178)

Versione 1.6.0-alpha08

18 ottobre 2023

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

Modifiche all'API

  • La funzione lambda onDrawDragShadow di Modifier.dragAndDrawSource è stata rinominata drawDragDecoration e il parametro size di DragAndDropInfo è stato rinominato dragDecorationSize. (Id0e30, b/303904810)
  • Inserisci SemanticsNodeInteraction.isDisplayed() e SemanticsNodeInteraction.isNotDisplayed() per verificare se un nodo corrispondente è visibile o meno senza eseguire anche un'affermazione al riguardo. (I2c196, b/302100809)
  • È stato introdotto un valore Unspecified speciale per i campi TextAlign, TextDirection, Hyphens e LineBreak di ParagraphTextStyle per sostituire null. Poiché queste classi sono classi in linea, sostituendo nullable con Unspecified, evitiamo la boxing del tipo primitivo. I costruttori, i getter e altri metodi in TextStyle e nello stile di paragrafo sono stati aggiornati in modo da accettare i parametri menzionati come tipi non null. (I4197e, b/299490814)
  • Aggiungi il sovraccarico GoogleFont per la lettura di un GoogleFont da XML. (If8f59)
  • Ho 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 di Fragment gonfiate includendo un FragmentContainerView nel layout come parte del suo onRelease utilizzando commitNow (anziché il commit utilizzato in precedenza), risolvendo così i problemi relativi al metodo di modifica in tempo reale con la sostituzione della composizione in caso di modifiche. (I58fbf)

Versione 1.6.0-alpha07

4 ottobre 2023

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

Modifiche all'API

  • È stato introdotto PlatformTextInputMethodTestOverride per scrivere test per gli editor di testo personalizzati. (Id159b)
  • Aggiunge il modificatore dragAndDropSource per avviare le sessioni di trascinamento e il 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 dei caratteri non lineari. Imposta DisableNonLinearFontScalingInCompose = true nei test se hai bisogno di tempo per ripulire. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)

Correzioni di bug

  • Analisi ottimizzata degli elementi XML drawable vettoriali. (Ibb015)

Versione 1.6.0-alpha06

20 settembre 2023

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

Modifiche all'API

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

Modifiche al comportamento

  • Ora Scrivi utilizza il ridimensionamento dei caratteri non lineari per una migliore leggibilità e accessibilità. Quando la scala dei caratteri è superiore al 100% nelle impostazioni di sistema, le dimensioni del testo piccolo aumentano normalmente, ma quelle del testo già grande aumentano solo leggermente. Inoltre, le altezze delle righe definite in SP verranno regolate automaticamente in modo da rimanere proporzionali all'altezza prevista della scala del 100%. Per ulteriori informazioni, consulta le best practice per la scalabilità dei caratteri. (I11518)

Versione 1.6.0-alpha05

6 settembre 2023

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

Modifiche all'API

  • Attiva l'acquisizione di contenuti in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Le velocità di lancio 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 a RotaryScrollEvent (Iba3bf)
  • Aggiornamento dell'API ui-tooling Devices per includere i dispositivi più recenti (Ib25b4)

Versione 1.6.0-alpha04

23 agosto 2023

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

Modifiche all'API

  • È stato aggiunto un metodo per disattivare ReusableComposition, rimuovendo le osservazioni, ma mantenendo invariati i nodi. La composizione disattivata può essere riattivata chiamando setContent. (Ib7f31)
  • Aggiungi l'interfaccia ReusableComposition per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
  • Modifier.focusGroup è stato promosso ad API stabili. (I7ffa3)
  • Sono state aggiunte annotazioni androidx a varie API di grafica per specificare ColorInt, FloatRange, IntRange, Size e altro ancora. (I70487, b/290950582)
  • L'API ColorFilter è stata aggiornata in modo da avere tipi di sottoclassi concreti per una maggiore ispezionabilità dei parametri. (I5fe29)
  • Introduzione della libreria wear-tooling-preview per elencare i dispositivi Wear validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
  • È stata creata l'interfaccia FontScalable per gestire la parte di ridimensionamento dei caratteri dell'interfaccia Density. (I2cf3f)

Versione 1.6.0-alpha03

9 agosto 2023

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

Modifiche all'API

  • Nuovo tipo di transizione di entrata/uscita che ridimensiona i contenuti in base alle dimensioni del contenitore animato durante l'animazione di entrata e uscita. LookaheadScope L'interfaccia e la funzionalità Composable sono ora stabili. (Ifb2ce)
  • È stato aggiunto il supporto per la configurazione di privateImeOptions (Idb772)

Correzioni di bug

  • PopupPositionProvider.calculatePosition ora aggiorna automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547)
  • È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando readOnly è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quando readOnly veniva modificato da true a false quando era attivo. (I34a19, b/246909589)
  • Applicazione espansa delle asserzioni globali nei test dell'interfaccia utente. (I1f90d)

Versione 1.6.0-alpha02

26 luglio 2023

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

Modifiche all'API

  • È stata aggiunta un'interfaccia di ricerca dei servizi che può essere implementata dagli implementatori della composizione e che consente a un'implementazione della composizione di delegare a un'altra composizione la ricerca dei servizi delegati alla composizione originale. Non deve essere chiamato direttamente e viene utilizzato per abilitare la creazione di API sperimentali nel runtime che possono essere trovate nelle versioni con wrapping del compositore, come il modulo UI. (I296b9)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. Anche LocalSoftwareKeyboardController è ora un CompositionLocal corretto. (I4c364)
  • LookaheadLayout e LookaheadLayoutScope sono stati ritirati da alcune release e ora sono stati rimossi. Le API sostitutive sono LookaheadScope e possono funzionare con qualsiasi layout. (I12ac3)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più pratico e rilevabile per richiedere lo stato attivo nei test. (Ie8722)
  • Aggiunta di API sperimentali per la registrazione di asserzioni globali, da utilizzare in futuro dai framework di test. (I12d77)

Correzioni di bug

  • La prima chiamata del callback update di AndroidView verrà ora posticipata fino all'attacco 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 rilasciato. La versione 1.6.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Supporta l'anticipazione in LazyList. In questo modo, LazyList nel passaggio di look-ahead può ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi, AnimatedVisibility e così via) e calcolare le dimensioni e la posizione del look-ahead per tutti gli elementi secondari. Dopo il passaggio di sguardo avanti, i figli di LazyList potrebbero animarsi indipendentemente dalla realtà vista nel passaggio di sguardo avanti.

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

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

includeFontPadding è un attributo precedente che controlla se includere o meno una spaziatura interna aggiuntiva sopra la prima e l'ultima riga del testo per adattarsi a eventuali caratteri che potrebbero estendersi sopra o sotto le linee di base del testo.

L'aggiornamento di questa versione di Componi modificherà il modo in cui tutti i testi vengono visualizzati nell'interfaccia utente rimuovendo il rivestimento extra sopra la prima e l'ultima riga di ogni testo visualizzato.

A seconda dei requisiti dell'interfaccia utente e delle metriche dei caratteri in uso, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare blocchi come: - Test di screenshot non funzionanti. Correggi l'interfaccia utente, se necessario, e rigenera le immagini di riferimento. - Il testo è leggermente fuori allineamento. Rimuovi eventuali spaziatura interna personalizzata negativa o aggiungi spaziatura interna, se necessario.

Puoi attivare includeFontPadding utilizzando PlatformTextStyle per ogni testo:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

Puoi attivare includeFontPadding per tutti i tuoi testi configurando gli stili Material. Tieni presente che i nomi dei parametri variano tra M2 e M3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /**/,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /**/
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

Puoi scoprire di più su Compose includeFontPadding nella documentazione per gli sviluppatori e in questo post del blog.

Se riscontri problemi/bug relativi a questa modifica, segnalali utilizzando il tracker dei problemi.

Modifiche all'API

  • Supporto InputConnection#requestCursorUpdates (I0c69b)
  • Aggiunti FocusRequester.saveFocusedChild e FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Aggiungi il tipo ResourceResolutionException per avvolgere gli oggetti da lanciare lanciati durante il tentativo di caricare asset bitmap con una descrizione del percorso dell'asset di cui non è stato possibile il caricamento. (I19f44, b/230166331, b/278424788)
  • Accessibilità ottimizzata per le prestazioni e le allocazioni di memoria. (Iede48)
  • Sono state aggiunte proprietà e azioni di semantica per supportare la traduzione del testo. (I4a6bc)
  • Nuova proprietà in IntrinsincMeasureScope e le relative implementazioni (ad es. MeasureScope) per indicare se il passaggio di misura corrente è un passaggio di look-ahead. (I7a812)
  • È stata aggiornata l'API DrawScope per introdurre la possibilità di eseguire il retargeting del rendering in un'area dell'immagine diversa con dimensioni e densità/direzione del layout alternative.
  • DrawContext è stato aggiornato per supportare la configurazione della densità e dell'orientamento del layout, oltre a rendere configurabile la tela. (Ie1f9b, b/225408150)
  • È stato aggiunto Paragraph#fillBoundingBoxes per calcolare i riquadri di delimitazione dei caratteri. (If30ee)
  • È stato aggiunto un insieme di MultiPreviews comuni (Ia5a27)

Correzioni di bug

  • È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (I9790e)
  • I parametri fallback* del costruttore TextMeasurer sono stati rinominati in default*. (I940a5)
  • SemanticsPropertyReceiver.performImeAction è stato rinominato in onImeAction e SemanticsActions.PerformImeAction in OnImeAction. (I8e841)
  • Aggiunge il parametro Wheel per distinguere uno scorrimento del mouse da un trascinamento nello scorrimento nidificato (in particolare in NestedScrollConnection). (Ie57e4)
  • È stata aggiunta l'API asComposePaint per sostituire toComposePaint, poiché l'oggetto restituito racchiude l'android.graphics.Paint originale (I22b4c)
  • Ritira SemanticsProperties.imeAction e sostituiscilo con un nuovo parametro SemanticsActions.performImeAction. (I4a587)
  • È stato aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271)
  • I metodi Paragraph che in precedenza generavano un'eccezione AssertionError per gli offset fuori intervallo ora generano un'eccezione IllegalArgumentException, come fa MultiParagraph. (I549d3, b/243338896)

Versione 1.5

Versione 1.5.4

18 ottobre 2023

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

Versione 1.5.3

4 ottobre 2023

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

Correzioni di bug

  • (b/301209788) A volte TextField applicava erroneamente i comandi precedenti quando si metteva a fuoco e si inseriva l'input coreano, con la conseguente perdita di caratteri.

Versione 1.5.2

27 settembre 2023

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

Correzioni di bug

  • È stata aggiunta una soluzione alternativa per i crash quando si accedeva all'API di scorrimento dell'accessibilità dal thread in background.
  • Correggere l'aggiunta di nodi non collegati all'albero della semantica.

Versione 1.5.1

6 settembre 2023

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

Correzioni di bug

  • È stato corretto il problema relativo alla visualizzazione della tastiera e alla modificabilità dei campi di testo quando readOnly è true. È stato inoltre corretto il problema per cui la tastiera non veniva visualizzata quando readOnly veniva modificato da true a false quando era attivo. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

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

Versione 1.5.0-rc01

26 luglio 2023

androidx.compose.ui:ui-*:1.5.0-rc01 viene rilasciato. La versione 1.5.0-rc01 contiene questi commit.

Correzioni di bug

  • È stato 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 rilasciato. La versione 1.5.0-beta03 contiene questi commit.

Correzioni di bug

  • È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6)
  • È stato risolto un problema relativo ai composabili Dialog e Popup che poteva comportare il mancato ridimensionamento della finestra secondaria come previsto quando usePlatformDefaultWidth=true. (I112ee)

Versione 1.5.0-beta02

7 giugno 2023

androidx.compose.ui:ui-*:1.5.0-beta02 viene rilasciato. La versione 1.5.0-beta02 contiene questi commit.

Modifiche all'API

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

Correzioni di bug

  • È stata aggiunta l'API asComposePaint per sostituire toComposePaint, poiché l'oggetto restituito racchiude l'android.graphics.Paint originale (I22b4c)

Versione 1.5.0-beta01

24 maggio 2023

androidx.compose.ui:ui-*:1.5.0-beta01 viene rilasciato. La versione 1.5.0-beta01 contiene questi commit.

Modifiche all'API

  • Sono state rimosse le allocazioni in ricreazione, animazioni a colori e AndroidComposeView (Ib2bfa)
  • Aggiunge la funzione di assistenza CacheDrawModifierNode() per consentire la delega (Icf8f9)
  • È stata introdotta la proprietà isLookingAhead, accessibile da MeasureScope, per osservare i risultati di look-ahead e, se lo si desidera, influenzare il passaggio principale. (Ibf4c3)
  • Nuova proprietà di semantica traversalIndex, un valore float utilizzato per riordinare i nodi durante il traversale di TalkBack (i valori più bassi vengono visualizzati prima). (I9a81b, b/186443263)
  • Ridenominazione della proprietà Semantics da isContainer a isTraversalGroup (I121f6)
  • ColorProducer ora ha un operator fun invoke anziché un produce (I4a9a2)
  • Aggiungi l'API di trasformazione Path per applicare trasformazioni di traslazione/scala/rotazione agli oggetti percorso. (I23434, b/233772232)
  • Il metodo di ColorProducer si chiama produce. (I78bde)
  • Rinomina toFrameworkColorSpace in toAndroidColorSpace (I4f547)
  • Rinomina ColorLambda in ColorProducer. (I73b1a)
  • Introduzione di API per la conversione tra i tipi di spazi di colore Android e Compose. (Ie7db4, b/279979665)
  • È stato aggiunto un parametro di colore a BasicText per consentire di animare o impostare il colore del testo in modo efficiente. (Iffd88, b/246961787)
  • TextRange.constrain rinominato in TextRange.coerceIn. (I31be2)
  • È stato aggiunto TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787)
  • Sono state stabilizzate molte API di testo, tra cui Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding non è più deprecato. La nostra intenzione originale era rimuovere il campo, ma i feedback indicano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, viene rimossa la ritirata dal campo (I98e96, b/277703184)
  • È stato aggiunto il metodo pubblico TextRange.constrain. (I97912)
  • Ora i UrlAnnotation in AnnotatedString possono essere aperti tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta l'azione di semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Il costruttore LineHeightStyle.Alignment(topRatio) viene promosso all'API stabile. (I79c32, b/261565383)
  • TextMeasurer e le API correlate non sono più sperimentali. (I74647, b/261581753)
  • È stata aggiunta l'azione di semantica PerformImeAction per richiamare l'azione IME sui nodi dell'editor di testo. (Ic606f, b/269633506)
  • Le API PlatformTextInput non sono più sperimentali per Android. (I668eb)
  • Il nome del parametro value per Enum.valueOf è stato modificato (Ia9b89)
  • Altre eccezioni lanciate da valueOf dell'enum (I818fe)
  • È stata introdotta una nuova API PlatformTextInputAdapter di basso livello per la creazione di implementazioni di input di testo personalizzati che comunicano direttamente con le API di piattaforma. (I58df4)
  • È stato aggiunto il parametro BlendMode ai 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 ridenominazione. (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 tipi lambda senza casella per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)

Correzioni di bug

  • Sono state rimosse più allocazioni nel monitoraggio della velocità del cursore (I26bae)
  • Riduzione delle allocazioni nella gestione dell'input del layout e del cursore (I5333a)
  • Ottimizza l'utilizzo della memoria di Vector e il rendering dei primi frame (I2f3c6)
  • Sono state rimosse le allocazioni quando si disegnano linee e punti con Canvas (I9f535)
  • Aggiungi documenti per AndroidFont.fontVariationSettings (I7d9e2)

Contributo esterno

  • Prestazioni migliorate e riduzione delle allocazioni nelle API Vector (I906cb)

Versione 1.5.0-alpha04

10 maggio 2023

androidx.compose.ui:ui-*:1.5.0-alpha04 viene rilasciato. La versione 1.5.0-alpha04 contiene questi commit.

Nuove funzionalità

  • Modifier.Node Miglioramenti alla delega È stata aggiunta la possibilità avanzata di delegare ad altre istanze Modifier.Node da un DelegatingNode. Questa operazione può essere eseguita con le API delegate e undelegate. Prima di questa modifica, ogni API del nodo del mittente doveva essere delegata esplicitamente al nodo del destinatario. Dopo questa modifica, le interfacce dei nodi verranno delegate implicitamente, a meno che DelegatingNode non le sostituisca esplicitamente. (67352bc)

Modifiche all'API

  • Presenta NestedScrollModifierNode, un NestedScroll Modifier.Node a cui è possibile delegare. (I69513)
  • Sono stati aggiunti i parametri onReset e onRelease al composable AndroidViewBinding, che rispecchia il composable AndroidView e abilita il supporto per il riutilizzo della visualizzazione con ViewBinding. (I00b1e, b/276802519)
  • L'API Compose Path è stata aggiornata per supportare le operazioni di riavvolgimento al fine di supportare i casi d'uso di manipolazione frequente dei percorsi con un riutilizzo più rapido. (I7b797)
  • È stato aggiunto TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787)
  • Sono state stabilizzate molte API di testo, tra cui Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding non è più deprecato. La nostra intenzione originale era rimuovere il campo, ma i feedback indicano che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, viene rimossa la ritirata dal campo (I98e96, b/277703184)

Correzioni di bug

  • È stata corretta la regressione per cui la tastiera non veniva visualizzata per i campi di testo all'interno delle finestre di dialogo non create dal composable Dialog. (I82551, b/262140644)

Versione 1.5.0-alpha03

19 aprile 2023

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

Nuove funzionalità

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

Modifiche all'API

  • Il nuovo intermediateMeasurePolicy predefinito che riutilizza il criterio di misurazione dal passaggio di previsione consente ai sottotipi SubcomposeLayout senza slot condizionali, come Scaffold, TabRow e BoxWithConstraints, di funzionare con la previsione per impostazione predefinita. (Id84c8)
  • Ora il ricostruttore creato per una finestra Android bloccherà solo le chiamate a withFrameNanos anziché a tutte le composizioni quando riceve una notifica ON_STOP. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche dei dati, ma le animazioni o qualsiasi altro chiamante di withFrameNanos verranno bloccate. (Id9e7f, b/240975572)
  • Modifica motionEventSpy in stabile. (Ic5ec4, b/261560988)
  • È stato aggiunto il metodo pubblico TextRange.constrain. (I97912)
  • PlatformTextStyle.includeFontPadding non è più deprecato per incoraggiare gli sviluppatori a utilizzare questa API di compatibilità per attivare e testare l'impostazione includeFontPadding false. (I98e96, b/277703184)

Versione 1.5.0-alpha02

5 aprile 2023

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

Modifiche all'API

  • Nuova API SubcomposeLayout che accetta un criterio di misurazione intermedio aggiuntivo per gestire la logica di misurazione/layout durante le animazioni basate su lookahead. (I017d3)
  • Ora PointerInput è lazy e utilizza Modifier.Node per un rendimento migliore (scopri la modifica minore del comportamento). (15dab9)
  • Consente di passare dalle API sperimentali a quelle stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368)
  • Le API sperimentali diventano stabili a PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Aggiunge un modo per creare un'istanza di SuspendingPointerInputModifierNode per implementazioni di Modifier.Node più complesse. (Ic4933)
  • Ora i UrlAnnotation in AnnotatedString possono essere aperti tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081)
  • È stata aggiunta un'API per intercettare le chiavi hardware prima che vengano inviate alla tastiera virtuale (I4f4c6, b/186800395)
  • È stata aggiunta l'azione di semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test relative al testo (ad es. performTextInput) ora richiederanno direttamente lo stato attivo, utilizzando l'azione di semantica, anziché fare clic sul campo. (I6ed05)

Correzioni di bug

  • Le azioni di test di testo ora richiedono l'attivazione dei campi di testo. (Iab328)

Versione 1.5.0-alpha01

22 marzo 2023

androidx.compose.ui:ui-*:1.5.0-alpha01 viene rilasciato. La versione 1.5.0-alpha01 contiene questi commit.

Modifiche all'API

  • Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misura in intermediateLayout ha IntermediateMeasureScope come ricevente, che fornisce comodi CoroutineScope, LookaheadScope e MeasureScope.(Ibe2e5)
  • LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti secondari in un ambito di previsione possono essere controllati direttamente dal criterio di misurazione principale. (Ibe2e5)
  • Aggiunge Modifier.Node#coroutineScope per consentire a Modifier.Nodes di avviare le coroutine. (I76ef9)
  • Consenti a Modifier.Nodes di leggere CompositionLocals implementando l'interfaccia CompositionLocalConsumerModifierNode. (Ib44df)
  • Propagazione della classe @Deprecated alla proprietà. (I882d1)

Versione 1.4

Versione 1.4.3

3 maggio 2023

androidx.compose.ui:ui-*:1.4.3 viene rilasciato. La versione 1.4.3 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui AndroidView potrebbe non essere disposto correttamente se utilizzato con determinati modificatori. (I4dc77, b/274797771)
  • È stato corretto un bug nella ricerca in primo piano 2D che interessava i menu DropDown (b/276811828)
  • È stato corretto un bug nelle proprietà di entrata/uscita dello stato attivo personalizzate che eseguiva il blocco di entrata/uscita solo la prima volta che veniva invocato il blocco lambda (b/277234245)
  • È stata corretta una regressione nel sistema di messa a fuoco che causava un arresto anomalo durante la lettura di focusProperties. (b/271324781, b/274897776)

Versione 1.4.2

19 aprile 2023

androidx.compose.ui:ui-*:1.4.2 viene rilasciato. La versione 1.4.2 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui AndroidView non riutilizzava correttamente i suoi modificatori, con potenziali comportamenti imprevisti e arresti anomali. (Ib67ee, b/275919849)
  • È stata corretta la regressione che impediva la visualizzazione della tastiera per i campi di testo all'interno di finestre di dialogo non create dal composable Dialog (I82551, b/262140644)

Versione 1.4.1

5 aprile 2023

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

Correzioni di bug

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

Versione 1.4.0

22 marzo 2023

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

Modifiche importanti dalla versione 1.3.0

  • È stata aggiunta una nuova API PinnableContainer che consente di bloccare gli elementi dell'elenco lazy in modo che non vengano eliminati quando non sono visibili. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010)
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API Modifier.Node sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Aggiunta nella proprietà di semantica IsContainer su Surfaces. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le piattaforme. (I63379)
  • È stato aggiunto un nuovo ruolo di accessibilità DropdownList. Questo può essere utilizzato per replicare il comportamento 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)
  • Ora i test dell'interfaccia utente di Android Compose eseguono passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato inattivo (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che eseguono verifiche sui singoli frame delle animazioni del layout. (I8ea08, b/222093277)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7)

Versione 1.4.0-rc01

8 marzo 2023

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

Modifiche all'API

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

Correzioni di bug

  • L'azione di semantica SetText di BasicTextField ora aggiornerà il buffer di testo utilizzando lo stesso percorso del codice degli aggiornamenti dell'IME e delle funzioni di test (ad es. performTextReplacement).
  • Le funzioni di test del testo performTextClearance, performTextReplacement 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 rilasciato. La versione 1.4.0-beta02 contiene questi commit.

Modifiche all'API

  • È stata rimossa l'API modifierElementOf(). Espandi direttamente da ModifierNodeElement. (I2256b)
  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che consente di reimpostare alcuni stati locali per gestire correttamente la situazione quando 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 di ordine di attivazione 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 rilasciato. La versione 1.4.0-beta01 contiene questi commit.

Modifiche all'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 in modo da accettare qualsiasi comparatore e qualsiasi numero di nodi. Per ulteriori informazioni, consulta ComposeTestRule. (Ifa1b9, b/226934294)
  • Rinomina Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis. (I07af5)
  • Ho rimosso GoogleFont.Provider.AllFontsListUri e ho inserito un link al documento in ktdoc. (I16f29)

Correzioni di bug

  • Aggiungi documenti per AndroidFont.fontVariationSettings (I7d9e2)

Versione 1.4.0-alpha05

25 gennaio 2023

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

Modifiche all'API

  • Sono stati introdotti nuovi sovraccarichi sperimentali per le funzioni runComposeUiTest e create*ComposeRule che accettano parametri CoroutineContext. Il contesto verrà utilizzato per la composizione di test e per eventuali chiamate LaunchedEffect e rememberCoroutineScope() al suo interno. (I10614, b/265177763)
  • Aggiungere una nuova API per monitorare la velocità 1D (If5a82)
  • FocusRequester è ora contrassegnato come @Stable. (I580ee)
  • Rimuovi un'annotazione sperimentale dal costruttore DialogProperties che accetta un parametro usePlatformDefaultWidth. (Ic4048)
  • È stata aggiunta la funzione per calcolare la posizione e la tangente a una distanza su un percorso con PathMeasure.getPosition() e PathMeasure.getTangent() (I3b47c)
  • Il PlatformParagraphStyle è stato rimosso il set pubblico esposto per errore. (I07f47)
  • Più tipi/valori null delle funzioni in linea/nascoste ritirate (I24f91)
  • Aggiungi AnnotatedString.hasStringAnnotations per eseguire query sulle annotazioni con allocazioni pari a zero. (I94dfe, b/246960758)
  • È stato aggiunto un nuovo sovraccarico per la funzione TextMeasurer.measure che accetta un String come testo. (I47b2d, b/242705342)
  • Le API LineBreak e Hyphens in TextStyle sono state classificate come stabili. (Ic1e1d)

Contributo esterno

  • I metodi notifyFocusedRect in TextInputSession e TextInputService non vengono nuovamente deprecati. (I23a04, b/262648050)

Versione 1.4.0-alpha04

11 gennaio 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 viene rilasciato. La versione 1.4.0-alpha04 contiene questi commit.

Nuove funzionalità

  • È stata aggiunta una nuova API PinnableContainer che consente di bloccare gli elementi dell'elenco lazy in modo che non vengano eliminati quando non sono visibili. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010)
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API Modifier.Node sperimentali. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Aggiunta nella proprietà di semantica IsContainer su Surfaces. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le piattaforme. (I63379)
  • È stato aggiunto il nuovo ruolo di accessibilità DropdownList. Questo può essere utilizzato per replicare il comportamento 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)
  • Ora i test dell'interfaccia utente di Android Compose eseguono passaggi di layout per ogni frame durante l'esecuzione dei frame per raggiungere lo stato inattivo (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che eseguono verifiche sui singoli frame delle animazioni del layout. (I8ea08, b/222093277)
  • È stato aggiunto TextMotion sperimentale a TextStyle per definire il testo come Static(default) o animato. Utilizza TextMotion.Animated se il testo deve essere ridimensionato, tradotto o ruotato tramite animazione. (I24dd7)

Modifiche all'API

  • L'argomento maxSize: IntSize in drawText è stato sostituito con size: Size per essere in linea con le altre funzioni DrawScope. Per impostazione predefinita, size è impostato su Size.Unspecified, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)
  • È stato rimosso il costruttore di caratteri sperimentali deprecato. (I8a724, b/261435386)
  • La classe di dati degli strumenti di UI Group ora ha un campo, isInline, che indica se il gruppo è destinato a una chiamata a una funzione componibile in linea. Se isInline è true, la chiamata è a una funzione componibile in linea. Tuttavia, il valore potrebbe essere falso per le chiamate a funzioni composable in linea provenienti da moduli compilati con una versione del plug-in del compilatore di compose che non genera le informazioni sulle funzioni in linea. (Idb846)
  • È stata effettuata la transizione a una versione stabile di un certo numero di API precedentemente sperimentali
  • L'API Rotary Scroll Event è ora stabile (I42ad3, b/261561229)
  • L'API FontVariation è ora stabile (I8779f, b/241016309)
  • Tutti i costruttori Font() ora sono API stabili (I5948b, b/261435386)
  • DeviceFontFamilyName è ora stabile (I8b640, b/261435386)
  • Il costruttore AndroidFont con variationSettings è ora un'API stabile e può essere utilizzato per creare nuovi tipi di descrittori dei caratteri. (I5adcc, b/261565807)
  • L'API createFontFamilyResolver è ora stabile. Questo può essere utilizzato per rilevare le eccezioni non rilevate durante il caricamento asincrono dei caratteri. (Ibb481, b/261435386)
  • L'API Font.loadingStrategy è ora stabile. (I5937c, b/261435386)
  • L'API GoogleFont è ora stabile. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) ora è un'API stabile. (I90c84, b/261561612)
  • pluralStringResource ora è un'API stabile. (I09849, b/261439703)

Versione 1.4.0-alpha03

7 dicembre 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 viene rilasciato. La versione 1.4.0-alpha03 contiene questi commit.

Modifiche all'API

  • Rimozione di ExperimentalComposeUiApi da PointerIcon (I23af8)
  • Introduci le azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che sono disponibili solo a partire dall'API 29. (Ida4ab)
  • La visualizzazione del parametro rememberNestedScrollConnection è stata aggiornata dalla visualizzazione principale a quella dell'host. (Ia5200)
  • È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento degli antenati. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni con i tasti, quando i gesti potrebbero diventare eventi di scorrimento.
  • È stato corretto il problema per cui Clickables non ritardava correttamente le increspature quando veniva utilizzato all'interno di un Scrollable ViewGroup.
  • È stato aggiornato il riquadro e i riquadri per posticipare correttamente le pressioni nel caso in cui i gesti possano diventare eventi di scorrimento.
  • Il nome CompositingStrategy.Always è stato rinominato in Offscreen per indicare che graphicsLayer verrà sempre visualizzato in un buffer intermedio (I47dc1)
  • Il sovraccarico del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
  • Sono state aggiunte nuove API sperimentali PerfettoTrace.record {} e PerfettoTraceRule per acquisire tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di ispezionare il comportamento e le prestazioni del test. (I3ba16)
  • Nei test dell'interfaccia utente che utilizzano una regola di composizione, le interruzioni riprese durante i callback withFrameNanos non verranno inviate finché non sarà terminata l'esecuzione di tutti i callback del frame. Questo corrisponde al comportamento di composizione quando viene eseguito normalmente. Tuttavia, i test che si basano sul vecchio comportamento potrebbero non riuscire. Ciò dovrebbe interessare solo il codice che chiama direttamente withFrameNanos o withFrameMillis e ha una logica esterna al callback passata a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Per esempi, consulta le modifiche al test di animazione in questo CL.
  • È stato aggiunto il parametro facoltativo onPerformTraversals: (Long) -> Unit al costruttore e alla funzione di 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)
  • È stato aggiunto EmojiCompat a Scrivi (Ibf6f9, b/139326806)
  • È stato aggiunto un nuovo parametro sfondo a @Preview per il supporto dei colori dinamici (I9f512)

Correzioni di bug

  • Le notifiche di applicazione degli snapshot vengono ora inviate dopo che Recomposer ha completato l'applicazione delle modifiche. (Iad6c0, b/222093277)
  • Sono state introdotte modifiche in captureToImage per consentire l'acquisizione di screenshot in più finestre. Questa opzione è utile per i test degli screenshot che utilizzano i popup di composizione. (I169c5)

Aggiornamenti delle dipendenze

  • Compose UI e Compose Material ora dipendono da Lifecycle 2.5.1. (I05ab0, b/258038814)

Versione 1.4.0-alpha02

9 novembre 2022

androidx.compose.ui:ui-*:1.4.0-alpha02 viene rilasciato. La versione 1.4.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stato aggiornato GraphicsLayerScope per mostrare le dimensioni attuali del graphicsLayer. Questo è utile per calcolare le trasformazioni graphicsLayer in funzione delle dimensioni del componibile. (If8c43,b/181387080)
  • È stato introdotto CompositingStrategy per determinare quando utilizzare un livello di composizione offscreen per il rendering dei contenuti graphicsLayer. L'opzione Automatico mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato l'alpha o un RenderEffect/Overscroll. Sempre introdurrà sempre un buffer offscreen in cui ModulateAlpha eviterà di utilizzare un buffer offscreen e, al contrario, modulerà ciascuna delle istruzioni di disegno registrate all'interno di graphicsLayer. L'utilizzo di ModulateAlpha continuerà a sfruttare un buffer offscreen 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)
  • Esegui la promozione di rememberNestedScrollInteropConnection alla versione stabile. È stata introdotta la possibilità di passare una visualizzazione principale a rememberNestedScrollInteropConnection. In questo modo, la visualizzazione personalizzata può reagire meglio alle limitazioni di scorrimento, in particolare nelle visualizzazioni non standard (ad es. ModalBottomSheetDialog). (I9e107)
  • È stata aggiunta l'interfaccia ObserverNode che può essere utilizzata dalle implementazioni di Modifier.Node che devono ricevere una notifica quando un valore che avevano 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)
  • Strumenti di refactoring per un supporto migliore delle nuove animazioni aggiunte (I8677b)
  • È stato aggiunto il parametro minLines in Material e Material3 Text, TextField e OutlinedTextField che consente di impostare l'altezza minima del componente in termini di numero di righe (I4af1d)

Versione 1.4.0-alpha01

24 ottobre 2022

androidx.compose.ui:ui-*:1.4.0-alpha01 viene rilasciato. La versione 1.4.0-alpha01 contiene questi commit.

Modifiche all'API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Funziona in modo simile a forEachGesture(), ma il ciclo dei 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 la perdita di eventi tra un gesto e l'altro. (Iffc3f, b/251260206)
  • Ritiro del riutilizzo degli oggetti di accessibilità in androidx. Abbiamo riscontrato che le variazioni del rendimento sono trascurabili anche nelle versioni supportate più vecchie. (I0a961)
  • È stato aggiunto DrawStyle come attributo sperimentale a TextStyle e SpanStyle per consentire di disegnare il testo con bordi. (If24b8, b/155421273)
  • AnnotatedString.Builder ora implementa kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder ora dispone di un metodo append(AnnotatedString, start: Int, end: Int) per accodare una sottostringa di un AnnotatedString e gli stili intersecati.
  • È stato aggiunto il parametro DrawStyle alle funzioni di pittura Paragraph e MultiParagraph che consente di disegnare il testo con il bordo. (Ic8102, b/155421273)

Contributo esterno

  • Grazie per aver aggiunto vighnesh ai dispositivi TV nelle anteprime (Ie15cd)

Versione 1.3

Versione 1.3.3

11 gennaio 2023

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

Correzioni di bug

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

Versione 1.3.2

7 dicembre 2022

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

Correzioni di bug

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

Versione 1.3.1

9 novembre 2022

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

Versione 1.3.0

24 ottobre 2022

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

Modifiche importanti dalla versione 1.2.0

  • Nuova suite di API sperimentali LookaheadLayout (che consente comportamenti di animazione precedentemente impossibili)
  • Nuova suite API sperimentale Modifier.Node (alternativa a Modifier.composed con prestazioni superiori)
  • Supporto migliorato per gli inserti delle finestre.
  • Supporto per il fuoco per i pad direzionali e la tastiera hardware in LazyLists.
  • L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica che comporta una modifica del comportamento per alcuni sistemi di progettazione personalizzati; motivazione nelle note di rilascio della versione beta01)
  • Molti miglioramenti minori e non inversi dell'API
  • Molte correzioni di bug e miglioramenti delle prestazioni

Versione 1.3.0-rc01

5 ottobre 2022

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

Modifiche all'API

  • È stata aggiunta una nuova API sperimentale Hyphens per supportare l'inserimento automatico di trattini nel testo (Iaa869)

Correzioni di bug

  • Per impostazione predefinita, i caratteri DeviceFontFamilyName non configurano le impostazioni delle varianti wght e ital, ma utilizzano l'impostazione della piattaforma per Typeface caricato. (Ia7a6d, b/246989332)
  • È stata corretta una perdita di memoria di LazyColumn: onModifierLocalsUpdated non veniva chiamato con il valore predefinito quando i modificatori venivano riutilizzati (b/230168389)

Versione 1.3.0-beta03

21 settembre 2022

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

Modifiche all'API

  • Aggiungi opzioni per personalizzare il taglio a capo in Testo. (I86907)
  • È stato modificato l'argomento size:IntSize 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 rilasciato. La versione 1.3.0-beta02 contiene questi commit.

Modifiche all'API

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

Modifiche alle API Focus sperimentali:

  • FocusDirection.In 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 usare FocusRequester.Cancel per annullare uno spostamento dell'attenzione. FocusRequester.Cancel può essere utilizzato in una delle seguenti proprietà di stato attivo: su, giù, sinistra, destra, successivo, precedente, inizio, fine, invio ed esci. (Ib300f)

Versione 1.3.0-beta01

24 agosto 2022

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

Riorganizzazione dei nodi modificatori

Il livello che gestisce le istanze Modifier/Modifier.Element e coordina il loro comportamento su LayoutNodes è stato sottoposto a una riorganizzazione sostanziale. Al momento, si tratta di un refactoring che non ha influito sull'API pubblica di nessuno dei numerosi modificatori in Compose e può essere visto come una modifica solo per l'implementazione. Tuttavia, si tratta di una modifica importante per diversi motivi. (Ie4313)

Riepilogo delle modifiche

Le API Modifier.Node sperimentali aggiunte forniscono un'astrazione che consente di mantenere lo stato in un'istanza che verrà conservata con il ciclo di vita del nodo di layout e verrà allocata per nodo di layout e per utilizzo del Modifier.Element corrispondente che lo ha prodotto.

In generale, questa astrazione fornisce un meccanismo alternativo per produrre modificatori con stato senza fare affidamento sulla struttura dell'API Modifier.composed.

Rischio

Questa modifica è strettamente compatibile con le release precedenti ed è progettata per essere compatibile con le versioni precedenti in termini di comportamento osservabile, per quanto pratico e ragionevole. Detto questo, ci sono alcuni sottosistemi di compose che non sono stati toccati da questa riorganizzazione e è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e che non siano ancora stati trovati e corretti.

Esegui l'upgrade a questa release con cautela. Se ritieni che questo abbia causato un problema, ti invitiamo a comunicarcelo.

API sperimentali

Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "Nodo modificatore". I nodi Modifier vengono creati in seguito a

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Modifica che comporta una rottura del comportamento

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

L'elevazione massima supportata per le finestre di dialogo e popup di Scrittura è stata ridotta da 30 dp a 8 dp. Questa modifica interessa sia le finestre di dialogo e popup personalizzate Material sia quelle ui. Questa modifica è stata apportata per attenuare un bug di accessibilità nelle versioni di Android precedenti a S e per garantire che i servizi di accessibilità all'interno di queste finestre siano in grado di interagire con i contenuti all'interno della finestra di dialogo o del popup.

Questa modifica ti interesserà solo se stai creando un'implementazione di una finestra di dialogo o di un popup personalizzato con un'elevazione impostata su livelli superiori a 8 dp. Valuta la possibilità di abbassare l'elevazione della finestra di dialogo o del popup. Se devi disattivare questo nuovo comportamento, ti consigliamo di creare una copia della finestra di dialogo o del popup con l'elevazione impostata. Questa operazione non è consigliata, in quanto l'accessibilità potrebbe essere influenzata negativamente e lo sviluppatore deve assicurarsi che la parte inferiore della finestra di dialogo o del popup sia interattiva e leggibile dai servizi di accessibilità.

Modifiche all'API

  • Risolto un problema per cui painterResource non si aggiornava in base alle modifiche alla configurazione (I58e73, b/228862715)
  • rememberTextMeasurer non accetta più i 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 a Dialogs di supportare WindowInsets. (I57742, b/229378542)
  • I costruttori dei caratteri sono stati spostati di nuovo nel file Kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3)
  • È stato rimosso un operatore non necessario da diverse definizioni di uguaglianza. Questa operazione non ha alcun effetto. (I6c309)
  • FontVariation.Setting è un'interfaccia sigillata per consentire API di clamping future. (I11021, b/143703328)
  • Aggiungi CompositionGroup.findParameters 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 rilasciato. La versione 1.3.0-alpha03 contiene questi commit.

Modifiche all'API

  • LayoutCoordinates.findRootCoordinates() è ora pubblico (I7fa37, b/204723384)
  • È stata aggiunta un'API sperimentale per ottenere il LayoutCoordinates in PlacementScope. In questo modo, gli sviluppatori sanno dove posizionare gli elementi secondari rispetto alla posizione attuale del layout. (I5482b, b/238632578)
  • È stato aggiunto LayoutCoordinates.transformFrom per ottenere la trasformazione della matrice da un LayoutCoordinates.transformFrom all'altro.LayoutCoordinates (Ic5ab1, b/238632578)
  • È stato ritirato SemanticsModifier.id 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 e versioni successive). (I900dd, b/143703328)
  • Supporto dei caratteri variabili in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • I costruttori di caratteri ora accettano un elenco di FontVariation.Setting per la configurazione dei caratteri variabili sui dispositivi O e versioni successive. (I11a9d, b/143703328)
  • Aggiungi l'API FontVariation per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328)
  • Il costruttore LineHeightStyle.Alignment è ora pubblico (sperimentale) (I4bbbe, b/235876330)
  • Il paragrafo ora è expect|actual e definito per Android e computer. (Id387e, b/239962983)
  • Paragrafo dell'interfaccia ora è Paragrafo dell'interfaccia sigillato. Non esiste un caso d'uso per la sottoclassificazione di paragrafo e ti consigliamo di contattarci se questa modifica ti interessa. (If5247, b/239962983)
  • È stata rimossa l'annotazione sperimentale da PlatformTextStyle e LineHeightStyle. (I64bef)
  • Ignora TextInputService.show|hideSoftwareKeyboard. Utilizza SoftwareKeyboardController nel codice dell'app e TextInputSession nel codice di gestione dell'IME. (I14e4c, b/183448615)
  • Aggiungere una nuova API per i tipi di animazione esistenti (I26179)

Correzioni di bug

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

Versione 1.3.0-alpha02

27 luglio 2022

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

Modifiche all'API

  • È stata aggiunta una nuova proprietà PointerInputChange#pressure per recuperare la pressione. (I45a5e, b/205164819)
  • È stato aggiunto rememberTextMeasurer per creare e ricordare facilmente le istanze 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 facilmente implementate con parti più semplici dell'API. Le funzioni rimosse includono pressKeys, keysDown e keysUp. (I81d77)
  • I nomi delle costanti e dei parametri in KeyInjectionScope sono stati sottoposti a refactoring per includere il suffisso "Millis", dove le unità di queste costanti e parametri sono millisecondi. (Iabef5)
  • È stato aggiunto il metodo toStringForLog() a EditCommand per risolvere i problemi di modifica del testo. (I53354, b/228862731)
  • È stata aggiunta la funzione di estensione drawText in DrawScope per fornire un modo per disegnare testo con più stili su composabili 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 del layout del testo arbitrario che crea risultati identici a BasicText, indipendentemente dal runtime di Compose. (I17101)
  • Aggiungi mapTree a SlotTree.kt. In questo modo, gli strumenti possono ispezionare l'oggetto SlotTree senza prima creare una copia in memoria, come fa asTree. Per l'ispettore del layout, questo comporta un miglioramento delle prestazioni di circa un fattore 10. (I5e113)
  • È stata modificata l'anteprima di composizione in modo che venga memorizzata in file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni MultiPreview dalle librerie. (I85699, b/233511976)

Correzioni di bug

  • Quando aggiungi gli eventi InputEventChange al tracker Velocity, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (Icea9d, b/216582726, b/223440806, b/227709803)
  • Correggere l'errore NPE causato da AnnotatedString.toUpperCase quando sono presenti annotazioni. (I0aca2, b/210899140)

Versione 1.3.0-alpha01

29 giugno 2022

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

Modifiche all'API

  • Nuovo LookaheadLayout che supporta un passaggio di previsione prima della misura/del layout effettivi. Ciò consente un precalcolo del layout quando cambia, consentendo al layout/alla misurazione post-lookahead di utilizzare le dimensioni/la posizione precalcolate per animare le dimensioni e le posizioni verso il target. SubcomposeLayouts non sono ancora supportati, ma lo saranno in una release futura. (I477f5)
  • Aggiungi il parametro alpha facoltativo al tipo di pennello di TextStyle 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 il collegamento TalkBack in 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 osservare il suo stato all'interno di funzioni composable o tramite snapshotFlow (Icdb8a)

Versione 1.2

Versione 1.2.1

10 agosto 2022

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

Correzioni di bug

  • Errore nullpointer corretto nell'inspector (b/237987764)
  • È stata corretta un'eccezione di conversione di tipo di classe durante il ricordo nell'inspector (b/235526153)

Versione 1.2.0

27 luglio 2022

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

Modifiche importanti dalla versione 1.1.0

  • Miglioramenti al passaggio del focus:

    • Lo scorrimento basato sul focus degli elenchi lazy ora funziona, utilizzando la nuova API di base BeyondBoundsLayout
    • Nuove API di personalizzazione del comportamento in FocusOrder e FocusProperties
    • Miglioramento del comportamento con la tastiera fisica o il telecomando della TV
  • Nuove API per:

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

Versione 1.2.0-rc03

29 giugno 2022

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

  • Nessuna modifica dalla versione 1.2.0-rc02.

Versione 1.2.0-rc02

22 giugno 2022

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

Versione 1.2.0-rc01

15 giugno 2022

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

Modifiche all'API

  • Le interfacce nelle librerie di composizione ora vengono create utilizzando i metodi di interfaccia predefiniti di JDK8 (I5bcf1)
  • A KeyInjectionScope sono state aggiunte funzioni di ordine superiore per iniettare pressioni dei tasti mentre altri tasti sono premuti o attivati. Queste funzioni includono withKeysDown, withKeysToggled e così via. Sono state aggiunte anche proprietà per verificare se un determinato meta tasto è premuto, ad esempio isCtrlDown per verificare se uno dei tasti di controllo è premuto. Consulta KeyInjectionScope per la documentazione di ogni funzione. (I9f6cd, b/229831515)
  • È stato introdotto un OverscrollEffect sperimentale per consentire effetti di scorrimento personalizzati, insieme ai sovraccarichi di Modifier.scrollable che lo accettano.
  • La versione sperimentale LocalOverScrollConfiguration è stata spostata da foundation.gesture al pacchetto di base e rinominata 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 rilasciato. La versione 1.2.0-beta03 contiene questi commit.

Modifiche all'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 il clic su un pulsante del mouse con un tasto meta premuto. (I4c8da, b/229831515)
  • È stato aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Utilizza performKeyInput per inviare eventi chiave o inviali tramite la proprietà key 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.
  • Miglioramento dei messaggi di errore riattivati quando non è possibile caricare Google Fonts nella composizione. (I0416c)

Correzioni di bug

  • Quando aggiungi gli eventi InputEventChange a Velocity Tracker, ora prenderemo in considerazione i delta anziché le posizioni. In questo modo, la velocità verrà calcolata correttamente per tutti i casi, anche se l'elemento target si sposta (I51ec3, b/216582726, b/223440806, b/227709803)
  • L'impostazione Show Layout Bounds verrà ora applicata ai composabili immediatamente dopo l'abilitazione/la disattivazione dal riquadro delle impostazioni rapide, senza dover uscire e rientrare nell'attività. (I843d5, b/225937688)
  • La ricerca di stringhe di accessibilità non attiva il caricamento dei caratteri. In precedenza, tentava di caricare i caratteri per StyleSpans, il che poteva causare arresti anomali se FontFamily.Resolver era stato sovrascritto. (I4609d)
  • La pressione del tasto Elimina avanti quando il cursore si trova alla fine di un campo di testo non causerà più arresti anomali.
  • Ora DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand richiedono che gli argomenti del costruttore siano non negativi. (Ica8e6, b/199919707)

Versione 1.2.0-beta02

18 maggio 2022

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

Modifiche all'API

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

Correzioni di bug

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer è stato rinominato in DisposeOnDetachedFromWindowOrReleasedFromPool per riflettere meglio quando si verificano gli smaltimenti, anziché semplicemente quando non si verificano. (If15ca)

Versione 1.2.0-beta01

11 maggio 2022

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

Nuove funzionalità

  • Questa è la prima release beta di 1.2.

Modifiche all'API

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

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

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

    La migrazione di un test da ComposeTestRule a ComposeUiTest può essere eseguita come segue (esempio di Android). Da:

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

    A:

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

  • LineHeightBehavior è stato rinominato LineHeightStyle

  • LineVerticalAlignment è stato rinominato LineHeightStyle.Alignment

  • LineHeightTrim viene rinominato LineHeightStyle.Trim

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

  • È stato aggiunto Brush a TextStyle e SpanStyle per fornire un modo per disegnare il testo con colorazione sfumata. (I53869, b/187839528)

  • Gli attributi trimFirstLineTop e trimLastLineBottom di LineHeightBehavior sono stati sostituiti da un'unica enumerazione: LineHeightTrim. LineHeightTrim ha valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)

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

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

Correzioni di bug

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

Contributo esterno

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

Versione 1.2.0-alpha08

20 aprile 2022

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

Modifiche all'API

  • Le funzioni pluralStringResource sono state contrassegnate come sperimentali per consentire l'evoluzione in modo da supportare una migliore internazionalizzazione in futuro. (If24e4)
  • Paragraph e MultiParagraph ora accettano il parametro Constraints. Al momento, il passaggio di Constraints.maxHeight non ha alcun effetto, ma in futuro consentirà di eseguire alcuni calcoli, ad esempio l'ellittica in base all'altezza. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ora accetta una classe personalizzata simile a MutableSet che non consente di aggiungere nuovi elementi. (Icd314)
  • PointerIcon ora è un'interfaccia @Stable (I9dafe)
  • Il consumo parziale (posizione OR verso il basso) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per consumare 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 consumata una delle copie. Se vuoi creare un PointerInputChange non vincolato, utilizza il costruttore. (Ie6be4, b/225669674)
  • Attiva l'interoperabilità di scorrimento nidificato tra Scrivi e Visualizza nella direzione Scrivi > Visualizza. Ciò significa che un componente compositivo principale potrà ricevere delta di scorrimento nidificati da una visualizzazione di scorrimento nidificata. (If7949, b/174348612)
  • Nuovo SemanticsProperty testTagsAsResourceId, che può essere utilizzato per rendere Compose conforme ai test UIAutomator progettati per il sistema View. (I39c20)
  • Mostra tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi FontFamily.SansSerif. Verranno utilizzati internamente nomi di caratteri di riserva come sans-serif-medium nell'API 21-28. Si tratta di una modifica del comportamento, in quanto in precedenza erano supportati solo i pesi 400 e 700 nell'API 21-28. (I380fe, b/156048036, b/226441992)
  • Gli istruttori di paragrafi e paragrafi multipli hanno riordinato gli argomenti posizionali prima degli argomenti facoltativi. (Idafaa)
  • AndroidFont ora accetta typefaceLoader come parametro del costruttore. (I2c971)

Versione 1.2.0-alpha07

6 aprile 2022

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

Modifiche all'API

  • È stata aggiunta la nuova funzione Snapshot.withoutReadObservation { ... }. Consente agli utenti di eseguire la funzione lambda passata senza iscriversi alle modifiche dei valori dello stato letti durante questo blocco. Potrebbe essere utile nei casi in cui vuoi usufruire delle letture/scritture sicure per i thread basate su snapshot, ma vuoi essere in grado di leggere il valore senza causare ricostruzioni o rimisure non necessarie. (I9f365, b/214054486)
  • La proprietà di estensione consumeWindowInsets di ComposeView consente agli sviluppatori di disattivare il consumo di Android WindowInsets. In questo modo, ogni ComposeViews separato nella gerarchia può applicare WindowInsets senza interferire con gli altri. (I0ef08, b/220943142)
  • È stato aggiunto KeyboardType.Decimal come alternativa a Keyboard.Number per includere specificamente il separatore decimale nell'IME. (Iec4c8, b/209835363)
  • PointerEventType.Scroll e PointerEvent.scrollDelta sono ora API stabili (I574c5, b/225669674)
  • Attiva l'interoperabilità di scorrimento nidificato tra View e Compose per le classi View che collaborano. Ciò significa che la composizione ora è in grado di inviare delta di scorrimento a una vista principale (cooperante). (I5d1ac, b/174348612)
  • FontFamily.Resolver è stato aggiornato per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)
  • Font(AssetManager, String, ...) è deprecato e sostituito da Font(String, AssetManager, ...). Questa è un'API sperimentale. (I1c7a4)
  • Aggiungi un nuovo descrittore dei caratteri Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati nel sistema durante le catene di riserva dei caratteri. (I30468, b/219754572)
  • È stata aggiunta una configurazione di compatibilità temporanea per includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding può essere modificato 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 per il debug. (I64e31)
  • Aggiungi il costruttore GoogleFont.Provider da utilizzare 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 assicurarsi che venga utilizzata la spaziatura interna (Ifb111)

Versione 1.2.0-alpha06

23 marzo 2022

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

Modifiche all'API

  • È stata aggiunta l'azione di semantica RequestFocus per richiedere lo stato attivo sul target attivabile. (I17b71)
  • Analisi aggiornata degli elementi drawable vettoriali per supportare il mirroring automatico in modo da capovolgere i contenuti di un VectorPainter se l'orientamento del layout corrente è RTL. (I79cd9, b/185760237)
  • Aggiornato i colori dell'ombra/dell'ambiente in modo che siano parametri finali di Modifier.graphicsLayer per la compatibilità con l'API (I3f864, b/160665122)

  • Sono state aggiunte implementazioni predefinite al colore dell'ombra/dell'ambiente in GraphicsLayerScope per garantire modifiche non invasive all'API

  • È stata aggiunta l'ora dell'evento agli eventi RSB (Ief8ae)

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

  • L'upgrade sia di RecyclerView che di Compose ora comporterà un rendimento dello scorrimento molto migliore per i 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 passaggio per l'aggiunta della funzionalità Multipreview. Queste annotazioni potrebbero essere utilizzate per annotare metodi Composable o altri classi di annotazioni, che potrebbero quindi essere considerati indirettamente annotati con l'attributo @Preview specificato. (I12eff)

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

Correzioni di bug

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

Contributo esterno

  • compose-ui: aggiungi le proprietà ambientShadowColor e spotShadowColor a GraphicsLayerScope (I1ba1a, b/160665122)
  • Le risorse plurali sono ora supportate tramite le funzioni pluralStringResource. (Ib2f23, b/191375123)

Versione 1.2.0-alpha05

9 marzo 2022

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

Modifiche all'API

  • TextToolbar ora accetta argomenti lambda anziché ActionCallback. (Ib2eb9, b/197950089)
  • La nullabilità in core e appcompat è stata aggiornata in modo da corrispondere a Tiramisu DP2 (I0cbb7)
  • L'interfaccia misurata ora espone la proprietà parentData (I3313f)
  • Modifier.onPlaced e l'interfaccia OnPlacedModifier sono ora stabili. (Ib5482)
  • Evviva! L'animazione di composizione ora supporta l'impostazione "Scala durata animatore" dalle Opzioni sviluppatore. (I5a4fc, b/161675988)
  • È stato aggiunto un modificatore BeyondBoundsLayout locale (If8b51, b/184670295)
  • Testo: includeFontPadding è ora disattivato per impostazione predefinita. I problemi di ritaglio dovuti a includeFontPadding=false vengono gestiti e non dovrebbe verificarsi alcun ritaglio per gli script alti. (I31c84, b/171394808)

Correzioni di bug

  • ComposeContentTestRule.setContent ora genera un messaggio di errore IllegalStateException se provi a impostare dei contenuti quando sono già presenti. (I888a5, b/199631334)
  • È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • Migliorare i Sample di scorrimento RSB. (I6a596)

Contributo esterno

  • Aggiornamento per l'utilizzo di Kotlinx coroutines 1.6.0 (I3366d)

Versione 1.2.0-alpha04

23 febbraio 2022

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

Modifiche all'API

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

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

    Per gli applicatori personalizzati, le funzioni composable che chiamano ComposeNode o ReusableComposeNode devono aggiungere un'annotazione ComposableTarget per la funzione e per eventuali tipi di parametri lambda composable. Tuttavia, è consigliabile creare un'annotazione annotata con ComposableTargetMarker e poi utilizzare l'annotazione contrassegnata anziché ComposableTarget direttamente. Un'annotazione componibile contrassegnata con ComposableTargetMarker è equivalente a un ComposbleTarget con il nome completo della classe dell'attributo come parametro dell'applicatore. Per un esempio di utilizzo di ComposableTargetMarker, consulta anroidx.compose.ui.UiComposable. (I38f11)

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

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

  • Supporto del caricamento dei caratteri asincroni in Testo (I77057, b/214587005)

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

Correzioni di bug

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

Versione 1.2.0-alpha03

9 febbraio 2022

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

Modifiche all'API

  • I metodi notifyFocusedRect in TextInputSession e TextInputService sono stati deprecati e non verranno chiamati. Utilizza invece 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 premisurare i figli di SubcomposeLayout che hai precompilato. (I857ea)
  • È stata aggiunta movableContentOf, che converte una funzione lambda componibile in una funzione lambda che sposta il relativo stato e i relativi nodi in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene conservato temporaneamente e se una nuova chiamata alla funzione lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta alcuna nuova chiamata, lo stato viene rimosso definitivamente e gli osservatori vengono informati.

    Se una funzione lambda movableContentOf viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, quando le chiamate escono dalla composizione e ne vengono inserite di nuove, lo stato viene spostato dalle prime chiamate in uscita alle chiamate in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati da nuove chiamate vengono rimossi permanentemente. (Ib4850)

  • FontFamilyResolver è ora disponibile tramite LocalFontFamilyResolver.current

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

  • Paragraph e MultiParagraph ora accettano FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver ora contiene il resolver utilizzato per questo layout, ritirato TextLayoutResult.layoutInput.resourceLoader perché non è più utilizzato. (Id5a45, b/174162090)

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

  • Supporto per il precaricamento dei caratteri tramite FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext consente di impostare il contesto della coroutine globale utilizzato per il caricamento dei caratteri asincroni. (I87fe8, b/174162090)

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

  • L'API Font.ResourceLoaded è stata ampliata per supportare il caricamento dei caratteri facoltativo e asincrono. Sconsigliamo agli sviluppatori di applicazioni di utilizzare direttamente questa API. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont.

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

  • È stato aggiunto il parametro loadingStrategy ai caratteri basati su risorse per consentire il caricamento asincrono quando il carattere della risorsa fa riferimento al file XML dei caratteri scaricabili. (Ie5aea, b/174162090)

  • Il costruttore Typeface(FontFamily) è deprecato. In precedenza veniva utilizzato per precaricare i caratteri, il che può 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 può richiedere fino a 10 secondi per i caratteri scaricabili. Utilizza FontFamilyResolver.preload (If8e7c, b/174162090)

  • Il costruttore SubcomposeLayoutState che accetta maxSlotsToRetainForReuse è stato ritirato. 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 di colore Oklab è ora un'API pubblica. (I08fb6, b/180731008)

  • È stata ritirata la funzionalità AndroidComposeTestRule.AndroidComposeStatement, che non doveva essere presente nell'API pubblica e non faceva comunque nulla per te. (Ibc46b)

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

  • FontLoadingStrategy.values rimosso (I42a9d, b/174162090)

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

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

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

Correzioni di bug

  • Ora i campi di testo verranno mantenuti sopra la tastiera quando sono selezionati e la tastiera è visualizzata, quando la modalità di immissione soft è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Il computer utilizza la composizione locale per FontFamily.Resolver
  • FontLoader per computer è deprecato
  • Nuova versione di fabbrica di createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di immissione della tastiera virtuale non lampeggia più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)

Versione 1.2.0-alpha02

26 gennaio 2022

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

Modifiche all'API

  • Sono stati aggiunti Modifier.onRotaryScrollEvent() e Modifier.onPreRotaryScrollEvent() per i dispositivi indossabili con un pulsante laterale girevole (I18bf5, b/210748686)
  • Aggiungi estensione View.createLifecycleAwareRecomposer sperimentale (I0cde6)

Contributo esterno

  • PointerEvent.scrollDelta.y ora è invertito su Android (ora restituisce 1 anziché -1 se incliniamo la rotellina del mouse verso destra) (Ia9811)

Versione 1.2.0-alpha01

12 gennaio 2022

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

Modifiche all'API

  • FontFamily.canLoadSynchronously obsoleto. Questa proprietà non ha alcun significato semantico. (Ica5ef)
  • È stato aggiunto il campo identità a CompositionData per generare ID invariati nell'ispezione del layout. (Ic116e)
  • Sono stati aggiunti gli ID dei dispositivi Wear OS all'elenco dei dispositivi di anteprima (I93232)

Aggiornamenti delle dipendenze

  • Ora dipende da Kotlin 1.6.10.

Versione 1.1

Versione 1.1.1

23 febbraio 2022

androidx.compose.ui:ui-*:1.1.1 viene rilasciato. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • Correggi NullPointerException il giorno androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • È stato corretto il problema relativo alla formattazione RTL in LazyVerticalGrid (aosp/1931080, b/207510535)

Versione 1.1.0

9 febbraio 2022

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

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto overscroll di Android 12
  • Miglioramenti alle dimensioni dei target di tocco
    • Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante verrà espanso fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti di Material Design, garantendo un comportamento coerente se combini le viste e Compose. Questa modifica garantisce inoltre che, quando crei l'interfaccia utente utilizzando i componenti Material di Compose, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target.
  • Supporto stabile per la barra di spostamento
  • Passa a una versione stabile un certo numero di API precedentemente sperimentali
  • Supporto per le versioni più recenti di Kotlin

Versione 1.1.0-rc03

26 gennaio 2022

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

Correzioni di bug

  • Aggiornamento per il supporto di Compose Material 1.1.0-rc03

Versione 1.1.0-rc01

15 dicembre 2021

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

Correzioni di bug

  • Risolto un bug che causava la mancata visualizzazione delle azioni di scorrimento dell'accessibilità (I7cbfb)
  • Ora SemanticsNodeInteraction.captureToImage() funzionerà anche 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 rilasciato. La versione 1.1.0-beta04 contiene questi commit.

Nuove funzionalità

  • Aggiornata per essere compatibile con Kotlin 1.6.0

Modifiche all'API

  • È stata corretta la presenza di valori null in androidx.core.view (I7078a, b/204917439)
  • Sono state aggiunte API sperimentali che consentono agli utenti di utilizzare PointerInputchange nel suo complesso o di verificare se è stato utilizzato o meno. (I2e59d)
  • Aggiunge il supporto per gli eventi correlati alla rotellina del mouse nel livello dell'interfaccia utente. (Ia14eb, b/198214718)
  • Aggiungi sovraccarichi sperimentali di Modifier.composed che accettano chiavi da confrontare per verificare l'uguaglianza e che sono idonei per saltare le ottimizzazioni. (Ice799, b/205851704)
  • ComposeNotIdleException ora si estende da Exception anziché direttamente da Throwable. Tieni presente che ciò significa che le clausole try/catch che intercettavano Exception ora potrebbero intercettare ComposeNotIdleException, cosa che non facevano in precedenza. (I9c217)

Correzioni di bug

  • È stato corretto il problema relativo alla mancata modifica dei cursori del testo quando la visibilità dell'IME cambia. (I25f2e)

Versione 1.1.0-beta03

17 novembre 2021

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

Modifiche all'API

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

Correzioni di bug

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

Versione 1.1.0-beta02

3 novembre 2021

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

Modifiche all'API

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

Contributo esterno

  • È stato aggiunto Modifier.pointerHoverIcon (I95f01)

Versione 1.1.0-beta01

27 ottobre 2021

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

Modifiche all'API

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

Versione 1.1.0-alpha06

13 ottobre 2021

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

Modifiche all'API

  • Rimuovi ExperimentalComposeUiApi da ViewRootForInspector e LayoutInfo.ownerViewId (I5c2e3)
  • È stata aggiunta un'overload senza elementi secondari per Layout, con un'efficienza migliorata (Ib0d9a)
  • È stato rimosso InternalCompilerApi dai metodi Composer che devono essere chiamati tra moduli (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce il SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db)
  • È stato aggiunto LocalInputModeManager CompositionLocal 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)
    • È stato aggiunto viewConfiguration: ViewConfiguration a InjectionScope per consentire ai test di regolare l'iniezione di input in base a parametri come il timeout della pressione prolungata o la tolleranza al tocco.
    • È stata modificata la durata predefinita della pressione prolungata e del doppio tocco sia per l'input tocco che per quello del mouse in base ai valori in InjectionScope.viewConfiguration.
  • Implementazione di ExposedDropdownMenu basata su ExposedDropdownMenuBox con TextField e DropdownMenu all'interno (If60b2)
  • dismissOnOutsideClick è stato aggiunto a PopupProperties, sostituendo dismissOnClickOutside, che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti dell'ancora, fornendo un controllo più preciso sull'eventuale chiamata di onDismissRequest. Ad esempio, può essere utile per impedire la chiusura dell'ancora per i tocchi sull'ancora.
    • updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo a basso livello sui flag passati dal popup a WindowManager di Android. Il parametro della funzione lambda sarà costituito dagli indicatori calcolati dai valori PopupProperties che generano indicatori WindowManager: ad esempio, focusable. Il risultato della funzione lambda saranno i flag finali che verranno passati a WindowManager di Android. Per impostazione predefinita, updateAndroidWindowManagerFlags lascia invariati i flag calcolati dai parametri. Questa API deve essere utilizzata con cautela, solo nei casi in cui il popup abbia requisiti di comportamento molto specifici. (I6e9f9)
  • Recomposer.state è stato ritirato e sostituito da Recomposer.currentState per modificarne il tipo in StateFlow (Ic2ab3, b/197773820)
  • flush() e dispose() sono stati aggiunti a InjectionScope. Utilizzale rispettivamente quando vuoi svuotare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito. (Ifb73a)
  • È stato aggiunto performScrollToNode(matcher: SemanticsMatcher) che scorra un contenitore scorrevole fino ai contenuti corrispondenti al parametro di corrispondenza specificato. (Ic1cb8)
  • InjectionScope ora implementa Density, il che ti consente di convertire facilmente i valori px e dp in performTouchInput e altri. (I8fe1f)

Correzioni di bug

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

Versione 1.1.0-alpha05

29 settembre 2021

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

Modifiche all'API

  • È stato aggiunto il supporto per la comunicazione tra i modificatori (Id5467, b/198826874)
  • Sono stati aggiunti indicatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • density: Density e layoutDirection: LayoutDirection sono stati aggiunti 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 o inviali 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 (lazy e non lazy) in relazione allo scorrimento (I6cdb0)
  • TouchInjectionScope.swipeWithVelocity migliorato. Ora accetta una gamma più ampia di variabili di input e suggerisce modifiche all'input se non è possibile creare uno scorrimento (I40fbe, b/182477143)

Versione 1.1.0-alpha04

15 settembre 2021

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

Modifiche all'API

  • PointerEvent ora ha un PointerEventType per supportare gli eventi di passaggio del mouse. (I091fa)
  • Consenti ai bambini di accettare l'input del cursore al di fuori dei limiti dell'input del cursore del genitore. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • performGesture e GestureScope ritirati, sostituiti da performTouchInput e TouchInjectionScope. (Ia5f3f, b/190493367)
  • È stato aggiunto touchBoundsInRoot a SemanticsNode per includere le dimensioni minime del touch target, in modo che gli sviluppatori possano assicurarsi che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214)
  • Ripeti l'implementazione di ispezionabile (I927bc, b/191017532)
  • È stato modificato il nome del parametro ispezionabile in modo che corrisponda a quello composto (I3a482, b/191017532)
  • Sono stati introdotti performTouchInput e TouchInjectionScope come 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 in updatePointerTo e updatePointerBy. Tutti gli altri metodi sono uguali.

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

    1. Quando si inviava un evento di tipo down mentre i cursori erano stati spostati senza inviare un evento di tipo move (in altre parole, è stato utilizzato updatePointerTo(), ma non move() e poi viene chiamato down()), l'implementazione precedente anticipava la data e l'ora dell'evento e inviava un evento di tipo move prima di inviare l'evento di tipo down. La nuova implementazione invia comunque l'evento move, ma non avanza l'ora dell'evento in questo scenario specifico.
    2. Quando si inviava un evento up mentre i cursori erano stati spostati senza inviare un evento move (come sopra), l'implementazione precedente anticipava la data e l'ora dell'evento e inviava un evento move prima di inviare l'evento up. La nuova implementazione non fa né l'una né l'altra: le nuove posizioni degli indicatori verranno applicate solo tramite l'evento up.

    Infine, TouchInjectionScope introduce un nuovo metodo currentPosition(pointerId: Int) per ottenere la posizione corrente del cursore 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 minimi. (I43e10, b/171509422)
  • Il supporto dell'overscroll elastico è stato aggiunto sui dispositivi Android 12. (Iccf3c, b/171682480)

Versione 1.1.0-alpha03

1° settembre 2021

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

Nuove funzionalità

  • Compose 1.1.0-alpha03 è stato aggiornato in modo da dipendere da Kotlin 1.5.30. (I74545)

Modifiche all'API

  • È stato aggiunto Modifier.inspectable per l'inserimento di altri modificatori. (I1909b, b/191017532)
  • È stata aggiunta l'API BlurredEdgeTreatment per semplificare i casi d'uso della sfocatura in combinazioni più comuni di flag dei clip e modalità Tile. La maggior parte dei casi d'uso prevede di lasciare che i contenuti sfocati vengano visualizzati al di fuori dei limiti dei contenuti originali e di sfocare le regioni al di fuori di questi limiti con il nero trasparente oppure di ritagliare i contenuti in base ai limiti dei contenuti campionando il bordo più vicino per i kernel di sfocatura che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547)
  • È stato aggiunto il supporto di RenderEffect in Componi da computer. È stato introdotto OffsetEffect, nonché il modificatore di sfocatura, come un modo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia della composizione. (I0f6aa, b/166927547)
  • È stata introdotta l'API RenderEffect, che può essere configurata facoltativamente su un Modifier.graphicsLayer per modificare i contenuti del livello stesso. Questo può essere utilizzato per sfocare i contenuti di un composable e dei composable secondari all'interno di una gerarchia della composizione. (I47c4d, b/166927547)
  • AwaitPointerEventScope ora dispone di withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • È stata aggiunta una dimensione minima del touch target a ViewConfiguration per l'utilizzo nella semantica e nell'input del cursore per garantire l'accessibilità. (Ie861c)
  • È stato aggiunto il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per gli effetti di rendering basati su sfocatura. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction e hasScrollToKeyAction ora sono API stabili (I142ae, b/178483889)
  • È stato aggiunto il metodo di test per ottenere i limiti ritagliati. (I6b28e)

Correzioni di bug

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

Versione 1.1.0-alpha02

18 agosto 2021

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

Modifiche all'API

  • PointerEvent ora supporta la lettura dello stato del pulsante del mouse e dello stato del modificatore della tastiera. (I6310c, b/180075467)
  • I gesti iniettati ora utilizzano l'ora di MainTestClock come fonte di riferimento per l'ora. L'ora corrente per gli eventi iniettati in performGesture verrà inizializzata con l'ora corrente di MainTestClock. (Ifb364, b/192064452)
  • È stato aggiunto il costruttore DpRect(DpOffset, DpSize) (I2cf16, b/194219828)
  • Aggiunta la classe DpSize (I7abb1, b/194219828)

Correzioni di bug

  • È stato aggiornato l'analisi XML delle immagini vettoriali per supportare ColorStateList come proprietà di tinta del colore di base su VectorDrawables. (I86915, b/195668138)

Versione 1.1.0-alpha01

4 agosto 2021

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

Modifiche all'API

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

    L'API Brush è stata aggiornata in modo da avere un parametro di dimensione intrinseca su cui viene eseguita una query in BrushPainter (Ia2752, b/189466433)

  • Aggiornamento del metodo DrawScope#drawImage che utilizza i rettangoli di origine e di destinazione per utilizzare un parametro facoltativo FilterQuality. Questa opzione è utile per l'arte pixel che deve essere pixelata quando viene aumentata di dimensioni per l'arte basata su pixel. È stato aggiornato il composable BitmapPainter + Image per utilizzare anche un parametro facoltativo FilterQuality (Ie4fb0, b/180311607)

  • È stato aggiunto il metodo GestureScope.advanceEventTime per offrire un maggiore controllo sulla tempistica degli eventi in un gesto (Ibf3e2)

Correzioni di bug

  • Per supportare meglio l'accodamento dei modi di disegno, assicurati che l'implementazione di Modifier.paint chiami drawsContent. In precedenza, Modifier.paint era previsto per un nodo foglia nella catena di modificatori, ma in questo modo ne viene impedita la configurazione su un contenitore componibile (ad es. una casella) o l'aggiunta di decorazioni aggiuntive come Modifier.paint().border(). Se Modifier.paint chiama drawContent dopo aver disegnato i contenuti del pittore specificato, il comportamento è più coerente con il pattern del modificatore. (Ibb2a7, b/178201337, b/186213275)
  • Ora i dialoghi seguono il comportamento di dimensionamento della piattaforma. Imposta usePlatformDefaultWidth su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy è stato spostato in :compose:ui (I5eb09, b/160602714)
  • Lo scorrimento tramite azioni di semantica per gli elenchi lazy e i componenti con scorrimento regolare ora è animato (Id9066, b/190742024)

Versione 1.0

Versione 1.0.5

3 novembre 2021

androidx.compose.ui:ui-*:1.0.5 viene rilasciato. La versione 1.0.5 contiene questi commit.

Correzioni di bug

  • È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)

Versione 1.0.4

13 ottobre 2021

androidx.compose.ui:ui-*:1.0.4 viene rilasciato. La versione 1.0.4 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornata per dipendere da Kotlin 1.5.31

Versione 1.0.3

29 settembre 2021

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

Aggiornamenti delle dipendenze

  • Aggiornata per dipendere da Kotlin 1.5.30

Versione 1.0.2

1° settembre 2021

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

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

Versione 1.0.1

4 agosto 2021

androidx.compose.ui:ui-*:1.0.1 viene rilasciato. La versione 1.0.1 contiene questi commit.

Aggiornamenti delle dipendenze

  • Aggiornata per dipendere da Kotlin 1.5.21.

Versione 1.0.0

28 luglio 2021

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

Funzionalità principali della versione 1.0.0

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

Problemi noti

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

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

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

Versione 1.0.0-rc02

14 luglio 2021

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

Correzioni di bug

  • Ora i dialoghi seguono il comportamento di dimensionamento della piattaforma. Imposta usePlatformDefaultWidth su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)

Versione 1.0.0-rc01

1° luglio 2021

androidx.compose.ui:ui-*:1.0.0-rc01 viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.

Nuove funzionalità

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

Modifiche all'API

  • Rimossi i valori sperimentali non più supportati FocusManager#moveFocusIn e FocusManager#moveFocusOut (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 di 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 dalla presenza di quel 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 del proprietario. (Ia1c05, b/185693006)

Correzioni di bug

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

Modifiche all'API

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

Correzioni di bug

  • Per il momento le costanti principali sono @ExperimentalComposeUiApi. Il codice di consumo può dichiarare costanti private prima della stabilizzazione. (Ia5d48)
  • Ora i test di composizione possono essere eseguiti su Robolectric. Finora sono state identificate le seguenti limitazioni:
    • Non esiste una bitmap nativa, quindi ImageBitmap() genera una NullPointerException.
    • Non viene eseguito alcun disegno, pertanto captureToImage() attenderà indefinitamente il passaggio di disegno successivo (ovvero si verifica un deadlock).
    • Non è stato caricato alcun carattere, pertanto qualsiasi testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
    • ComposeTestRule.waitUntil {} non esegue il thread principale durante l'attesa, pertanto è praticamente uguale a ComposeTestRule.mainClock.advanceTimeUntil {} In futuro è previsto di identificare 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 situato nella directory src/main o equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza a metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile da persone che viene utilizzato quando si utilizza adb shell profman --dump-classes-and-methods .... Queste regole possono assumere una di due forme per scegliere come target metodi o classi.

  • Una regola del metodo avrà il seguente pattern:

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

    <CLASS_DESCRIPTOR>
    
  • Qui <FLAGS> è uno o più dei 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 scelto come target. Ad esempio, la classe androidx.compose.runtime.SlotTable avrà un descrittore Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> è la firma del metodo e include il nome, i tipi di parametro e i tipi di ritorno del metodo. Ad esempio, il metodo fun isPlaced(): Boolean in 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 che ha il flag S indica che si tratta di un metodo chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.

  • Un metodo con il flag P indica che si tratta di un metodo chiamato dopo l'avvio.

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

Come funziona?

  • Le librerie possono definire queste regole che verranno pacchettizzate negli elementi AAR. Quando viene compilata un'app che include questi elementi, le regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app è installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare il rendimento dell'applicazione, in particolare la prima esecuzione. Tieni presente che questo non avrà alcun effetto sulle applicazioni di debug.

Versione 1.0.0-beta08

2 giugno 2021

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

Modifiche all'API

  • L'enum NestedScrollSource viene sostituito da una classe in linea. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) viene rinominato in FocusManager.clearFocus(force = true) (Ia0c41)
  • È stato eseguito il refactoring degli utilizzi degli enum nelle classi in linea per evitare problemi con le istruzioni when esaustive quando vengono aggiunti nuovi valori di enum. (I2b5eb)
  • Vuoi rimuovere @ExperimentalComposeUiApi da PopupProperties? (I01fa6)
  • PointerType è stato modificato da un enum a una classe in linea (If5058)
  • Le proprietà ContentDescription e Semantica testo non sono più valori singoli, ma elenchi. In questo modo è possibile unirli così come sono anziché concatenarli. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
  • Modifier.focusModifier() è deprecato e sostituito da Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() e Modifier.onGloballyPositioned() non sono più funzioni incorporate (I727f6, b/186109675)
  • L'enum KeyboardType viene sostituito da una classe in linea. (I73045, b/187055290)
  • Enum FocusState sostituito con un'interfaccia FocusState (Iccc1a, b/187055290)
  • L'enum ImeAction è stato sostituito da una classe in linea. (I18be5, b/187055290)
  • PlaceholderVerticalAlign viene convertito in una classe in linea. (If6290)
  • TextUnitType è ora una classe in linea. (I4cba9)
  • Le funzioni AnnotatedString.withAnnotation ora sono ExperimentalTextApi anziché ExperimentalComposeApi. (I0cd0a)
    • Il costruttore TextUnit con TextUnitType ora è ExperimentalTextApi anziché ExperimentalComposeApi.

Correzioni di bug

  • È stato corretto il bug introdotto nella versione beta07 per cui gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica della posizione, non è necessario chiamare change.consumePositionChange nelle chiamate di callback onDrag (I42fc4, b/185096350, b/187320697)
  • È stato corretto il problema relativo ai LayoutModifiers che forniscono linee di allineamento. È stato corretto un bug che impediva la misurazione del livello principale quando le linee di allineamento dei livelli secondari cambiavano. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() è stato modificato per riportare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo l'applicazione di tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verranno registrate. (Ieb67d, b/177926591)

Versione 1.0.0-beta07

18 maggio 2021

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

Modifiche all'API

  • Interfaccia ViewRootForInspector aggiunta per l'utilizzo nello strumento di controllo (Ib70df)
  • SubcomposeLayoutState ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di spazi di conteggio anziché eliminarli per riutilizzarli la volta successiva che ne avremo bisogno (Ieb981)
  • L'enum KeyEventType viene sostituito da una classe in linea. (Id670a, b/187055290)
  • L'enum FocusDirection viene sostituito da una classe in linea. (Ib6d03, b/187055290, b/184086802)
  • È stata introdotta la possibilità di sollevare lo stato SubcomposeLayout, che consente di precomporre i contenuti in un valore slotId richiesto, il che renderebbe più rapida la misurazione successiva, poiché una volta che tentiamo di eseguire la composizione secondaria con lo slotId specificato, la prossima volta non sarà necessaria alcuna composizione. (I42580, b/184940225)
  • È stato aggiunto il cursore di selezione dei clip (Iff80d, b/183408447)
  • Sono state rimosse le API inutilizzate relative al supporto di LayoutInspector. (I2ac78)

Correzioni di bug

  • Ora LazyColumn/Row manterrà attivi (non eliminati) fino a 2 elementi precedentemente visibili anche quando non sono visibili. In questo modo, il componente può riutilizzare le sottocomposizioni attive quando dobbiamo comporre un nuovo elemento, il che migliora le prestazioni di scorrimento. (Ie5555)
  • TextGeomerticTransform e TextDecoration su AnnotatedString verranno applicati come indicati. (I61900, b/184760917)

Versione 1.0.0-beta06

5 maggio 2021

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

Modifiche all'API

  • Risolvere il conflitto con il gesto di navigazione (I1145e)
  • @ComposeCompilerApi non è più @RequiresOptIn (Iab690)
  • Sono state aggiunte le API di accessibilità CollectionInfo e CollectionItemInfo che consentono di contrassegnare la raccolta e i relativi elementi per i servizi di accessibilità (Id54ef, b/180479017)
  • È stato aggiunto SemanticsActions.ScrollToIndex per scorrere un elenco con elementi indicizzati fino all'elemento con un determinato indice e SemanticsProperties.IndexForKey per ottenere l'indice di un elemento in un elenco con elementi con chiave. Entrambe le azioni sono implementate da LazyList.
    • È stato aggiunto SemanticsNodeInteraction.performScrollToIndex che scorra un elenco fino all'indice specificato e SemanticsNodeInteraction.performScrollToKey che scorra un elenco fino all'elemento con la chiave specificata. (I4fe63, b/178483889, b/161584524)
  • È stato aggiunto ownerViewId a GraphicLayerInfo (I19f62)
  • Sono stati aggiunti sovraccarichi di Font() per caricare i caratteri da asset, File e FileDescriptor (I5d382)
  • È stata aggiunta l'API di accessibilità error che consente di contrassegnare un nodo contenente input non validi (I12997, b/180584804, b/182142737)
  • Sono stati aggiunti Font() sovraccarichi per caricare i caratteri da asset, File e FileDescriptor (I43007)
  • Supporto per il salvataggio di AnnotatedString in TextFieldValue.Saver. Sono state aggiunte le funzioni di utilità addTtsAnnotation e withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304)
  • È stata aggiunta la funzione di costruttore TextUnit TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

Versione 1.0.0-beta05

21 aprile 2021

androidx.compose.ui:ui-*:1.0.0-beta05 viene rilasciato. La versione 1.0.0-beta05 contiene questi commit.

Modifiche all'API

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

Correzioni di bug

  • Sono state corrette le azioni di scorrimento dell'accessibilità per ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight e accessibilityActionScrollDown. Invece di scorrere fino alla fine della sezione scorrevole, ora verrà visualizzata una schermata nella direzione indicata. (Ieccb0)
  • I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)

Versione 1.0.0-beta04

7 aprile 2021

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

Modifiche all'API

  • Rinomina hideSoftwareKeyboard 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à informeranno automaticamente l'utente delle relative modifiche (Idcf6f, b/172590946)
  • Viene introdotto TextOverflow.Visible. (Ic8f89)

Correzioni di bug

  • È stato risolto il problema per cui gli elementi di LazyColumn/LazyRow situati sui bordi erano posizionati in modo errato dopo un movimento rapido (Ie4d13, b/183877420)
  • AndroidViewBinding ora rimuove correttamente i frammenti gonfiati tramite FragmentContainerView quando AndroidViewBinding viene rimosso dalla gerarchia di composizione. (Ib0248, b/179915946)
  • AndroidViewBinding ora nidifica correttamente i frammenti gonfiati tramite FragmentContainerView quando il ComposeView si trova all'interno di un Fragment, risolvendo i problemi di salvataggio e ripristino dello stato di questi frammenti. (I70eb0, b/179915946)
  • Compose ViewBinding ora dipende da Fragment 1.3.2 e ora mostra in modo coerente i frammenti gonfiati 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 rilasciato. La versione 1.0.0-beta03 contiene questi commit.

Modifiche all'API

  • Controllo differito delle dipendenze di ViewTree di ComposeView (I8dbbf, b/182466548)
  • Sono stati aggiunti i parametri facoltativi startX/endX 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 rilasciato. La versione 1.0.0-beta02 contiene questi commit.

Modifiche all'API

  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I5951e, b/168778053)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I84472, b/168778053)
  • Sono stati rimossi i seguenti SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Ho contrassegnato il seguente SemanticsMatchers come @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Sono stati aggiunti i seguenti SemanticsMatcher:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Correzioni di bug

  • Applicare limitazioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
  • androidx.compose.ui:ui non dipende più da AppCompat o Fragment. Se nella tua applicazione utilizzi ComposeView e Fragment e/o AppCompat, assicurati di utilizzare AppCompat 1.3 o versioni successive / Fragment 1.3 o versioni successive. Queste versioni sono necessarie per impostare correttamente il ciclo di vita e i proprietari dello stato salvato richiesti per ComposeView. (I1d6fa, b/161814404)
  • Correzione del problema relativo a rememberSaveable { mutableStateOf(0) } quando viene utilizzato all'interno di una destinazione di navigazione-composizione. (I1312b, b/180042685, b/180701630)
  • È stata aggiunta una nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053)
  • È stato corretto un raro errore NoSuchElementException in ComposeRootRegistry tearDownRegistry() (Iddce1)

Versione 1.0.0-beta01

24 febbraio 2021

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

Questa è la prima release di Compose 1.0.0 Beta.

Modifiche all'API

  • Il callback onStart è stato aggiunto a detectDragGestures (I67269, b/179995594)
  • I modificatori per le dimensioni in base ai valori intrinseci non sono più sperimentali. (I15744)
  • MeasureBlocks è stato rinominato MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState è stato sostituito da [Mutable]InteractionSource
    • Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
    • Anziché passare interactionState = remember { InteractionState() } a componenti come Button e Modifier.clickable(), utilizza interactionSource = remember { MutableInteractionSource() }.
    • Anziché: 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 lo stream di interazioni. Per ulteriori informazioni, consulta la documentazione e gli esempi di InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Aggiungi l'interfaccia AccessibilityManager e LocalAccessibilityManager in CompositionLocals (I53520)
  • Sono stati rimossi i metodi LayoutCoordinates deprecati. Utilizza la funzione anziché la proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
  • Alias di tipo sostituiti dai tipi sottostanti:
    • ColorStop è 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)
  • Ora Placeable espone measuredSize, che rappresenta le dimensioni effettive misurate del layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608)
  • Aggiunge il modificatore selectionGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
  • Il valore defaultFactory per compositionLocalOf e staticCompositionLocalOf ora è obbligatorio anziché facoltativo.

    Queste modifiche rimuovono un potenziale errore di tipo per i tipi non nulli in cui non è stata fornita una fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non null.

    Per i tipi nullable, ti consigliamo di fornire { null } come factory predefinita.

    Sconsigliamo di utilizzare variabili locali con tipi non null se non è possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la funzione lambda defaultFactory deve generare un'eccezione. Tuttavia, se viene lanciata un'eccezione, i consumatori della locale avranno una dipendenza implicita dalla sua indicazione che non viene applicata dal sistema di tipi. (Ifbd2a)

  • I metodi obsoleti dei moduli ui sono stati rimossi (I646f6)

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

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

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

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

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

  • AnimationClockObservable e le sottoclassi sono stati rimossi. AnimatedFloat è stato rimosso. (Icde52, b/177457083)

  • Providers è stato rinominato in CompositionLocalProvider

    • Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
    • currentCompositeKeyHash è stata trasformata in una proprietà di primo livello componibile anziché in una funzione di primo livello componibile.
    • CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata creata come interfaccia anziché come classe concreta e non ha più parametri di tipo.
    • La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
    • Il metodo di unione di SnapshotMutationPolicy non è più sperimentale
    • La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
    • Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
    • La funzione Composer.collectKeySourceInformation è stata rimossa. Non è più necessario.
    • I metodi isJoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
    • Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe file di Kotlin, la compatibilità binaria verrà interrotta, ma non la compatibilità con il codice sorgente, pertanto 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 CustomEvents da PointerInputModifier è stato rimosso (I02707, b/175294473)

  • SnapshotStateObserver non è più sperimentale (Id2e6a)

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

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

  • È stata rimossa l'API String.format e sono stati riorganizzati gli utilizzi in vari metodi toString per non sfruttare String.format internamente. (Id1290)

  • Affermazioni dp rimosse (I798d2)

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

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

  • Rimozione di runBlockingWithManualClock (I15cdc, b/179664814)

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

  • FlingConfig è stato rinominato in FlingBehavior e ora consente la personalizzazione dell'animazione di sospensione anziché delle decelerazioni predefinite. (I02b86, b/175294473)

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

  • È stato rimosso il callback SoftwareKeyboardController da tutti i campi di testo per essere sostituito a breve da una nuova API. (Iae869, b/168778053)

  • FontSpan e FontWeigthStyleSpan non vengono più utilizzati e sono stati rimossi. (Ie5b56, b/177423444)

  • Sono state apportate le seguenti modifiche all'API Material:

    • È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione del padding predefinito.
    • I parametri in BackdropScaffold sono stati riordinati in modo da rispettare le linee guida dell'API per i parametri obbligatori che precedono i parametri facoltativi.
    • Il parametro icon in BottomNavigationItem è stato spostato dopo selected e onClick.
    • Il parametro alwaysShowLabels in BottomNavigationItem è stato rinominato in alwaysShowLabel.
    • I parametri bodyContent in alcuni componenti sono stati rinominati in content.
    • Parametri riordinati in ButtonDefaults.buttonColors(). Tieni presente che, poiché il tipo di parametri non è cambiato, non verrà generato un errore nel codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza.
    • Parametro secondaryVariant aggiunto a darkColors(). Questo colore è in genere uguale a secondary nel tema scuro, ma viene aggiunto per coerenza e ulteriore personalizzazione.
    • Sono stati rimossi ElevationDefaults e animateElevation() dall'API pubblica perché non erano di uso comune / utili.
    • onValueChangeEnd in Slider è stato rinominato in onValueChangeFinished e impostato come nullable.
    • 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 è stato reso un'estensione di RowScope.
    • ModalDrawerLayout rinominato in ModalDrawer.
    • BottomDrawerLayout rinominato in BottomDrawer.
    • (I1cc66)

Correzioni di bug

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

Versione 1.0.0-alpha12

10 febbraio 2021

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

Modifiche all'API

  • Il supporto di ViewGroups è stato rimosso da UiApplier. I composabili emitView obsoleti sono stati rimossi. (Ifb214)
  • Modifier.pointerInput ora richiede chiavi di memorizzazione per indicare quando deve essere riavviata la coroutine di rilevamento dell'input del cursore per le nuove dipendenze. (I849cd)
  • CompositionReference rinominato in CompositionContext (I53fcb)
  • Bounds è stato rinominato in DpRect (I4b32a)
  • Aggiornamento dei test: la funzione hasText() controllerà sia i testi di input che le etichette/suggerimenti/testo segnaposto nel campo di testo (Iab803)
  • Il composable viewModel() e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Per utilizzarlo, dovrai aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I7a374)
  • Consenti un'azione nullable in AccessibilityAction, modifica l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction da CharSequence a String (I0dc82)
  • Per una migliore corrispondenza delle convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stato rinominato in BitmapPainter per allinearsi a VectorPainter. (Iba381, b/174565889)
  • Miglioramento delle API di test della sottostringa con la sottostringa ora come argomento (Icbe78)
  • È stato aggiunto un Modifier.focusOrder() che accetta un FocusRequester senza specificare un ordine di messa a fuoco personalizzato in una lambda. Questo è utile quando dobbiamo specificare solo un riferimento ma non un ordine di messa a fuoco personalizzato per un composable (I4f52a, b/179180978)
  • ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
  • I metodi di destrutturazione e copy() sono stati rimossi da diversi classi in cui venivano utilizzati raramente. (I26702, b/178659281)
  • Il popup è stato spostato in modo da essere specifico per la piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e isFocusable è stato spostato in un parametro focusable in PopupProperties (Ieeea5)
  • La funzionalità Dialog è stata spostata in modo da essere specifica per la piattaforma. AndroidDialogProperties è stato rinominato in DialogProperties. (I4ef69, b/179138130)
  • LayoutNode è stato reso interno (I8a7b1, b/175103944)
  • Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea)
  • loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Utilizza invece painterResource. (I6b809)
  • Per motivi di prestazioni, la semantica di ScrollAxisRange ora accetta funzioni lambda che restituiscono valori Float anziché valori Float diretti. (If4a35, b/178657186)
  • Sono state aggiunte le semantiche di EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificarne la semantica (I8e07a)
  • È stato reso interno OwnerLayer/OwnerScope/OwnerSnapshotObserver (I4ffaf, b/175103944)
  • toIntPx() è stato rinominato in roundToPx(). (I9b7e4, b/173502290)
  • IntBounds è stato rinominato in IntRect e l'API è stata migliorata. (I1f6ff)
  • L'API Snapshot è stata aggiornata per essere più coerente con le linee guida dell'API e per nascondere le classi di implementazione interna dall'API pubblica. (Id9e32)
  • Sono state aggiunte le azioni di semantica di espansione e compressione. Aggiunti metodi expand e halfExpand in ModalBottomSheetState (Ib5064)
  • Modifier.dragGestureFilter è stato ritirato. Utilizza invece Modifier.pointerInput { detectDragGestures (...)}. In alternativa, utilizza Modifier.draggable per i trascinamenti su un asse (I0ba93, b/175294473)
  • Gli ambienti sono stati rinominati in modo che corrispondano alla ridenominazione di Ambient -> CompositionLocal. Gli ambienti in precedenza si chiamavano AmbientFoo, ora i CompositionLocals si chiamano LocalFoo. (I2d55d)
  • BaseTextField, deprecato, è stato rimosso. Utilizza invece BasicTextField. (I71368)
  • La selezione è stata spostata nella base. (I7892b)
  • Analogamente a come abbiamo rimosso in precedenza il composable state { 0 } e ora promuoviamo l'utilizzo di remember { mutableStateOf(0) }, rimuoveremo il composable savedInstanceState { 0 }. Dovresti utilizzare rememberSaveable { mutableStateOf(0) }, che verrà salvato e ripristinato automaticamente se il tipo utilizzato all'interno di MutableState può essere archiviato nel bundle. Se in precedenza passavi un oggetto di salvataggio personalizzato, ora devi utilizzare un nuovo sovraccarico di rememberSaveable che ha il parametro stateSaver. L'utilizzo sarà simile al seguente: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • È stata aggiunta la semantica della password per l'accessibilità (I231ce)
  • È stato aggiunto ProgressBarRangeInfo.Indeterminate per contrassegnare le barre di avanzamento indeterminate per l'accessibilità (I6fe05)
  • 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 ricostruttori possono essere chiusi. I ricostruttori chiusi continueranno la ricostituzione fino al completamento delle coroutine secondarie di composizione. Recomposer.shutDown è stato rinominato in cancel per distinguerlo da close. (Ib6d76)
  • UiSavedStateRegistry è stato rinominato in SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato in AmbientSaveableStateRegistry e entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
  • L'elemento artefatto androidx:compose:runtime:runtime-saved-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
  • Molte API obsolete nel pacchetto ui sono state eliminate. (I2f2dc)
  • L'elemento compose:runtime-dispatch è stato ritirato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher in compose:ui. (Ib5c36)
  • Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
  • L'elemento view.captureToImage() è stato rimosso senza alcuna sostituzione. (I7fcd2)
  • È stata introdotta l'API ColorMatrix utilizzata per modificare i valori RGB dei contenuti di origine. È stata ristrutturata l'API ColorFilter in modo che sia un'interfaccia e corrisponda all'implementazione di PathEffect. (Ica1e8)
  • Aggiungi il parametro layoutDirection a createOutline della forma. In questo modo è possibile creare forme che tengano conto della direzione del layout. (I57c20, b/152756983)
  • onImeActionPerformed è deprecato. Utilizza KeyboardActions (If0bbd, b/179071523)
  • È stato introdotto un elemento di contesto della coroutine InfiniteAnimationPolicy che verrà applicato nelle animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando vengono eseguiti test con ComposeTestRule. (I50ec4, b/151940543)
  • La proprietà canDrag è stata rimossa da Modifier.scrollable. (Id66e7, b/175294473)
  • È stata rinominata la proprietà LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre i valori LayoutCoordinates del modificatore principale. In questo modo, si potranno creare casi d'uso più completi per onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
  • I filtri tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter sono stati ritirati. Utilizza Modifier.clickable o Modifier.pointerInput con la funzione detectTapGestures. (I6baf9, b/175294473)
  • La funzione unregisterProvider di SaveableStateRegistry è stata rimossa. Ora registerProvider() restituisce l'oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739)
  • rememberSavedInstanceState() è stato rinominato in rememberSaveable() e spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • CoreText e CoreTextField sono stati rimossi dall'API pubblica
    • È stato rimosso il sovraccarico SelectionContainer obsoleto
    • (I99c19)
  • I test in cui Compose viene utilizzato in gerarchie aggiunte/rimosse direttamente in WindowManager ora sono più stabili. (Ie81ed, b/175765614)
  • È stato rimosso Recomposer.current(). [Abstract]ComposeView ora utilizza per impostazione predefinita Recomposer con ambito finestra creati in modo lazy e gestiti da ViewTreeLifecycleOwner per la finestra. I tick di animazione basati su recomposition e withFrameNanos vengono messi in pausa quando il ciclo di vita dell'host è interrotto. (I38e11)
  • Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Utilizza questa API anziché Recomposer.current(), che ora è stata ritirata. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver sono stati spostati da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
  • I comandi di modifica accettano AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata. (I4c3ea)
  • Tempo di attività e Durata sono stati rimossi. (Ib9bf4, b/177420019)
  • CompositionData.asTree() e le API correlate sono state spostate in un modulo ui-tooling-data separato e contrassegnate come sperimentali (Ic95b8)
  • I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da left/right a start/end per supportare lo specchio automatico della forma nella direzione RTL. AbsoluteRounderCornerShape e AbsoluteCutCornerShape sono stati introdotti per i casi in cui non è desiderato lo specchio automatico. (I61040, b/152756983)
  • L'API di destinazione del plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.

    Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica che comporta la rottura del codice binario. (I3b922, b/169406779)

  • Rimuovere la funzione StringBuilder.deleteAt pubblica involontariamente (Id6ed9)

Correzioni di bug

  • Le ComposeView inserite nelle gerarchie di visualizzazione che sono figlie di un'altra composizione ora ospitano composizioni secondarie dei loro antenati (I92883)
  • È stata aggiornata l'API imageFromResource di compose per riutilizzare la cache delle risorse drawable al caricamento degli oggetti ImageBitmap. (If3627, b/178751994)

Versione 1.0.0-alpha11

28 gennaio 2021

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

Modifiche all'API

  • Con restrizioni è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
  • Key.DPadUp è deprecato. Utilizza Key.DirectionUp. (Iab335, b/177954892)
  • Interfaccia del proprietario ora interna. (If8e35)
  • È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
  • Modifica PopupPositionProvider in modo che utilizzi coordinate relative alla finestra, non coordinate globali. Rinomina parentGlobalBounds in anchorBounds e modifica windowGlobalBounds in windowSize: IntSize (I2994a)
  • La durata e il tempo di attività verranno sostituiti da Long millisecondi e questo passaggio rimuove la dipendenza dell'input del cursore da queste classi. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner è stato aggiunto in modo simile ad AmbientLifecycleOwner e AmbientViewModelStoreOwner già esistenti (I9a3e8, b/176756365)
  • È stata aggiornata l'API di grafica vettoriale per supportare l'analisi della colorazione applicata alla radice della grafica vettoriale. (Id9d53, b/177210509)
  • È stato aggiunto toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
  • AmbientWindowManager viene rinominato in AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Sono stati ritirati i metodi per le coordinate globali e sono stati creati nuovi metodi per le coordinate basate su finestre. (Iee284)
  • È stato aggiunto Modifier.toolingGraphicsLayer, che aggiunge un modificatore del livello grafico quando l'ispezione è attivata. (I315df)
  • FocusRequester.createRefs è ora contrassegnato come sperimentale perché potrebbe cambiare. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stato rinominato in ProgressBarRangeInfo. stateDescriptionRange è stato rinominato in progressBarRangeInfo. AccessibilityScrollState è stato rinominato in ScrollAxisRange. horizontalAccessibilityScrollState è stato rinominato in horizontalScrollAxisRange. verticalAccessibilityScrollState è stato rinominato in verticalScrollAxisRange. (Id3148)
  • È stato rimosso PointerInputData e modificato PointerInputChange per assegnargli tutti i campi di PointerInputData. È stato reso interno PointerInputEvent e PointerInputEventData perché non vengono utilizzati in alcuna API pubblica. (Ifff97, b/175142755)
  • Aggiornamento dell'implementazione di GraphicsLayerScope density per supportare le conversioni di dp in pixel non elaborati. (Ied528, b/176819695)
  • L'API matrix è stata aggiornata in modo da seguire l'ordinamento principale delle righe e fornire costanti di indice per facilitare le conversioni tra rappresentazioni diverse della matrice in modo da abbinare internamente la logica di conversione del framework tra SkMatrix e Matrix4. (I432e6)
  • Sono stati rimossi i metodi sperimentali monotonicFrameAnimationClockOf (Ib753f, b/170708374)
  • Spostare String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
  • Rinominato TransformedText.transformedText in TransformedText.text
    • TransformedText non è più una classe di dati (Ie672a)
  • data class è stato rimosso dai seguenti corsi:
    • InlineTextContent
    • LocaleList (I605c7)
  • Le seguenti classi non sono più classi di dati:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • È stata modificata VisualTransformation in modo che sia un'interfaccia funzionale (I3bba4)
  • È stato aggiunto un tipo di parametro di riferimento funzione (I5e1bd)
  • Aggiungere i limiti trasformati a InspectorNode (Ice42f)

Correzioni di bug

  • onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
  • Modifiche alle funzioni di fabbrica per Font/FontFamily/Typeface

    • Sono state aggiunte funzioni di fabbrica che iniziano con una lettera maiuscola
    • Funzioni di fabbrica precedenti ritirate con lettere iniziali minuscole
    • Le nuove funzioni di fabbrica restituiscono la famiglia di caratteri anziché le sottoclassi
    • Sono stati nascosti i costruttori delle sottoclassi, in modo che possano essere costruiti solo tramite funzioni di fabbrica.
    • È stato rinominato Font.asFontFamily in Font.toFontFamily (I42aa7)
  • È stato introdotto ComposeContentTestRule, che 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 lo sviluppatore. Da utilizzare quando vuoi avviare l'attività durante il test, ad esempio utilizzando ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState ora è animateFooAsState, dove Foo è il tipo della variabile da animare, ad esempio Float, Dp, Offset e così via (Ie7e25)

  • Il parametro Descrizione dei contenuti è stato aggiunto a Immagine e Icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)

  • Rimuovi displaySize perché deve essere evitato. In genere è meglio utilizzare almeno le dimensioni di onRoot() o le dimensioni della finestra. (I62db4)

  • OnSizeChanged riportava le dimensioni dei contenuti del layout. Ora riporta le dimensioni nella relativa posizione all'interno della catena di modificatori. (I36b78, b/177562900)

  • L'API emit() e tutti i relativi sovraccarichi sono stati ritirati e rinominati in ComposeNode. Le API sono identiche, ma hanno un nome diverso per rispettare le convenzioni di denominazione di Compose (I4137b)

  • TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo dell'API e la modifica del testo in più stili non è ancora stata implementata.

    • initial è stato rimosso dai parametri del costruttore EditingBuffer. (I326d5)
  • invalidate e compositionReference() sono ora deprecati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)

  • AnnotatedString viene modificato in modo da estendere kotlin.CharSequence. Pertanto, length e subSequence ora sono funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429)

  • RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora deprecato.

    RememberObserver sostituisce CompositionLifecycleObserver con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati solo una volta, che è la prassi consigliata e continuerà a esserlo. Tuttavia, se un riferimento è stato memorizzato più volte in una composizione, onRemembered viene chiamato per ogni riferimento, 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 della composizione e, pertanto, non verrà mai chiamato onRemembered. Ciò può accadere se un'eccezione termina la composizione prima del completamento o se la composizione viene ignorata perché lo stato per cui è stata prodotta non è più attuale o non è più necessario. Se l'istanza di RememberObserver che segue il singolo consiglio 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 avviato o le risorse allocate in onRemembered, onAbandoned può essere ignorato perché non verrà chiamato se viene chiamato onRemembered. (I02c36)

  • Operazioni aritmetiche ritirate tra due o più TextUnit. Le funzioni TextUnit.Sp e TextUnit.Em sono state ritirate in favore delle funzioni di estensione come Int.sp e Int.em. (I48369)

  • Le risorse nelle librerie senza risorse pubbliche dichiarate esplicitamente (ad es. tramite public.xml) ora sono private per impostazione predefinita. (Ia1dcc, b/170882230)

  • Le colonne/le righe scorrevoli sono state ritirate. L'utilizzo di ScrollableColumn è meno efficiente rispetto a LazyColumn quando hai contenuti di scorrimento di grandi dimensioni perché con LazyColumn possiamo comporre/misurare/disegnare solo gli elementi visibili. Per evitare che gli utenti utilizzino il metodo inefficiente, abbiamo deciso di ritirare ScrollableColumn e ScrollableRow e di promuovere l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere di non avere bisogno del comportamento lazy e utilizzare direttamente i modificatori come questo: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Nuovo metodo di fabbrica items(count: Int) per l'ambito di LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) e itemsIndexed(items: List) sono ora funzioni di estensione, quindi devi importarle manualmente quando le utilizzi. Nuovi sovraccarichi di estensioni 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)

  • TextInputService.onStateUpdated è stato rinominato in updateState (Id4853)

  • La transizione basata su TransitionDefinition è stata ritirata (I0ac57)

  • TextUnitType.Inherit viene rimosso. Utilizza invece TextUnitType.Unspecified. (I9ff64)

Versione 1.0.0-alpha10

13 gennaio 2021

androidx.compose.ui:ui-*:1.0.0-alpha10 viene rilasciato. La versione 1.0.0-alpha10 contiene questi commit.

Modifica che provoca un errore

  • La ristrutturazione dell'API del compilatore interno consente di raggruppare le modifiche ai nodi generati come risultato della composizione nella fase di composizione "Applica modifiche", dopo il completamento di tutte le funzioni @Composable.

    Si tratta di una modifica di interruzione del comportamento che potrebbe influire sul codice dell'applicazione, poiché i nodi non sono più disponibili dalle API interne ed sperimentali fino a quando le modifiche non sono state applicate. Di solito, questo problema può essere risolto circondando il codice con queste dipendenze in un composable SideEffect per posticipare l'esecuzione del codice fino a dopo la creazione e l'inizializzazione dei nodi. (I018da)

Modifiche all'API

  • È stato aggiunto Modifier.focusOrder(), che può essere utilizzato per specificare un ordine di attraversamento dell'attenzione personalizzato (I90cf5, b/175899543, b/170155556, b/170155429)
  • È stato rimosso l'utilizzo deprecato di focusObserver. Utilizza invece onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
  • Modifiche all'API EditOperations
    • La classe EditOperation è stata rinominata in EditCommand
    • È stato aggiunto il suffisso Command per le implementazioni concrete di EditOperation
    • I comandi di modifica non sono più classi di dati
    • La funzione EditOperation.process è stata rinominata in applyTo
    • Rinomina di InputEventListener in InputEventCallback
    • (I0a366)
  • Sono stati rimossi PxSquared, PxCubed e PxInverse inutilizzati. È stata modificata la proprietà Size.center() in modo che sia una proprietà. (I973f7)
  • Il modulo ui-test ora potrà configurare la creazione di recomposer per le UI testate (Ibebd8)
  • Velocità modificata per includere componenti e operazioni matematiche. (Ib0447)
  • @ExperimentalTesting è stato rinominato in @ExperimentalTestApi per essere coerente con annotazioni API sperimentali simili (Ia4502, b/171464963)
  • Color.useOrElse() è stato rinominato in Color.takeOrElse() (Ifdcf5)
  • Sono state rimosse le classi DpInverse, DpSquared e DpCubed non utilizzate. (I4d62b)
  • Constraints#satisfiedBy è stato rinominato in isSatisfiedBy. (I9cf5c)
  • Aggiungi un callback per notificare al proprietario la modifica dei limiti del nodo di layout. (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 delle visualizzazioni basate su Compose, eliminando la loro composizione per ricrearle nuovamente in un secondo momento. Aggiungi API per installare e rilevare Recomposers basati su finestra e CompositionReference per creare composizioni secondarie.

    Aggiungi ViewCompositionStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews. Il comportamento predefinito è l'eliminazione al distacco della finestra. (I860ab)

  • È stata rimossa l'API pubblica Any.identityHashCode() (I025d7)

  • È stata rimossa l'API toStringAsFixed in favore dell'utilizzo diretto di String.format. (Iaba6b)

  • Aggiungi il pulsante di attivazione/disattivazione a Strings.kt di base (I4a5b7, b/172366489)

  • nativeClass è stato spostato nel modulo UI e reso interno. Sono stati aggiornati gli utilizzi di nativeClass nelle implementazioni di equals in modo da utilizzare "è MyClass". (I4f734)

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

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

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

  • TestUiDispatcher è stato ritirato. Utilizza Dispatchers.Main (Ic171f, b/175385255)

  • ImeOptions e KeyboardOptions non sono più una classe di dati (I3c898, b/168684531)

  • Modifiche all'API VisualTransformation

    • OffsetMap è stato rinominato in OffsetMapping
    • È stato rinominato OffsetMapping.identityOffsetMap in OffsetMapping.Identity
    • PasswordTransformation non è più un data-class
    • OffsetMapping è stato spostato in un file dedicato
    • (I0bdf3)
  • È stata rinominata la posizione in DpOffset ed è stato rimosso getDistance() (Ib2dfd)

  • È stata modificata la funzione Dp.isFinite() in un valore Dp.isFinite (I50e00)

Correzioni di bug

  • Ora Recomposer espone un flusso del suo stato attuale, consentendo di monitorare la sua attività e quella degli effetti associati. (Ifb2b9)
  • Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • animate() viene ora sostituito con animateAsState(), che restituisce un State<T> anziché T. Ciò consente un miglior rendimento, in quanto l'ambito dell'invalidazione può essere ridotto al punto in cui viene letto il valore di Stato. (Ib179e)
  • Aggiungi l'API di ruolo Semantics e aggiungi il ruolo come parametro a SemanticsModifier, che è selezionabile, attivabile e disattivabile. È stato modificato Modifier.progressSemantics in modo che possa essere utilizzato anche da Slider. (I216cd)
  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le animazioni.
    • Nuovo DecayAnimationSpec per supportare l'animazione di decadimento multidimensionale
    • (I820f2, b/168014930)

Versione 1.0.0-alpha09

16 dicembre 2020

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

Modifiche all'API

  • KeyEvent.Alt deprecato è stato rimosso. Utilizza KeyEvent.isAltPressed. (Idd695)
  • Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati. Utilizza Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
  • Modifier.focusObserver è deprecato. Utilizza Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • Per la sospensione delle API di input del cursore, è stato rinominato HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
  • L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
  • Aggiunta di dichiarazioni di scomposizione per creare istanze di FocuSRequester (I35d84, b/174817008)
  • accessibilityLabel è stata rinominata contentDescription. accessibilityValue è stata rinominata stateDescription. (I250f2)
  • Gli eventi personalizzati sono stati rimossi dall'API di input del cursore in sospensione (Ia54d5, b/175142755)
  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar e inoltre è stata rinominata la funzione onPositionChange in notifyPositionChange. (Ifbaf7)
  • Altri membri di LayoutNode contrassegnati come interni (I443c6)
  • LayoutInfo è stato introdotto per essere utilizzato dagli strumenti e dai test (I9b190)
  • AndroidOwner impostato come interno (Ibcad0, b/170296980)
  • È stata rimossa l'annotazione ExperimentalPointerInput (Ia7a24)
  • È stato aggiunto un sistema di scorrimento nidificato. Per ulteriori dettagli, consulta Modifier.nestedScroll (I36e15, b/162408885)
  • La funzione subcomposeInto(LayoutNode) è stata resa interna (Id724a)
  • L'interfaccia Applier è cambiata per semplificare la creazione degli alberi dal basso verso l'alto anziché dal basso verso l'alto.

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

    È stato aggiunto un nuovo metodo, insertBottomUp().

    Un applicatore inserisce i nodi nell'albero in modifica utilizzando insertTopDown() o insertBottomUp(), a seconda di quale ha un rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da creare dal basso verso l'alto rispetto a quelli dall'alto verso il basso. Prima di questa modifica, era necessario un insieme di inserimenti per implementare il metodo dal basso verso l'alto, che doveva essere copiato in ogni applicativo che richiedeva la costruzione dal basso verso l'alto per le prestazioni. Con questa modifica, un Applier sostituisce insertBottomUp() per creare un albero dal basso verso l'alto e insertTopDown() per creare l'albero dall'alto verso il basso. (Icbdc2)

  • Sono state aggiunte le proprietà dismissOnBackPress e dismissOnClickOutside ad AndroidDialogProperties. Consentono di configurare quando verrà invocato il lambda onDismissRequest della finestra di dialogo. (If5e17)

  • È stata aggiunta l'API painterResource per gestire il caricamento opaco degli oggetti Painter da formati di asset rasterizzati (come i file PNG) o da VectorDrawables. I consumatori non devono più determinare il tipo di asset in anticipo e possono chiamare questo metodo per ottenere un oggetto Painter da utilizzare nei composabili di immagini o nei modificatori di pittura. (I2c703, b/173818471)

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

  • È stato spostato ContentDrawScope nel modulo ui-graphics per essere associato a DrawScope. (Iee043, b/173832789)

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

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

  • È stata rimossa la registrazione (e la relativa annullamento) globale di ComposeIdlingResource e la registrazione (e la relativa annullamento) globale degli orologi in ComposeIdlingResource (I32660)

Correzioni di bug

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

    CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Sono pubblici, ma non sono destinati all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c)

  • È stato eseguito il refactoring di ShaderBrush per creare in modo lazy un'istanza di shader quando sono disponibili informazioni sulle dimensioni dell'ambiente di disegno. Questo è utile per definire gradienti che occupano l'intero spazio di disegno di un composable al momento della composizione, senza dover implementare DrawModifier personalizzati.

    API del costruttore della funzione di gradiente ritirate a favore dei metodi di fabbrica su un oggetto Gradient. (I511fc, b/173066799)

  • Ritiro di LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Utilizza LazyColumn e LazyRow (I5b48c)

  • BuildCompat.isAtLeastR (Idb37e) non più supportato

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare un oggetto AnnotatedString. Funzione di compilatore annotatedString ritirata. (Idfe0b)

  • Sono stati rimossi i metodi di estensione su Float e Double per convertire i valori in radianti. È stata spostata in una funzione privata all'interno dell'implementazione PathParser che era l'unico posto in cui veniva utilizzata (I25f52)

Versione 1.0.0-alpha08

2 dicembre 2020

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

Modifiche all'API

  • Aggiungi l'azione di semantica Ignora (I2b706)
  • Le API DrawModifier sono state spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. È stato creato il file DrawModifierDeprecated.kt per includere metodi di tipo/helper per assistere nella migrazione dalle API non più supportate alle API attuali. (Id6044, b/173834241)
  • Modifier.drawLayer è stato rinominato in Modifier.graphicsLayer. Inoltre, sono state aggiornate le classi correlate a GraphicsLayer in base al feedback sull'API. (I0bd29, b/173834241)
  • Sono stati aggiunti i nuovi metodi placeable.placeWithLayer() e placeable.placeRelativeWithLayer() che consentono ai layout personalizzati e ai modificatori di layout di posizionare un elemento secondario introducendo un livello grafico per il disegno. In questo modo, possiamo prima ottimizzare i ridisegni, quindi, quando dobbiamo spostare un elemento secondario, non dobbiamo ridisegnare i relativi contenuti. In secondo luogo, possiamo applicare le trasformazioni di disegno per un elemento secondario (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • <T> è stato rimosso dalla dichiarazione SubcomposeLayout. Ora puoi utilizzarlo senza specificare un tipo. (Ib60c8)
  • Sono state aggiunte le API Modifier.scale/rotate per comodità di drawLayer.
    • Modifier.drawOpacity rinominato in Modifier.alpha
    • Modifier.drawShadow rinominato in Modifier.shadow (I264ca, b/173208140)
  • I campi uptime e posizione di PointerInputData non sono più null. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i manici e lo sfondo della selezione. Le app non Material possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907)
  • È stato aggiunto WindowManager.isWindowFocused per controllare se la finestra dell'host è attiva e un WindowFocusObserver che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874)
  • L'API TransformOrigin è stata aggiornata per avere una sintassi di destrutturazione che restituisce pivotFractionX e pivotFractionY come component1 e component2 (If43c4, b/173586560)
  • È stato aggiunto il controllo lint per il nome e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose. È stata inoltre eseguita la migrazione di alcune API che utilizzano children come nome per la funzione lambda finale a content, in base alle indicazioni e al controllo lint. (Iec48e)
  • È stata aggiunta un'API per verificare se i tasti di modifica Alt, Ctrl, Meta o Maiusc sono stati premuti quando è stato inviato un evento tastiera. (I50ed9)
  • È stato aggiunto un nuovo sovraccarico Modifier.drawLayer(). Richiede un blocco lambda in un nuovo GraphicsLayerScope in cui definisci i parametri del livello in modo da saltare la ricompozione e il nuovo layout quando si verifica la modifica dello stato. DrawLayerModifier ora è interno in preparazione alla migrazione della relativa logica nel metodo placeable.placeWithLayer() di LayoutModifier (I15e9f, b/173030831)
  • Sono stati ritirati gli ambienti con il suffisso Ambient e sostituiti con nuove proprietà con prefisso Ambient, seguendo le linee guida per gli altri ambienti e l'API Compose. (I33440)
  • androidx.compose.ui.text.Typeface spostato in androidx.compose.ui.text.font.Typeface (Ic2b81)
  • L'argomento semantico mergeAllDescendants è stato rinominato in mergeDescendants. (Ib6250)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del cursore, incluso il blocco dell'orientamento. (Icef25)
  • È stato rinominato VectorAsset in ImageVector. È stato spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida dell'API. È stato aggiunto un alias di tipo di VectorAssetBuilder per collegarsi a ImageVector.Builder per la compatibilità. (Icfdc8)
  • I metodi ImageAsset e correlati sono stati rinominati in ImageBitmap. (Ia2d99)
  • Aggiungi il parametro zIndex per place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e qualsiasi layout personalizzato possa impostare gli zIndex per i relativi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
  • Le proprietà di semantica di base sono state spostate nella UI (I6f05c)
  • Ritiro delle funzioni place(Offset) e placeRelative(Offset). Utilizza invece le sovraccaricamenti con offset int (I4c5e7)
  • Le API precedentemente ritirate sono state rimosse: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso, utilizza Modifier.onDrawBehind. Modifier.plus è stato rimosso. Utilizza Modifier.then. Color.Unset è stato rimosso. Utilizza Color.Unspecified. La classe PxBounds è stata rimossa. Utilizza invece Rect. (Ie9d02, b/172562222)
  • L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
  • È stato aggiunto il rilevatore di gesti per tocco, doppio tocco, pressione prolungata e indicazione di pressione utilizzando il nuovo input del cursore in sospensione. Sono state aggiunte anche alcune utilità, che semplificano la scrittura di rilevatori di gesti da parte degli sviluppatori. (I00807)
  • id è stato rinominato layoutId per LayoutIdParentData. Measurable.id è stato rinominato Measurable.layoutId. (Iadbcb, b/172449643)
  • Nuovo rilevatore di gesti multitouch, inclusi gli elementi di assistenza per il rilevamento di rotazione, zoom e panoramica. (Ic459d)
  • Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1)
  • Il controllo del tempo nei test (TestAnimationClock e i relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
  • Aggiungi API di scorrimento basate su coroutine:

    Aggiunge LazyListState.snapToItem e LazyListState.smoothScrollBy, nonché API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il completamento dello scorrimento prima di tornare. (Ie5642)

  • Modifier.focusable deve essere aggiunto in Foundation. Utilizzalo per aggiungere un comportamento di attivazione a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824)

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

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

  • TextLayoutResult.getLineVisibleEnd è deprecato. Al suo posto, TextLayoutResult.getLineEnd ora ha un nuovo parametro visibleEnd. (I73282)

  • API TextFieldValue aggiornata

    • è stato impostato TextFieldValue.composition come di sola lettura
    • Eccezione rimossa lanciata per intervallo di selezione non valido (I4a675, b/172239032)
  • Supporta TtsAnnotation per il motore di sintesi vocale. (I54cc6)

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

Correzioni di bug

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

Interfaccia utente di Compose versione 1.0.0-alpha07

11 novembre 2020

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

Modifiche all'API

  • È stata introdotta la classe inline ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro al fine di supportare i casi d'uso di scala non uniforme.
    • È stato aggiunto il metodo computeScaleFactor a ContentScale
    • È stato aggiunto ContentScale.FillBounds per eseguire una scalatura non uniforme in modo da allungare i limiti di src in modo da occupare completamente la destinazione.
    • Sono stati aggiunti metodi di operatore per calcolare i parametri ScaleFactor con i parametri Dimensioni.
    • (Ic96a6, b/172291582)
  • Sono state aggiunte le fabbriche BiasAlignment e BiasAbsoluteAlignment per la creazione di allineamenti. (Iac836, b/169406772)
  • Consente a uno sviluppatore di annullare forzatamente lo stato attivo. (I90372)
  • È stato corretto un bug che impediva di disegnare l'elevazione per le visualizzazioni all'interno di Compose. (If7782)
  • È stata creata l'API onDrawBehind all'interno di ContentDrawScope per far corrispondere la convenzione di denominazione a Modifier.drawBehind. (I4fc3a, b/171955269)
  • Aggiunta del supporto per la distanza della fotocamera per integrare le trasformazioni 3D rotationX/rotationY nelle API di livello. (I40213, b/171492100)
  • È stato aggiunto SelectionContainer senza il callback (Ibfadb)
  • L'annotazione ExperimentalSubcomposeLayoutApi è stata rimossa. Ora SubcomposeLayout può essere utilizzato senza aggiungere @OptIn (I708ad)
  • FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
  • L'opacità è stata rimossa dal modificatore drawShadow() perché era confusa. (I82c62, b/171624638)
  • MeasureResult è stato spostato da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Stato attivo 2 non più supportato rimosso (I686cb, b/168686446)
  • ZIndexModifier ora è interno (I1808b, b/171493718)
  • Aggiornamento del tipo restituito del metodo lerp sui parametri Size per restituire un valore Size non nullo al fine di evitare un'inutile confezione. (Ib0044)
  • È stato aggiunto TestMonotonicFrameClock per testare il codice che si basa su MonotonicFrameClock di Compose per attendere gli eventi del frame di composizione utilizzando runBlockingTest di kotlinx-coroutines-test (I4402f)
  • È stato rimosso GestureScope.localToGlobal (I15299, b/171462785)
  • È stato aggiunto il cercatore di onAllNodesWithSubstring (I81dd7, b/171462889)
  • Il modulo androidx.ui.test è deprecato. Esegui la migrazione a androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8)

Correzioni di bug

  • captureToBitmap è stato spostato in captureToImage. (I86385)
  • foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base senza opinioni che non utilizza i valori di un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
  • Aggiorna TextFields in modo che accetti KeyboardOptions (Ida7f3)
  • Rinomina KeyboardOptions in ImeOptions (I82f36)
  • KeyboardType e ImeAction sono stati spostati in KeyboardOptions (I910ce)
  • provideDefault è stato aggiunto come alternativa per fornire ambienti e può essere utilizzato per specificare valori di ambiente che verranno impostati solo se non è già stato fornito un valore di ambiente. (Id6635, b/171024925)
  • BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
  • Introduzione del modulo ui-test-junit4 (Ib91f8)
  • relativePaddingFrom è stato rinominato paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per specificare le distanze dai limiti del layout alle linee di base del testo. (I0440a, b/170633813)
  • LaunchedTask è stato rinominato in LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. Per promuovere le best practice, non è consentito LaunchedEffect senza parametri subject. (Ifd3d4)
  • Sono state introdotte risorse componibili che si ricompongono quando la configurazione viene aggiornata. (I6387c, b/167352819)
  • Ora Recomposer richiede un contesto coroutine al momento della costruzione (Ic4610)
  • Somma i valori zIndex quando vengono applicati più Modifier.zIndex(). In precedenza, era vincente la prima. (Ic514c, b/170623936)
  • Modifiche all'implementazione interna di SlotTable che non dovrebbero influire sull'API pubblica. (If9828)
  • È stata aggiunta l'opzione di IME di correzione automatica della tastiera (I57b8d)
  • androidx.ui.test è stato spostato in androidx.compose.ui.test (I9ffdb)
  • È stata rimossa KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45)

Contributo esterno

  • Pubblicazione disabilitata dell'elemento interno androidx.compose.ui:ui-text-android (Ib93fa)

Versione 1.0.0-alpha06

28 ottobre 2020

androidx.compose.ui:ui-*:1.0.0-alpha06 viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche all'API

  • Recomposer ora è un CompositionReference e un elemento composizione padre valido. Ora il ricomposimetro esplicito è obbligatorio in meno punti. (I4036f)
  • Ritirare VectorPainter in favore di rememberVectorPainter per indicare meglio che l'API composable internamente sfrutta "remember" per mantenere i dati nelle composizioni. (Ifda43)
  • È stata aggiornata l'API Modifier.drawWithCache per esporre ContentDrawScope come ambito del ricevitore anziché DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Questo è utile per i casi d'uso di miscelazione/colorazione in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di miscelazione corrispondente venga applicato correttamente. (Ie7ec8)
  • Sposta SimpleContainer in PopupTestUtils.kt (I78c57)
  • ConsumedData non è più una classe di dati. Per informazioni dettagliate, visita la pagina https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • Correggi la posizione dell'handle Rtl. (I6e1e0)
  • È stato eseguito il refactoring di DrawScope e ContentDrawScope in modo che siano interfacce invece di classi astratte
    • È stata creata l'implementazione di CanvasDrawScope di DrawScope
    • Implementazioni ristrutturate di DrawScope per utilizzare CanvasScope
    • È stato creato DrawContext per racchiudere le dipendenze per DrawScope
    • Sono stati rimossi i metodi obsoleti su DrawScope (I56f5e)
  • Modifica non compatibile: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...), dato che l'unico valore che dovrebbe essere modificabile negli eventi del cursore sono i dati di consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati di consumo degli eventi relativi al mouse passati. (I6acd0)
  • MeasureScope e IntrinsicMeasureScope sono stati creati come interfacce. (I1a087, b/170461665)
  • La funzione di unione per la linea di allineamento è stata nascosta. (I9da1a, b/170612900, b/170611568)
  • Aggiunta della possibilità di specificare le informazioni dell'ispettore nel modificatore composto (Idee08, b/163494569)
  • È stata aggiunta l'opzione Seleziona tutto al menu di selezione (Ief02b)
  • È stato aggiornato DrawTransform.rotate in modo da avere un parametro pivot predefinito di centro in modo da corrispondere alla documentazione.
    • Aggiornato DrawScope.rotateRad per utilizzare un offset per il punto di rotazione in modo che corrisponda ad altri metodi di trasformazione.
    • È stato ritirato il sovraccarico DrawScope.rotateRad che consumava valori float per le coordinate x e y del pivot.
    • (Iffcbb, b/170434992)

Correzioni di bug

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

Contributo esterno

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

Versione 1.0.0-alpha05

14 ottobre 2020

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

Modifiche all'API

  • Aggiungi un DSL per specificare le informazioni dell'ispettore (Ic9a22)
  • Spostare il pulsante di pressione prolungata in Testo. (Iff2bc)
  • Modificatore di input che sospende Modifier.pointerInput (Ia77d2) sperimentale
  • Sono state aggiunte le azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
  • I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata aggiunta anche l'opzione per configurare questa impostazione in modo esplicito (I64966, b/143778148, b/143778149)
  • I dati sul consumo ora sono modificabili. Inoltre, le chiamate alle funzioni di estensione che effettuano il consumo ora non restituiscono più un nuovo PointerInputChange, ma mutano il PointerInputChange fornito.

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

  • Disattivare la selezione nel testo e una demo. (Ie7e97)

  • È stata creata una funzione in linea per onGloballyPositioned (I15830)

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

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

  • È stata aggiunta un'API per cancellare il fuoco in modo programmatico (Ie1dc2, b/161487952)

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

  • Modifiche alle dimensioni

    • È stata rimossa la funzione Size.getFlipped
    • È stato rimosso Size.rem
    • È stata rimossa la funzione Size.truncDiv (Ief44d, b/169790720)
  • Nell'ambito della standardizzazione degli indicatori di valori per le classi in linea, rinomina Color.Unset in Color.Unspecified per garantire la coerenza con le altre classi in linea (I97611, b/169797763)

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

  • Il parametro ambito in AnnotatedString.Builder.addStringAnnotation è stato rinominato in tag per la coerenza dell'API. (I7c8cb)

Correzioni di bug

  • Le prestazioni di scorrimento di LazyColumn/Row sono migliorate riducendo il lavoro nella composizione secondaria a ogni scorrimento. Il nuovo metodo hasInvalidations() è stato aggiunto per la classe Composition. Il metodo hasPendingChanges() di Recomposer è stato rinominato in hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • I parametri aggiornati di Dimensioni.Senza_specifiche sono ora Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per eseguire il controllo rispetto a Dimensioni.Senza specifica e a dimensioni non finite. (I95a7e)
  • L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno degli elementi secondari (Ibc9f6)
  • Supporta la conversione di AnnotatedString in SpannableString per l'accessibilità. (Ief907)
  • Sono stati aggiunti stub per le classi Android presenti su piattaforme meno recenti per evitare, se possibile, l'utilizzo della riflessione. (Ia1790)
  • Bug corretto: se la tastiera software mostrata causava la traduzione dell'app, le coordinate di inserimento del cursore diventavano errate. (Ic4cec, b/163077821)

Versione 1.0.0-alpha04

1° ottobre 2020

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

Modifiche all'API

  • È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione del layout e dei disegni una volta che non sono più validi. (Ic4cf8)
  • Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback rispettivamente quando il layout dei contenuti è stato rimisurato e quando le dimensioni sono cambiate. (I657cf, b/154108792)
  • Aggiungere un'azione di semantica dei clic lunghi (I6281b, b/156468846)
  • È stato reso privato FocusManager. (I7872f)
  • Aggiornamento dell'implementazione per creare un'implementazione di DrawCacheModifier dedicata instead of aggiungere proprietà facoltative su DrawModifier.

    Documentazione aggiornata per vari metodi (Ibd166)

  • Crea un TextRange in linea per evitare la creazione di oggetti. (Id034b)

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

  • Aggiungi AccessibilityScrollState alle proprietà di semantica. (Ifeda9)

  • È stato introdotto Modifier.drawWithCache per supportare la creazione di un oggetto di disegno che ricrea condizionatamente le dipendenze in base alle informazioni su dimensioni/stato (I376dc)

  • ParagraphConstraints è stato rimosso. Ora la larghezza viene passata direttamente a Paragrafo. (Ica712)

Correzioni di bug

  • Sono state aggiornate molte API di grafica
    • API di trasformazione di scala e rotazione aggiornate per utilizzare un singolo parametro Offset per rappresentare la coordinata pivot anziché parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Sono stati rimossi i metodi Rect.expandToInclude e Rect.join
    • La documentazione di Raggio è stata aggiornata per indicare ovale oltre a ellittico
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico della classe Radius inline non deve essere chiamato direttamente, ma gli oggetti Radius devono essere istigati tramite i costruttori delle funzioni.
    • Sono state rimosse le API RoundRect per eseguire query su topRight, bottomRight, bottomCenter e così via.
    • Ritiro di Rect.shift a favore di Rect.translate
    • Sono state rimosse le API RoundRect.grow e Rect.shrink
    • Rinominata RoundRect.outerRect in Rect.boundingRect
    • Sono stati rimossi i metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium
    • RoundRect.latoPiùLungo è stato rinominato in RoundRect.maxDimension
    • Rinominata RoundRect.shortestSide in RoundRect.minDimension
    • È stata modificata la proprietà RoundRect.center in modo che sia una proprietà anziché una funzione
    • Il costruttore RoundRect è stato aggiornato in modo da utilizzare le proprietà Radius anziché i singoli parametri per i valori del raggio x/y
    • Sono state rimosse le API Size che presupponevano che si trattasse di un rettangolo con inizio in 0,0
    • È stata aggiunta un'API di destrutturazione a Radius
    • È stata eseguita la migrazione di varie funzioni di estensione di RoundRect in modo che diventino proprietà
    • (I8f5c7, b/168762961)
  • foundation.Box è stato ritirato. Utilizza invece foundation.layout.Box. (Ie5950, b/167680279)
  • La funzionalità Stack è stata rinominata in Box. La cassetta esistente verrà ritirata a favore della nuova cassetta in compose.foundation.layout. Il comportamento della nuova casella è impilare gli elementi secondari uno sopra l'altro quando sono presenti più elementi secondari. Questo è diverso dalla casella precedente, che si comportava in modo simile a una colonna. (I94893, b/167680279)
  • I parametri di decorazione delle caselle sono stati ritirati. Se vuoi aggiungere decorazioni/spaziatura alla casella, utilizza i modificatori (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Sono state aggiornate molte API di grafica
    • API DrawScope aggiornate con metodi di trasformazione basati su ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo l'invocazione del callback
    • Documentazione di clipPath aggiornata per fare riferimento a Path instead of rounded rectangle
    • Spaziatura fissa nella documentazione per il parametro giusto in clipPath
    • È stato rinominato DrawScope.drawCanvas in drawIntoCanvas e è stato rimosso il parametro size
    • I parametri dx/dy nel metodo inset sono stati rinominati in orizzontale e verticale
    • È stata aggiunta un'overload di inset che fornisce lo stesso valore di inset a tutti e quattro i limiti
    • È stata rimossa la documentazione relativa al metodo di inset che indicava che l'inset verrebbe applicato a tutti e quattro i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri Rect in modo che corrispondano allo stile kdoc
    • Sono stati rimossi Rect.join e Rect.expandToInclude
    • È stata creata un'overload per Rect.translate(offset) e ritirato Rect.shift
    • (If086a, b/167737376)
  • Sono stati annotati rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled e textInputServiceFactory con @VisibleForTesting, rendendoli API interne e nascondendo il relativo kdoc (I554eb, b/168308412)
  • Rimuovi SelectionContainer dalla parte superiore per disattivare la selezione predefinita ed evitare comportamenti imprevisti. È possibile utilizzare in modo specifico un SelectionContainer per racchiudere i contenuti che devono essere selezionabili. (I8dfe0, b/158459594)

Versione 1.0.0-alpha03

16 settembre 2020

androidx.compose.ui:ui-*:1.0.0-alpha03 viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche all'API

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

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

Correzioni di bug

  • Correzione per gli elementi di LazyColumn che a volte venivano disegnati in modo errato, causando anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints e le API che lo utilizzano sono stati ritirati. (I90cdb, b/167389835)
  • createAndroidComposeRule 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 allineamento o allineamento nelle API di layout. (I2421a, b/164077038)
  • È stato aggiunto onNode e altri metodi globali a ComposeTestRule poiché quelli globali attuali verranno ritirati. (Ieae36)

Versione 1.0.0-alpha02

2 settembre 2020

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

Modifiche all'API

  • Rimuovi il callback per notificare al proprietario la modifica dei limiti del layoutnode. (If654e, b/166106882)
  • È stato aggiunto il supporto per i parametri filltype nei percorsi di grafica vettoriale per supportare i ritagli delle forme in base alle regole di riempimento del percorso evenOdd o NonZero. (I43dd2)
  • Uptime e Velocità ora sono classi in linea (I48f4a)
  • La durata ora è una classe in linea (I565eb)
  • Aggiungi un callback per notificare al proprietario la modifica dei limiti del nodo di layout. (Ic40b3)
  • È stato corretto il problema per cui il costruttore della funzione Rect con offset e raggio creava il rettangolo nell'ordine di sinistra, destra, in alto, in basso anziché sinistra, in alto, destra, in basso.

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

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

Correzioni di bug

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

    Questa modifica non crea una modifica che comporta una rottura a livello di codice sorgente, in quanto le uniche API che sono state modificate sono le API del compilatore che richiedono un'attivazione esplicita. (I7afd2, b/158123185)

  • È stato corretto un arresto anomalo che poteva verificarsi quando il dispatching a un PointerInputFilter poteva causare la rimozione sincrona del PointerInputFilter. (I58f25)

Versione 1.0.0-alpha01

26 agosto 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.

Versione 0.1.0-dev

Versione 0.1.0-dev17

19 agosto 2020

androidx.compose.ui:ui-*:0.1.0-dev17 viene rilasciato. La versione 0.1.0-dev17 contiene questi commit.

Modifiche all'API

  • emitView è stato deprecato. Se possibile, utilizza AndroidView per emettere le visualizzazioni all'interno di Compose. Tieni presente che la composizione diretta di View e ViewGroup non sarà supportata in futuro, a meno che non si tratti di nodi fogli nell'albero di composizione, nel qual caso è possibile utilizzare AndroidView. (I29b1e, b/163871221)
  • FocusState2 è deprecato e sostituito da FocusState (Ia8b79, b/160822876, b/160923332)
  • Le sovraccaricamenti di AndroidView non più supportati sono stati rimossi. (I946b9, b/163802393)
  • Ora le emissioni personalizzate possono dichiarare che uno o più dei relativi settaggi possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13)
  • Le classi di vettori non sono più classi di dati perché la stessa istanza di oggetto viene utilizzata per la composizione.

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

    È stata riorganizzata l'istanza VectorComponent in modo che sia parte di VectorPainter, in quanto viene riutilizzata nelle varie composizioni.

    Aggiornati GroupComponent e PathComponent in modo che i relativi campi name siano mutabili (Ieae45, b/151378808)

  • onChildPositioned e OnChildPositionedModifier sono stati rimossi. 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 di modifica a SelectionContainer (I4aada, b/161487952)

  • È stato rimosso FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • È stato aggiunto mergePolicy lambda a SemanticsPropertyKey. Questo può essere utilizzato per definire un criterio personalizzato per l'unione con la semantica di mergeAllDescendants. Il criterio predefinito è utilizzare il valore principale se già presente, altrimenti il valore secondario. (Iaf6c4, b/161979921)

  • Constraints ora è una classe in linea (I88736)

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

  • Nomi aggiornati di PointerEventPass per la release Alpha. (Ifda6f)

  • IntOffset è ora una classe in linea (Iac0bf)

  • IntSize ora è una classe in linea (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 rispecchierà più automaticamente la posizione nei contesti da destra a sinistra. Se vuoi, utilizza invece PlacementScope.placeRelative(). (I873ac, b/162916675)

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

  • Alcune utilità di test non sono più pubbliche perché non si trovano dove dovrebbero. Verranno resi pubblici in futuro. (I32ab1)

  • Organizzazione rifattoriale del codice di input del cursore. (Ie3f45)

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

  • È stato rimosso KeyEvent2 deprecato. Utilizza invece KeyEvent. (Ied2d0, b/162097587)

  • KeyEvent ha una proprietà Unicode che può essere utilizzata per ottenere il carattere Unicode generato dalla combinazione di stato della chiave e della metachiave specificata (If3afc)

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

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

  • Aggiungi i parametri color, shadow e TextDecoration a Paragraph.paint. Questa funzione è utile per evitare la ricreazione non necessaria di Paragraph. (I81689)

Correzioni di bug

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

    Le API di composizione interna sono state modificate per ridurre il carico aggiuntivo per monitorare gli oggetti di stato come mutableStateof() (I80ba6)

  • VerticalScroller e HorizontalScroller sono stati rimossi. Utilizza invece ScrollableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)

  • È stato corretto l'arresto anomalo che si verificava quando all'interno del ciclo for veniva utilizzato qualcosa che salvava lo stato. Ora è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è ora adattata a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

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

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

Versione 0.1.0-dev16

5 agosto 2020

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

Modifiche all'API

  • OnChildPositioned è stato ritirato. Utilizza invece OnPositioned sul componente figlio. (I87f95, b/162109766)
  • setViewContent è stato ritirato. Utilizza setContent. (I7e497, b/160335130)
  • È stata aggiunta l'API AndroidViewBinding per l'inflazione e la composizione delle risorse di layout, in base a ViewBinding. (I081c6)
  • KeyEvent2 viene sostituito da KeyEvent (I2d770, b/162097585)
  • È stato aggiunto il supporto per la chiave hardware Alt (I9036b)
  • FocusManager è deprecato. Utilizza Modifier.focus(), Modifier.focusObserver() e Modifier.focusRequester(). (I74ae4, b/162211322)
  • loadVectorResource supporta gli attributi trimPath (I808fe)
  • Spostare la finestra di dialogo nell'interfaccia utente (I47fa6)
  • Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I33ca7)
  • È stato implementato PointerInteropModifier, che offre la possibilità di ricevere MotionEvent e interagire con Compose come se si trattasse di un'implementazione di una vista Android. (Ieb08c)
  • È stato rimosso il modificatore del tag obsoleto. Utilizza invece layoutId. (Idaa05, b/162023919)
  • Le API per il supporto della scrittura da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
  • Supporto del taglio dei percorsi nelle grafiche vettoriali (Ie16c9, b/158188351)
  • È stato aggiunto Modifier.layout() che consente di creare facilmente un modificatore di layout personalizzato (I73b69, b/161355194)
  • È stata aggiunta una nuova API AndroidView e sono state ritirate quelle esistenti. (I5bcfd)
  • Modifier.plus è deprecato. Utilizza Modifier.then. "Poi" indica più chiaramente l'ordine, ma impedisce anche di digitare Modifier.padding().background() + anotherModifier, che interrompe la catena ed è più difficile da leggere (Iedd58, b/161529964)
  • Aggiungi sottoclassi di vista [Abstract]ComposeView per ospitare i contenuti di Compose in una gerarchia di viste. (I46357)
  • Row e Column ora sono funzioni in linea che riducono notevolmente il sovraccarico di utilizzo. (I75c10)
  • SubcomposeLayout viene aggiunto. Si tratta di un'entità di basso livello che consente di comporre gli elementi secondari durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in un secondo momento durante la misurazione per la composizione del sottoalbero. Ad esempio, WithConstraints non è implementato utilizzando SubcomposeLayout. (I25cc8)
  • È stato aggiunto SemanticsNode.positionInRoot per ottenere la posizione di un SemanticsNode rispetto alla radice della gerarchia di Compose (Icdf26, b/161336532)
  • Gli eventi Motion sono stati trasmessi da Android a Compose e di nuovo ad Android. (I14be8, b/158034713)
  • È stato rimosso dropdownPopup. (I00430)
  • Posizione del popup fissa sui display con ritaglio. (Idd7dd)
  • Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
  • È stato aggiunto RemeasurementModifier, che consente di ricalcolare il layout in modo sincrono. In genere non è necessario perché la misurazione/il nuovo layout avvengono automaticamente, ma lo utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
  • Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Utilizza getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Aggiungi alcuni segni/annotazioni per seguire le best practice. (I66b20)
  • esporre altre API di riga in TextLayoutResult. (I79bd2)
  • I convertitori di vettori integrati per convertire le unità integrate sono ora accessibili tramite Foo.VectorConverter. ad es. Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273)

Correzioni di bug

  • Risolvere correzioni generali dell'API (I077bc)
    1. Rimuovere l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset per avere una piattaforma API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente 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 nullità del campo
    6. I valori enumerati ClipOp sono stati rinominati in Pascal Case
    7. Le enum FilterQuality sono state rinominate in Pascal Case
    8. Gli enum StrokeJoin sono stati rinominati in Pascal Case
    9. Gli enum PointMode sono stati rinominati in Pascal Case
    10. Gli enum PaintingStyle sono stati rinominati in Pascal Case
    11. Gli enum PathFillType sono stati rinominati in Pascal Case
    12. I valori enumerati di StrokeCap sono stati rinominati in Pascal Case
    13. È stata aggiornata l'implementazione di DrawCache in modo che non utilizzi più i parametri lateinit
    14. DrawScope è stato aggiornato in modo da non utilizzare più la delega lazy per i parametri interni fillPaint e strokePaint
    15. Componibile immagine aggiornato per evitare l'utilizzo di Box per un overhead ridotto
    16. Aggiornamento della classe Outline per includere le annotazioni @Immutable
    17. PathNode è stato aggiornato in modo da avere annotazioni @Immutable per ogni istruzione del percorso
    18. È stata aggiornata la composizione secondaria di vettore per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi di costruttore complementari di Rect ritirati a favore di costruttori di funzioni
    20. Classi e costruttori di funzioni di Brush aggiornati con API @Immutable e @Stable
    21. È stato aggiornato l'enum VertexMode in modo che sia in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri di tratto sul colore se sono stati modificati
    23. È stato aggiornato il parametro Size per aggiungere l'API di destrutturazione, rinominare UnspecifiedSize in Unspecified e rimuovere i metodi inutilizzati
  • Aggiornamento del consumo dell'API BlendMode per la composizione per mappare correttamente le modalità BlendMode del framework Android e le modalità PorterDuff in base al livello API. È stata introdotta l'API BlendMode#isSupported per fungere da query sulle funzionalità al fine di determinare se BlendMode è supportato sul dispositivo prima che venga utilizzato. (I0ef42)
  • È stato aggiunto LazyItemScope per il parametro itemContent degli elenchi lazy. Fornisce modificatori per riempire la dimensione massima del contenitore principale, che risolve il caso d'uso in cui l'elemento deve riempire il viewport e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture rimosso. Utilizza invece SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems è stato rinominato LazyColumnFor. LazyRowItems è stato rinominato in LazyRowFor (I84f84)
  • Il pacchetto foundation.shape.corner è stato appiattito 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 TextField di base è stato rinominato in BaseTextField per semplificare la ricerca e l'utilizzo dell'API desiderata (Ia6242, b/155482676)
  • Modifier.drawBackground è stato rinominato in Modifier.background (I13677)

Versione 0.1.0-dev15

22 luglio 2020

androidx.compose.ui:ui-*:0.1.0-dev15 viene rilasciato. La versione 0.1.0-dev15 contiene questi commit.

Aggiornamento delle dipendenze

  • Per utilizzare la versione 0.1.0-dev15 di Compose, devi aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra in Dichiarazione delle dipendenze.

Modifiche all'API

  • FocusModifier è deprecato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState e FocusDetailedState sono stati ritirati a favore di FocusState2 (I46919, b/160822875, b/160922136)
  • È stato aggiunto un modificatore per osservare la modifica dello stato di messa a fuoco. (I05866, b/160924455, b/160923326)
  • È stato aggiunto un modificatore per richiedere modifiche allo stato attivo (I8dd73, b/161182057, b/160924778)
  • Modifica il menu della barra degli strumenti in modo che mostri correttamente le opzioni di copia, taglio e incolla. (Id3955)
  • Le proprietà di semantica a valore singolo ora utilizzano uno stile di chiamata. Ad esempio, "semantics { hidden = true }" ora viene scritto come: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • È stato aggiunto Modifier.focus che sostituisce FocusModifier. (Ib852a, b/160924778)
  • Aggiungi la barra degli strumenti fluttuante per la selezione del campo di testo. (Ie8b07)
  • È stata aggiunta un'annotazione API sperimentale per l'API relativa all'inserimento di chiavi (I53c0a)
  • È stata aggiunta un'annotazione API sperimentale per tutte le API correlate a Focus (I53b24, b/160903352)
  • È stato aggiunto FocusState2 che sostituirà FocusDetailedState (I0a3ba, b/160822595)
  • È stato aggiunto ExperimentalFocus, un'annotazione @OptIn per l'API Focus. (I1544b, b/160820961)
  • È stata aggiunta una classe di unità IntBounds che rappresenta i limiti di pixel interi del layout. L'API di PopupPositionProvider è stata aggiornata per utilizzarla. (I0d8d0, b/159596546)
  • Applier ora richiede un metodo clear() per eliminare le composizioni (Ibe697)
  • KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
  • È stato aggiunto un nuovo flag facoltativo useUnmergedTree per testare i finder. (I2ce48)
  • È stata creata l'API sperimentale LayoutNode (I4f2e9)
  • Sono stati aggiunti metodi di copia a vari tipi di classi inline, tra cui:

    • Offset
    • Dimensioni
    • Raggio
    • Movimento
    • TransformOrigin

    • Metodo dell'oggetto companion Size.copy ritirato in favore del metodo di copia dell'istanza (Ife290, b/159905651)

  • I popup, le finestre di dialogo e i menu ora ereditano il MaterialTheme contestuale (Ia3665, b/156527485)

  • TextDirection è stato rinominato in ResolvedTextDirection (I3ff38)

  • È stato rimosso il parametro di direzione del layout dal blocco di misura della funzione Layout(). La direzione del layout è tuttavia disponibile all'interno del callback tramite l'oggetto ambito della misura (Ic7d9d)

  • Ristruttura i SelectionHandles per il riutilizzo. (I420e0)

  • La funzionalità Cliccabile è stata rimossa. Utilizza Modifier.clickable (I84bdf)

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

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

  • Modifier.tag è stato rinominato in Modifier.layoutId per evitare confusione con Modifier.testTag. (I995f0)

  • Le posizioni Int della linea di allineamento restituite da Placeable#get(AlignmentLine) ora non sono nulle. Se la riga di allineamento sottoposta a query non è presente, verrà restituito AlignmentLine.Unspecified. (I896c5, b/158134875)

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

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

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

  • È stato sostituito l'utilizzo di IntPx con Int. È stata sostituita IntPxPosition con IntOffset. IntPxSize sostituito con IntSize. (Ib7b44)

  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe Size anziché PxSize. Ciò offre i vantaggi di una classe in linea per sfruttare un valore lungo per imballare 2 valori float per rappresentare la larghezza e l'altezza rappresentate come valori float. (Ic0191)

  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni di posizionamento, standardizza l'utilizzo della classe Offset anziché PxPosition. Ciò offre i vantaggi di una classe in linea per sfruttare un valore long per imballare 2 valori float per rappresentare gli offset x e y rappresentati come valori float. (I3ad98)

  • È stato sostituito l'utilizzo della classe Px in varie classi compose nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel. Classe Px eliminata nella sua interezza (I3ff33)

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

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

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

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

  • L'implementazione predefinita di ParentDataModifier#modifyParentData, che non esegue alcuna operazione, è stata rimossa. Era equivalente a non implementare l'interfaccia. (I0deaa)

  • ScaleFit, precedentemente deprecato, è stato rimosso. Utilizza invece ContentScale. (Ifbc5b)

  • È stato sostituito l'utilizzo della classe Px in vari classi di composizione nell'ambito del grande impegno di refactoring per fare affidamento solo su Dp e tipi primitivi per i parametri dei pixel (I19d02)

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

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

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

  • Modifier.semantics non è più deprecato per consentire l'utilizzo per i componenti di alto livello. (I4cfdc)

  • Implementazioni CanvasScope consolidate quindi ora ci sono solo DrawScope e ContentDrawScope CanvasScope è stato rinominato in DrawScope. È stato aggiornato DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. È stato eliminato il sottotipo DrawScope in ContentDrawScope. Painter e PainterModifier sono stati aggiornati in modo da non gestire più autonomamente una proprietà RTL, poiché DrawScope la fornisce già senza doverla fornire manualmente (I1798e)

  • Ora DoubleTapGestureFilter consente di distinguere SingleTapGestureFilter nell'albero. (If92b1)

  • Aggiornamento dell'API Alignment e aggiunta del supporto per l'allineamento assoluto (che non esegue la duplicazione automatica nel contesto Rtl) (I38cd3)

  • L'API dei modificatori DrawLayer è stata modificata: outlineShape è stato rinominato in shape e ha il valore predefinito RectangleShape e ora non è null; clipToOutline è stato rinominato in clip; clipToBounds è stato rimosso perché è uguale a clip == true con RectangleShape (I7ef11, b/155075735)

  • Sono state aggiornate le API compose di livello superiore che espongono un Canvas per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che hanno ancora bisogno di accedere a un Canvas possono utilizzare il metodo drawCanvas dell'estensione, che fornisce un callback per emettere comandi di disegno con il Canvas di base. (I80afd)

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

  • LayoutModifier2 è stato rinominato LayoutModifier. (Id29f3)

  • Interfaccia LayoutModifier ritirata. (I2a9d6)

  • Le funzioni di misurazione intrinseca in Layout e LayoutModifier2 ora hanno un ricevitore IntrinsicMeasureScope che fornisce l'API di query intrinseca con la direzione del layout propagata implicitamente. (Id9945)

  • Gli elementi Layout e LayoutModifier possono essere misurati con una direzione di layout diversa. (Ibd731)

  • È stato aggiunto il nuovo Modifier.zIndex() per controllare l'ordine di disegno degli elementi secondari all'interno dello stesso layout principale. La proprietà elevation in DrawLayerModifier è stata rinominata in shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri di DrawShadow è cambiato: l'elevazione è ora la prima e la forma è la seconda con un valore predefinito RectangleShape. (I20150, b/152417501)

  • Sono stati rimossi onSizeChange e onPositionChange in Owner. (I5c718)

  • È stato aggiunto Constraints2, una copia di Constraints che supporta solo i valori di vincoli Int anziché IntPx. IntPx verrà rimosso e tutti i vincoli di interi verranno considerati come pixel come Android.

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

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

  • (I45f09, b/152842521)

    • Il nome ScaleFit è stato rinominato ContentScale
    • È stato spostato ContentScale dal modulo ui-graphics al modulo ui-core per essere disponibile nello stesso modulo dell'API Alignment.
    • Il nome di FillMaxDimension è stato rinominato in Crop
    • Rinominato FillMinDimension in Adatta
    • La funzionalità Adatta all'interno è stata rinominata per una migliore corrispondenza
    • Equivalenti di ImageView.ScaleType
    • È stata aggiunta la documentazione che indica che la combinazione di Crop e Alignment.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_CROP e che Fit utilizzato con Alignment.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER. Inside utilizzato con Alignment.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
  • Supporto RTL per i modificatori di disegno. (I0aaf9)

  • È stata rilasciata l'API per l'inflazione delle visualizzazioni Android da XML. Per ulteriori dettagli, consulta la demo di ViewInCompose. (I42916)

  • Miglioramento dell'API DrawModifier:

    • È stato creato l'ambito del ricevente per draw() ContentDrawScope
    • Sono stati rimossi tutti i parametri in draw()
    • DrawScope ha la stessa interfaccia dell'ex CanvasScope
    • ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
  • Aggiunti positionInParent e boundsInParent per LayoutCoordinates. (Icacdd, b/152735784)

  • Ora per DrawLayerModifier e drawLayer() il valore predefinito di clipToBounds e clipToOutline è false. (I0eb8b, b/152810850)

  • LayoutResult è stato rinominato in MeasureResult. (Id8c68)

  • È stata aggiunta LayoutModifier2, una nuova API per definire i modificatori di layout. È stato deprecato LayoutModifier (If32ac)

  • Operatore Modificatore più sostituito con funzioni di estensione di fabbrica (I225e4)

  • Sono state aggiunte le proprietà translationX/Y per supportare lo spostamento dell'elenco di visualizzazione dei comandi di disegno per un determinato livello. Questa opzione è utile per spostare i contenuti in risposta ad animazioni o eventi touch. (I8641c)

  • Sono stati aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e la scalatura attorno a un determinato punto di un livello (Icf7c3)

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

  • È stato aggiunto LayerModifier, un modificatore che consente di aggiungere un RenderNode per un layout. Consente di impostare clipping, opacità, rotazione, ridimensionamento e ombre. Verrà sostituito da RepaintBoundary. (I7100d, b/150774014)

  • La direzione del layout è stata propagata dal nodo del layout principale ai figli. È stato aggiunto il modificatore dell'orientamento del layout. (I3d955)

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

  • Supporto iniziale per la scrittura da destra a sinistra nel layout di composizione (Ia5519)

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

  • È stato modificato LayoutCoordinates in modo che le linee di allineamento fornite siano un insieme anziché una mappa e che LayoutCoordinates implementi l'operatore get() per il recupero di un valore. In questo modo, è più facile per i modificatori modificare uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a)

  • LayoutCoordinates non ha più una proprietà position. La proprietà posizione non ha senso se si prendono in considerazione LayoutModifiers, la rotazione o la scalatura. Gli sviluppatori devono invece utilizzare parentCoordinates e childToLocal() per calcolare la trasformazione da un LayoutCoordinate all'altro.

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

  • Miglioramenti all'API Constraints (I0fd15)

  • È stata creata l'API CanvasScope che avvolge un oggetto Canvas per esporre un'API di disegno dichiarativa e senza stato. Le trasformazioni sono contenute nel proprio ambito del ricevitore e le informazioni sulle dimensioni sono limitate anche ai limiti di inset corrispondenti. Non richiede all'utente di gestire un proprio oggetto stato di Paint per la configurazione delle operazioni di disegno.

    • È stato aggiunto CanvasScopeSample e l'app di dimostrazione è stata aggiornata in modo da includere una dimostrazione di grafica dichiarativa (Ifd86d)
  • È stata rimossa l'API MaskFilter non utilizzata poiché ha un utilizzo limitato e non è ottimizzata per l'accelerazione hardware nella maggior parte dei casi d'uso (I54f76)

  • RectangleShape è passato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Sono stati sostituiti tutti gli utilizzi di Color nullable nell'API con valori non nullable e viene utilizzato Color.Unset anziché null (Iabaa7)

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

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

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

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

  • È stata creata l'API PixelMap per supportare la query delle informazioni sui pixel da un asset immagine. (I69ad6)

  • I metodi toFrameworkRect/toFrameworkRectF sono stati rinominati in toAndroidRect/toAndroidRectF per rispettare la convenzione di denominazione per le conversioni di oggetti tra Compose e le API del framework Android su cui sono basate. Sono state aggiornate anche le documentazioni su queste API (I86337)

  • È stata aggiunta l'API VectorPainter per sostituire l'API di composizione secondaria esistente per le immagini vettoriali. Il risultato della composizione secondaria è un oggetto VectorPainter anziché DrawModifier. Sono stati ritirati i composabili DrawVector precedenti a favore di VectorPainter.

    L'API Image(Painter) è stata rinominata in PaintBox(Painter) È stato creato un composable vettoriale che si comporta come il composable Immagine, tranne che con un asset vettoriale anziché un asset immagine (I9af9a, b/149030271)

  • Il nome Image è stato rinominato in ImageAsset per distinguere meglio la differenza tra i dati di Image e il componente composable Image in arrivo utilizzato per partecipare al layout e disegnare i contenuti. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework (Id5bbd)

  • È stato aggiunto TextDirection.Content (I48f36)

  • È stato aggiunto l'operatore TextDecoration.plus (I0ad1a)

  • Force viene rimosso dai valori dell'enum TextDirectionAlgorithm (Icc944)

  • TextDirectionAlgorithm viene rinominato TextDirection (I75ce8)

  • Implementa LongPressAndDrag per la selezione del campo di testo. (I17919)

  • È stata aggiunta AnnotatedString.getStringAnnotations che restituisce tutte le annotazioni nell'intervallo. (I1fa00)

  • È 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 all'API: AnnotatedString(builder: Builder) è stato rinominato in annotatedString(builder: Builder). (Ia6377)

  • Modifica dell'API: AnnotatedString.Item è stato rinominato in AnnotatedString.Range. (I2d44d)

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

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

  • È stato aggiunto l'operatore più per lo stile (Testo/Paragrafo/Spaziatura) che delegato alla funzione merge(). (Ia1add)

  • La funzione FontWeight.lerp non esegue più lo snap. Si tratta comunque di un corso di dati. (I521c2)

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

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

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

  • È stata rimossa la classe di dimensioni non utilizzata poiché nel modulo ui-geometry è presente una classe di dimensioni duplicata in uso. (I1b602)

  • È stato aggiunto AdapterList, un componente dell'elenco con scorrimento che compone e dispone solo gli elementi visibili. I problemi attualmente noti includono il fatto che è solo verticale e non gestisce completamente tutti i casi di modifiche ai suoi elementi secondari. (Ib351b)

  • Aggiungi i parametri padding, border, shape e background a Box (I05027, b/148147281)

Correzioni di bug

  • Il callback onFocusChange nei campi di testo è stato rinominato in onFocusChanged (Ida4a1)
  • VerticalScroller e HoriziontalScroller sono stati ritirati. Utilizza ColonnaScorrevole e RigaScorrevole per un'esperienza integrata con il comportamento e i parametri di Colonna/Riga oppure Modifier.verticalScroll e Modifier.horizontalScroll sul tuo elemento. Analogamente, ScrollerPosition è stato ritirato a favore di ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose è stato rinominato 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 ViewGroups senza richiedere una nuova composizione. Per un esempio, consulta ViewInteropDemo. (I9ab0b, b/160455080)
  • Aggiunti sortWith e removeRange a MutableVector (Icccf7)
  • Implementa i punti di manipolazione della selezione per modificare la selezione per TextField. (I27032)
  • È stata rimossa la classe Shader in linea che avvolgeva la classe di attesa NativeShader. È stato rinominato NativeShader in Shader. La classe inline Shader con wrapping non ha aggiunto nulla di utile all'interfaccia API ed era una classe inline, quindi utilizza direttamente la classe NativeShader. (I25e4d)
  • PainterModifier è stato sottoposto a refactoring per non fornire più la scalatura in base ai vincoli e al parametro ContentScale specificati. Le implementazioni di Painter devono ridimensionare i contenuti dei disegni in base alle dimensioni specificate del DrawScope in cui vengono disegnati.

    È stato risolto il problema per cui la bitmap della cache di VectorPainter aveva le dimensioni predefinite anziché quelle specificate per il disegno.

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

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

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

  • androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. Anche i composabili TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono deprecati. Utilizza invece androidx.ui.input.TextFieldValue (I4066d, b/155211005)

  • È stato risolto il problema per cui l'invio di input del cursore causava un arresto anomalo se i filtri di input del cursore venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (I1f48b, b/157998762)

  • È stato risolto il problema per cui l'invio dell'input del cursore causava un arresto anomalo se i filtri di input del cursore venivano rimossi tramite la composizione secondaria durante l'invio. Il problema ora è stato risolto. (Iab398, b/157998762)

  • La classe Radius è stata sottoposta a refactoring per diventare una classe in linea. Sono stati rimossi i metodi di creazione di compagni in favore del costruttore di funzioni con parametro predefinito per fare in modo che il raggio sull'asse y corrisponda a quello del parametro obbligatorio del raggio sull'asse x.

    È stato aggiornato DrawScope.drawRoundRect in modo da utilizzare un singolo parametro Radius anziché due valori float distinti per il raggio lungo gli assi x e y (I46d1b)

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

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

  • Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore di compose trasformava le chiamate in funzioni componibili. Con questa modifica, ora trasformiamo il corpo di una funzione composable e lasciamo invariato il sito di chiamata (per lo più).

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

    Questa dovrebbe essere una modifica compatibile con la sorgente per tutto l'utilizzo di compose. La maggior parte degli utenti di compose non dovrebbe dover aggiornare alcun codice a seguito di questa modifica.

    Per supportare questo lavoro, la firma JVM di tutte le funzioni composable è cambiata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta tre parametri, i parametri aggiuntivi sono il compositore, un numero intero "chiave" e un numero intero con maschera di bit utilizzato per propagare i metadati tramite le chiamate.

    Ora Compose trasforma anche gli argomenti predefiniti in una funzione componibile. Ciò avviene senza introdurre un sovraccarico predefinito sintetico aggiuntivo della funzione stessa, pertanto questa modifica comporterà la definizione di un numero inferiore di funzioni.

    Modifiche comportamentali intenzionali note derivanti da quanto segue:

    1. Alcune chiamate verranno ignorate, mentre in precedenza non sarebbe stato così
    2. Le espressioni componibili nelle espressioni degli argomenti predefiniti ora vengono sottoscritte e gestite correttamente

    Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti dei parametri viene propagato tramite il grafo delle chiamate ad altre funzioni composable. Ciò comporterà meno confronti in fase di esecuzione, una riduzione delle dimensioni della tabella degli slot e un maggiore salto delle funzioni componibili che in precedenza non venivano saltate. 2 I parametri che vengono determinati come "statici" in fase di compilazione non vengono più confrontati o memorizzati in fase di runtime. In questo modo si riduce il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e il lavoro per il runtime 4. I parametri di invio e di ricezione inutilizzati per le funzioni non sono inclusi nel determinare la possibilità di saltare la funzione se non vengono utilizzati all'interno del corpo della funzione.

    La maggior parte delle modifiche incompatibili riguarda le API di destinazione del compilatore e l'utilizzo tipico di compose non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call è stato ritirato 4. Le sovraccaricamenti non varargs di key sono stati rimossi. Utilizza la versione vararg in futuro. 5. L'annotazione Pivotal è stata ritirata. Utilizza key come sostituto. 6. ScopeUpdateScope::updateScope è stato modificato in modo da attendere una funzione 3 anziché una funzione 1 7. restartableFunction e restartableFunctionN sono stati aggiornati per includere parametri aggiuntivi in fase di compilazione (I60756, b/143464846)

  • Sono stati rimossi i modificatori LayoutAlign non più supportati. (I10877)

  • È stato rimosso RepaintBoundary in favore di DrawLayerModifier (I00aa4)

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

  • È stato sostituito ButtonStyle con funzioni distinte ed è stato rimosso il sovraccarico di testo (stringa). Consulta i sample aggiornati per informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)

  • Modifiche non compatibili all'API Ambient. Per informazioni dettagliate, consulta il log e la documentazione di Ambient<T> (I4c7ee, b/143769776)

  • È stato modificato il comportamento di TextDirection predefinito in modo che sia determinato da LayoutDirection. Ad esempio, se LayoutDirection è RTL, TextDirection predefinito sarà RTL. In precedenza era TextDirection.ContentOrLtr/Rtl (I4e803)

  • Correzione di bug: quando lo spessore e lo stile del carattere sono nidificati in una stringa annotata, il testo non viene visualizzato correttamente. (I77a9d)

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

  • Il modulo ui-android-text viene rinominato in ui-text-android (I68cbe)