UI di composizione

Componenti fondamentali dell'interfaccia utente di composizione necessari per interagire con il dispositivo, inclusi layout, disegno e input.
Aggiornamento più recente Release stabile Candidato per la release Versione beta Release alpha
14 maggio 2024 1.6.7 - 1.7.0-beta01 -

Struttura

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

Questa tabella illustra i gruppi e fornisce i link a ciascun insieme di note di rilascio.

RaggruppaDescrizione
compose.animationCreare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente.
compose.compilerTrasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in di compilazione Kotlin.
compose.foundationScrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le basi per creare i componenti del tuo sistema di progettazione.
compose.materialCrea UI di Jetpack Compose con componenti Material Design pronti per l'uso. Si tratta del punto di accesso di livello superiore di Compose, progettato per fornire componenti corrispondenti a quelli descritti su www.material.io.
compose.material3Crea UI di Jetpack Compose con i componenti di Material Design 3, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati e funzionalità di personalizzazione di Material You, come il colore dinamico, ed è progettato per essere coerente con il nuovo stile visivo e la UI di sistema di Android 12.
compose.runtimeComponenti di base fondamentali del modello di programmazione e della gestione dello stato di Compose, nonché del runtime di base per il plug-in di Compose Compiler da utilizzare come target.
compose.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 su Compose, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per l'app o il modulo:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Per ulteriori informazioni sulle dipendenze, vedi Aggiungere dipendenze build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.7

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 alle API

  • Rinominato performCustomAccessibilityActionLabelled in performCustomAccessibilityActionWithLabel e performCustomAccessibilityActionWhere in performCustomAccessibilityActionWithLabelMatching. (I5387f)
  • AnnotatedString.hasEqualsAnnotations ora è hasEqualAnnotations (I685c0)
  • È stata aggiornata l'API per inserire nel testo i link a tema Material. In particolare, sono stati rimossi da TextDefaults i metodi per la creazione di LinkAnnotations a tema e l'analisi dell'HTML con link a tema. È stata invece aggiunta una classe TextLinkStyles che consente di definire lo stile dei link come parametro all'elemento componibile Testo. (I31b93)

Correzioni di bug

  • Corregge casi d'uso aggiuntivi durante l'aggiunta dinamica di modificatori di input del puntatore durante gli eventi 63e1504

Versione 1.7.0-alpha08

1° maggio 2024

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

Modifiche alle API

  • Aggiunge il supporto per le implementazioni di forme modificabili. Ora la lettura Shape#createOutline viene osservata all'interno dei livelli grafici, pertanto la lettura dei valori degli stati al suo interno causerà invalidazioni quando lo stato cambia, consentendo animazioni di forma più performanti. (Id1629, b/326070216)
  • Rinominato isPositionedByParentWithDirectManipulation in introducesFrameOfReference. Tieni presente che ora ha l'effetto inverso, il che significa che per impostazione predefinita la maggior parte degli LayoutCoordinates introducono un quadro di riferimento e, solo se sottoposta a manipolazione diretta, la proprietà sarà falsa. Per eseguire query sulla posizione solo con quelle che introducono un quadro di riferimento, utilizza positionInLocalFrameOfReference(...). Oppure positionInLocalLookaheadFrameOfReference da un LookaheadScope. (Ifc5f7).
  • LookaheadScope API sono state rese stabili (I21507)
  • Modifica la lambda delle azioni per getScrollViewportLength in base al feedback del consiglio delle API. (Ibc74a).
  • Sono state aggiornate le API outline GraphicsLayer per utilizzare i parametri float invece di int. Sono stati rimossi UnsetOffset/UnsetSize IntSize valori sentinel a favore di costanti non specificate già esistenti nelle classi Offset e Dimensione basate su float (I2fb03, b/333863462)
  • Quando inserisci l'input del mouse durante i test, MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick() e 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).
  • Rinominato onClicked in onClick all'interno di LinkInteractionListener. (Iaa35c)
  • Rinomina TextInclusionStrategy.isInside in isIncluded. Rendi il tipo restituito Paragraph/MultiParagraph#getRangeForRect() non null. (I51f26).

Correzioni di bug

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

Contributi esterni

  • Aggiunto il supporto per il precaricamento degli elementi negli elementi LazyLists nidificati (ad esempio, un elemento LazyColumn che esegue il rendering di LazyRows nidificate). Questa modifica dovrebbe ridurre il calo dei frame durante lo scorrimento di questi LazyLists. L'impostazione predefinita dell'implementazione prevede il precaricamento dei primi due elementi nidificati, ma questo comportamento può essere controllato dalle nuove API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) e LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Versione 1.7.0-alpha07

17 aprile 2024

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

Modifiche alle API

  • ClickableText è contrassegnato come deprecato. Per aggiungere link al testo, crea un AnnotatedString con LinkAnnotation corrispondente al tuo link e trasmetti questo AnnotatedString al componibile Testo. (I34d4b, b/323346994).
  • Presenta ViewConfiguration.HandwritingGestureLineMargin per i gesti di scrittura a mano libera. Supporta il gesto JoinOrSplit per BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter e FocusProperties.exit non sono più sperimentali. FocusDirection.Enter e FocusDirection.Exit non sono più sperimentali. FocusRequester.Cancel non è più sperimentale (I461a1, b/261564106)
  • Quando esegui query sulle coordinate del layout, ora puoi utilizzare l'argomento excludeDirectManipulationOffset per escludere l'offset impostato dai layout principali che hanno posizionato gli elementi secondari utilizzando Placeable.PlacementScope.withDirectManipulationPlacement. Analogamente, un layout che cambia spesso la posizione dei relativi elementi secondari può ora inserirli utilizzando withDirectManipulationPlacement (ad esempio Scorrimento, implementato per impostazione predefinita). In questo modo, le animazioni basate su approachLayout sono più intuitive, avendo ora la possibilità di distinguere quale offset animare e cosa applicare direttamente quando si decide di animare il loro approccio. (I60ec7)
  • Il flag funzionalità per gli screenshot lunghi è stato rimosso. (I28648, b/329128246)
  • LazyColumn ora mostrerà correttamente le intestazioni fisse negli screenshot lunghi. (I8d239, b/329296635).
  • Le origini NestedScroll con trascinamento sono state sostituite da UserInput e SideEffect per includere la definizione estesa di queste sorgenti, che ora includono animazioni (effetto collaterale), rotellina del mouse e tastiera (UserInput). (I40579)
  • ApproachLayoutModifierNode e Modifier.approachLayout sono ora stabili, con i nuovi isMeasurementApproachInProgress() e isPlacementApproachInProgress() che sostituiranno rispettivamente le precedenti isMeasurementApproachComplete() e isPlacementApproachComplete().
  • Modificatore intermediateLayout obsoleto rimosso. (I3e91c).
  • Rinomina GraphicsLayer#buildLayer per registrare in modo da eseguire il mirroring dei metodi start/endRecording delle API supportate da Displaylist come RenderNode e Picture.
  • Aggiornamento di rememberGraphicsLayer per l'utilizzo di rememberObserver eseguito. (I312c1, b/288494724, b/330758155).
  • L'elemento UrlAnnotation è deprecato. Usa il token LinkAnnotation.Url. Se utilizzi i temi Material, usa l'oggetto TextDefaults per creare l'annotazione con i temi Material (I8d180, b/323346545)
  • Per i link di testo è stata attivata l'opzione di stile per lo stato premuto, oltre allo stile normale, è stata spostata il mouse sopra il video e messo a fuoco (I5f864, b/139312671)
  • String.parseAsHtml rinominato in AnnotatedString.Companion.fromHtml. (I43dcd)
  • Sono stati aggiunti argomenti di stile (linkStyle, focusedLinkStyle, hoveredLinkStyle) e un listener di interazioni tramite link al metodo parseAsHtml. Durante l'analisi della stringa con tag HTML con i tag <a>, il metodo crea un LinkAnnotation.Url per ogni tag di questo tipo e trasmette gli oggetti di stile e il listener di interazioni con il link a ogni annotazione. (I7c977)
  • LinkAnnotation ora accetta gli argomenti di stile basati sullo stato e un LinkInteractionListener. Aggiungi questa annotazione a AnnotatedString per ottenere un link ipertestuale. Se trasmetti focusedState e/o hoveredState, puoi definire il configuration visivo per i link quando lo stato attivo e/o il passaggio del mouse sono passati. (I81ce4, b/139312671).
  • ImeOptions.hintLocales non è più null. Se vuoi trasmettere un elenco di impostazioni internazionali vuoto, utilizza LocaleList.Empty. (Ic5bc4).

Correzioni di bug

  • Gestisce in modo controllato i dati degli eventi di input storici non validi/corrotti (ignora i dati di offset errati).
  • Corregge gli eventi di puntamento imprevisti quando un modificatore di input del puntatore viene aggiunto in modo dinamico prima di un altro modificatore di input del puntatore durante lo stream di eventi di input del puntatore attivo (ad esempio, tra l'invio del passaggio del mouse e l'uscita al passaggio del mouse [mouse/stilo]).

Versione 1.7.0-alpha06

3 aprile 2024

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

Nuove funzionalità

  • Aggiunto il metodo parseAsHtml per le stringhe con stile: consente di convertire una stringa contrassegnata con tag HTML 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 l'opzione, imposta il flag ComposeFeatureFlag_LongScreenshotsEnabled su true. (I2b055, b/329296471).

Modifiche alle API

  • fun ClipEntry.getMetadata() cambiato in val ClipEntry.clipMetadata. (I50155)
  • Funzioni ClipboardManager.getClipMetadata e ClipboardManager.hasClip rimosse. Usa il criterio clipEntry.getMetadata() per leggere i metadati della voce attuale del clip. Controlla anche il risultato di ClipboardManager.getClip se è nullo o meno per capire se negli appunti è presente un clip corrente. (I50498)
  • Ora puoi passare oggetti GraphicsLayer nelle funzioni placeable.placeWithLayer() (I1b22f)
  • ClipboardManager.setClip ora accetta un valore null per poter cancellare gli appunti. (I7d2e9).
  • Aggiunti ID risorse per l'assistenza per nascondere le viste utilizzate come dettagli di implementazione negli strumenti di creazione (I99531)
  • Metodo di sospensione GraphicsLayer#toImageBitmap aggiunto per supportare il rendering dei contenuti di una bitmap in un GraphicsLayer. Si tratta di un'operazione di rendering con accelerazione hardware a livello API 22 o versioni successive (incluso) che supporta oltre il 99% di tutti i dispositivi Android. Nel livello API Android 21 questo tipo di operazione si basa sul rendering software. (I9e114).
  • Metodo di supporto per convertire un Android da RectF in ComposeRect (I39925, b/325660505)
  • Tutti i parametri KeyboardOptions ora hanno un valore non specificato per impostazione predefinita. Metodo KeyboardOptions.merge aggiunto.
  • Il nome KeyboardOptions.autoCorrect è stato rinominato in autoCorrectEnabled e l'elemento è nullo, dove null indica che non è stato specificato alcun valore. (Ia8ba0, b/295951492).
  • La variante BasicTextField(state) e BasicSecureTextField ora usano KeyboardActionHandler anziché KeyboardActions per elaborare le azioni intraprese dalla tastiera software. (I58dda)

Versione 1.7.0-alpha05

20 marzo 2024

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

Nuove funzionalità

  • Presenta la nuova API GraphicsLayer per registrare i comandi di disegno in un elenco di visualizzazione, oltre a proprietà aggiuntive che influenzano il rendering dell'elenco di visualizzazione. Ciò fornisce un limite di isolamento per dividere una scena complessa in parti più piccole che possono essere aggiornate singolarmente senza ricreare l'intera scena. Le trasformazioni apportate a un GraphicsLayer possono essere eseguite senza registrare di nuovo l'elenco di visualizzazione. A differenza di Modifier.graphicsLayer, GraphicsLayer consente il rendering di contenuti componibili altrove ed è utile nei casi d'uso animati in cui è previsto che i contenuti vengano visualizzati in scene diverse.

Modifiche alle API

  • GraphicsLayer.draw(Canvas) non è più un'API pubblica. Utilizza la funzione di estensione DrawScope.drawLayer(GraphicsLayer) per disegnare il livello. (I7a7c0).
  • Suddividi restrictedConstraints() in due metodi: fitPrioritizingWidth() e fitPrioritizingHeight() (I6d7fd)
  • È stato introdotto lo stub di HardwareCanvas per l'utilizzo di Android L (I1c3b5, b/288494724)
  • Aggiorna il framework di Compose per esporre una composizione GraphicsContext locale, oltre all'aggiornamento del proprietario, DelegateableNode e drawWithCache delle implementazioni del modificatore per esporre l'accesso alle GraphicsContext per l'accesso con ambito, che pulirà automaticamente GraphicsLayer le istanze quando i modificatori vengono scomposti. (I64a2f, b/288494724).
  • È stato introdotto InterceptPlatformTextInput per facilitare la scrittura di test relativi all'IME di basso livello e altri casi d'uso di IME di basso livello. L'API PlatformTextInputTestOverride è stata ritirata. (I862ed, b/322680547)
  • GraphicsLayer.setOutline(Outline) funzione di estensione è stata aggiunta. (Ib81f4)
  • Presenta il costruttore di funzioni GraphicsContext per creare una fabbrica per creare istanze GraphicsLayer (Ib98d6, b/288494724)
  • L'API GraphicsLayer esposta per offrire agli sviluppatori una flessibilità definita nell'acquisizione di comandi di disegno che possono essere utilizzati per disegnare altrove e anche per applicare diversi effetti visivi al risultato finale. (I80245, b/288494724)
  • Inserisci Paragraph#getRangeForRect che restituisce un intervallo di testo coperto da una determinata area del rettangolo. (Iee516, b/325660505)
  • Rimozione dell'override sperimentale di BasicText con argomento onLinkClicked. In futuro verrà fornita un'API sostitutiva per il supporto dei link ipertestuali. (I107d5)

Correzioni di bug

  • È stata aggiunta la definizione API di GraphicsLayer prevista/effettiva per supportare l'acquisizione e la riproduzione di comandi di disegno con trasformazioni e effetti visivi di compositing facoltativi. Presenta l'interfaccia GraphicsContext per contenere le dipendenze grafiche, incluse la creazione e la gestione delle istanze GraphicsLayer. (I4a8d6, b/288494724).
  • Risolto un problema di interoperabilità con la ricerca dell'elemento attivo 1D in cui lo stato attivo rimaneva bloccato in un elemento ComposeView incorporato tra le altre viste. (I08fd4)

Contributi esterni

  • LocalLifecycleOwner è stata spostata dalla UI di Compose a lifecycle-runtime-compose in modo che le sue API helper basate su Compose possano essere utilizzate al di fuori dell'UI di Compose. Ringraziamo Jake Wharton per il suo contributo. (I6c41b, b/328263448).
  • Mostra costantemente le proprietà del floating di bias su tutti i sottotipi di allineamento basati su bias. (I69f0f, b/328088992).

Versione 1.7.0-alpha04

6 marzo 2024

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

Modifiche alle API

  • Supporto della funzionalità di scrittura a mano libera con stilo per BasicTextField2 sui dispositivi con versioni successive ad Android U. (I002e4).
  • In questo CL aggiungiamo l'azione semantica GetScrollViewportLength in modo da poter reindirizzare le informazioni sui componenti di cui viene fatto scorrere lo scorrimento nella scrittura al sistema dell'a11y. Questo CL applica anche l'utilizzo di tale proprietà negli elenchi Scorribili di base. (Ic5fa2)
  • FocusRequester.createRefs è ora stabile (I4d92c, b/261436820)
  • È stato introdotto DelegatableNode.requireView() per consentire ai nodi modificatori di ottenere l'attuale View di Android senza leggere una composizione locale. (I40768)
  • Nuova API Path.reverse() per invertire la direzione di un percorso (I36348)
  • È stato aggiunto hintLocales a KeyboardOptions per consentire a TextFields di suggerire una lingua preferita agli IME con impostazioni internazionali specifiche.
  • 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 alle API

  • Introduzione di ContextualFlowRow e delle FlowRow/Column avanzate con MaxLines e Overflow. Siamo lieti di annunciare miglioramenti alle versioni sperimentali FlowRow e FlowColumn, che ora prevedono il supporto maxLines e gli extra, oltre al debutto di ContextualFlowRow e ContextualFlowColumn. Questo aggiornamento è progettato per fornire componenti con prestazioni ottimali, in cui ContextualFlow* è ideale per un numero elevato di elementi che utilizzano una configurazione maxLines di dimensioni ridotte e pulsanti +N dinamici per vedere più elementi, mentre FlowRow e FlowColumn sono perfetti per un numero limitato di elementi, con meno di 100 elementi. Importante: per mantenere il comportamento esistente in FlowRow o FlowColumn, dove sono composti tutti gli elementi indipendentemente dal fatto che rientrino nel valore massimo dell'asse trasversale, imposta overflow su FlowRowOverflow.Visible o FlowColumnOverflow.Visible durante l'inizializzazione. Esplora ContextualFlowRowSample e FlowRowSample per vedere alcuni esempi di queste nuove funzionalità in azione. (Ib9135, b/293577082)
  • Aggiungi la proprietà semantica maxTextLength che deve essere impostata sui campi di testo che filtrano il numero massimo di caratteri consentito. (I24d9f, b/170648072).
  • Il wrapper Modifier.inspectable è stato ritirato. Questa API creerà più invalidazioni del modificatore del necessario, quindi il suo utilizzo è ora sconsigliato. Consigliamo agli sviluppatori di implementare il metodo inspectableProperties() su ModifierNodeElement se vogliono esporre le proprietà di modifica 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 l'attuale LayoutCoordinates di Modifier.Node senza dover sostituire onPlaced e memorizzare le coordinate in una proprietà. (Ia8657)
  • È stato introdotto DelegatableNode.currentLayoutCoordinates come modo per ottenere l'attuale LayoutCoordinates di Modifier.Node senza dover sostituire onPlaced e memorizzare 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 della creazione di un'istanza. (I60745)
  • Nuove API Path per eseguire query sulla direzione di un percorso e per estrarre i contorni da un Path. (I63d04).
  • Sono stati aggiunti PathHitTest e Path.contains(Offset) per verificare se un elemento Path contiene un punto specifico. (I3b218)
  • TextLayoutResult ora espone il metodo getLineBaseline(lineIndex). Ciò consente di leggere la base di riferimento di una riga arbitraria del testo oltre alle proprietà di convenienza esistenti firstBaseline e lastBaseline. (Ide4e8, b/237428541).
  • Metodo aggiunto per confrontare solo le annotazioni di due AnnotatedStrings. (I32659)

Correzioni di bug

  • Risolto un problema di compatibilità con le versioni precedenti di SemanticsPropertyReceiver.performImeAction 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 alle API

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

Correzioni di bug

  • Risolto il bug di accessibilità che consentiva di fare clic sui pulsanti non schede o non di opzione quando selezionati. (I2181c)
  • VelocityTracker ora avrà la correzione per l'aggiunta di punti attiva per impostazione predefinita. La correzione può comunque essere disattivata impostando VelocityTrackerAddPointsFix su false in caso di problemi. (Ib3877, b/269487059)
  • Correzione dell'incompatibilità binaria con le versioni precedenti in TextStyle e ParagraphStyle. (I179f0, b/320819734).

Contributi esterni

  • È stato aggiunto un nuovo costruttore DialogProperties senza parametri specifici della piattaforma. (I45829)
  • È stato aggiunto un nuovo costruttore PopupProperties senza parametri specifici della piattaforma. (I9a038).

Versione 1.7.0-alpha01

24 gennaio 2024

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

Modifiche alle API

  • È stato espanso ClipboardManager aggiungendo ClipEntry e ClipMetadata per supportare contenuti arbitrari come le immagini.
  • Aggiunge l'API DeviceConfigurationOverride a ui-test per consentire la sostituzione locale del comportamento dei contenuti sottoposti a test, ad esempio per specificare dimensioni, impostazioni internazionali, direzione del layout, scala dei caratteri o tema disponibili.

Versione 1.6

Versione 1.6.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 arresto anomalo raro di BasicTextField.

Versione 1.6.5

3 aprile 2024

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

Versione 1.6.4

20 marzo 2024

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

Versione 1.6.3

6 marzo 2024

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

Versione 1.6.2

21 febbraio 2024

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

Versione 1.6.1

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

Correzioni di bug

  • Risolto un problema di compatibilità con le versioni precedenti di SemanticsPropertyReceiver.performImeAction e SemanticsActions.PerformImeAction. (Ie0bb2, b/322269946).
  • I layout ora generano un errore durante la misurazione quando vengono restituite dimensioni insolitamente grandi. Questo tipo di errore si verifica in genere quando la misurazione utilizza direttamente i vincoli massimi senza controllare Constraints.Infinity. Questo controllo aiuterà gli sviluppatori a rilevare problemi relativi a layout con dimensioni errate anziché in un layout che lo contiene. (I339a9)

Versione 1.6.0

24 gennaio 2024

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

Versione 1.6.0-rc01

10 gennaio 2024

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

Correzioni di bug

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

Versione 1.6.0-beta03

13 dicembre 2023

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

Nuove funzionalità

  • Ora è possibile scollegare un LayoutCoordinates senza che il nodo venga scollegato. Mettiti in guardia da Compose Layout Inspector (If693)

Correzioni di bug

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

Versione 1.6.0-beta02

29 novembre 2023

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

Versione 1.6.0-beta01

15 novembre 2023

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

Modifiche alle API

  • Il modificatore DragAndDropTarget ora accetta esplicitamente DragAndDropTarget di ricevere e ha una funzione lambda per attivare una sessione di trascinamento. Ora sono disponibili due funzioni di fabbrica per un DragAndDropModifierNode. Uno per la ricezione dei trasferimenti e uno per il trasferimento dei dati (I69481)
  • Il campo maximumFlingVelocity è stato aggiornato per essere rappresentato come float. Documentazione aggiornata per essere più chiara sull'unità maximumFlingVelocity. (I8adc7).
  • onDragAndDropStart nella 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 utilizzabile se è interessato a una sessione di trascinamento. Altre lambda per l'elaborazione di eventi di trascinamento sono state sostituite da questa. È stata aggiunta una funzione di fabbrica DragAndDropTarget per ricevere da sessioni di trascinamento (Iebf3a)
  • DragAndDropInfo rimosso come tipo DragAndDropModifierNode.drag ora accetta parametri per lambda transferData, dimensioni della decorazione e decorazione a trascinamento DrawScope

    DragAndDropTarget prevede metodi per particolari eventi di trascinamento anziché un unico metodo astratto

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

    Il campo DragAndDropEventType è stato rimosso (I645b1)

  • Rinominato PlatformTextInputModifierNode.runTextInputSession in establishTextInputSession. (I03cd0)

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

  • Sostituisci OriginalText con TextSubstitution. (Ifa5a8).

  • Rinominato PlatformTextInputModifierNode.textInputSession in runTextInputSession. (Ie9c6b).

  • Le entità secondarie di SubcomposeLayout (e i layout come LazyColumn che si basano su questo elemento) che vengono conservati per essere riutilizzati in futuro sono considerati disattivati. È stata introdotta una nuova API di test assertIsDeactivated() per testare questi nodi. Le restanti API di test filtreranno i nodi disattivati per impostazione predefinita. (I2ef84, b/187188981).

  • Le FocusDirection.In e FocusDirection.Out rimosse utilizzano invece FocusDirection.Enter e FocusDirection.Exit (I2f660)

  • Per creare questi slot, le API Material SwipeToReveal (per schede e chip) ora si basano su un'API basata su slot (come consigliata da Compose) anziché su istanze basate sulla classe di dati. Si tratta di una modifica che provoca un errore. Consulta la demo e il codice di esempio per trovare esempi su come utilizzare la nuova API. (Ia8943)

  • Il costruttore FontStyle(int) è deprecato. Usa 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 relativi alle chiavi hardware che non hanno ricevuto un evento Freccia giù nella stessa visualizzazione Compose ora verranno ignorati. (Ib37b4, b/305518328).
  • È stato aggiunto il supporto del renderer per la funzione Sposta gradiente in ArcLine. (I4d5bb).
  • Implementa gli attributi uguali e il codice hash per PageSize.Fixed. (Ie3ede, b/300134276).
  • Risolvi il problema di compatibilità binaria con la modifica di Window Inset (Iee695)
  • Rimuovi lo strato centrale del materiale per il chip/pulsante Material3 perché i microbenchmark mostrano prestazioni migliori senza questo chip. (I55555)
  • I TestDispatcher superati come test effectContext per Compose verranno ora utilizzati per creare i clock di test e frame. (Ia7178)

Versione 1.6.0-alpha08

18 ottobre 2023

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

Modifiche alle API

  • La funzione lambda onDrawDragShadow è stata rinominata in drawDragDecoration per Modifier.dragAndDrawSource, mentre il parametro di dimensione per DragAndDropInfo è stato rinominato dragDecorationSize. (Id0e30, b/303904810).
  • Presenta SemanticsNodeInteraction.isDisplayed() e SemanticsNodeInteraction.isNotDisplayed() per verificare se un nodo corrispondente è visibile o meno senza aver ricevuto anche un'affermazione. (I2c196, b/302100809).
  • È stato introdotto un valore Unspecified speciale per i campi TextAlign, TextDirection, Hyphens e LineBreak del ParagraphTextStyle in sostituzione di null. Poiché queste classi sono in linea, sostituendo nullable con il valore Unspecified, evitiamo il boxing di tipo primitivo. Costruttori, getter e altri metodi in TextStyle e stile paragrafo sono stati aggiornati in modo da accettare i parametri menzionati come tipi non null. (I4197e, b/299490814)
  • Aggiungi un sovraccarico di GoogleFont per la lettura di un file GoogleFont da XML. (If8f59)
  • LoremIpsum PreviewParameterProvider è stato un corso aperto. (I41bf5, b/266918816, b/300116360).

Correzioni di bug

  • FontFamilyResolver ora utilizza Dispatchers.Main per le coroutine di gestione della cache. (Ie8dd9).
  • AndroidViewBinding ora rimuove in modo sincrono le istanze Fragment gonfiate includendo un FragmentContainerView nel tuo layout come parte di onRelease utilizzando commitNow (anziché il commit che utilizzava in precedenza), risolvendo i problemi relativi al metodo della modifica dal vivo con la sostituzione della composizione al momento delle modifiche. (I58fbf)

Versione 1.6.0-alpha07

4 ottobre 2023

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

Modifiche alle API

  • È stato introdotto PlatformTextInputMethodTestOverride per scrivere test per gli editor di testo personalizzati. (Id159b)
  • Aggiunge un modificatore dragAndDropSource per avviare le sessioni di trascinamento e un modificatore dragAndDropTarget per ricevere da 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 pulirli. Questo flag verrà rimosso in Compose 1.6.0-beta01. (Ic9486)

Correzioni di bug

  • Analisi del disegno di vettore XML ottimizzato. (Ibb015)

Versione 1.6.0-alpha06

20 settembre 2023

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

Modifiche alle API

  • Ottimizzazioni aggiuntive per le icone Material. (I3e08d).
  • Aggiunge la possibilità di attraversare l'albero dei modificatori su/giù per trovare nodi simili. (I2d234).
  • È stato aggiunto il callback onRestoreFailed() al modificatore focusRestorer() (Ie1d43)
  • Sono state aggiunte annotazioni Androidx a varie API grafiche per specificare ColorInt, FloatRange, IntRange, Size e altro. (Id65c8, b/290950582)
  • Aggiungi showSystemUi=true alla definizione di PreviewScreenSizes (Ib61d3)

Modifiche del comportamento

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

Versione 1.6.0-alpha05

6 settembre 2023

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

Modifiche alle API

  • Attiva l'acquisizione dei contenuti in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Le velocità di scorrimento nei componenti Visualizza come ScrollView e RecyclerView sono limitate a ViewConfiguration.ScaledMaximumFlingVelocity. Compose ora contiene la propria versione di maximumFlingVelocity, che ora si applica a Draggable. (Ibf974)
  • Aggiunge uno scaffolding iniziale per supportare le API drag and drop delle piattaforme. (If84ce)
  • Aggiungi deviceId in RotaryScrollEvent (Iba3bf)
  • L'API ui-tooling Devices è stata aggiornata per includere i dispositivi più recenti (Ib25b4)

Versione 1.6.0-alpha04

23 agosto 2023

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

Modifiche alle API

  • È stato aggiunto un metodo per disattivare ReusableComposition, rimuovendo le osservazioni, ma mantenendo i nodi. La composizione disattivata può essere riattivata chiamando setContent. (Ib7f31).
  • Aggiungi l'interfaccia ReusableComposition per la gestione del ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
  • Modifier.focusGroup è stato promosso ad API stabili. (I7ffa3).
  • Sono state aggiunte annotazioni Androidx a varie API grafiche per specificare ColorInt, FloatRange, IntRange, Size e altro. (I70487, b/290950582)
  • È stata aggiornata l'API ColorFilter in modo che abbia tipi di sottoclassi concrete per una migliore ispezionabilità dei parametri. (I5fe29).
  • Introduci la libreria di anteprima relativa agli strumenti di Wear per elencare i dispositivi indossabili validi che possono essere utilizzati per le anteprime dell'interfaccia utente (Ib036e)
  • È stata creata l'interfaccia FontScalable per gestire la parte relativa al ridimensionamento dei caratteri dell'interfaccia Density. (I2cf3f).

Versione 1.6.0-alpha03

9 agosto 2023

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

Modifiche alle API

  • Nuovo tipo di transizione di entrata/uscita che adatta i contenuti in base alle dimensioni del contenitore animato durante l'animazione di entrata e uscita. LookaheadScope Il divertimento e l'interfaccia componibile ora sono stabili. (Ifb2ce).
  • Aggiunto il supporto per la configurazione di privateImeOptions (Idb772)

Correzioni di bug

  • Ora PopupPositionProvider.calculatePosition aggiornerà automaticamente la posizione del popup quando lo stato letto nel calcolo viene modificato. (I676a1, b/292257547)
  • Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando readOnly è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore di readOnly era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)
  • Estensione dell'applicazione delle asserzioni globali nei test dell'UI. (I1f90d)

Versione 1.6.0-alpha02

26 luglio 2023

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

Modifiche alle API

  • È stata aggiunta un'interfaccia di localizzazione dei servizi che può essere implementata dagli implementatori della composizione che consente un'implementazione della composizione che delega a un'altra ricerca di servizi del delegato della composizione alla composizione originale. Questo non deve essere chiamato "directy" e viene utilizzato per abilitare la creazione di API sperimentali nel runtime che è possibile trovare nelle versioni con wrapping del compositore, come nel modulo UI. (I296b9)
  • API PlatformTextInput* completamente riprogettata. (I6c93a, b/274661182, b/267235947, b/277380808).
  • SoftwareKeyboardController e LocalSoftwareKeyboardController non sono più sperimentali. Ora anche LocalSoftwareKeyboardController è un CompositionLocal corretto. (I4c364).
  • LookaheadLayout e LookaheadLayoutScope sono stati ritirati per alcune release e ora sono stati rimossi. Le API sostitutive sono LookaheadScope che possono funzionare con qualsiasi layout. (I12ac3)
  • È stato aggiunto SemanticsNodeInteraction.requestFocus come modo più comodo e rilevabile per richiedere l'attenzione ai test. (Ie8722)
  • Aggiungi API sperimentali per registrare le asserzioni globali, da utilizzare in futuro per testare i framework. (I12d77)

Correzioni di bug

  • La prima chiamata del callback update di AndroidView verrà ora differita fino a quando la vista non viene collegata, anziché essere eseguita quando viene applicata la composizione che introduce AndroidView. Questo corregge un bug per cui il callback update non veniva invalidato se lo stato letto veniva modificato immediatamente da un effetto. (Ie9438, b/291094055)

Versione 1.6.0-alpha01

21 giu 2023

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

Nuove funzionalità

  • Supporta Lookahead in LazyList. Ciò consente a LazyList nel passaggio Lookahead di ignorare qualsiasi animazione (ad es. animazione di posizionamento degli elementi, AnimatedVisibility e così via) e di calcolare le dimensioni e la posizione del Lookahead per tutti gli elementi secondari. Dopo il passaggio del Lookahead, i bambini di LazyList hanno potuto animarsi in modo indipendente nella realtà, come mostrato nel passaggio.

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

Ora in Compose includeFontPadding è impostato su false (21d806).

includeFontPadding è un attributo precedente che controlla se includere o meno una spaziatura interna aggiuntiva nella prima riga e nell'ultima riga del testo per contenere eventuali caratteri che si estendono sopra o sotto le basi del testo.

L'aggiornamento di questa versione di Compose modificherà il modo in cui tutti i testi vengono visualizzati nell'interfaccia utente, rimuovendo la spaziatura interna aggiuntiva nella parte superiore della prima e nell'ultima riga di ogni testo visualizzato.

A seconda dei requisiti dell'interfaccia utente e delle metriche relative ai caratteri utilizzati, le modifiche dovrebbero essere minime. Tuttavia, potresti riscontrare blocchi quali: - Test degli screenshot non funzionanti. Se necessario, correggi l'interfaccia utente e rigenera le immagini finali. - Il testo è leggermente disallineato. Rimuovi eventuali spaziature negative personalizzate o aggiungi spaziatura interna se necessario.

Puoi attivare includeFontPadding utilizzando PlatformTextStyle per ogni messaggio:

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

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

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

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

Puoi trovare ulteriori informazioni su Compose includeFontPadding nella documentazione per gli sviluppatori e in questo post del blog.

Se riscontri problemi relativi a questa modifica, segnala un bug utilizzando Issue Tracker.

Modifiche alle API

  • Assistenza per InputConnection#requestCursorUpdates (I0c69b)
  • Aggiunti FocusRequester.saveFocusedChild e FocusRequester.restoreFocusedChild (Ic557e, b/272302679, b/275157318)
  • Aggiungi il tipo ResourceResolutionException ai contenuti lanciabili a capo generati durante il caricamento di asset bitmap con una descrizione del percorso dell'asset che non è stato possibile caricare. (I19f44, b/230166331, b/278424788).
  • Accessibilità ottimizzata per le prestazioni e le allocazioni della memoria. (Iede48).
  • Sono state aggiunte azioni e proprietà semantiche per supportare la traduzione del testo. (I4a6bc).
  • Nuova proprietà in IntrinsincMeasureScope e relative implementazioni (ad es. MeasureScope) per indicare se l'attuale passaggio di misura è un pass Lookahead. (I7a812)
  • È stata aggiornata l'API DrawScope per introdurre la possibilità di eseguire il retargeting del rendering in un canvas diverso con densità/layout e dimensioni alternative.
  • Aggiornamento di DrawContext per supportare la configurazione della densità e della direzione del layout, nonché per la configurazione del canvas configurabile. (Ie1f9b, b/225408150).
  • Paragraph#fillBoundingBoxes aggiunto per calcolare i riquadri di delimitazione dei caratteri. (If30ee)
  • È stato aggiunto un insieme di MultiPreviews comuni (Ia5a27)

Correzioni di bug

  • È stata aggiunta l'interfaccia FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (I9790e)
  • Parametri fallback* nel costruttore TextMeasurer rinominati in default*. (I940a5)
  • Rinominato SemanticsPropertyReceiver.performImeAction in onImeAction e SemanticsActions.PerformImeAction in OnImeAction. (I8e841).
  • Aggiunge la rotellina per distinguere uno scorrimento del mouse da uno trascinamento nello scorrimento nidificato (nello specifico, in NestedScrollConnection). (Ie57e4)
  • È stata aggiunta l'API asComposePaint per sostituire toComposePaint perché l'oggetto restituito esegue il wrapping dell'elemento android.graphics.Paint originale (I22b4c)
  • Ritira SemanticsProperties.imeAction e sostituiscilo con un nuovo parametro in SemanticsActions.performImeAction. (I4a587).
  • Aggiunto il supporto per la selezione con il mouse. La selezione basata sul tocco si espande per parola e si riduce per carattere. (Ic0c6c, b/180639271).
  • I metodi Paragraph che prima generavano AssertionError per gli offset fuori intervallo ora generano IllegalArgumentException allo stesso modo di 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 durante l'impostazione e l'inserimento dell'input coreano, causando la perdita di caratteri.

Versione 1.5.2

27 settembre 2023

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

Correzioni di bug

  • È stata aggiunta una soluzione alternativa per gli arresti anomali quando è stato eseguito l'accesso all'API Accessibility scroll dal thread in background.
  • Correggi i nodi non collegati che vengono aggiunti all'albero della semantica.

Versione 1.5.1

6 settembre 2023

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

Correzioni di bug

  • Sono stati corretti i campi di testo che mostravano la tastiera e che erano modificabili quando readOnly è true. È stato anche risolto il problema che causava la mancata visualizzazione della tastiera quando il valore di readOnly era cambiato da true a false durante lo stato attivo. (I34a19, b/246909589)

Versione 1.5.0

9 agosto 2023

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

Versione 1.5.0-rc01

26 luglio 2023

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

Correzioni di bug

  • È stato risolto il problema di arresto anomalo che si verificava quando SubcomposeLayout viene utilizzato all'interno 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 di FocusTargetModifierNode che può essere utilizzata per creare un FocusTarget personalizzato. (Ifb1d6)
  • Risolto il problema relativo ai componibili di finestre di dialogo e popup che causava il mancato ridimensionamento della finestra secondaria come previsto quando usePlatformDefaultWidth=true. (I112ee)

Versione 1.5.0-beta02

7 giugno 2023

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

Modifiche alle API

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

Correzioni di bug

  • È stata aggiunta l'API asComposePaint per sostituire toComposePaint perché l'oggetto restituito esegue il wrapping dell'elemento 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 alle API

  • Allocazioni rimosse nella ricomposizione, nelle animazioni a colori e in AndroidComposeView (Ib2bfa)
  • Aggiunge un divertente CacheDrawModifierNode() aiutante per consentire la delega (Icf8f9)
  • Introduzione della proprietà isLookingAhead, accessibile da MeasureScope, per osservare i risultati lookahead e influenzare il passaggio principale, se necessario. (Ibf4c3)
  • Nuova proprietà della semantica traversalIndex, un numero in virgola mobile utilizzato per riordinare i nodi nell'attraversamento TalkBack (i valori più bassi vengono prima). (I9a81b, b/186443263).
  • Ridenominazione della proprietà semantica isContainer in isTraversalGroup (I121f6)
  • ColorProducer ora ha operator fun invoke anziché produce (I4a9a2)
  • Aggiungi l'API Transform Path per applicare le trasformazioni di traslazione/scalabilità/rotazione agli oggetti del percorso. (I23434, b/233772232)
  • Il metodo di ColorProducer è chiamato produce. (I78bde)
  • Rinomina toFrameworkColorSpace in toAndroidColorSpace (I4f547)
  • Rinomina ColorLambda in ColorProducer. (I73b1a).
  • Introduci le API per convertire i tipi di spazio colore Android e Compose. (Ie7db4, b/279979665).
  • È stato aggiunto un parametro di colore a BasicText per consentire l'animazione o l'impostazione del colore del testo in modo efficiente. (Iffd88, b/246961787)
  • Rinominato TextRange.constrain in TextRange.coerceIn. (I31be2).
  • È stato aggiunto l'elemento TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787).
  • Sono state stabilizzate molte API di testo, tra cui Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) e MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245).
  • PlatformTextStyle.includeFontPadding non è deprecato. Il nostro scopo originale era rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, rimuovendo la deprecazione dal campo (I98e96, b/277703184)
  • Metodo TextRange.constrain pubblico aggiunto. (I97912)
  • Ora è possibile aprire UrlAnnotation in AnnotatedString 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 ad API stabile. (I79c32, b/261565383).
  • TextMeasurer e le API correlate non sono più sperimentali. (I74647, b/261581753)
  • È stata aggiunta l'azione della semantica PerformImeAction per richiamare l'azione dell'IME sui nodi dell'editor di testo. (Ic606f, b/269633506).
  • Le API di PlatformTextInput non sono più sperimentali per Android. (I668eb)
  • nome del parametro del valore per Enum.valueOf modificato (Ia9b89)
  • altre eccezioni generate da enum valueOf (I818fe)
  • È stata introdotta una nuova API PlatformTextInputAdapter di basso livello per creare implementazioni di input di testo personalizzate che comunicano direttamente con le API della piattaforma. (I58df4).
  • Il parametro BlendMode è stato aggiunto ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione quando si disegna 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 consentire l'animazione o l'impostazione del pennello di testo in modo efficiente.
  • Definisci i tipi lambda senza caselle per Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)

Correzioni di bug

  • Rimosse più allocazioni nel monitoraggio della velocità del puntatore (I26bae)
  • Allocazioni ridotte nella gestione dell'input di layout e puntatore (I5333a)
  • Ottimizza l'utilizzo della memoria vettoriale e il rendering dei primi frame (I2f3c6)
  • Allocazioni rimosse quando si tracciano linee e punti con Canvas (I9f535)
  • Aggiungi documenti per AndroidFont.fontVariationSettings (I7d9e2)

Contributi esterni

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

Versione 1.5.0-alpha04

10 maggio 2023

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

Nuove funzionalità

  • Miglioramenti della delega Modifier.Node È stata aggiunta una possibilità avanzata di delegare altre istanze Modifier.Node da un DelegatingNode. Per farlo, puoi usare le API delegate e undelegate. Prima di questa modifica, ogni API del nodo delega doveva essere delegata esplicitamente al nodo delegato. Dopo questa modifica, le interfacce dei nodi verranno delegate in modo implicito, a meno che DelegatingNode non le sostituisca esplicitamente. (67352bc)

Modifiche alle API

  • Presenta NestedScrollModifierNode, un NestedScroll Modifier.Node a cui è possibile delegare. (I69513)
  • Sono stati aggiunti i parametri onReset e onRelease al componibile AndroidViewBinding, eseguendo il mirroring del componibile AndroidView e attivando il supporto del riutilizzo delle visualizzazioni con ViewBinding. (I00b1e, b/276802519).
  • L'API Compose Path è stata aggiornata per supportare le operazioni di riavvolgimento e supportare casi d'uso di manipolazione frequente del percorso con un riutilizzo più rapido. (I7b797)
  • È stato aggiunto l'elemento TextStyle.merge(...) ottimizzato con l'elenco completo dei parametri. (Iad234, b/246961787).
  • Sono state stabilizzate molte API di testo, tra cui Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) e MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245).
  • PlatformTextStyle.includeFontPadding non è deprecato. Il nostro scopo originale era rimuovere il campo, ma il feedback mostra che gli sviluppatori hanno bisogno di questa opzione di configurazione. Pertanto, rimuovendo la deprecazione dal campo (I98e96, b/277703184)

Correzioni di bug

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

Versione 1.5.0-alpha03

19 aprile 2023

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

Nuove funzionalità

  • Il nuovo comportamento predefinito per SubcomposeLayout in LookaheadScope: SubcomposeLayouts che non ha aree condizionali (ad es. TabRow, Scaffold, BoxWithConstraints e così via) ora funziona correttamente con le animazioni lookahead.

Modifiche alle API

  • Il nuovo intermediateMeasurePolicy predefinito che riutilizza il criterio di misurazione dal pass Lookahead consente ai sottotipi SubcomposeLayout senza slot condizionali come Scaffold, TabRow e BoxWithConstraints di funzionare con Lookahead per impostazione predefinita. (Id84c8)
  • Il ricompositore creato per una finestra Android bloccherà ora le chiamate a withFrameNanos anziché a tutte le composizioni quando riceve una notifica ON_STOP. Questo significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante di withFrameNanos verranno bloccate. (Id9e7f, b/240975572).
  • Modifica motionEventSpy in stabile. (Ic5ec4, b/261560988).
  • Metodo TextRange.constrain pubblico aggiunto. (I97912)
  • L'API PlatformTextStyle.includeFontPadding non è più deprecata per incoraggiare gli sviluppatori a usare questa API di compatibilità per cambiare e testare l'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 alle API

  • Nuova API SubcomposeLayout che richiede un criterio di misurazione intermedio aggiuntivo per gestire la logica di misurazione/layout durante le animazioni basate sul lookahead. (I017d3)
  • PointerInput ora è lento e utilizza Modifier.Node per migliorare le prestazioni (scopri di più sulla piccola modifica del comportamento). (15dab9)
  • Modifica le API sperimentali in stabili con gli eventi chiave. (I9c7d8, b/261566839, b/261567368).
  • Modifica le API sperimentali in stabili in PointerInputChange. (I1b543, b/261560988, b/261565762, b/261565749)
  • Aggiunge un modo per creare un'istanza SuspendingPointerInputModifierNode per implementazioni Modifier.Node più complesse. (Ic4933)
  • Ora è possibile aprire UrlAnnotation in AnnotatedString tramite servizi di accessibilità come TalkBack. (If4d82, b/253292081).
  • È stata aggiunta un'API per intercettare le chiavi hardware prima che vengano inviate alla tastiera software (I4f4c6, b/186800395)
  • È stata aggiunta l'azione di semantica InsertTextAtCursor per i campi di testo. (I11ed5)
  • Le azioni di test relative al testo (ad es. performTextInput) ora richiederanno lo stato attivo direttamente, utilizzando l'azione della semantica, invece di fare clic sul campo. (I6ed05).

Correzioni di bug

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

Versione 1.5.0-alpha01

22 marzo 2023

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

Modifiche alle API

  • Modifier.intermediateLayout ora non richiede un LookaheadScope esplicito. Il blocco di misura in intermediLayout ha IntermediateMeasureScope come ricevitore, che offre pratiche funzionalità per CoroutineScope, LookaheadScope e MeasureScope.(Ibe2e5)
  • LookaheadLayout è stato sostituito da LookaheadScope, che non è più un layout. In questo modo, i contenuti per bambini e ragazzi in un LookaheadScope possono essere controllati direttamente dal criterio MeasurePolicy del genitore. (Ibe2e5).
  • Aggiunge Modifier.Node#coroutineScope per consentire a Modifier.Nodes di avviare le coroutine. (I76ef9).
  • Consenti a Modifier.Nodes di leggere ComposeLocals implementando l'interfaccia ComposeLocalConsumerModifierNode. (Ib44df)
  • Propagazione della classe @Deprecata alla proprietà. (I882d1)

Versione 1.4

Versione 1.4.3

3 maggio 2023

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

Correzioni di bug

  • Risolto il problema per cui AndroidView potrebbe non essere impostato correttamente quando utilizzato con alcuni modificatori. (I4dc77, b/274797771)
  • Risolto il bug nella ricerca 2D Focus che interessava i menu di DropDown (b/276811828)
  • Risolto il bug nelle proprietà di ingresso/uscita con stato attivo personalizzato che eseguiva solo il blocco Invio/uscita la prima volta che la funzione lambda è stata richiamata (b/277234245)
  • È stata corretta una regressione nel sistema di messa a fuoco che ha causato un arresto anomalo durante la lettura di focusProperties. (b/271324781, b/274897776)

Versione 1.4.2

19 aprile 2023

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

Correzioni di bug

  • Risolto il problema per cui AndroidView non riutilizzava correttamente i modificatori, causando un potenziale comportamento imprevisto e arresti anomali. (Ib67ee, b/275919849)
  • Correzione della regressione in cui la tastiera non veniva visualizzata per i campi di testo all'interno di finestre di dialogo non create dall'elemento componibile Dialog (I82551, b/262140644)

Versione 1.4.1

5 aprile 2023

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

Correzioni di bug

  • Risolvi un problema con ParentDataModifier che non interessa 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 lento, in modo che non vengano eliminati quando vengono passati al di fuori dei limiti. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010).
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/128}12184b/25184b/72840
  • Aggiunta nella proprietà semantica di IsContainer sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379)
  • È stato aggiunto un nuovo ruolo di accessibilità DropdownList. Questa opzione può essere utilizzata per replicare il comportamento di TalkBack durante l'impostazione di 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 eseguiranno i passaggi per il layout di ogni frame durante l'esecuzione di frame per diventare inattivi (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che eseguono l'affermazione sui singoli frame delle animazioni del layout. (I8ea08, b/222093277).
  • È stata aggiunta l'opzione TextMotion sperimentale a TextStyle per definire il testo come Static(default) o Animato. Utilizza TextMotion.Animated se il testo verrà ridimensionato, tradotto o ruotato tramite animazione. (I24dd7).

Versione 1.4.0-rc01

8 marzo 2023

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

Modifiche alle API

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

Correzioni di bug

  • L'azione della semantica SetText di BasicTextField ora aggiornerà il buffer del testo utilizzando lo stesso percorso del codice degli aggiornamenti IME e delle funzioni di test (ad es. performTextReplacement).
  • Le funzioni di test del testo performTextClearance, performTextReplacement 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 alle API

  • API modifierElementOf() rimossa. Estendi direttamente da ModifierNodeElement. (I2256b)
  • È stato aggiunto un nuovo callback Modifier.Node.onReset() che ti consente di reimpostare lo stato locale per gestire correttamente il caso in cui Layout verrà riutilizzato (ad esempio come elemento di LazyColumn). È stato corretto FocusTargetModifierNode per reimpostare correttamente lo stato attivo. (I65495, b/265201972)
  • Il parametro BlendMode è stato aggiunto ai metodi DrawScope.drawText, Paragraph.paint e MultiParagraph.paint per supportare diversi algoritmi di fusione quando si disegna testo su Canvas. (I57508)

Correzioni di bug

  • L'algoritmo dell'ordine di impostazione dello stato attivo per l'accessibilità è migliorato. Ad esempio, le barre superiore e inferiore vengono lette più spesso all'inizio e all'ultimo (74e9c5)

Versione 1.4.0-beta01

8 febbraio 2023

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

Modifiche alle API

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

Correzioni di bug

  • Aggiungi documenti per AndroidFont.fontVariationSettings (I7d9e2)

Versione 1.4.0-alpha05

25 gennaio 2023

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

Modifiche alle API

  • Sono stati introdotti nuovi sovraccarichi sperimentali per la funzione runComposeUiTest e le funzioni create*ComposeRule che accettano i parametri CoroutineContext. Il contesto verrà utilizzato per la composizione di prova ed eventuali chiamate LaunchedEffect e rememberCoroutineScope() nella composizione. (I10614, b/265177763)
  • Aggiungi una nuova API per monitorare la velocità unidimensionale (If5a82)
  • FocusRequester è ora contrassegnato come @Stable. (I580ee)
  • Rimuovi un'annotazione sperimentale dal costruttore DialogProperties che utilizza un parametro usePlatformDefaultWidth. (Ic4048)
  • È stata aggiunta una funzione alla posizione di calcolo e alla tangente a una distanza su un percorso, con PathMeasure.getPosition() e PathMeasure.getTangent() (I3b47c)
  • Impostatore pubblico esposto per errore su PlatformParagraphStyle. (I07f47)
  • Più tipo/nullabilità delle funzioni incorporate/deprecateed-hidden (I24f91)
  • Aggiungi AnnotatedString.hasStringAnnotations alla query sulle annotazioni con zero allocazioni. (I94dfe, b/246960758).
  • È stato aggiunto un nuovo sovraccarico per la funzione TextMeasurer.measure che accetta un String come testo. (I47b2d, b/242705342).
  • Le API LineBreak e Hyphens in TextStyle sono passate alla versione stabile. (Ic1e1d)

Contributi esterni

  • I metodi notifyFocusedRect in TextInputSession e TextInputService non sono stati nuovamente ritirati. (I23a04, b/262648050).

Versione 1.4.0-alpha04

11 gennaio 2023

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

Nuove funzionalità

  • È stata aggiunta una nuova API PinnableContainer che consente di bloccare gli elementi dell'elenco lento, in modo che non vengano eliminati quando vengono passati al di fuori dei limiti. Ad esempio, Modifier.focusable() utilizza questo meccanismo per bloccare l'elemento attualmente attivo. (Ib8881, b/259274257, b/195049010).
  • Il sistema di messa a fuoco viene riscritto utilizzando le nuove API sperimentali Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/128}12184b/25184b/72840
  • Aggiunta nella proprietà semantica di IsContainer sulle piattaforme. Questa proprietà verrà utilizzata in una modifica successiva che determina l'ordine di attraversamento in base al significato semantico di elementi come le superfici. (I63379)
  • È stato aggiunto un nuovo ruolo di accessibilità DropdownList. Questa opzione può essere utilizzata per replicare il comportamento di TalkBack's durante l'impostazione di 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 eseguiranno i passaggi per il layout di ogni frame durante l'esecuzione di frame per diventare inattivi (ad es. tramite waitForIdle). Ciò potrebbe influire sui test che eseguono l'affermazione sui singoli frame delle animazioni del layout. (I8ea08, b/222093277).
  • È stata aggiunta l'opzione TextMotion sperimentale a TextStyle per definire il testo come Static(default) o Animato. Utilizza TextMotion.Animated se il testo verrà ridimensionato, tradotto o ruotato tramite animazione. (I24dd7).

Modifiche alle API

  • Argomento maxSize: IntSize sostituito in drawText con size: Size per l'allineamento con altre funzioni di DrawScope. Il valore predefinito di size è Size.Unspecified, il che non dovrebbe modificare il comportamento predefinito precedente. (Icd27d)
  • Rimosso il costruttore di caratteri sperimentale obsoleto. (I8a724, b/261435386).
  • La classe di dati degli strumenti dell'interfaccia utente Group ora include un campo, isInline, che indica se il gruppo è destinato a una chiamata a una funzione componibile in linea. Se isInline è true, la chiamata è a una funzione componibile in linea. Tuttavia, il valore potrebbe essere false per le chiamate a funzioni componibili in linea che provengono da moduli compilati con una versione del plug-in di compilazione Composer che non genera le informazioni sulla funzione in linea. (Idb846)
  • Miglioramento di un certo numero di API sperimentali precedentemente in versione stabile
  • L'API Rotary Scorri Event è ora stabile (I42ad3, b/261561229)
  • L'API FontVariation è ora stabile (I8779f, b/241016309)
  • Tutti i costruttori Font() sono ora API stabili (I5948b, b/261435386)
  • DeviceFontFamilyName è ora stabile (I8b640, b/261435386)
  • Il costruttore AndroidFont 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. Consente di rilevare le eccezioni non rilevate durante il caricamento asincrono dei caratteri. (Ibb481, b/261435386).
  • L'API Font.loadingStrategy è ora stabile. (I5937c, b/261435386).
  • L'API GoogleFont è ora stabile. (Ic90b0, b/261435386).
  • TextUnit(float, TextUnitType) è ora un'API stabile. (I90c84, b/261561612).
  • pluralStringResource è ora un'API stabile. (I09849, b/261439703)

Versione 1.4.0-alpha03

7 dicembre 2022

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

Modifiche alle API

  • Rimozione di ExperimentalComposeUiApi da PointerIcon (I23af8)
  • Inserisci le azioni di accessibilità della pagina: PageUp, PageDown, PageLeft, PageRight. Tieni presente che queste funzionalità sono disponibili solo dall'API 29. (Ida4ab)
  • Aggiornata la vista parametro rememberNestedScrollConnection dalla visualizzazione principale a quella host. (Ia5200)
  • È stata aggiunta un'API Modifier per eseguire query sulle informazioni di scorrimento dei predecessori. (I2ba9d, b/203141462)
  • Utilizzato in Clickable per ritardare correttamente le interazioni con la pressione, quando i gesti potrebbero diventare eventi di scorrimento.
  • Risolto il problema di Clickables che non ritardava correttamente gli echi, se utilizzato all'interno di un Scrollable ViewGroup.
  • I cassetti e i fogli sono stati aggiornati per ritardare correttamente la pressione nel caso in cui i gesti possano diventare eventi di scorrimento.
  • Rinominato CompositingStrategy.Always in Offscreen per indicare che il rendering di graphicsLayer verrà sempre eseguito in un buffer intermedio (I47dc1)
  • Il sovraccarico del layout con più spazi per i contenuti è ora stabile (I10566, b/248294649)
  • Sono state aggiunte le nuove API sperimentali PerfettoTrace.record {} e PerfettoTraceRule per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di ispezionare il comportamento e le prestazioni del test. (I3ba16)
  • Nei test dell'interfaccia utente che utilizzano una regola Compose, le continuazioni ripristinate durante i callback withFrameNanos non verranno inviate fino al termine dell'esecuzione di tutti i callback dei frame. Questo corrisponde al comportamento di Scrivi quando viene eseguito normalmente. Tuttavia, i test che si basano sul comportamento precedente potrebbero non riuscire. Questo dovrebbe influire solo sul codice che chiama direttamente withFrameNanos o withFrameMillis e la logica al di fuori del callback passa a quelle funzioni che potrebbero dover essere spostate all'interno dei callback. Per alcuni esempi, consulta le modifiche al test dell'animazione in questo CL.
  • È stato aggiunto il parametro onPerformTraversals: (Long) -> Unit facoltativo al costruttore TestMonotonicFrameClock e alla funzione di fabbrica per eseguire il codice dopo withFrameNanos callback, ma prima di riprendere le coroutine dei chiamanti. (Idb413, b/254115946, b/222093277, b/255802670).
  • Aggiunta di EmojiCompat a Compose (Ibf6f9, b/139326806)
  • È stato aggiunto un nuovo parametro di sfondo a @Preview per il supporto dei colori dinamici (I9f512)

Correzioni di bug

  • Le notifiche di applicazione istantanea vengono ora inviate dopo che Recomposer ha completato l'applicazione delle modifiche. (Iad6c0, b/222093277).
  • Sono state apportate modifiche in captureToImage per consentire l'acquisizione di screenshot multi-finestra. Questa funzionalità è utile per i test di screenshot che utilizzano popup di composizione. (I169c5).

Aggiornamenti delle dipendenze

  • L’UI di Compose e Compose Material ora dipendono dal ciclo di vita 2.5.1. (I05ab0, b/258038814).

Versione 1.4.0-alpha02

9 novembre 2022

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

Modifiche alle API

  • È stato aggiornato il campo GraphicsLayerScope per esporre le dimensioni attuali di graphicsLayer. Questo è utile per calcolare le trasformazioni di graphicsLayer in funzione della dimensione componibile. (If8c43,b/181387080)
  • È stato introdotto CompositingStrategy per determinare quando utilizzare un livello di compositing fuori schermo per il rendering dei contenuti graphicsLayer. Automaticamente mantiene il comportamento predefinito che sfrutta internamente un livello se viene applicato un livello alpha o un elemento RenderEffect/Overscroll. Introdurrà sempre un buffer fuori schermo in cui ModulateAlpha eviterà di utilizzare un buffer fuori schermo e modulerà invece ciascuna delle istruzioni di disegno registrate all'interno di graphicsLayer. L'utilizzo di ModulateAlpha continuerà a sfruttare un buffer fuori schermo per gli utilizzi di RenderEffect/Overscroll (I25e82, b/256382834)
  • invalidateSubtree() è stato aggiunto a Modifier.Node per consentire la validità di intere gerarchie per layout e disegno. (I4bd90)
  • Promuovi rememberNestedScrollInteropConnection a stabile. È stata introdotta la possibilità di passare una visualizzazione root a rememberNestedScrollInteropConnection. In questo modo la visualizzazione personalizzata può reagire meglio ai vincoli di scorrimento, soprattutto nelle visualizzazioni non standard (ad es. ModalBottomSheetDialog). (I9e107)
  • Aggiunta dell'interfaccia ObserverNode che può essere utilizzata dalle implementazioni Modifier.Node che devono ricevere una notifica quando un valore già letto in precedenza è cambiato (I5728b, b/247716483)
  • È stato aggiunto un nuovo costruttore a Paint che accetta 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 nuova FontFamily.Resolver.resolveAsTypeface da usare su Android. (I8950b)
  • Aggiungi ToolingState per consentire agli strumenti di modificare gli stati interni del componibile (Ie6614)
  • Strumenti di refactoring per supportare meglio le nuove animazioni aggiunte (I8677b)
  • Aggiunto il parametro minLines nei testi material3 e material3, TextField 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 alle API

  • È stato aggiunto un nuovo metodo, awaitEachGesture(), per i rilevatori di gesti. Il funzionamento è simile a forEachGesture(), ma i gesti Loop sui gesti operano interamente all'interno di AwaitPointerEventScope, in modo che gli eventi non vadano persi tra una iterazione e l'altra.
  • forEachGesture() è stato ritirato a favore di awaitEachGesture() perché consente la perdita di eventi tra gesti. (Iffc3f, b/251260206).
  • Ritiro del riciclo degli oggetti di accessibilità in Androidx. Abbiamo riscontrato che le variazioni del rendimento sono trascurabili anche nelle versioni supportate meno recenti. (I0a961)
  • DrawStyle è stato aggiunto come attributo sperimentale a TextStyle e SpanStyle per consentire di tracciare i contorni del testo. (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 aggiungere una sottostringa di AnnotatedString e gli stili di intersezione.
  • È stato aggiunto il parametro DrawStyle alle funzioni di disegno Paragraph e MultiParagraph che consentono di disegnare i contorni del testo. (Ic8102, b/155421273).

Contributi esterni

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

Versione 1.3

Versione 1.3.3

11 gennaio 2023

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

Correzioni di bug

  • Correzione di un arresto anomalo che a volte si verificava su Android 9 durante il salvataggio dello stato della visualizzazione Scrittura in Attività. (I0b755, b/260322832)

Versione 1.3.2

7 dicembre 2022

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

Correzioni di bug

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

Versione 1.3.1

9 novembre 2022

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

Versione 1.3.0

24 ottobre 2022

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

Modifiche importanti dalla versione 1.2.0

  • Nuova suite API sperimentale LookaheadLayout (attivazione di comportamenti di animazione precedentemente impossibili)
  • Nuova suite di API sperimentale Modifier.Node (alternativa a Modifier.composed con prestazioni più elevate)
  • Supporto migliorato dei riquadri delle finestre.
  • Supporto della messa a fuoco per i D-Pad e la tastiera hardware nelle LazyList.
  • L'elevazione massima supportata nelle finestre di dialogo e nei popup è stata ridotta a 8 dp (modifica del comportamento che provoca un errore di rotta per alcuni sistemi di progettazione personalizzati - razionale nelle note di rilascio beta01)
  • Molti miglioramenti secondari e inediti all'API
  • Numerose correzioni di bug e miglioramenti delle prestazioni

Versione 1.3.0-rc01

5 ottobre 2022

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

Modifiche alle API

  • Sono stati aggiunti nuovi trattini API sperimentali per supportare la sillabazione automatica nel testo (Iaa869)

Correzioni di bug

  • I caratteri DeviceFontFamilyName non configureranno le impostazioni delle varianti wght e ital per impostazione predefinita, ma verranno utilizzate le impostazioni della piattaforma per il file Typeface caricato. (Ia7a6d, b/246989332).
  • Risolto il problema di perdita di memoria di LazyColumn: onModifierLocalsUpdated non veniva chiamata con il valore predefinito quando i modificatori venivano riutilizzati (b/230168389)

Versione 1.3.0-beta03

21 settembre 2022

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

Modifiche alle API

  • Aggiungi opzioni per personalizzare l'interruzione di riga nel testo. (I86907)
  • Argomento size:IntSize modificato 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 componibile 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 alle API

  • È stato aggiunto un sovraccarico sperimentale per Layout che accetta un elenco di molteplici lambda di contenuti componibili, che consente di misurare le minacce inserite in diversi lambda di contenuti in modo diverso (Ic1b4e)

Modifiche alle API Focus sperimentali:

  • I criteri FocusDirection.In e FocusDirection.Out sono deprecati e sostituiti da FocusDirection.Enter e FocusDirection.Exit. (Ia4262, b/183746982).
  • Sono state aggiunte due nuove proprietà dello stato attivo di entrata e di uscita per specificare un comportamento personalizzato per FocusManager.moveFocus(Enter) e FocusManager.moveFocus(Exit). (I5f3f9, b/183746982).
  • Ora puoi utilizzare FocusRequester.Cancel per annullare uno spostamento dello stato attivo. FocusRequester.Cancel può essere utilizzato in una qualsiasi delle seguenti proprietà dello stato attivo: su, giù, sinistra, destra, avanti, precedente, inizio, fine, invio e uscita. (Ib300f)

Versione 1.3.0-beta01

24 agosto 2022

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

Refactoring dei nodi del modificatore

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

Riepilogo delle modifiche

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

In generale, questa astrazione fornisce un meccanismo alternativo per produrre modificatori stateful senza fare affidamento sui meccanismi dell'API Modifier.composed.

Rischio

Questa modifica è strettamente compatibile in modo binario con le release precedenti ed è pensata per essere compatibile con le versioni precedenti in termini di comportamento osservabile per quanto più pratico e ragionevole. Detto questo, ci sono pochi sottosistemi di composizione che questo refactoring non ha toccato ed è probabile che il comportamento sia cambiato in modi non coperti dai nostri test e che non sono ancora stati trovati e corretti.

Esegui l'upgrade a questa release con cautela. Se ritieni che si sia verificato un problema, non esitare a comunicarcelo.

API sperimentali

Sono state aggiunte varie API sperimentali, tutte relative al nuovo concetto di "nodo di modifica". I nodi vengono creati come risultato

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

Modifica che provoca un'interruzione del comportamento

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

L'elevazione massima supportata per le finestre di dialogo e i popup di Compose è stata ridotta da 30 dp a 8 dp. Questa modifica interessa le finestre di dialogo e i popup personalizzati dell'UI e del materiale. Questa modifica viene apportata per mitigare un bug relativo all'accessibilità nelle versioni di Android precedenti alla S e per garantire che i servizi di accessibilità all'interno di queste finestre siano in grado di interagire con i contenuti all'interno della finestra di dialogo o del popup.

Questa modifica ti riguarda solo se stai creando un'implementazione di finestre di dialogo o popup personalizzate con un'elevazione impostata su livelli superiori a 8 dp. Valuta la possibilità di ridurre l'elevazione della finestra di dialogo o del popup. Se devi disattivare questo nuovo comportamento, valuta la possibilità di biforcare la finestra di dialogo o il popup con l'elevazione impostata. Questa opzione è sconsigliata, perché l'accessibilità potrebbe risentirne e spetta allo sviluppatore assicurarsi che la parte inferiore della finestra di dialogo o del popup sia interagisci e leggibile dai servizi di accessibilità.

Modifiche alle API

  • Risolto il problema per cui painterResource non si aggiornava in seguito alle modifiche alla configurazione (I58e73, b/228862715)
  • rememberTextMeasurer non richiede più i parametri FontFamily.Resolver, Density o LayoutDirection. Utilizza il costruttore TextMeasurer per fornire valori personalizzati per questi parametri. (Ia1da3).
  • È stata aggiunta la proprietà DialogProperties.decorFitsSystemWindows per consentire alle finestre di dialogo di supportare WindowInsets. (I57742, b/229378542)
  • I costruttori dei caratteri sono stati riportati nel file kotlin originale per mantenere la compatibilità binaria. Nessuna modifica rispetto all'ultima release stabile. (Ieb2f3).
  • È stato rimosso l'operatore non necessario da diverse definizioni uguali. Questo non ha alcun effetto. (I6c309)
  • FontVariation.Setting è un'interfaccia sigillata, per consentire future API di blocco. (I11021, b/143703328)
  • Aggiungi CompositionGroup.findParameters a SlotTree.kt. In questo modo gli strumenti possono recuperare i parametri per un elemento 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 alle API

  • LayoutCoordinates.findRootCoordinates() ora è pubblico (I7fa37, b/204723384)
  • È stata aggiunta l'API sperimentale per ottenere LayoutCoordinates in PlacementScope. In questo modo gli sviluppatori possono sapere dove posizionare gli elementi secondari rispetto alla loro posizione nel layout corrente. (I5482b, b/238632578)
  • È stato aggiunto LayoutCoordinates.transformFrom per completare la trasformazione di Matrix da LayoutCoordinates a un altro. (Ic5ab1, b/238632578).
  • È stato deprecato SemanticsModifier.id e l'ID semantica è stato spostato in LayoutInfo.semanticsId. (Iac808, b/203559524)
  • I caratteri delle risorse ora supportano l'impostazione di impostazioni di variazione dei caratteri (API 26 e versioni successive). (I900dd, b/143703328)
  • Supporto dei caratteri variabili in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • I costruttori dei caratteri ora accettano un elenco di FontVariation.Setting per la configurazione dei caratteri variabili sui dispositivi O+. (I11a9d, b/143703328).
  • Aggiungi l'API FontVariation per definire e utilizzare i caratteri variabili. (I3c40c, b/143703328).
  • Il costruttore LineHeightStyle.Alignment è ora pubblico (sperimentale) (I4bbbe, b/235876330)
  • Il paragrafo è ora previsto|effettivo e definito per Android e desktop. (Id387e, b/239962983)
  • L'interfaccia Paragrafo ora si chiama Paragarph, l'interfaccia sigillata. Non è possibile usare il paragrafo per la sottoclassificazione. Ti consigliamo di contattarci se questa modifica ti interessa. (If5247, b/239962983)
  • Annotazione sperimentale rimossa da PlatformTextStyle e LineHeightStyle. (I64bef)
  • Ritira TextInputService.show|hideSoftwareKeyboard. Usa invece SoftwareKeyboardController nel codice dell'app e TextInputSession nel codice di gestione IME. (I14e4c, b/183448615).
  • Aggiunta di una nuova API per i tipi di animazione esistenti (I26179)

Correzioni di bug

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

Versione 1.3.0-alpha02

27 luglio 2022

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

Modifiche alle API

  • È stata aggiunta una nuova proprietà PointerInputChange#pressure per recuperare la pressione. (I45a5e, b/205164819).
  • È stato aggiunto rememberTextMeasurer per creare e ricordare facilmente TextMeasurer istanze nella composizione. (I8d66e).
  • Rect, RoundRect e MutableRect ora supportano la sintassi in di Kotlin per la chiamata della funzione contains. (Ie42b0, b/238642990).
  • Rimuovi le funzioni non necessarie da KeyInjectionScope, poiché possono essere facilmente implementate con parti più semplici dell'API. Le funzioni rimosse includono pressKeys, keysDown e keysUp. (I81d77)
  • È stato eseguito il refactoring dei nomi dei parametri e della costante in KeyInjectionScope per includere il suffisso "Millis", dove le unità di tali costanti e parametri sono in millisecondi. (Iabef5).
  • Metodo toStringForLog() aggiunto a EditCommand per contribuire a risolvere i problemi di modifica del testo. (I53354, b/228862731)
  • È stata aggiunta la funzione di estensione drawText su DrawScope per fornire un modo per disegnare testo con più stili su componibili e modificatori che operano su un DrawScope come Canvas e drawBehind. (I16a62, b/190787898)
  • Introduci una nuova API sperimentale denominata TextMeasurer che consente il calcolo del layout di testo arbitrario che genera risultati identici a quelli di BasicText, indipendentemente dal runtime di Compose. (I17101)
  • Aggiungi mapTree a SlotTree.kt. In questo modo gli strumenti possono esaminare SlotTree senza prima creare una copia in memoria come fa Albero. Per Layout Inspector, ciò migliora le prestazioni di circa un fattore 10. (I5e113).
  • Anteprima di Compose modificata per essere archiviata in file di output binari, per consentire agli sviluppatori di scrivere e riutilizzare le annotazioni MultiPreview dalle librerie. (I85699, b/233511976)

Correzioni di bug

  • Quando aggiungi eventi InputEventChange al tracker Velocity considereremo ora i delta anziché le posizioni, in modo da garantire che la velocità venga calcolata correttamente in tutti i casi, anche se l'elemento target si muove (Icea9d, b/216582726, b/223440806, b/227709803)
  • Correggi gli NPE causati da AnnotatedString.toUpperCase quando sono presenti annotazioni. (I0aca2, b/210899140).

Versione 1.3.0-alpha01

29 giugno 2022

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

Modifiche alle API

  • Nuovo elemento LookaheadLayout che supporta un passaggio Lookahead prima della misura/del layout effettivi. In questo modo è possibile precalcolare il layout quando viene modificato, consentendo al contempo alla misura/layout post-lookahead di utilizzare la dimensione/posizione precalcolata per animare le dimensioni e le posizioni verso il target. SubcomposeLayouts non sono ancora supportati, ma lo saranno in una versione futura. (I477f5)
  • Aggiungi il parametro alfa facoltativo al sapore del pennello di TextStyle 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 supporto dei link TalkBack in AnnotatedString. (I1c754, b/231495122).
  • Spostamento delle funzionalità dell'utilità al runtime (I4f729)

Correzioni di bug

Contributi esterni

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

Versione 1.2

Versione 1.2.1

10 agosto 2022

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

Correzioni di bug

  • Corretto il puntatore null nello strumento di controllo (b/237987764)
  • Correzione dell'eccezione di trasmissione della classe durante il promemoria nello strumento di controllo (b/235526153)

Versione 1.2.0

27 luglio 2022

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

Modifiche importanti dalla versione 1.1.0

  • Miglioramenti dell'attraversamento dello stato attivo:

    • Ora lo scorrimento basato sullo stato attivo degli elenchi Lazy funziona con la nuova API BeyondBoundsLayout di base
    • Nuove API per la personalizzazione del comportamento in FocusOrder e FocusProperties
    • Miglioramento del comportamento della tastiera fisica o del telecomando della TV
  • Nuove API per:

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

Versione 1.2.0-rc03

29 giugno 2022

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

  • Nessuna modifica dalla versione 1.2.0-rc02.

Versione 1.2.0-rc02

22 giugno 2022

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

Versione 1.2.0-rc01

15 giugno 2022

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

Modifiche alle API

  • Le interfacce nelle librerie di scrittura ora vengono create utilizzando i metodi di interfaccia predefinita jdk8 (I5bcf1)
  • Sono state aggiunte funzioni di ordine superiore a KeyInjectionScope per l'inserimento della pressione dei tasti mentre gli altri tasti vengono tenuti premuti o attivati. Queste funzioni includono withKeysDown, withKeysToggled e così via. Sono state aggiunte anche proprietà che consentono di verificare se un determinato meta tasto è inattivo, ad esempio isCtrlDown per verificare se uno dei tasti di controllo è stato premuto. Consulta KeyInjectionScope per la documentazione su ciascuna funzione. (I9f6cd, b/229831515)
  • È stato introdotto un OverscrollEffect sperimentale per consentire l'utilizzo di effetti di scorrimento personalizzato, oltre ai sovraccarichi Modifier.scrollable che lo accettano.
  • La versione sperimentale LocalOverScrollConfiguration è stata spostata da foundation.gesture al pacchetto di base e rinominato in LocalOverscrollConfiguration (If19fb, b/204650733)
  • Rinomina runComposeUiTestWithoutActivity {} in runEmptyComposeUiTest {}, in modo da allinearlo a 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 alle API

  • pressKeyTimes, così come isCapsLockOn e amici aggiunti a KeyInjectionScope. Inoltre, l'API ora supporta pattern di iniezione combinati di mouse e tastiera, ad esempio il clic su un pulsante del mouse con un meta tasto premuto. (I4c8da, b/229831515).
  • Aggiunto il supporto sperimentale per l'inserimento di eventi chiave. Usa performKeyInput per inviare eventi chiave o inviali tramite la proprietà key di MultiModalInjectionScope durante un gesto di input multimodale con performMultiModalInput. Consulta KeyInjectionScope per la documentazione dell'API. (Ic5000, b/229831515)
  • Aggiungi nuovo GoogleFont.Provider.AllFontsListUri per recuperare la sorgente internet canonica di Google Fonts supportata da Android.
  • Migliora i messaggi di errore che vengono visualizzati di nuovo quando GoogleFonts non viene caricato in modalità di scrittura. (I0416c)

Correzioni di bug

  • Quando aggiungi eventi InputEventChange al Velocity Tracker considereremo ora i delta anziché le posizioni, ciò garantirà che la velocità venga calcolata correttamente in tutti i casi, anche se l'elemento target si muove (I51ec3, b/216582726, b/223440806, b/227709803)
  • L'impostazione Show Layout Bounds verrà ora applicata ai componibili subito dopo l'attivazione/disattivazione dal riquadro delle impostazioni rapide, senza dover uscire e rientrare nell'attività. (I843d5, b/225937688)
  • La ricerca delle stringhe di accessibilità non attiva il caricamento dei caratteri. In precedenza, provava a caricare i caratteri per StyleSpans, causando arresti anomali se FontFamily.Resolver fosse stato sovrascritto. (I4609d)
  • Se premi il tasto Canc in avanti quando il cursore si trova alla fine di un campo di testo, non si verificherà più un arresto anomalo.
  • DeleteSurroundingTextCommand e DeleteSurroundingTextInCodePointsCommand ora richiedono che i loro argomenti del costruttore siano non negativi. (Ica8e6, b/199919707).

Versione 1.2.0-beta02

18 maggio 2022

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

Modifiche alle API

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

Correzioni di bug

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer è stato rinominato in DisposeOnDetachedFromWindowOrReleasedFromPool per riflettere meglio il momento in cui si verificano cessioni, piuttosto che semplicemente quando non si verificano. (If15ca)

Versione 1.2.0-beta01

11 maggio 2022

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

Nuove funzionalità

  • Questa è la prima versione beta 1.2.

Modifiche alle API

  • Aggiunta dell'esperimento BeyondBoundsInterval sperimentale che può essere utilizzato dalle implementazioni personalizzate di LazyList quando il layout degli elementi supera i limiti visibili (Ifabfb, b/184670295)
  • Le versioni con chiave di Modifier.composed ora sono API stabili (Ie65e4, b/229988420)
  • Semplificato l'API rememberNestedScrollConnection per utilizzare locali della composizione al fine di acquisire le informazioni di visualizzazione correnti (I67ca7)
  • Ora è possibile utilizzare l'annotazione @ComposableTarget e le annotazioni contrassegnate da @ComposableTargetMarker nell'ambito del file utilizzando il prefisso @file. Se utilizzi un'annotazione di destinazione nell'ambito del file, il compilatore presumerà che tutte le funzioni componibili nel file siano destinate all'applicatore associato. Ad esempio, l'uso di @file:UiComposable dichiara che tutte le funzioni @Composable hanno come target l'applicatore dell'interfaccia utente di Compose. Una funzione che deve scegliere come target un altro applicatore deve fornire esplicitamente l'annotazione dell'indicatore di destinazione per l'applicatore desiderato. (I40804)
  • Introdotta una nuova API sperimentale, indipendente dalla piattaforma, di test: interface ComposeUiTest e fun runComposeUiTest(block: ComposeUiTest.() -> Unit), che possono essere utilizzate per eseguire test Ui di Compose senza bisogno di un TestRule. Per eseguire un test senza ComposeTestRule, supera il test come lambda a runComposeUiTest e utilizza i metodi e i membri nell'ambito del ricevitore ComposeUiTest, che sono gli stessi di ComposeContentTestRule.

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

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

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

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

    Segui le istruzioni per eseguire le operazioni indicate:

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

  • Il nome di LineHeightBehavior è stato rinominato LineHeightStyle

  • Il nome di LineVerticalAlignment è stato rinominato LineHeightStyle.Alignment

  • La ridenominazione di LineHeightTrim è rinominata come LineHeightStyle.Trim

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

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

  • trimFirstLineTop, trimLastLineBottom attributi di LineHeightBehavior modificati in una singola enum: LineHeightTrim. LineHeightTrim ha valori di 4 stati definiti da due valori booleani: FirstLineTop, LastLineBottom, Entrambi e Nessuno (Ifc6a5, b/181155707)

  • Elemento LineHeightBehavior aggiunto a TextStyle e ParagraphStyle. LineHeightBehavior consente di stabilire se applicare l'altezza della riga all'inizio e alla fine della prima riga. Definisce anche l'allineamento della linea nello spazio fornito da TextStyle(lineHeight).

    Ad esempio, è possibile ottenere un comportamento simile a quello che CSS definisce tramite LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • trimFirstLineTop, le configurazioni di trimLastLineBottom funzionano correttamente solo quando includeFontPadding è falso. (I97332, b/181155707)

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

Correzioni di bug

  • La documentazione di PointerInputChange::copy ora indica correttamente che si tratta di una copia superficiale. (I182f5).
  • Supporta i puntini di sospensione quando l'altezza è limitata e non si adatta a tutte le righe di testo (Ie528c, b/168720622)
  • includeFontPadding attivata per impostazione predefinita. È possibile disattivare includeFontPadding utilizzando l'attributo TextStyle.platformTextStyle. Nel prossimo futuro modificheremo il comportamento predefinito, tuttavia fino a quel momento ci consentirà di integrare meglio i miglioramenti dell'altezza delle righe (aosp/2058653) e di risolvere i problemi di ritaglio di TextField. (I01423, b/171394808)

Contributi esterni

  • MouseInjectionScope.scroll(delta = someDelta) ora è invertita su Android se scorriamo in verticale (se qualche Delta è positivo, scorrerà verso il basso) (Ifb697, b/224992993)

Versione 1.2.0-alpha08

20 aprile 2022

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

Modifiche alle API

  • Le funzioni pluralStringResource sono state contrassegnate come sperimentali per consentire l'evoluzione e supportare una migliore internazionalizzazione in futuro. (If24e4).
  • Ora è possibile usare il parametro Vincoli per Paragrafo e MultiParagrafo. Al momento non è possibile superare Constraints.maxHeight, ma è possibile eseguire alcuni calcoli in futuro, ad esempio i puntini di sospensione in base all'altezza. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() ora accetta una classe personalizzata simile a MutableSet che non consente l'aggiunta di nuovi elementi al suo interno. (Icd314)
  • PointerIcon è ora un'interfaccia @Stable (I9dafe)
  • Il consumo parziale (posizione abbassata OR) è stato ritirato in PointerInputChange. Puoi utilizzare consume() per completare la modifica. Puoi utilizzare isConsumed per stabilire se qualcun altro ha già utilizzato la modifica.
  • Ora PointerInputChange::copy() crea sempre una copia superficiale. Significa che le copie di PointerInputChange verranno consumate una volta esaurita una delle copie. Se vuoi creare un elemento PointerInputChange non associato, utilizza invece il costruttore. (Ie6be4, b/225669674).
  • Attiva l'interoperabilità di Scorrimento nidificato tra Scrivi e Visualizza nella direzione Scrittura > Visualizza. Ciò significa che un elemento principale di scrittura potrà ricevere delta di scorrimento nidificati da una visualizzazione di scorrimento nidificata. (If7949, b/174348612)
  • Il nuovo SemanticsProperty testTagsAsResourceId, che può essere utilizzato per rendere Compose conforme ai test UIAutomator progettati per il sistema View. (I39c20).
  • Visualizza tutti i pesi disponibili per i caratteri di sistema su Android quando utilizzi FontFamily.SansSerif. Nell'API 21-28 verranno utilizzati i nomi dei caratteri di riserva come senza grazie. Si tratta di una modifica del comportamento perché in precedenza solo le ponderazioni 400 e 700 erano supportate nell'API 21-28. (I380fe, b/156048036, b/226441992)
  • Gli insegnanti di paragrafi e multiparagrafo hanno riordinato gli argomenti posizionali prima degli argomenti facoltativi. (Idafaa)
  • AndroidFont ora utilizza typefaceLoader come parametro del costruttore. (I2c971)

Versione 1.2.0-alpha07

6 aprile 2022

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

Modifiche alle API

  • La nuova funzione Snapshot.withoutReadObservation { ... } è stata aggiunta. Consente agli utenti di eseguire il lambda passato senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potrebbe esserti utile nei casi d'uso in cui vuoi trarre vantaggio dalla scrittura/lettura sicura per i thread basata su snapshot, ma vuoi poter leggere il valore senza causare una ricomposizione o una nuova misurazione inutili. (I9f365, b/214054486).
  • La proprietà dell'estensione consumeWindowInsets di ComposeView consente agli sviluppatori di disattivare l'utilizzo di Android WindowInsets. In questo modo, ComposeViews separati nella gerarchia possono applicare WindowInsets senza interferire tra loro. (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)
  • Abilita l'interoperabilità di Scorrimento nidificato tra View e Compose per la collaborazione delle classi di visualizzazione. Ciò significa che l'opzione Compose è ora in grado di inviare delta di scorrimento a un'entità principale di tipo View (cooperativa). (I5d1ac, b/174348612).
  • Aggiornamento di FontFamily.Resolver per integrare l'impostazione di accessibilità del testo in grassetto a livello di sistema (I6c1e7)
  • L'elemento Font(AssetManager, String, ...) è deprecato ed è stato sostituito con Font(String, AssetManager, ...). Questa è un'API sperimentale. (I1c7a4)
  • Aggiungi un nuovo descrittore di caratteri Font(DeviceFontFamilyName) per cercare facoltativamente i caratteri installati dal sistema durante le catene di riserva dei caratteri. (I30468, b/219754572)
  • È stata aggiunta la configurazione di compatibilità temporanea per includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding può essere modificato tramite TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Questa è un'opzione di configurazione temporanea per abilitare la migrazione e verrà rimossa. (If47be, b/171394808)
  • Aggiungi l'estensione GoogleFont.Provider.isAvailableOnDevice per ricevere assistenza per il debug. (I64e31).
  • Aggiungi il costruttore GoogleFont.Provider da utilizzare con @ArrayRes (Ic5ee1, b/225984280)
  • Compose GoogleFont ora si chiama Font(GoogleFont), altrimenti l'API rimane stabile. (I125f2).

Correzioni di bug

  • È stato aggiunto il controllo lint sul materiale/scaffold per garantire che venga utilizzata la spaziatura interna interna (Ifb111)

Versione 1.2.0-alpha06

23 marzo 2022

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

Modifiche alle API

  • È stata aggiunta un'azione della semantica RequestFocus per richiedere lo stato attivo sul target attivabile. (I17b71)
  • È stata aggiornata l'analisi delle bozze di vettori per supportare il mirroring automatico in modo da capovolgere i contenuti di un elemento VectorPainter se la direzione corrente del layout è RTL. (I79cd9, b/185760237)
  • Sono stati aggiornati i colori shadow/ambient in modo che siano i parametri finali di Modifier.graphicsLayer per la compatibilità dell'API (I3f864, b/160665122)

  • Sono state aggiunte implementazioni predefinite a shadow/ambient color su GraphicsLayerScope per garantire modifiche significative all'API

  • Ora evento aggiunta agli eventi RSB (Ief8ae)

  • FocusOrder è stato unito a FocusProperties e focusProperties() ora ha tutte le funzionalità di focusOrder(). FocusOrder e focusOrder() sono stati deprecati. Il valore focusOrder() che accetta un focusRequester deve essere sostituito con un modificatore focusRequester() in combinazione con focusProperties(). In questo modo i modificatori possono avere una maggiore separazione dei problemi. (I601b7)

  • L'upgrade di RecyclerView e Compose ora migliorerà le prestazioni dello scorrimento per gli oggetti RecyclerView con visualizzazioni Compose come elementi secondari.

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

  • Aggiungi ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer, che è la nuova strategia predefinita e gestisce correttamente i container in pool come RecyclerView. (If7282)

  • Aggiunto il supporto per l'annotazione delle classi di annotazioni con @Preview come primo passaggio per l'aggiunta della funzionalità Anteprima multipla. Queste annotazioni potrebbero essere utilizzate per annotare metodi componibili o altre classi di annotazioni, che potrebbero quindi essere considerate come annotate indirettamente con l'elemento @Preview specificato. (I12eff).

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

Correzioni di bug

  • Sono state aggiornate le API di grafica Vector in modo che utilizzino l'annotazione componibile corretta @VectorComposable anziché @UiComposable (I942bc)
  • Rimuovi in linea da AnnotatedString.Builder.withStyle (If84d5)

Contributi esterni

  • Composer-ui: aggiungi proprietà ambientShadowColor 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 alle API

  • TextToolbar ora accetta gli argomenti lambda anziché ActionCallback. (Ib2eb9, b/197950089).
  • Valore nulla aggiornato nel core e nell'appcompat per corrispondere a Tiramisu DP2 (I0cbb7)
  • L'interfaccia misurata ora espone la proprietà parentData (I3313f)
  • Modifier.onPlaced e l'interfaccia OnPlacedModifier sono ora stabili. (Ib5482)
  • Evviva! L'animazione di Scrivi ora supporta l'impostazione "Scala della durata dell'animazione" nelle Opzioni sviluppatore. (I5a4fc, b/161675988).
  • È stato aggiunto un modificatore BeyondBoundsLayout locale (If8b51, b/184670295)
  • Testo: l'opzione includiFontPadding ora è disattivata per impostazione predefinita. Vengono gestiti i problemi di ritaglio dovuti a includeFontPadding=false e non dovrebbero verificarsi interruzioni per gli script lunghi. (I31c84, b/171394808)

Correzioni di bug

  • ComposeContentTestRule.setContent ora genererà un IllegalStateException se tenti di impostare contenuti quando ne sono già presenti. (I888a5, b/199631334)
  • È stato risolto l'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
  • Migliora gli esempi di scorrimento RSB. (I6a596)

Contributi esterni

  • Aggiornato per utilizzare Kotlinx coroutines 1.6.0 (I3366d)

Versione 1.2.0-alpha04

23 febbraio 2022

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

Modifiche alle API

  • Sono stati aggiunti i criteri ComposableTarget, ComposableTargetMarker e ComposableOpenTarget che consentono di generare report in fase di compilazione per capire quando una funzione componibile viene chiamata come target di un'applicazione che non era stata progettata.

    Nella maggior parte dei casi le annotazioni possono essere dedotte dal plug-in di Composer, pertanto l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un applicatore personalizzato, funzioni componibili astratte (ad esempio i metodi di interfaccia), campi o variabili globali che sono lambda componibili (vengono dedotte variabili e parametri locali) o l'utilizzo di ComposeNode o di funzioni componibili correlate.

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

  • Font(resId, ...) ora supporta il caricamento della strategia su un'API stabile. (Ief3d2).

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

  • Supporta il caricamento asincrono dei caratteri nel testo (I77057, b/214587005)

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

Correzioni di bug

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

Versione 1.2.0-alpha03

9 febbraio 2022

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

Modifiche alle API

  • I metodi notifyFocusedRect in TextInputSession e TextInputService sono ora deprecati e non verranno chiamati. Usa invece BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874).
  • Introduzione del metodo destroyDisplayListData nella classe stub RenderNode (I1e659, b/216660268)
  • È stata aggiunta una nuova API che consente di premisurare gli elementi secondari di SubcomposeLayout che hai precomposto. (I857ea)
  • È stato aggiunto un elemento movableContentOf, che converte un lambda componibile in un lambda che sposta lo stato e i nodi corrispondenti in qualsiasi nuova località chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata al lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta alcuna nuova chiamata, lo stato viene rimosso definitivamente e ricorda che gli osservatori vengono avvisati.

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

  • FontFamilyResolver è ora disponibile tramite LocalFontFamilyResolver.current

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

  • Le funzionalità Paragrafo e MultiParagrafo ora richiedono FontFamily.Resolver

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

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

  • Supporto del precaricamento dei caratteri tramite FontFamilyResolver.preload

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

  • È stata aggiunta AndroidFont, una nuova API di basso livello per fornire nuovi tipi di descrittori delle risorse carattere su Android. Ad esempio, il caricamento dei caratteri da un backend specifico per l'app, l'individuazione facoltativamente dei caratteri preinstallati sul dispositivo o il caricamento di un carattere da una risorsa non fornita dall'attuale stabilimento di produzione di caratteri.

  • È stata espansa l'API Font.ResourceLoaded per supportare il caricamento dei caratteri facoltativo e asincrono. È sconsigliato usare questa API direttamente dagli sviluppatori. Per aggiungere nuovi tipi di caratteri, consulta AndroidFont.

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

  • È stato aggiunto il parametro loadingStrategy ai caratteri basati sulle risorse per consentire il caricamento asincrono quando il carattere delle risorse fa riferimento ai caratteri XML scaricabili. (Ie5aea, b/174162090).

  • Il costruttore Typeface(FontFamily) è deprecato. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Con i caratteri scaricabili, questa chiamata potrebbe bloccarsi per 10 secondi. Usa invece FontFamilyResolver.preload.

  • L'API fontResource(FontFamily): Typeface è deprecata. In precedenza, questa funzionalità era utilizzata per precaricare i caratteri, che possono richiedere fino a 10 secondi per i caratteri scaricabili. Usa invece FontFamilyResolver.preload (If8e7c, b/174162090)

  • Il costruttore SubcomposeLayoutState che accetta maxSlotsToRetainForReuse è ora deprecato. Esiste invece un nuovo costruttore che accetta SubcomposeSlotReusePolicy, una nuova interfaccia che consente un controllo più granulare su quali aree devono essere conservate per il riutilizzo futuro. (I52c4d).

  • Espone le funzioni HSV e HSL in Color come API non sperimentale. Lo spazio colore Oklab ora è un'API pubblica. (I08fb6, b/180731008).

  • AndroidComposeTestRule.AndroidComposeStatement deprecato, che non era pensato per essere nell'API pubblica e non ha fatto nulla per te in ogni caso. (Ibc46b)

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

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

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

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

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

Correzioni di bug

  • I campi di testo verranno ora mantenuti sopra la tastiera quando sono attivati e la tastiera viene visualizzata, quando la modalità di immissione flessibile è ADJUST_PAN. (I8eaeb, b/190539358, b/192043120).
  • Il desktop utilizza la composizione locale per FontFamily.Resolver
  • L'app FontLoader per computer è deprecata
  • Nuovo fabbricante createFontFamilyResolver su computer (I6bbbb, b/174162090)
  • Il tipo di input da tastiera software non sfarfalla più quando si cambia lo stato attivo tra i campi di testo. (I1bf50, b/187746439)

Versione 1.2.0-alpha02

26 gennaio 2022

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

Modifiche alle API

  • Aggiunti Modifier.onRotaryScrollEvent() e Modifier.onPreRotaryScrollEvent() per dispositivi indossabili con pulsante laterale rotante (I18bf5, b/210748686)
  • Aggiungi l'estensione View.createLifecycleAwareRecomposer sperimentale (I0cde6)

Contributi esterni

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

Versione 1.2.0-alpha01

12 gennaio 2022

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

Modifiche alle API

  • Deprecato FontFamily.canLoadSynchronously. Questa proprietà non ha significato semantico. (Ica5ef).
  • Aggiunto campo identità a CompositionData per la generazione di ID invarianti in Layout Inspector. (Ic116e)
  • ID dispositivi Wear OS aggiunti all'elenco dei dispositivi in anteprima (I93232)

Aggiornamenti delle dipendenze

  • Ora dipende da Kotlin 1.6.10.

Versione 1.1

Versione 1.1.1

23 febbraio 2022

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

Correzioni di bug

  • Correggi NullPointerException all'indirizzo 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)
  • RTL corretto in LazyVerticalGrid (aosp/1931080, b/207510535)

Versione 1.1.0

9 febbraio 2022

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

Modifiche importanti dalla versione 1.0.0

  • Supporto stabile per l'effetto scorrimento orizzontale di Android 12
  • Miglioramenti alle dimensioni del touch target
    • Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio di layout in modo da rispettare le linee guida sull'accessibilità di Material per le dimensioni del touch target. Ad esempio, il touch target del pulsante si espanderà fino a una dimensione minima di 48 x 48 dp, anche se imposti dimensioni inferiori per il pulsante. In questo modo Compose Material allo stesso comportamento dei componenti di Material Design, offrendo un comportamento coerente se combini le visualizzazioni e Compose. Inoltre, questa modifica garantisce che quando crei la tua UI utilizzando i componenti di Compose Material, verranno soddisfatti i requisiti minimi per l'accessibilità del touch target.
  • Supporto stabile per rotaia di navigazione
  • Assegna una serie di API precedentemente sperimentali alla versione stabile
  • Supporto per versioni più recenti di Kotlin

Versione 1.1.0-rc03

26 gennaio 2022

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

Correzioni di bug

  • Aggiornato per supportare Compose Material 1.1.0-rc03

Versione 1.1.0-rc01

15 dicembre 2021

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

Correzioni di bug

  • Risolto un bug che causava la mancanza di azioni di scorrimento di accessibilità (I7cbfb)
  • Ora SemanticsNodeInteraction.captureToImage() funzionerà anche se HardwareRenderer.isDrawingEnabled() è false, abilitandolo per tutta la durata della chiamata (Idf3d0)

Versione 1.1.0-beta04

1° dicembre 2021

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

Nuove funzionalità

  • Aggiornato per essere compatibile con Kotlin 1.6.0

Modifiche alle API

  • È stata eseguita la pulizia di nulla in androidx.core.view (I7078a, b/204917439)
  • Sono state aggiunte API sperimentali che consentono agli utenti di utilizzare PointerInputchange nel suo complesso o di verificare se è stato consumato o meno. (I2e59d).
  • Aggiunge il supporto per gli eventi della rotellina di scorrimento del mouse nel livello UI. (Ia14eb, b/198214718).
  • Aggiungi sovraccarichi Modifier.composed sperimentali che accettano chiavi per il confronto per l'uguaglianza e sono idonei a ignorare le ottimizzazioni. (Ice799, b/205851704)
  • ComposeNotIdleException ora si estende da Exception anziché direttamente da Throwable. Tieni presente che questo significa che le clausole catch che catturano Exception ora potrebbero rilevare ComposeNotIdleException, dove non lo avrebbero fatto in precedenza. (I9c217).

Correzioni di bug

  • Correggi i punti di manipolazione del testo che non si spostano quando la visibilità dell'IME cambia. (I25f2e).

Versione 1.1.0-beta03

17 novembre 2021

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

Modifiche alle API

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

Correzioni di bug

  • Il valore predefinito di durationMillis in TouchInjectionScope.swipeWithVelocity viene ora calcolato in modo che sia possibile scorrere. (I19deb)

Versione 1.1.0-beta02

3 novembre 2021

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

Modifiche alle API

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

Contributi esterni

  • Aggiunto Modifier.pointerHoverIcon (I95f01)

Versione 1.1.0-beta01

27 ottobre 2021

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

Modifiche alle API

  • È stata aggiunta l'API BringIntoView sperimentale che ti consente di inviare una richiesta ai genitori in modo che scorrano per visualizzare l'elemento (Ib918d, b/195353459)
  • Nuove API di animazione per il supporto degli strumenti. In particolare, consentono agli strumenti di esaminare le animazioni e le relative configurazioni nelle transizioni. (I4116e).

Versione 1.1.0-alpha06

13 ottobre 2021

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

Modifiche alle API

  • Rimuovi ExperimentalComposeUiApi da ViewRootForInspector e LayoutInfo.ownerViewId (I5c2e3)
  • È stato aggiunto un sovraccarico senza figli per Layout, con maggiore efficienza (Ib0d9a)
  • InternalCompilerApi rimosso dai metodi Composer che devono essere chiamati cross-module (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction ora restituisce lo SemanticsNodeInteraction su cui è stata chiamata la funzione. (I9e5db).
  • Aggiunta la composizione LocalInputModeManager per rilevare TouchMode/NonTouchMode. (I6a83c, b/175899786).
  • È stato aggiunto viewConfiguration: ViewConfiguration a LayoutInfo per consentire ai consumatori di ricevere il valore corretto per aspetti come il timeout per pressione prolungata. (I76ca6)
    • È stato aggiunto viewConfiguration: ViewConfiguration a InjectionScope per consentire ai test di regolare l'inserimento dell'input in base a fattori quali il timeout della pressione prolungata o la perdita al tocco.
    • È stata modificata la durata predefinita della pressione prolungata e del doppio tocco per l'input sia del tocco che del mouse in base ai valori in InjectionScope.viewConfiguration.
  • Implementazione di ExposedMenuBox basato su ExposedMenuBox con TextField e Menu a discesa all'interno (If60b2)
  • IgnoraOnOutsideClick è stato aggiunto a PopupProperties, sostituendo launchOnClickOutside, che è stato ritirato. La nuova proprietà riceve la posizione del clic e i limiti dell'ancoraggio, fornendo un controllo più preciso sull'eventuale richiamo di onDismissRequest. Ciò può essere utile, ad esempio, per evitare che il cursore venga rimosso se tocchi l'elemento.
    • updateAndroidWindowManagerFlags è stato aggiunto a PopupProperties, offrendo un controllo di basso livello sui flag trasmessi dal popup a WindowManager di Android. Il parametro della funzione lambda sarà il flag calcolati dai valori PopupProperties che generano i flag di WindowManager: ad esempio, focusable. Il risultato della funzione lambda sarà l'ultimo flag che verrà passato ad Android WindowManager. Per impostazione predefinita, updateAndroidWindowManagerFlags lascia invariati i flag calcolati dai parametri. Questa API deve essere utilizzata con cautela, solo nei casi in cui il popup abbia requisiti di comportamento molto specifici. (I6e9f9).
  • Recomposer.state è stato deprecato e sostituito da Recomposer.currentState per cambiare il proprio tipo in StateFlow (Ic2ab3, b/197773820)
  • Aggiunte flush() e dispose() a InjectionScope. Utilizzale quando vuoi eliminare immediatamente tutti gli eventi in coda e quando vuoi eliminare l'ambito. (Ifb73a)
  • È stato aggiunto un elemento performScrollToNode(matcher: SemanticsMatcher) che fa scorrere un container scorrevole fino ai contenuti corrispondenti al matcher specificato. (Ic1cb8)
  • InjectionScope ora implementa Density, che ti consente di convertire facilmente da px e dp in performTouchInput e amici. (I8fe1f)

Correzioni di bug

  • AndroidView ora propaga LocalLifecycleOwner e LocalSavedStateRegistryOwner alla propria visualizzazione tramite ViewTreeLifecycleOwner e ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • È stato risolto un problema che a volte non consente di gestire gli scorrimenti in WearOS. (I9387e)
  • Il tempo predefinito tra gli eventi di input inseriti è stato modificato da 10 ms a 16 ms. Questo potrebbe modificare il risultato dei test che eseguono gesti di input, come uno scorrimento specifico. (I829fd)

Versione 1.1.0-alpha05

29 settembre 2021

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

Modifiche alle API

  • Aggiunto il supporto per la comunicazione tra modificatori (Id5467, b/198826874)
  • Sono stati aggiunti i puntatori storici sperimentali a PointerEventChange. (Ic1fd8, b/197553056, b/199921305).
  • Aggiunte density: Density e layoutDirection: LayoutDirection a LayoutInfo. Ciò consente ai consumatori di LayoutInfo di interpretare correttamente le dimensioni e la posizione esposta in LayoutInfo. (I002f1).
  • Aggiunto il supporto sperimentale per l'inserimento di eventi del mouse. Usa performMouseInput per iniziare a inviare eventi del mouse o invia eventi del mouse tramite la proprietà Mouse di MultiModalInjectionScope durante un gesto di input multimodale con performMultiModalInput. Vedi MouseInjectionScope per la documentazione dell'API disponibile. (Iaa4a8, b/190493367).

Correzioni di bug

  • Corretto il supporto dell'accessibilità per gli elementi scorrevoli (sia lenti che non lenti) in relazione allo scorrimento (I6cdb0)
  • TouchInjectionScope.swipeWithVelocity migliorato. Ora accetta una gamma più ampia di variabili di input e suggerirà modifiche all'input se non è possibile creare uno scorrimento (I40fbe, b/182477143)

Versione 1.1.0-alpha04

15 settembre 2021

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

Modifiche alle API

  • Ora PointerEvent ha un PointerEventType per supportare gli eventi di passaggio del mouse. (I091fa)
  • Consenti agli elementi secondari di accettare l'input del puntatore al di fuori dei limiti di input del puntatore del padre. I genitori possono intercettare queste chiamate con una proprietà PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
  • performGesture e GestureScope deprecati, che sono stati sostituiti da performTouchInput e TouchInjectionScope. (Ia5f3f, b/190493367).
  • È stato aggiunto touchBoundsInRoot a SemanticsNode che include le dimensioni minime del touch target, in modo che gli sviluppatori possano garantire che i touch target soddisfino i requisiti minimi di accessibilità. (I2e14b, b/197751214).
  • Ripeti l'implementazione di inspectable (I927bc, b/191017532)
  • Nome del parametro ispezionabile modificato per creare una corrispondenza composta (I3a482, b/191017532)
  • Sono stati introdotti performTouchInput e TouchInjectionScope come sostituzione di performTouchInput e TouchInjectionScope, aprendo la strada ad altre modalità (come il mouse).

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

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

    1. Quando si inviava un evento down mentre i cursori sono stati spostati senza inviare un evento di spostamento (in altre parole, è stato utilizzato updatePointerTo(), ma non move(), quindi viene chiamato down()), l'implementazione precedente faceva avanzare l'ora dell'evento e inviava un evento di spostamento prima di inviare l'evento down. La nuova implementazione invia comunque l'evento di spostamento, ma non avanza l'ora dell'evento in questo scenario specifico.
    2. Quando si inviava un evento up mentre i puntatori sono stati spostati senza inviare un evento di spostamento (simile a quanto sopra), l'implementazione precedente faceva avanzare l'ora dell'evento e inviava un evento di spostamento prima di inviare l'evento up. La nuova implementazione non comporta nessuna delle due: le nuove posizioni dei puntatori si rifletteranno solo tramite l'evento up.

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

Correzioni di bug

  • Consenti al clip di estendere i limiti del touch target oltre l'area del clip per scopi minimi del touch target. (I43e10, b/171509422)
  • Sui dispositivi Android 12 è stato aggiunto il supporto dell'overscroll per la funzionalità stretching. (Iccf3c, b/171682480).

Versione 1.1.0-alpha03

1° settembre 2021

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

Nuove funzionalità

  • Scrittura 1.1.0-alpha03 aggiornata in modo che dipendesse da Kotlin 1.5.30. (I74545)

Modifiche alle API

  • È stato aggiunto Modifier.inspectable per il wrapping di altri modificatori. (I1909b, b/191017532)
  • È stata aggiunta l'API BlurredEdgeTreatment per semplificare i casi d'uso della sfocatura nelle combinazioni più utilizzate di flag dei clip e TileModes. La maggior parte dei casi d'uso prevede il rendering dei contenuti sfocati al di fuori dei limiti dei contenuti originali e la sfocatura delle regioni al di fuori di questi limiti con un nero trasparente, oppure il ritaglio dei contenuti ai limiti dei contenuti che campionano il bordo più vicino per sfocare i kernel che si estendono oltre i limiti dei contenuti. (I6b4b7, b/166927547).
  • Aggiunto il supporto per RenderEffect nel desktop di composizione. Sono stati introdotti gli effetti Offset e il modificatore di sfocatura come metodo semplice per introdurre effetti visivi di sfocatura in una parte della gerarchia di composizione. (I0f6aa, b/166927547).
  • Introdotta API RenderEffect che può essere facoltativamente configurata su un Modifier.graphicsLayer per modificare i contenuti del livello stesso. Questa opzione può essere utilizzata per sfocare i contenuti di un elemento componibile e di un elemento componibile secondario all'interno di una gerarchia di composizione. (I47c4d, b/166927547)
  • AwaitPointerEventScope ora ha withTimeout() e withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Aggiunta la dimensione minima del touch target a ViewConfiguration per l'uso nella semantica e nell'input del puntatore per garantire l'accessibilità. (Ie861c)
  • Aggiungi il supporto di TileMode.Decal, utile per definire il comportamento dei bordi per gli effetti di rendering basati sulla sfocatura. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction e hasScrollToKeyAction sono ora API stabili (I142ae, b/178483889)
  • È stato aggiunto un metodo di test per ottenere i limiti tagliati. (I6b28e).

Correzioni di bug

  • È stato rimosso il metodo isBounded da sfocaturaEdgeTreatment per favorire il controllo esplicito del parametro di forma null. (I85d68)

Versione 1.1.0-alpha02

18 agosto 2021

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

Modifiche alle API

  • PointerEvent ora supporta la lettura dello stato del pulsante del mouse e dello stato di modifica della tastiera. (I6310c, b/180075467)
  • I gesti inseriti utilizzano ora l'ora di MainTestClock come fonte attendibile per il tempo. L'ora attuale degli eventi inseriti in performGesture verrà inizializzata sull'ora attuale di MainTestClock. (Ifb364, b/192064452).
  • Costruttore DpRect(DpOffset, DpSize) aggiunto (I2cf16, b/194219828)
  • Aggiunta della classe DpSize (I7abb1, b/194219828)

Correzioni di bug

  • È stata aggiornata l'analisi del file XML delle grafiche vettoriali per supportare ColorStateLists come proprietà della tinta dei colori principali in VectorDrawables. (I86915, b/195668138)

Versione 1.1.0-alpha01

4 agosto 2021

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

Modifiche alle API

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

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

  • È stato aggiornato il metodo DrawScope#drawImage che utilizza i registri di origine e di destinazione per utilizzare un parametro facoltativo FiltraQualità. Questo è utile per la Pixel Art, che deve essere pixelata quando viene ridimensionata per la grafica basata su pixel. Aggiornamento di BitmapPainter + Immagine componibile per utilizzare anche un parametro facoltativo tipoFilterQualità (Ie4fb0, b/180311607)

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

Correzioni di bug

  • Per supportare meglio il concatenamento dei modificatori di disegno, assicurati che l'implementazione di Modifier.paint richiami il disegno DrawsContent. In precedenza, Modifier.paint era destinato a un nodo foglia nella catena dei modificatori, ma così facendo ne impedisce la configurazione su un contenitore componibile (ad es. una scatola) o l'aggiunta di decorazioni aggiuntive come Modifier.paint().border(). Quando Modifier.paint chiama disegnoContent dopo aver disegnato i contenuti del pittore specificato, si ottiene una maggiore coerenza del comportamento con il pattern di modifica. (Ibb2a7, b/178201337, b/186213275).
  • Le finestre di dialogo ora seguono il comportamento relativo alle dimensioni della piattaforma. Imposta usePlatformDefaultWidth su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy spostato in :compose:ui (I5eb09, b/160602714)
  • Lo scorrimento tramite azioni di semantica per elenchi lenti e componenti a scorrimento regolare ora è animato (Id9066, b/190742024)

Versione 1.0

Versione 1.0.5

3 novembre 2021

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

Correzioni di bug

  • Risolto il problema di monitoraggio degli arresti anomali delle istanze derivateStateOf. (aosp/1792247)

Versione 1.0.4

13 ottobre 2021

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo da dipendere da Kotlin 1.5.31

Versione 1.0.3

29 settembre 2021

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo da dipendere da Kotlin 1.5.30

Versione 1.0.2

1° settembre 2021

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

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

Versione 1.0.1

4 agosto 2021

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

Aggiornamenti delle dipendenze

  • Aggiornato in modo che dipende da Kotlin 1.5.21.

Versione 1.0.0

28 luglio 2021

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

Funzionalità principali della versione 1.0.0

Questa è la prima release stabile di Compose. Consulta il blog ufficiale di Compose Release per ulteriori dettagli.

Problemi noti

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

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

    Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion a 24+ nel file build.gradle. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e 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

  • Le finestre di dialogo ora seguono il comportamento relativo alle dimensioni della piattaforma. Imposta usePlatformDefaultWidth su false per eseguire l'override di questo comportamento. (Iffaed, b/192682388)

Versione 1.0.0-rc01

1° luglio 2021

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

Nuove funzionalità

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

Modifiche alle API

  • Rimosse le versioni sperimentali FocusManager#moveFocusIn e FocusManager#moveFocusOut deprecate (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)
  • Le finestre di dialogo ora possono utilizzare l'intera larghezza dello schermo. (I83929, b/190810877)
  • Aggiunto il supporto sperimentale per le rappresentazioni dei colori HSV e HSL. (Id7cf8, b/180731008)

Modifiche del comportamento

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

Correzioni di bug

  • Elemento InfiniteAnimationPolicy spostato in androidx.compose.ui:ui (I5eb09, b/160602714)
  • LivelyImageVector è stato temporaneamente rimosso per modificare la struttura del modulo. (I41906, b/160602714)

Versione 1.0.0-beta09

16 giugno 2021

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

Modifiche alle API

  • Cambia enum Role e LiveRegionMode in classi in linea con il costruttore privato (Id1890)
  • L'uso delle maiuscole della tastiera viene convertito in una classe incorporata. (Id5a1c)
  • Modifica HapticFeedbackType in una classe in linea. (I255ec)
  • Modifier.pointerInteropFilter è @alloComposeUiApi. (Iede6c).
  • TextAllinea, FontSynthesis e TextDirection sono ora classi incorporate. (I212fe)
  • TextOverflow viene modificato in una classe incorporata. (I433af)
  • FontStyle è ora una classe incorporata. (I9e48b).

Correzioni di bug

  • Per il momento, le costanti chiave sono @experimentComposeUiApi. L'utilizzo del codice può dichiarare le costanti private prima della stabilizzazione. (Ia5d48).
  • Ora i test Compose possono essere eseguiti su Robolectric. Finora sono state identificate le seguenti limitazioni:
    • Non esiste una bitmap nativa, quindi ImageBitmap() genera un'eccezione NullPointer.
    • Non c'è nessun disegno, quindi captureToImage() attenderà a tempo indeterminato il prossimo pareggio (ad esempio con deadlock).
    • Non è stato caricato alcun carattere, quindi il testo verrà misurato in modo errato. Tutti i caratteri hanno un'altezza fissa di circa 20 px e una larghezza di 1 px.
    • ComposeTestRule.waitUntil {} non esegue il thread principale durante l'attesa, il che significa che è equivalente a ComposeTestRule.mainClock.advanceTimeUntil {}. Si prevede di identificare ulteriori limitazioni in futuro. (I284fa)

Regole del profilo aggiunte

In questa release sono state aggiunte regole del profilo ai seguenti moduli di composizione (I14ed6):

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

Che cosa sono le regole del profilo?

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

  • Una regola del metodo avrà il seguente pattern:

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

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

  • <CLASS_DESCRIPTOR> è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la 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 restituiti del metodo. Ad esempio, il metodo fun isPlaced(): Boolean su LayoutNode ha la firma isPlaced()Z.

  • Questi pattern possono includere caratteri jolly (**, * e ?) in modo che una singola regola includa più metodi o classi.

A cosa servono le regole?

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

  • Un metodo con il flag S indica che si tratta di un metodo che viene richiamato all'avvio e deve essere compilato in anticipo per evitare i costi di compilazione e interpretazione del metodo all'avvio.

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

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

Come funziona?

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

Versione 1.0.0-beta08

2 giugno 2021

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

Modifiche alle API

  • L'enumerazione NestedScrollSource è sostituita da una classe incorporata. (Ie321b, b/187055290).
  • FocusManager.clearFocus(forcedClear = true) è stato rinominato in FocusManager.clearFocus(force = true) (Ia0c41)
  • È stato eseguito il refactoring degli utilizzi delle enum in classi in linea per evitare problemi con l'enumerazione esaustiva di istruzioni quando vengono aggiunti nuovi valori di enumerazione. (I2b5eb)
  • Rimuovi @ExperimentalComposeUiApi da PopupProperties. (I01fa6)
  • PointerType è stata modificata da enum a una classe in linea (If5058)
  • Le proprietà della semantica del testo e ContentDescription non sono più valori singoli, ma elenchi. Ciò consente di unirli in quanto si tratta di una concatenazione. Sono state inoltre fornite API di test migliori per utilizzare queste modifiche (Ica6bf, b/184825850)
  • L'istruzione Modifier.focusModifier() è deprecata e sostituita da Modifier.focusTarget() (I6c860)
  • Modifier.onSizeChanged() e Modifier.onGloballyPositioned() non sono più funzioni integrate (I727f6, b/186109675)
  • L'enumerazione KeyboardType è sostituita da una classe incorporata. (I73045, b/187055290)
  • Enum FocusState sostituita con interfaccia FocusState (ICC1a, b/187055290)
  • L'enumerazione ImeAction è sostituita da una classe in linea. (I18be5, b/187055290).
  • PlaceholderVerticalAlign viene convertita in una classe incorporata. (If6290)
  • TextUnitType è ora una classe in linea. (I4cba9).
  • Le funzioni AnnotatedString.withAnnotation ora sono SperimentaliTextApi anziché ExperimentalComposeApi. (I0cd0a)
    • Il costruttore TextUnit con TextUnitType è ora ExampleTextAPI anziché ExperimentalComposeApi.

Correzioni di bug

  • Risolto il bug introdotto nella versione beta07, a causa del quale gli elementi LazyColumn/Row venivano visualizzati parzialmente dopo lo scorrimento (I8c9ac, b/188566058)
  • Ora detectDragGesures, detectVerticalGestures e detectHorizontalGestures utilizzeranno automaticamente la modifica di posizione. Non è necessario chiamare change.consumePositionChange nei callback onTrascina (I42fc4, b/185096350, b/187320697)
  • I Modificatori di layout che forniscono linee di allineamento sono stati corretti. È stato corretto un bug che causava la mancata misurazione del genitore quando le linee di allineamento degli elementi secondari stavano cambiando. (I4401f, b/174315652).
  • Modifier.onGloballyPositioned() è stato modificato per indicare le coordinate di questo modificatore nella catena di modificatori, non le coordinate del layout dopo aver applicato tutti i modificatori. Ciò significa che ora l'ordine dei modificatori influisce sulle coordinate che verrebbero riportate. (Ieb67d, b/177926591).

Versione 1.0.0-beta07

18 maggio 2021

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

Modifiche alle API

  • È stata aggiunta l'interfaccia ViewRootForInspector per l'utilizzo nello strumento di ispezione (Ib70df)
  • SubcomposeLayoutState ora supporta l'impostazione del conteggio degli slot riutilizzabili. Il layout manterrà attivi fino a questo numero di slot invece di smaltirli per poter riutilizzare lo slot la prossima volta che ne avremo bisogno (Ieb981)
  • L'enumerazione KeyEventType viene sostituita da una classe in linea. (Id670a, b/187055290)
  • L'enumerazione FocusDirection è sostituita da una classe incorporata. (Ib6d03, b/187055290, b/184086802).
  • Introduci la possibilità di istruire lo stato SubcomposeLayout che consente di precomporre il contenuto in un slotId richiede, in modo da rendere più veloce la prossima misura, in quanto la prossima volta che proveremo a sottocomporre con lo slotId specificato non ci sarà più bisogno di una composizione. (I42580, b/184940225)
  • Aggiunto il punto di manipolazione per la selezione dei clip (Iff80d, b/183408447)
  • Sono state rimosse le API inutilizzate relative al supporto di Layout Inspector. (I2ac78).

Correzioni di bug

  • LazyColumn/Row ora manterrà attivi fino a 2 elementi precedentemente visibili (non eliminati) anche quando l'elemento viene già fatto scorrere. In questo modo il componente può riutilizzare le sottocomposizioni attive quando dovremo comporre un nuovo elemento per migliorare le prestazioni dello scorrimento. (Ie5555)
  • TextGeomerticTransform e TextDecoration su AnnotatedString verranno applicati come specificato. (I61900, b/184760917)

Versione 1.0.0-beta06

5 maggio 2021

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

Modifiche alle API

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

Versione 1.0.0-beta05

21 aprile 2021

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

Modifiche alle API

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

Correzioni di bug

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

Versione 1.0.0-beta04

7 aprile 2021

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

Modifiche alle API

  • Rinomina hideSoftwareKeyboard e showSoftwareKeyboard su SoftwareKeyboardController rispettivamente in hide() e show().
    • Fornisce l'interfaccia ComposeLocal completa per LocalSoftwareKeyboardController, consentendone l'impostazione (particolarmente utile nei test) (I579a6)
  • È stata aggiunta l'API LiveRegion Accessibility. Se il nodo è contrassegnato come regione attiva, i servizi di accessibilità informeranno automaticamente l'utente delle modifiche (Idcf6f, b/172590946)
  • Viene introdotto TextOverflow.Visibile. (Ic8f89)

Correzioni di bug

  • Risolto il problema per cui gli elementi di LazyColumn/LazyRow situati sui bordi venivano posizionati in modo errato dopo l'avvio rapido (Ie4d13, b/183877420)
  • AndroidViewBinding ora rimuove correttamente i frammenti con un aumento artificioso tramite FragmentContainerView quando AndroidViewBinding viene rimosso dalla gerarchia di scrittura. (Ib0248, b/179915946).
  • Ora AndroidViewBinding nidifica correttamente i frammenti gonfiati tramite FragmentContainerView quando ComposeView si trova all'interno di un Fragment, risolvendo i problemi di salvataggio e ripristino dello stato di quei frammenti. (I70eb0, b/179915946).
  • Compose ViewBinding ora dipende da Frammento 1.3.2 e ora mostra sempre i frammenti aumentati 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 alle API

  • Controllo differito delle dipendenze 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 alle API

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

Correzioni di bug

  • Applicare restrizioni all'uso pubblico delle API sperimentali (I6aa29, b/174531520)
  • androidx.compose.ui:ui non dipende più da AppCompat o Fragment. Se utilizzi ComposeView nell'applicazione e Fragment e/o AppCompat, accertati di utilizzare AppCompat 1.3+ / Fragment 1.3+: queste versioni sono necessarie per impostare correttamente i proprietari del ciclo di vita e dello stato salvato necessari per ComposeView. (I1d6fa, b/161814404).
  • Correzione del problema di rememberSaveable { mutableStateOf(0) } quando utilizzato all'interno di una destinazione di navigazione-compose. (I1312b, b/180042685, b/180701630)
  • È stata aggiunta la nuova API locale di composizione LocalSoftwareKeyboardController per sostituire l'interfaccia SoftwareKeyboardController precedente su TextField. (I658b6, b/168778053)
  • È stata corretta la rara NoSuchElementException in tearDownRegistry() di ComposeRootRegistry (Iddce1)

Versione 1.0.0-beta01

24 febbraio 2021

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

Questa è la prima release di Compose 1.0.0 beta.

Modifiche alle API

  • Il callback onStart è stato aggiunto a detectDragGestures (I67269, b/179995594)
  • I modificatori per le dimensioni intrinseche non sono più sperimentali. (I15744)
  • MeasureBlocks è stato rinominato in MeasurePolicy ed è diventato un'interfaccia divertente. Le API di layout sono state aggiornate / semplificate per utilizzare MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState è stato sostituito con [Mutable]InteractionSource
    • Le interfacce sono responsabili dell'emissione / raccolta degli eventi di interazione.
    • Anziché passare interactionState = remember { InteractionState() } a componenti come Button e Modifier.clickable(), utilizza interactionSource = remember { MutableInteractionSource() }.
    • Invece di Interaction.Pressed in interactionState, dovresti usare le funzioni di estensione su InteractionSource, come InteractionSource.collectIsPressedAsState().
    • Per casi d'uso complessi, puoi utilizzare InteractionSource.interactions per osservare il flusso di interazioni. Per saperne di più, consulta la documentazione e gli esempi di InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Aggiungi l'interfaccia AccessibilityMananger e LocalAccessibilityMananger in ResolutionLocals (I53520)
  • Rimossi i metodi LayoutCoordinates ritirati, usa la funzione invece della proprietà per positionInParent e boundsInParent (I580ed, b/169874631, b/175142755)
  • Alias tipo sostituiti dai tipi sottostanti:
    • ColorStop ora è Pair<Float, Color>
    • SpanStyleRange ora è "AnnotatedString.Range
    • ParagraphStyleRange ora è AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation ora è AnnotatedString.Range<String>
    • (I8dd1a).
  • È stato creato un nuovo TextInputSession per le sessioni di input da componenti di testo di basso livello, come CoreTextField. (I8817f, b/177662148)
  • Placeable ora mostra MeasurementSize, che rappresenta le dimensioni effettivamente misurate dal layout secondario. Questa dimensione potrebbe non rispettare i vincoli di misurazione. (Ib2729, b/172560206, b/172338608).
  • Aggiungi il modificatore selectGroup che consente di contrassegnare una raccolta di schede o pulsanti di opzione per motivi di accessibilità (Ie5c29)
  • I defaultFactory per compositionLocalOf e staticCompositionLocalOf sono ora obbligatori anziché facoltativi.

    Questa modifica rimuove un potenziale errore di tipo per i tipi non null in cui non è stato fornito alcun valore di fabbrica predefinito. In precedenza, veniva fornito un riferimento nullo per un tipo non nullo.

    Per i tipi di valori null, ti consigliamo di fornire { null } come valore di fabbrica predefinito.

    Non è consigliabile utilizzare locali con tipi non null, a meno che non sia possibile specificare un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda defaultFactory dovrebbe generare un'eccezione. Tuttavia, la generazione di un'eccezione significa che i consumatori locali avranno una dipendenza implicita dal fatto che l'eccezione non è applicata dal sistema dei tipi. (Ifbd2a).

  • I metodi deprecati dai moduli dell'UI sono stati rimossi (I646f6)

  • I modificatori di dimensione sono stati rinominati. Modifier.width/height/size sono stati rinominati come requiredwidth/requiredHeight/requiredSize. Modifier.preferredwidth/preferredHeight/preferredSize da è stato rinominato in larghezza/altezza/size. (I5b414)

  • Il partner Modifier.tapGestureFilter è stato rimosso. Usa invece il criterio Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

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

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

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

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

  • I fornitori sono stati rinominati in ComposeLocalProvider

    • Il costruttore Composizione non accetta più un parametro chiave ed è stato ritirato.
    • currentCompositeKeyHash è stata trasformata in una proprietà componibile di primo livello invece che in una funzione componibile di primo livello.
    • ComposeData e ResolutionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
    • ComposableLambda è stata trasformata in un'interfaccia anziché in una classe concreta e non ha più parametri di tipo.
    • ComposableLambdaN è stata trasformata in un'interfaccia anziché in una classe concreta e non ha più parametri di tipo.
    • La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
    • il metodo di unione di SnapshotMutationPolicy non è più sperimentale
    • La funzione di primo livello @TestOnly ClearRoots è stata rimossa. Non è più necessario.
    • Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
    • Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
    • i metodi isjoinedKey, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
    • Varie API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe dei file di Kotlin, questo compromette la compatibilità binaria, ma non la compatibilità delle origini, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
    • (I99b7d, b/177245490).
  • ComponentActivity.setContent() è stato rimosso da Composer:ui. Usa quello di androidx.activity:activity-compose:1.3.0-alpha01. viewModel() e LocalViewModelStoreOwner sono stati rimossi da Composer:ui. Usa 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 Custom Evens da PointerInputModifier è stato rimosso (I02707, b/175294473)

  • SnapshotStateObservationr non è più sperimentale (Id2e6a)

  • Eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)

  • longPressIntentFilter e doubleClickIntentFilter sono stati rimossi. Usa Modifier.pointerInput con funzioni helper, ad esempio detectTapTrackings (I2fedf, b/175294473)

  • La rimozione dell'API String.format ha eseguito il refactoring degli utilizzi in vari metodi toString per non utilizzare String.format internamente. (Id1290)

  • Asserzioni DP rimosse (I798d2)

  • Rimozione di androidx.compose.runtime:runtime-dispatch (I55feb)

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

  • runBlockingWithManualClock rimosso (I15cdc, b/179664814)

  • La posizione di scorrimento in Modifier.verticalScorri()/HorizontalSlide() è rappresentata ora con Ints (I81298)

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

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

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

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

  • Apportate le seguenti modifiche all'API Material:

    • È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione della spaziatura interna predefinita.
    • I parametri in BackdropScaffold sono stati riordinati in modo da seguire le linee guida dell'API per i parametri obbligatori che devono precedere i parametri facoltativi.
    • Parametro icon spostato in BottomNavigatorItem perché sia successivo a selected e onClick.
    • Parametro alwaysShowLabels rinominato in BottomNavigatorItem in alwaysShowLabel.
    • Parametri bodyContent rinominati in alcuni componenti in content.
    • Parametri riordinati in ButtonDefaults.buttonColors(). Tieni presente che, poiché il tipo dei parametri non è cambiato, questo non causerà un errore nel tuo codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza.
    • Parametro secondaryVariant aggiunto a darkColors(). Questo colore solitamente corrisponde a secondary nel tema scuro, ma garantisce coerenza e un'ulteriore personalizzazione.
    • Sono stati rimossi ElevationDefaults e animazioniElevation() dalla piattaforma API pubblica perché non erano di uso comune / non utili.
    • Il nome onValueChangeEnd in Slider è stato rinominato in onValueChangeFinished e l'elemento è nullo.
    • Parametro text rinominato in Snackbar in content per coerenza.
    • Il parametro contentPadding è stato aggiunto a DropdownMenuItem per consentire la personalizzazione della spaziatura interna predefinita e ha reso content un'estensione su RowScope.
    • Rinominato ModalDrawerLayout in ModalDrawer.
    • Rinominato BottomDrawerLayout 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 PaintFor (I8ea91)
  • È stata aggiunta la nuova API locale di composizione LocalSoftwareKeyboardController per sostituire la precedente interfaccia SoftwareKeyboardController su TextField. (I658b6, b/168778053)

Versione 1.0.0-alpha12

10 febbraio 2021

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

Modifiche alle API

  • Il supporto per ViewGroups è stato rimosso da UiApplier. Gli elementi componibili emitView deprecati sono stati rimossi. (Ifb214)
  • Modifier.pointerInput ora richiede di ricordare i tasti per indicare quando la coroutine di rilevamento dell'input del puntatore deve riavviarsi per nuove dipendenze. (I849cd)
  • ComposizioneReference rinominato in ComposeContext (I53fcb)
  • La funzionalità Bounds è stata rinominata DpRect (I4b32a)
  • Test dell'aggiornamento: hasText() controllerà sia i testi di input che di etichetta/suggerimento/placeholder nel campo di testo (Iab803)
  • viewModel() composable e LocalViewModelStoreOwner sono stati spostati in androidx.lifecycle.viewmodel.compose. Ora dovrai aggiungere una dipendenza separata androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 per utilizzarlo. (I7a374)
  • Consenti l'azione con valore null in AccessibilityAction, cambia l'etichetta dell'azione in AccessibilityAction e CustomAccessibilityAction daCharSequence a String (I0dc82)
  • Per abbinare meglio le convenzioni di denominazione con ImageBitmap e ImageVector, ImagePainter è stata rinominata in BitmapPainter in VectorPainter parallelo. (Iba381, b/174565889).
  • Migliori API per il test delle sottostringhe ora come argomento (Icbe78)
  • È stato aggiunto un elemento Modifier.focusOrder() che accetta FocusRequester senza specificare un ordine di focus personalizzato con lambda. Questa funzionalità è utile quando dobbiamo solo specificare un riferimento, ma non un ordine di interesse personalizzato per un componibile (I4f52a, b/179180978)
  • ComponenteActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
  • I metodi di distruzione e copy() sono stati rimossi da diverse classi in cui erano usati raramente. (I26702, b/178659281)
  • Popup spostato per essere specifico per la piattaforma. AndroidPopupProperties è stato rinominato in PopupProperties e isFocusable è stato spostato in un parametro focusable in PopupProperties (Ieeea5)
  • Finestra di dialogo spostata per essere specifica per la piattaforma. Il nome AndroidDialogProperties è stato rinominato DialogProperties. (I4ef69, b/179138130).
  • Fatto LayoutNode interno (I8a7b1, b/175103944)
  • Constraints.enforce è stato sostituito con Constraints.constrain. (I8b8ea).
  • L'elemento loadFontResource è deprecato. Utilizza invece fontResource. imageResource, loadImageResource, vectorResource e loadVectorResource sono deprecati. Usa pittoreResource. (I6b809)
  • Per motivi di prestazioni, la semantica di scrollAxisRange ora utilizza lambda che restituiscono valori in virgola mobile anziché valori Float diretti. (If4a35, b/178657186).
  • Aggiunta della semantica EditableText per contrassegnare il testo di input modificabile del campo di testo per l'accessibilità e i metodi di test corrispondenti per verificare la semantica (I8e07a)
  • Esecuzione interna di proprietariStorage/OwnerScope/OwnerSnapshot Analyzerr (I4ffaf, b/175103944)
  • toIntPx() è stato rinominato in roundToPx() (I9b7e4, b/173502290).
  • IntBounds è stato rinominato IntRect e l'API è stata migliorata. (I1f6ff).
  • L'API Snapshot è stata aggiornata per essere più coerente con le linee guida dell'API, oltre a nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
  • Aggiunta di azioni di espansione e compressione relative alla semantica. Aggiunta espandi e dimezzata in ModalBottomSheetState (Ib5064)
  • L'API Modifier.dragGeFilter è stata ritirata. Usa invece il criterio Modifier.pointerInput { detectDragGestures (...)}. In alternativa, utilizza Modifier.draggable per i trascinamento su un asse (I0ba93, b/175294473)
  • La ridenominazione degli ambienti Ambient è stata rinominata -> ComposeLocal. Gli ambienti un tempo si chiamavano AmbientFoo, ora i ComposeLocals si chiamavano LocalFoo. (I2d55d).
  • Il campo BaseTextField ritirato è stato rimosso. Utilizza BasicTextField. (I71368)
  • La selezione è stata spostata negli elementi di base. (I7892b)
  • Analogamente a come in precedenza abbiamo rimosso il componibile state { 0 } e ora promuoviamo l'utilizzo come remember { mutableStateOf(0) }, rimuoveremo savedInstanceState { 0 } componibile. Dovresti usare 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 stavi passando un oggetto salvaschermo personalizzato, ora devi utilizzare un nuovo sovraccarico di saveSaveable che ha il parametro stateSaver. L'utilizzo sarà simile a questo: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Aggiunta della semantica delle password per l'accessibilità (I231ce)
  • Aggiunta ProgressBarRangeInfo.Indeterminata per contrassegnare barre di avanzamento indeterminate per l'accessibilità (I6fe05)
  • Le utilità emptyContent() e (@Composable () -> Unit).orEmpty() sono state ritirate in quanto non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d)
  • snapshotFlow e withMutableSnapshot non sono più sperimentali (I6a45f)
  • Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno a ricomporre fino al completamento delle coroutine secondarie della composizione. Recomposer.shutDown è stato rinominato per annullare il contrasto con la chiusura. (Ib6d76).
  • Il nome di UiSavedStateRegistry è stato rinominato SaveableStateRegistry, AmbientUiSavedStateRegistry è stato rinominato AmbientSaveableStateRegistry ed entrambi sono stati spostati nel pacchetto androidx.compose.runtime.saveable. (I30224)
  • L'elemento androidx:compose:runtime:runtime-saving-instance-state è stato rinominato in androidx:compose:runtime:runtime-saveable (I6dcac)
  • Molte API ritirate da tempo nel pacchetto UI vengono eliminate. (I2f2dc).
  • L'artefatto composito:runtime-dispatch è ora deprecato. MonotonicFrameClock è ora disponibile in Composer:runtime e AndroidUiDispatcher in Composer:ui. (Ib5c36).
  • Le classi Outline.* non sono più classi di dati (I4879e, b/178001427)
  • view.captureToImage() rimosso senza alcuna sostituzione. (I7fcd2).
  • Introdotta API ColorMatrix utilizzata per modificare i valori RGB del contenuto di origine. Refactoring dell'API ColorFilter per essere un'interfaccia e corrispondere all'implementazione di PathEffect. (Ica1e8).
  • Aggiungi il parametro layoutDirection al parametro createOutline di Shape. Consente di creare forme basate sulle indicazioni del layout. (I57c20, b/152756983).
  • L'API onImeActionPerformed è deprecata. Usa invece KeyboardActions (If0bbd, b/179071523)
  • È stato introdotto un elemento di contesto coroutine InfiniteAnimationPolicy che verrà applicato in animazioni infinite. Per impostazione predefinita, non viene installato nessun criterio, tranne quando si eseguono test con ComposeTestRule. (I50ec4, b/151940543)
  • canTrascina è stato rimosso da Modifier.scrollable. (Id66e7, b/175294473)
  • È stato rinominato LayoutCoordinates.parentCoordinates in LayoutCoordinates.parentLayoutCoordinates per consentire una nuova proprietà parentCoordinates. La proprietà parentCoordinates ora offre il valore LayoutCoordintes del modificatore principale. Ciò rende più completi i casi d'uso di onSizeChanged() e onGloballyPositioned() (Idfbfd, b/177926591)
  • TapGeFilter, doubleTapgestFilter, longPress tredescherFilter e pressIndicaiton praticheFilter sono stati ritirati. Utilizza invece Modifier.clickable o Modifier.pointerInput con la funzione detectTaparmas. (I6baf9, b/175294473).
  • L'elemento unregisterProvider di SaveableStateRegistry è stato rimosso. Al posto di registerProvider() ora restituisce l'oggetto SaveableStateRegistry.Entry che puoi utilizzare per annullare la registrazione (Ic4274, b/178583739)
  • Il servizio ricordo di istanzaState() è stato rinominato in "RicordaSaveable()" e il nome è stato spostato nel pacchetto androidx.compose.runtime.saveable. (I1366e, b/177338004).
  • CoreText e CoreTextField rimossi dall'API pubblica
    • Rimosso l'overload SelectionContainer deprecato
    • (I99c19)
  • I test in cui Compose viene utilizzato nelle gerarchie aggiunti/rimosse direttamente in WindowManager ora sono più stabili. (Ie81ed, b/175765614)
  • Rimosso Recomposer.current(). [Abstract]ComposeView ora utilizza per impostazione predefinita i ricompositori con ambito a finestre creati in modo lento e gestiti dal ViewTreeLifecycleOwner per la finestra. I segni di graduazione dell'animazione basati su Ricomposizione e conFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host viene interrotto. (I38e11).
  • Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è deprecata. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver è stato spostato da androidx.compose.runtime.savedinstancestate ad androidx.compose.runtime.saveable (I77fe6)
  • I comandi EditCommands accettano AnnotatedString. Tuttavia, si tratta di una modifica solo per l'API e la modifica di testo multistile non è ancora implementata. (I4c3ea).
  • I valori di Uptime e Durata sono stati rimossi. (Ib9bf4, b/177420019)
  • ComposizioneData.asTree() e API correlate spostate in un modulo ui-tooling-data separato e contrassegnato come sperimentale (Ic95b8)
  • I parametri di RounderCornerShape, CutCornerShape e CornerBasedShape sono stati rinominati da sinistra/destra a inizio/fine per supportare il mirroring automatico della forma nella direzione rtl. UniqueRounderCornerShape e UniqueCutCornerShape sono stati introdotti per i casi in cui il mirroring automatico non è desiderato. (I61040, b/152756983)
  • L'API target del plug-in di compilazione Compose è stata modificata in modo da utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non usa più un parametro di tipo.

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

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

Correzioni di bug

  • I componenti ComposeView posizionati nelle gerarchie di visualizzazioni secondarie di un'altra composizione ora ospitano composizioni secondarie dei relativi predecessori (I92883)
  • È stata aggiornata l'API imageFromResource per riutilizzare la cache disegnabile delle risorse durante il caricamento di oggetti ImageBitmap. (If3627, b/178751994)

Versione 1.0.0-alpha11

28 gennaio 2021

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

Modifiche alle API

  • WithConstraints è stato rielaborato come BoxWithConstraints e spostato in Foundation.layout. (I9420b, b/173387208)
  • L'API Key.DPadUp è deprecata. Usa invece Key.DirectionUp. (Iab335, b/177954892)
  • Interfaccia proprietario d'ora in poi interna. (If8e35).
  • È stata aggiunta l'API FocusManager.moveFocus() per spostare lo stato attivo in modo programmatico. (I045cb, b/177681839)
  • Modifica PopupPositionProvider in modo che utilizzi le coordinate relative alla finestra, non le coordinate globali. Rinomina parentGlobalBounds in anchorBounds e cambia windowGlobalBounds in windowSize: IntSize (I2994a)
  • Durata e Uptime verranno sostituiti con Millisecondi lunghi e questo passaggio rimuove la dipendenza dell'input del puntatore su quelle classi. (Ia33b2, b/175142755, b/177420019).
  • AmbientSaveStateRegistryOwner è stato aggiunto in modo simile ai già esistenti AmbientLifecycleOwner e AmbientViewModelStoreOwner (I9a3e8, b/176756365)
  • L'API di grafica vettoriale è stata aggiornata per supportare l'analisi della colorazione applicata alla radice delle grafiche vettoriali. (Id9d53, b/177210509)
  • È stato aggiunto toolType a PointerInputChange per distinguere i dispositivi (Iac787, b/175142755)
  • AmbientWindowManager è stato rinominato AmbientWindowInfo (I2686a, b/177084714, b/177084983)
  • Deprecati metodi di coordinate globali e creati nuovi metodi di coordinate basati su finestre. (Iee284).
  • Aggiunto Modifier.toolingGraphicslayer che aggiunge un modificatore livello grafico quando l'ispezione è attiva. (I315df)
  • FocusRequester.createRefs è ora contrassegnato come sperimentale in quanto potrebbe cambiare. (I2d898, b/177000821)
  • SemanticsPropertyRicevir.hidden è stato rinominato in invisibleToUser e contrassegnato come @ExperimentalComposeUiApi. AccessibilityRangeInfo è stata rinominata ProgressBarRangeInfo. stateDescriptionRange è stata rinominata progressBarRangeInfo. AccessibilityScorriState è stata rinominata in scrollAxisRange. HorizontalAccessibilityscrollState è stato rinominato in HorizontalscrollAxisRange. verticalAccessibilityScorriState è stato rinominato in verticalscrollAxisRange. (Id3148)
  • Rimozione di PointerInputData e modifica di PointerInputChange per inserire tutti i campi di PointerInputData. PointerInputEvent e PointerInputEventData interni perché non sono utilizzati in nessuna API pubblica. (Ifff97, b/175142755)
  • È stata aggiornata la densità dell'implementazione di Graphics LayerScope per supportare le conversioni di dp in pixel non elaborati. (Ied528, b/176819695)
  • L'API Matrix è stata aggiornata per seguire l'ordinamento principale delle righe e fornire le costanti di indice per facilitare le conversioni tra rappresentazioni matrici diverse per soddisfare internamente la logica di conversione del framework tra SkMatrix e Matrix4. (I432e6).
  • Metodi sperimentali monotonicFrameAnimationClockOf rimossi (Ib753f, b/170708374)
  • Sposta String.fintPrecedingBreak e String.fingFollowingBreak in InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair è stato rimosso dall'API pubblica. (Ia9494)
  • TransformedText.TransformedText rinominato in TransformedText.text
    • TransformedText non è più una classe di dati (Ie672a)
  • Rimozione di data class dai seguenti corsi:
    • ContenutiTestoInline
    • Impostazioni internazionali (I605c7)
  • Le seguenti classi non sono più classi di dati:
    • AnnotatedString
    • Stile paragrafo
    • Stile intervallo
    • Stile testo
    • Spessore carattere
    • Decorazione Testo
    • TrasformazioneGeometrica
    • Indice di testo
    • Risultato layout testo
    • InputLayoutTesto (Iaff99)
  • Modifica di VisualTransformation in un'interfaccia funzionale (I3bba4)
  • Aggiunto un tipo di parametro di riferimento della funzione (I5e1bd)
  • Aggiungi limiti trasformati a InspectorNode (Ice42f)

Correzioni di bug

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

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

  • animateAsState ora è animatoFooAsState, dove Foo è il tipo di variabile in fase di animazione, ad es. Float, Dp, Offset e così via (Ie7e25)

  • Il parametro per la descrizione dei contenuti è stato aggiunto all'immagine e all'icona. Viene utilizzato per fornire una descrizione ai servizi di accessibilità (I2ac4c)

  • Rimuovi displaySize come da evitare. In genere, è meglio utilizzare almeno la dimensione onRoot() o la dimensione della finestra. (I62db4)

  • OnSizeChanged segnalava le dimensioni dei contenuti del layout. Ora indica le dimensioni nella loro posizione all'interno della catena di modifica. (I36b78, b/177562900)

  • L'API emit() e tutti gli overload sono stati deprecati e rinominati in ComposeNode. Le API sono identiche, ma solo un nome diverso per seguire le convenzioni di denominazione di Compose (I4137b)

  • TextFieldValue accetta AnnotatedString. Tuttavia, si tratta di una modifica solo per l'API e la modifica di testo multistile non è ancora implementata.

    • initial rimosso dai parametri del costruttore di EditingBuffer. (I326d5).
  • invalidate e comScoreReference() ora sono deprecati a favore di currentRecomposeScope e promemoriaComposeReference. (I583a8)

  • AnnotatedString modificata per estendersi da kotlin.CharSequence. Di conseguenza, lunghezza e sottosequenza sono ora funzioni di istanza e le funzioni di estensione vengono rimosse. (Iaf429).

  • RicordaOsservatore sostituisce ComposeLifecycleObservationr e ResolutionLifecycleEventsr che ora sono deprecati.

    RememberObserver 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, cosa che è e continua a essere la pratica consigliata. Tuttavia, se un riferimento è stato ricordato più di una volta in una composizione, onRemembered viene chiamato per ogni riferimento dove onEnter viene chiamato una sola volta. onEnter è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, ad esempio WithConstraints e Scaffold, rendendo la singola chiamata onEnter garantita inaffidabile ed è stato rimosso per RememberObserver.

    RememberObserver aggiunge onAbandoned che viene chiamato se l'istanza RememberObserver viene restituita dal callback passato a remember ma non è stato memorizzato nello stato di composizione e, di conseguenza, non riceverà mai la chiamata onRemembered. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o se la composizione viene eliminata perché lo stato sta producendo una composizione non è più attuale o non è più necessaria. Se l'istanza di RememberObserver che segue il suggerimento di riferimento singolo riportato sopra monitora una risorsa esterna, onForgotten e onAbandoned indicano entrambi che la risorsa non è più necessaria. Se l'oggetto sta monitorando i lavori avviati o le risorse allocate in onRemembered, onAbandoned può essere ignorato in quanto non verrà chiamato con la chiamata di onRemembered. (I02c36).

  • Operazioni aritmetiche deprecate tra 2 o più TextUnits. Le funzioni TextUnit.Sp e TextUnit.Em deprecate sono preferite rispetto alle funzioni di estensione, come Int.sp e Int.em. (I48369)

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

  • ScorribiliColumn/Riga sono stati deprecati. L'utilizzo di scrollableColumn è meno efficiente rispetto a LazyColumn quando hai molti contenuti a scorrimento perché con LazyColumn possiamo solo comporre/misurare/disegnare elementi visibili. Per evitare che gli utenti seguano il metodo inefficiente, abbiamo deciso di ritirare scrollableColumn e scrollableRow e promuovere invece l'utilizzo di LazyColumn e LazyRow. Gli utenti possono comunque decidere che non hanno bisogno di un comportamento lento e usare i modificatori direttamente in questo modo: Column(Modifier.verticalscroll(rememberscrollState())) (Ib976b, b/170468083)

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

  • Utilizza ImeAction.None anziché ImeAction.NoAction.

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

  • Rinominato TextInputService.onStateUpdated come updateState (Id4853)

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

  • L'elemento TextUnitType.Inherit è stato rimosso. Usa invece TextUnitType.Unspecified. (I9ff64).

Versione 1.0.0-alpha10

13 gennaio 2021

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

Grande cambiamento

  • La ristrutturazione dell'API di compilazione interna consente di raggruppare le modifiche ai nodi generati a seguito della composizione nella fase di applicazione delle modifiche, dopo il completamento di tutte le funzioni @Composable.

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

Modifiche alle API

  • È stato aggiunto Modifier.focusOrder() che può essere utilizzato per specificare un ordine di attraversamento focus personalizzato (I90cf5, b/175899543, b/170155556, b/170155429)
  • Rimosso invece l'utilizzo di focusObservationr onFocusChanged o onFocusEvent (I3ecb9, b/175156387)
  • Modifiche all'API EditOperations
    • Il nome EditOperation è stato rinominato EditCommand
    • Aggiunto suffisso del comando per le implementazioni concrete di EditOperation
    • Gli elementi EditCommand non sono più classi di dati
    • Funzione EditOperation.process rinominata per applyTo
    • InputEventListener rinominato in InputEventCallback
    • (I0a366)
  • Sono stati rimossi PxSquared, PxCubed, PxInverse inutilizzati. Dimensione.center() modificata in una proprietà. (I973f7)
  • Ora il modulo ui-test sarà in grado di configurare la creazione di ricompositori per le UI in fase di test (Ibebd8)
  • Velocità modificata per includere parti dei componenti e operazioni matematiche. (Ib0447)
  • Rinominato @ExperimentalTesting in @ExperimentalTestApi in modo che sia coerente con annotazioni simili delle API sperimentali (Ia4502, b/171464963)
  • Rinominato Color.useOrElse() in Color.takeOrElse() (Ifdcf5)
  • Sono state rimosse le classi DpInverse, DpSquared e DpCubed inutilizzate. (I4d62b).
  • Constraints#formatBy è stato rinominato in isSatisfiedBy. (I9cf5c).
  • Aggiungi un callback per informare il proprietario quando i limiti dei nodi layout cambiano. (I72fd1)
  • È stato aggiunto isspecified, isUnspecified e useOrElse per le classi incorporate con una costante non specificata. (I93f7b, b/174310811).
  • Espandi le API [Abstract]ComposeView per consentire il riciclo delle viste basate su Compose, smaltindo la loro composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e il rilevamento di ricompositori con ambito a finestre e ComposeReferences per la creazione di composizioni figlio.

    Aggiungi ViewComposizioneStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews. Il comportamento predefinito è "Elimina allo scollegamento della finestra". (I860ab)

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

  • È stata rimossa l'API toStringAsFixed per preferire l'utilizzo diretto di String.format. (Iaba6b).

  • Aggiungi Pulsante a Strings.kt di base (I4a5b7, b/172366489)

  • L'elemento nativeClass è stato spostato nel modulo dell'interfaccia utente e lo ha reso interno. Sono stati aggiornati gli utilizzi di nativeClass in modo uguale a implementazioni e usare invece "is MyClass". (I4f734)

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

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

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

  • TestUiDispatcher obsoleto. Utilizza Dispatchers.Main (Ic171f, b/175385255)

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

  • Modifiche all'API VisualTransformation

    • OffsetMap rinominato in OffsetMapping
    • OffsetMapping.identityOffsetMap rinominato in OffsetMapping.Identity
    • PasswordTransformation non è più una classe dati
    • OffsetMapping spostato nel proprio file
    • (I0bdf3)
  • Rinominato Posizione in DpOffset e rimosso getDistance() (Ib2dfd)

  • Dp.isFinite() divertente cambiato in val Dp.isFinite (I50e00)

Correzioni di bug

  • Il ricompositore ora espone un flusso del suo stato attuale, consentendo di monitorarne l'attività e l'attività degli effetti associati. (Ifb2b9)
  • È ora possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
  • animate() è ora sostituito con animateAsState(), che restituisce State<T> anziché T. Ciò consente prestazioni migliori, poiché l'ambito di annullamento della convalida può essere limitato al punto in cui viene letto il valore State. (Ib179e)
  • Aggiungi l'API del ruolo Semantics e aggiungi Role come parametro per SemanticsModifier cliccabile, selezionabile e attivabile. È stato modificato Modifier.progressSemantics in modo che anche Slider possa utilizzarlo. (I216cd)
  • Nuova API basata su coroutine Animatable che garantisce l'esclusività reciproca tra le sue animazioni.
    • Nuovo DecayAnimationSpec per supportare le animazioni di decadimento multidimensionali
    • (I820f2, b/168014930)

Versione 1.0.0-alpha09

16 dicembre 2020

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

Modifiche alle API

  • La funzionalità KeyEvent.Alt deprecata è stata rimossa. Utilizza invece KeyEvent.isAltPressed. (Idd695)
  • Modifier.keyInputFilter e Modifier.previewKeyInputFilter sono deprecati, usano invece Modifier.onKeyEvent e Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
  • Modifier.focusHighlightr è deprecato. Usa invece Modifier.onFocusChanged o Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • Per sospendere le API di input del puntatore, rinominati HandlePointerInputScope in AwaitPointerEventScope e handlePointerInput() a awaitPointerEventScope(). (Idf0a1, b/175142755)
  • L'API Autofill è ora un'API sperimentale e richiede l'attivazione (I0a1ec)
  • Aggiunta di dichiarazioni destrutturate per creare istanze FocuSRequester (I35d84, b/174817008)
  • AccessibilityLabel è stata rinominata in contentDescription. accessibilityValue è stata rinominata in stateDescription. (I250f2)
  • Gli eventi personalizzati sono stati rimossi dall'API di input del puntatore del mouse per la sospensione (Ia54d5, b/175142755)
  • Sono state introdotte diverse nuove funzioni in SelectionRegistrar e si è anche rinominato onPositionChange per notificationPositionChange. (Ifbaf7)
  • Altri membri di LayoutNode che abbiamo contrassegnato come interno (I443c6)
  • È stato introdotto LayoutInfo per essere utilizzato da strumenti e test (I9b190)
  • AndroidProprietario inviato come interno (Ibcad0, b/170296980)
  • Rimossa annotazione SperimentalePointerInput (Ia7a24)
  • Sistema di scorrimento nidificato aggiunto. Per ulteriori dettagli, consulta Modifier.nestedScorri (I36e15, b/162408885).
  • subcomposeInto(LayoutNode) è stato reso interno (Id724a)
  • L'interfaccia di Applier è cambiata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.

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

    È stato aggiunto un nuovo metodo, insertBottomUp().

    Un applicatore inserisce nodi nella struttura ad albero modificata utilizzando insertTopDown() o insertBottomUp() a seconda di quale ha il rendimento migliore.

    Alcuni alberi, come LayoutNode e View, sono molto più efficienti da costruire dal basso verso l'alto. Prima di questa modifica, era necessario uno stack di inserti per implementare il modello dal basso verso l'alto, che doveva essere copiato in ogni applicatore che richiedeva una costruzione dal basso verso l'alto per migliorare le prestazioni. Con questa modifica, un Applier esegue l'override di 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à launchOnBackPress e launchOnClickOutside ad AndroidDialogProperties. Queste impostazioni consentono di configurare il momento in cui lambda onlaunchRequest della finestra di dialogo verrà richiamato. (If5e17)

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

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

  • Abbiamo spostato ContentDrawScope nel modulo UI-Graphic per usare DrawScope. (Iee043, b/173832789).

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

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

  • Rimossa (annullamento) la registrazione globale di ComposeIdlingResource e la registrazione globale (annullamento) degli orologi in ComposeIdlingResource (I32660)

Correzioni di bug

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

    ComposeData e ResolutionGroup sono stati aggiunti come sostituzione dell'API ui-toolsing da utilizzare per estrarre le informazioni di composizione. Questi sono pubblici, ma non sono destinati a essere utilizzati al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c)

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

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

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

  • BuildCompat.isAtLeastR deprecato (Idb37e)

  • È stata aggiunta la funzione di fabbrica buildAnnotatedString per creare una stringa AnnotatedString. Funzione del generatore annotatedString deprecata. (Idfe0b)

  • Rimossi i metodi di estensione per Float e Doppio per convertire i valori in radianti. Spostato in una funzione privata all'interno del PathParser di implementazione, che era l'unica posizione in cui è stata utilizzata (I25f52)

Versione 1.0.0-alpha08

2 dicembre 2020

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

Modifiche alle API

  • Aggiungi l'azione per la semantica Ignora (I2b706)
  • API DrawModifier spostate dal pacchetto androidx.compose.ui al pacchetto androidx.compose.ui.draw. Creato il file DrawModifier Deprecato.kt per includere i metodi typealiases/helper al fine di facilitare la migrazione dalle API deprecate alle API attuali. (Id6044, b/173834241)
  • Rinominato Modifier.draw Layer in Modifier.graphics Layer. Inoltre, le classi correlate sono state aggiornate in Graphicslayer in base al feedback dell'API. (I0bd29, b/173834241).
  • Sono stati aggiunti i nuovi metodi placeable.placeWith Layer() e placeable.placeRELATIVEWithLivelli() che consentono a layout e modificatori di layout personalizzati di posizionare un asset secondario con l'introduzione di un livello grafico per il disegno. Dato che possiamo prima ottimizzare i disegni, quindi, quando dobbiamo spostare un bambino non dobbiamo rifare i contenuti, in secondo luogo possiamo applicare le trasformazioni dei disegni per un bambino (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • L'elemento <T> è stato rimosso dalla dichiarazione SubcomposeLayout. Puoi utilizzarla senza specificare un tipo ora. (Ib60c8).
  • Aggiunte API Modifier.scale/rotate per praticità di disegno Layer.
    • Rinominato Modifier.drawOpacity in Modifier.alpha
    • Rinominato Modifier.drawShadow in Modifier.shadow (I264ca, b/173208140)
  • Rendere non null sui campi di uptime e posizione di PointerInputData. (Id468a)
  • MaterialTheme ora imposta i colori corretti per i punti di manipolazione di selezione e lo sfondo di selezione. Le app che non includono materiali possono utilizzare manualmente AmbientTextSelectionColors per personalizzare i colori utilizzati per la selezione. (I1e6f4, b/139320372, b/139320907).
  • Sono stati aggiunti WindowManager.isWindowFocused per controllare se la finestra host è in stato attivo e un WindowFocus rispettanor che fornisce un callback onWindowFocusChanged. (I53b2a, b/170932874).
  • L'API TransformOrigin è stata aggiornata per avere una sintassi di destrutturazione che restituisca pivotFractionX e pivotFractionY come component1 e component2 (If43c4, b/173586560)
  • È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose. È stata anche eseguita la migrazione di alcune API utilizzando children come nome del lambda finale in content, secondo le indicazioni e il controllo del lint. (Iec48e).
  • È stata aggiunta un'API per verificare se sono stati premuti i tasti di modifica Alt, Ctrl, Meta o Maiusc quando è stato inviato un evento chiave. (I50ed9)
  • È stato aggiunto un nuovo sovraccarico di Modifier.drawLayer(). Occorre un blocco lambda su un nuovo Graphics LayerScope in cui definisci i parametri del livello in modo da saltare la ricomposizione e il relayout quando si verifica la modifica dello stato. DrawlayerModifier è ora in fase di preparazione alla migrazione della sua logica nel metodo placeable.placeWith Layer() di LayoutModifier (I15e9f, b/173030831)
  • Gli Ambient obsoleti hanno come suffisso il nome Ambient e sono stati sostituiti con nuove proprietà con prefisso Ambient, in base ad altre linee guida relative all'API Ambient e Compose. (I33440)
  • Elemento androidx.compose.ui.text.Typeface spostato in androidx.compose.ui.text.font.Typeface (Ic2b81)
  • L'argomento semantico mergeAllDescendants è stato rinominato mergeDescendants. (Ib6250)
  • Nuovo rilevatore di gesti di trascinamento che sospende l'API di input del puntatore, incluso il blocco dell'orientamento. (Icef25).
  • VectorAsset rinominato in ImageVector Spostato e rinominato VectorAsset in Builder per essere una classe interna di ImageVector in base alle linee guida dell'API. Aggiunto l'alias di tipo VectorAssetBuilder per il collegamento a ImageVector.Builder per la compatibilità. (Icfdc8)
  • ImageAsset e i relativi metodi sono stati rinominati in ImageBitmap. (Ia2d99).
  • Aggiungi il parametro zIndex per la funzione place() di PlacementScope in modo che Modifier.zIndex() funzioni ora come LayoutModifier e che qualsiasi layout personalizzato possa impostare zIndexes per i rispettivi elementi secondari direttamente nel blocco di posizionamento (I711f7, b/171493718)
  • Proprietà della semantica di base spostate nell'UI (I6f05c)
  • Depreca luogo(Offset) e placeRELATIVE(Offset). Utilizza invece sovraccarichi con offset int (I4c5e7)
  • Le API deprecate in precedenza sono state rimosse: Modifier.onPositioned è stato rimosso, utilizza Modifier.onGloballyPositioned. Modifier.onDraw è stato rimosso, usa Modifier.onDrawDirected. Modifier.plus è stato rimosso, utilizza Modifier.then. L'elemento Colore.Non impostato è stato rimosso, utilizza il valore Color.Non specificato. La classe PxBounds è stata rimossa. Usa invece il valore Rect. (Ie9d02, b/172562222).
  • L'interfaccia di Allineamento è stata aggiornata e resa funzionale. (I46a07, b/172311734)
  • I rilevatori di gesti per le indicazioni di tocco, doppio tocco, pressione prolungata e pressione sono stati aggiunti utilizzando il nuovo input del puntatore sospeso. Sono state aggiunte anche alcune utilità, che consentono agli sviluppatori di scrivere i propri rilevatori di gesti. (I00807)
  • id è stato rinominato in layoutId per LayoutIdParentData. Measurable.id è stato rinominato in Measurable.layoutId. (Iadbcb, b/172449643).
  • Nuovo rilevatore di gesti multi-touch, con strumenti per rilevare la rotazione, lo zoom e la panoramica. (Ic459d)
  • Sono state introdotte le API SweepGradientShader e SweepGradientBrush. (Ia22c1).
  • Il controllo temporale nei test (TestAnimationClock e relativi utilizzi) è ora sperimentale (I6ef86, b/171378521)
  • Aggiungi API di scorrimento basate sulla coroutine:

    Aggiunge LazyListState.snapToItem e LazyListState.smoothscrollBy, oltre alle API di livello inferiore per il controllo dello scorrimento. Queste API forniscono un'interfaccia di sospensione per controllare lo scorrimento che attende il termine dello scorrimento prima di tornare. (Ie5642)

  • Modifier.focusable deve essere aggiunto negli elementi di base. Utilizzalo per aggiungere comportamenti attivabili a un componente, con semantica e accessibilità corrette. (I41eb9, b/152525426, b/162865824).

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

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

  • L'API TextLayoutResult.getLineVisibileEnd è deprecata. In sostituzione di TextLayoutResult.getLineEnd, ora è presente un nuovo parametro visibleEnd. (I73282)

  • API TextFieldValue aggiornata

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

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

Correzioni di bug

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

UI Compose versione 1.0.0-alpha07

11 novembre 2020

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

Modifiche alle API

  • È stata introdotta la classe in linea ScaleFactor per rappresentare i fattori di scala per gli assi orizzontale e verticale indipendentemente l'uno dall'altro e per supportare casi d'uso di scalabilità non uniforme.
    • È stato aggiunto il metodo computeScaleFactor a ContentScale
    • Sono stati aggiunti ContentScale.FillBounds per eseguire una scalabilità non uniforme in modo da estendere i limiti src per occupare completamente la destinazione.
    • Sono stati aggiunti metodi dell'operatore per calcolare i parametri ScaleFactor con i parametri per le dimensioni.
    • (Ic96a6, b/172291582).
  • Sono state aggiunte le fabbriche di BiasAllineament e BiasTotalExactment per la creazione degli Allineamenti. (Iac836, b/169406772)
  • Consenti a uno sviluppatore di cancellare con forza lo stato attivo. (I90372)
  • È stato corretto un bug che impediva il calcolo dell'elevazione per le viste all'interno di Compose. (If7782)
  • Creata l'API onDrawDraw in ContentDrawScope per far corrispondere la convenzione di denominazione a Modifier.drawfound. (I4fc3a, b/171955269).
  • Aggiungi il supporto per la distanza della videocamera per integrare le trasformazioni 3D rotationX/rotationY sulle API dei livelli. (I40213, b/171492100)
  • Aggiunto SelectionContainer senza il callback (Ibfadb)
  • L'annotazione sperimentaleSubcomposeLayoutApi è stata rimossa. Ora è possibile utilizzare SubcomposeLayout senza aggiungere @OptIn (I708ad)
  • FirstBaseline e LastBaseline sono stati spostati nel pacchetto androidx.compose.ui.layout (Ied2e7)
  • È stata rimossa l'opacità dal modificatore disegnoShadow() perché era poco chiara. (I82c62, b/171624638).
  • MeasureResult è stato rimosso da MeasureScope. (Ibf96d, b/171184002)
  • Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424).
  • Rimosso FocusState2 obsoleto (I686cb, b/168686446)
  • ZIndexModifier ora è interno (I1808b, b/171493718)
  • È stato aggiornato il tipo restituito del metodo lerp sui parametri di dimensione per restituire una dimensione non null ed evitare boxing non necessario. (Ib0044)
  • È stato aggiunto TestMonotonicFrameClock per il test del codice che si basa su MonotonicFrameClock di Compose per l'attesa degli eventi del frame della composizione utilizzando runBloccoTest di kotlinx-coroutines-test (I4402f)
  • Rimozione di GestiScope.localToGlobal (I15299, b/171462785)
  • Ricerca onAllNodesWithSubstring aggiunta (I81dd7, b/171462889)
  • Il modulo androidx.ui.test è stato ritirato. Esegui la migrazione ad androidx.compose.ui.test e androidx.compose.ui.test.junit4 (I452e8)

Correzioni di bug

  • CaptureToBitmap spostato in CaptureToImage. (I86385)
  • Foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base non limitata che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb).
  • Aggiorna i campi di testo per accettare KeyboardOptions (Ida7f3)
  • Rinomina KeyboardOptions come ImeOptions (I82f36)
  • Spostamento di KeyboardType e ImeAction in KeyboardOptions (I910ce)
  • fornireDefault è stato aggiunto come alternativa per specificare gli ambienti e può essere utilizzato per specificare i valori ambientali che verranno impostati solo quando non è già stato fornito alcun valore ambient. (Id6635, b/171024925)
  • BaseTextField è stato ritirato. Utilizza BasicTextField. (I896eb)
  • Introduci il modulo ui-test-junit4 (Ib91f8)
  • relativePaddingFrom è stato rinominato in paddingFrom. È stato aggiunto il modificatore paddingFromBaseline per specificare le distanze dai limiti del layout alle basi del testo. (I0440a, b/170633813).
  • LaunchedTask è stato rinominato in LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. LaunchedEffect senza parametri per il soggetto non è consentito per incoraggiare le best practice. (Ifd3d4)
  • Introduzione delle risorse componibili che si ricompongono quando la configurazione viene aggiornata. (I6387c, b/167352819)
  • Il ricompositore ora richiede un CoroutineContext in fase di costruzione (Ic4610)
  • Somma i valori zIndex quando vengono applicati più Modifier.zIndex(). In precedenza, la vittoria era la prima. (Ic514c, b/170623936).
  • Modifiche all'implementazione SlotTable interna che non dovrebbero influire sull'API pubblica. (If9828)
  • Aggiunta l'opzione IME di correzione automatica della tastiera (I57b8d)
  • androidx.ui.test spostato in androidx.compose.ui.test (I9ffdb)
  • Rimozione di KeyboardOptions.toImeOptions dall'API pubblica. (Ic2e45).

Contributi esterni

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

Versione 1.0.0-alpha06

28 ottobre 2020

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

Modifiche alle API

  • Il ricompositore è ora un valore di ResolutionReference e un elemento padre della composizione valido. Ora il ricompositore esplicito è necessario in meno posizioni. (I4036f)
  • Ritira VectorPainter in favore di promemoria per ricordareVectorPainter per indicare meglio che l'API componibile sfrutta internamente la funzionalità "ricorda" di rendere i dati persistenti in più composizioni. (Ifda43)
  • È stata aggiornata l'API Modifier.drawWithCache per esporre ContentDrawScope come ambito del destinatario invece di DrawScope al fine di fornire alle implementazioni la possibilità di riordinare i comandi di disegno. Ciò è utile per i casi d'uso di combinazione/coloring in cui i pixel dei contenuti devono essere visualizzati per primi affinché l'algoritmo della modalità di combinazione corrispondente venga applicato correttamente. (Ie7ec8)
  • Sposta SimpleContainer in PopupTestUtils.kt (I78c57)
  • ConsumedData non è più una classe di dati. Per informazioni dettagliate, visita la pagina https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f)
  • Correggi la posizione della maniglia RTL. (I6e1e0).
  • Refactoring di DrawScope e ContentDrawScope sono interfacce anziché classi astratte.
    • È stata creata l'implementazione di CanvasDrawScope di DrawScope
    • Refactoring delle implementazioni di DrawScope per usare invece CanvasScope
    • È stato creato un elemento DrawContext per eseguire il wrapping delle dipendenze per DrawScope
    • Rimossi metodi deprecati su DrawScope (I56f5e)
  • Modifica che provoca un errore: è stato rimosso il valore restituito da PointerInputFilter.onPointerEvent(...) dato che l'unico valore che può essere modificato negli eventi puntatore sono i dati relativi al consumo. Anziché restituire i dati da PointerInputFilter.onPointerEvent(...), ora puoi semplicemente modificare i dati sul consumo degli eventi PointerEventi trasmessi. (I6acd0).
  • MeasureScope e IntrinsicMeasureScope sono state interfacce create. (I1a087, b/170461665).
  • La funzione di unione per LinkingLine è stata nascosta. (I9da1a, b/170612900, b/170611568).
  • Aggiungi la possibilità di specificare le informazioni sullo ispettore nel modificatore composto (Idee08, b/163494569)
  • Aggiunta dell'opzione SelectAll nel menu di selezione (Ief02b)
  • DrawTransform.rotate aggiornato in modo da utilizzare un parametro pivot predefinito del centro in modo che corrisponda alla documentazione.
    • DrawScope.rotateRad aggiornato per utilizzare un offset per il punto di pivot, in modo che corrisponda ad altri metodi di trasformazione.
    • Sovraccarico di DrawScope.rotateRad obsoleto che ha consumato numeri in virgola mobile per le coordinate x e y del pivot.
    • (Iffcbb, b/170434992).

Correzioni di bug

  • Il controllo lint API per MissingGetterMatchingBuilder è abilitato per androidx (I4bbea, b/138602561)
  • Aggiungi test. (I6b8ae).
  • Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
  • Aggiunta l'opzione IME KeyboardCapitalization (I8ac38)
  • Aggiunta dell'opzione per la tastiera a riga singola a CoreTextField (I72e6d)
  • Sposta SimpleContainer in PopupTestUtils.kt (I65c3e)
  • L'API Radius è stata rinominata CornerRadius per esprimere meglio il modo in cui viene utilizzata in Compose. È stata aggiornata la documentazione per indicare che i raggi degli angoli negativi sono fissati a zero. (I130c7, b/168762961).
  • Interoperabilità di Android migliorata continuando a inviare MotionEvents alle viste Android secondarie che restituiscono un valore false per onTouchEvent per tutte le azioni tranne ACTION_DOWN (I94c5a, b/170320973)
  • Box è stato impostato come funzione in linea. (Ibce0c, b/155056091).

Contributi esterni

  • Supporto di diverse impostazioni internazionali per AnnotatedString.capitalize 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 alle API

  • Aggiungi una DSL per specificare le informazioni del controllore (Ic9a22)
  • Sposta Premi a lungo nel testo. (Iff2bc).
  • Modificatore di sospensione sperimentale Modifier.pointerInput (Ia77d2)
  • Aggiunte azioni di accessibilità Copia/Incolla/Taglia (I6db4f)
  • Il costruttore pubblico per AndroidOwner è stato rimosso (Iacaef)
  • I popup e le finestre di dialogo ora ereditano FLAG_SECURE dalla finestra principale. È stata anche aggiunta l'opzione per configurarla esplicitamente (I64966, b/143778148, b/143778149)
  • I dati di consumo ora sono modificabili. Inoltre, le chiamate a funzioni di estensione che consumano ora non restituiscono più un nuovo PointerInputChange, ma modificano invece il valore PointerInputChange fornito.

    Questo è il primo passaggio di un processo in due passaggi per rendere modificabili i dati PointerEvent in modo che altri dati del puntatore non possano essere modificati dal codice utente. Il secondo passaggio consiste nella rimozione del tipo restituito List<PointerInputChange> da PointerInputFilter.onPointerEvent(...). (Id067e)

  • Disabilita selezione nel testo e una demo. (Ie7e97)

  • Made onGloballyPositioned una funzione in linea (I15830)

  • OnPositionedModifier è stata rinominata OnGloballyPositionedModifier e onPositioned() è stata rinominata onGloballyPositioned() (I587e8, b/169083903).

  • La proprietà hasPendingMeasureOrLayout è stata aggiunta al proprietario per indicare se quest'ultimo ha lavori di layout in attesa. (I3d9f8, b/169038599).

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

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

  • Modifiche alle dimensioni

    • Dimensione.getFlipped rimossa
    • Dimensione.rem rimossa
    • Rimozione di size.truncDiv (Ief44d, b/169790720)
  • Nell'ambito della standardizzazione dei valori sentinel per le classi in linea, cambia il nome Color.Unset.Unset.Unspecified per la coerenza con altre classi in linea (I97611, b/169797763)

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

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

Correzioni di bug

  • Le prestazioni dello scorrimento di LazyColumn/Riga sono migliorate grazie a un minore lavoro nella sottocomposizione a ogni scorrimento. Il nuovo metodo haInvalidations() è stato aggiunto per la classe di composizione. Il metodo hasPendingChanges() di Recomposer è stato rinominato in hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • I parametri non specificati sono stati aggiornati in modo che siano Float.NaN anziché Float.POSITIVE_INFINITY. Sono state aggiornate le implementazioni di Painter per confrontarle con le dimensioni.Non specificate e quelle non finite. (I95a7e).
  • L'ordine delle chiamate a place() nei layout personalizzati ora definisce l'ordine di disegno per gli elementi secondari (Ibc9f6)
  • È supportato la conversione da AnnotatedString a SpannableString per l'accessibilità. (Ief907)
  • Sono stati aggiunti stub per le classi Android su piattaforme meno recenti per evitare l'impiego di riflessioni, se possibile. (Ia1790)
  • Bug corretto: se la visualizzazione della tastiera software causava la traduzione dell'app, le coordinate di input del puntatore diventavano errate. (Ic4cec, b/163077821).

Versione 1.0.0-alpha04

1° ottobre 2020

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

Modifiche alle API

  • È stato aggiunto SubjectScope per consentire la raccolta di ambiti di osservazione layout e di disegno una volta che non sono più validi. (Ic4cf8)
  • Sono stati aggiunti OnRemeasuredModifier e onSizeChanged() per ricevere un callback quando il layout dei contenuti è stato rimisurato e le dimensioni sono state modificate, rispettivamente. (I657cf, b/154108792)
  • Aggiungi un'azione di semantica dei clic lunghi (I6281b, b/156468846)
  • FocusManager impostato come privato. (I7872f)
  • Implementazione aggiornata per creare un'implementazione DrawCacheModifier dedicata anziché aggiungere proprietà facoltative su DrawModifier.

    Documentazione aggiornata per vari metodi (Ibd166)

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

  • PlacementScope#parentLarghezza e PlacementScope#parentLayoutDirection non può più essere letto dal blocco di posizionamento di un layout personalizzato. (Icc1ae, b/168295623).

  • aggiungere AccessibilityScorriState alle proprietà semantiche. (Ifeda9).

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

  • ParagraphConstraints rimosso. Ora la larghezza viene passata direttamente al paragrafo. (Ica712)

Correzioni di bug

  • Aggiornamento di molte API grafiche.
    • Le API di scala e trasformazione della rotazione sono state aggiornate per utilizzare un singolo parametro di offset per rappresentare la coordinata pivot invece di parametri float separati per le coordinate x/y in DrawScope e DrawTransform
    • Rimossi i metodi Rect.expandToInclude e Rect.join
    • La documentazione relativa al raggio è stata aggiornata per indicare ovale oltre che ellittica
    • È stata aggiunta la documentazione per indicare che il costruttore pubblico per la classe Radius in linea non deve essere chiamato direttamente, ma dovrebbe invece essere creato un'istanza degli oggetti Raggio tramite i rispettivi costruttori delle funzioni
    • Rimosse le API RoundRect per eseguire query su topRight, bottomRight, belowCenter e così via.
    • Rect.shift obsoleto a favore di Rect.translate
    • Rimosse le API RoundRect.grow e Rect.shrink
    • RoundRect.outerRect rinominato in Rect.boundingRect
    • Metodi RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium rimossi
    • Rinominato RoundRect.longestSide in RoundRect.maxDimensione
    • RoundRect.shortestSide rinominato in RoundRect.minDimensione
    • RoundRect.center modificato in una proprietà anziché una funzione
    • Il costruttore RoundRect è stato aggiornato per utilizzare le proprietà Raggio anziché i parametri singoli per i valori del raggio x/y
    • Rimosse le API per le dimensioni che presupponevano che fosse un rettangolo con origine pari a 0,0
    • È stata aggiunta un'API di distruzione a Radius
    • Migrato varie funzioni di estensione RoundRect in proprietà in proprietà
    • (I8f5c7, b/168762961).
  • Foundation.Box è stata deprecata. Utilizza Foundation.layout.Box. (Ie5950, b/167680279)
  • Lo stack è stato rinominato in Box. La casella già esistente verrà ritirata a favore di quella nuova in Composer.foundation.layout. Il comportamento del nuovo Box è quello di impilare gli elementi secondari uno sopra un altro quando sono presenti più elementi secondari. Questo è diverso dal precedente riquadro, che si comportava in modo simile a quello di una colonna. (I94893, b/167680279)
  • I parametri per la decorazione della casella sono stati ritirati. Se vuoi includere decorazioni/spaziature sulla scatola, usa i modificatori (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279)
  • Aggiornamento di molte API grafiche.
    • Sono state aggiornate le API DrawScope con metodi di trasformazione basati sull'ambito per indicare che la trasformazione viene applicata solo all'interno del callback e rimossa dopo che il callback è stato richiamato.
    • La documentazione di clipPath è stata aggiornata per fare riferimento al percorso invece che al rettangolo arrotondato
    • Spaziatura fissa nella documentazione per il parametro corretto in clipPath
    • Rinominato DrawScope.drawCanvas inDrawScope.drawCanvas e rimosso il parametro di dimensione
    • Parametri dx/dy rinominati nel metodo inset in orizzontale e verticale
    • Aggiunto un sovraccarico che fornisce lo stesso valore di inserimento a tutti e 4 i limiti
    • È stata rimossa la documentazione sul metodo inset che indica che il riquadro sarebbe applicato a tutti e 4 i lati
    • Documentazione aggiornata per la classe Rect
    • Commenti aggiornati sui parametri rettangolari in modo che corrispondano allo stile kdoc
    • Rimossi Rect.join e Rect.expandToInclude
    • Sovraccarico creato per Rect.translate(offset) e deprecato Rect.shift
    • (If086a, b/167737376).
  • rootAnimationClockIndustry, TransactionsEnabled, blinkingCursorEnabled e textInputServiceService con @VisibileForTesting con annotazioni, impostali come API interna e nascondi il relativo file kdoc (I554eb, b/168308412)
  • Rimuovi SelectionContainer dall'alto per disattivare la selezione predefinita ed evitare comportamenti imprevisti. È possibile utilizzare specificamente un SelectionContainer per aggregare i contenuti che devono essere selezionabili. (I8dfe0, b/158459594).

Versione 1.0.0-alpha03

16 settembre 2020

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

Modifiche alle API

  • Rimuovi le azioni di semantica avanti/indietro. Sono stati aggiunti dei passaggi in AccessibilityRangeInfo. (Ia47b0)
  • onInvalidate() rimosso da Owner -- OwnedLayer gestisce l'annullamento della convalida. (Ica72b, b/162061312).
  • Rimossi i metodi degli operatori nell'API Size che consumano parametri Offset. Il risultato di queste operazioni non è chiaro e il tipo di risultato è imprevisto per queste operazioni. Ad esempio, dimensione-offset deve restituire un offset o una dimensione con la differenza?

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

Correzioni di bug

  • Correzione degli elementi di LazyColumn che a volte venivano tracciati in modo errato, causando anche arresti anomali in alcune condizioni. (Ibcf17, b/163066980, b/165921895).
  • I DpConstraint e le API che lo utilizzano sono stati deprecati. (I90cdb, b/167389835).
  • Elementi createAndroidComposeRule e AndroidInputDispatcher spostati da androidx.ui.test.android a androidx.ui.test (Idef08, b/164060572)
  • Gli usi della gravità sono stati costantemente rinominati per allineare o allineare nelle API di layout. (I2421a, b/164077038).
  • Sono stati aggiunti onNode e altri metodi globali su ComposeTestRule perché quelli globali attuali verranno ritirati. (Ieae36).

Versione 1.0.0-alpha02

2 settembre 2020

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

Modifiche alle API

  • rimuovi il callback per informare il proprietario quando i limiti dei nodi layout cambiano. (If654e, b/166106882).
  • Aggiunto il supporto per i parametri tipo di riempimento sui percorsi delle immagini vettoriali per supportare i ritagli delle forme in base alle regole di riempimento del percorso pari o Non zero. (I43dd2).
  • Uptime e Velocity sono ora classi incorporate (I48f4a)
  • La durata è ora una classe in linea (I565eb)
  • Aggiungi un callback per informare il proprietario quando i limiti dei nodi layout cambiano. (Ic40b3)
  • È stato risolto il problema per cui il costruttore di funzioni rettangoli con Offset e raggio creava il rettangolo nell'ordine: sinistra, destra, alto, basso anziché sinistra, alto, destra, basso.

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

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

Correzioni di bug

  • Aggiunto MutableRect, un rettangolo che può essere modificato. (I71bd2, b/160140398).
  • Matrix4 è stato sostituito con Matrix. Tutte le altre parti del pacchetto vectormath sono state rimosse. (Ibd665, b/160140398).
  • La convenzione di chiamata per le funzioni componibili è cambiata. Questa è una modifica che provoca un errore di codice binario. Tutte le librerie devono essere ricompilate per poter funzionare con questa versione del plug-in di compilazione Composer.

    Questa modifica non crea una modifica che provoca un errore a livello di origine, in quanto le uniche API che sono state modificate sono API di compilazione con un'attivazione esplicita. (I7afd2, b/158123185).

  • Risolto l'arresto anomalo che poteva verificarsi quando l'invio a un PointerInputFilter potrebbe causare la rimozione sincrona di PointerInputFilter. (I58f25).

Versione 1.0.0-alpha01

26 agosto 2020

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

Versione 0.1.0-dev

Versione 0.1.0-dev17

19 agosto 2020

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

Modifiche alle API

  • emitView è stato deprecato. Se possibile, utilizza AndroidView per l'emissione di visualizzazioni all'interno di Compose. Tieni presente che la scrittura diretta di visualizzazioni e gruppi di visualizzazioni non sarà supportata in futuro a meno che non si tratti di foglie nell'albero di composizione, nel caso in cui questa operazione possa essere eseguita utilizzando AndroidView. (I29b1e, b/163871221).
  • FocusState2 è deprecato e sostituito da FocusState (Ia8b79, b/160822876, b/160923332)
  • I sovraccarichi deprecati di AndroidView sono stati rimossi. (I946b9, b/163802393)
  • Le emit personalizzate ora possono dichiarare che uno o più dei suoi setter possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13).
  • Le classi Vector sono state modificate in modo che non siano più classi di dati, in quanto la stessa istanza dell'oggetto viene utilizzata per la composizione.

    Aggiunto il flag mutableStateOf per VectorPainter per disegnare di nuovo in modo condizionale se il contenuto del vettore cambia.

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

    Sono stati aggiornati GroupComponenti e PathComponenti in modo che i campi del nome siano modificabili (Ieae45, b/151378808).

  • onChildPositioned e OnChildPositionedModifier rimosse. Gli sviluppatori dovrebbero usare invece 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)

  • Rimosso FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Lambda mergePolicy aggiunta a SemanticsPropertyKey. Può essere utilizzato per definire un criterio personalizzato per l'unione della semantica mergeAllDescendants. Il criterio predefinito prevede l'utilizzo del valore padre se già presente, altrimenti il valore figlio. (Iaf6c4, b/161979921).

  • I vincoli sono ora una classe integrata (I88736)

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

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

  • IntOffset ora è una classe in linea (Iac0bf)

  • IntSize ora è una classe in linea (I2bf42)

  • PlacementScope.placeAbsolute() è stato rinominato in PlacementScope.place(), mentre il precedente PlacementScope.place() è stato rinominato in PlacementScope.placeRelative(). Di conseguenza, il metodo PlacementScope.place() non esegue più automaticamente il mirroring della posizione in contesti da destra a sinistra. Se vuoi, utilizza PlacementScope.placeRelative(). (I873ac, b/162916675)

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

  • Ha reso alcune utenze di test non pubbliche perché non si trovano dove appartengono. Verrà reso pubblico in futuro. (I32ab1)

  • Organizzazione con refactoring del codice di input del puntatore. (Ie3f45)

  • PxBounds deprecati a favore del rettangolo Sono stati aggiornati tutti gli utilizzi di PxBounds con rettangolo e sono stati aggiunti i valori deprecati/sostituiti corretti con annotazioni per facilitare la migrazione. (I37038, b/162627058)

  • Rimosso KeyEvent2 obsoleto. Utilizza invece KeyEvent. (Ied2d0, b/162097587).

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

  • Impostato l'evento personalizzato DelayUp e le relative classi come API di attivazione, perché molto probabilmente verrà modificato. (I56d6f)

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

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

Correzioni di bug

  • Rimossi i callback onFocusChanged da TextField. Al suo posto utilizza Modifier.focusObservationr. (I51089, b/161297615)
  • Modifier.drawBorder è stato ritirato. Usa invece Modifier.Border. La classe dei dati di confine è stata sostituita da BorderStroke (I4257d, b/158160576)
  • Chiamate FrameManager deprecate rimosse.

    Le API di scrittura interne sono state modificate per ridurre l'overhead per monitorare oggetti di stato come mutableStateof() (I80ba6)

  • VerticalScorrier e HorizontalSlideer sono stati rimossi. Utilizza invece SlideableColumn/Row. Modifier.drawBackground è stato rimosso. Utilizza Modifier.background (I73b0d, b/163019183)

  • Si è verificato un arresto anomalo quando un elemento che salva lo stato utilizzato all'interno del ciclo for è stato risolto. Ora che è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è adattata a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • Per chiarezza, l'elemento componibile state { ... } è stato ritirato a favore di chiamate esplicite a remember { mutableStateOf(...) }. In questo modo si riduce la superficie API complessiva e il numero di concetti per la gestione dello stato e corrisponde al pattern by mutableStateOf() per la delega delle proprietà di classe. (Ia5727)

  • Ridenominazione di RRect in RoundRect per adattarsi meglio ai pattern di denominazione della composizione Creazione di costruttori di funzioni simili a RRect e costruttori di funzioni RRect deprecati (I5d325)

Versione 0.1.0-dev16

5 agosto 2020

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

Modifiche alle API

  • L'API OnChildPositioned è stata ritirata. Usa invece OnPositioned per il riquadro secondario. (I87f95, b/162109766).
  • L'elemento setViewContent è stato deprecato. Al suo posto è necessario utilizzare setContent. (I7e497, b/160335130).
  • È stata aggiunta l'API AndroidViewBinding per gonfiare e scrivere le risorse di layout, in base a ViewBinding. (I081c6)
  • KeyEvent2 è sostituito da KeyEvent (I2d770, b/162097585)
  • Aggiunto il supporto per il tasto hardware Alt (I9036b)
  • FocusManager è deprecato. Usa invece Modifier.focus(), Modifier.focusHighlightr() e Modifier.focusRequester(). (I74ae4, b/162211322).
  • loadVectorResource supporta gli attributi trimPath (I808fe)
  • Sposta la finestra di dialogo nell'UI (I47fa6)
  • Sono stati rimossi 2 PointerEventPass che non sono più necessari. (I33ca7)
  • Implementazione di PointerInteropModifier che consente di ricevere eventi MotionEvents e di interagire con Compose come se si trattasse di un'implementazione di una vista Android. (Ieb08c).
  • È stato rimosso il modificatore di tag obsoleto. Usa invece layoutId. (Idaa05, b/162023919).
  • Le API per il supporto da destra a sinistra sono state aggiornate. È stato aggiunto LayoutDirectionAmbient, che può essere utilizzato per leggere e modificare la direzione del layout. Modifier.rtl e Modifier.ltr sono stati rimossi. (I080b3)
  • Supporta il taglio dei percorsi nelle grafiche vettoriali (Ie16c9, b/158188351)
  • Aggiunto Modifier.layout() che consente di creare comodamente un modificatore di layout personalizzato (I73b69, b/161355194)
  • Aggiunta di una nuova API AndroidView e ritiro di quelle esistenti. (m5bcfd)
  • Modifier.plus è stato ritirato. Usa invece Modifier.then. "Quindi" ha un segnale di ordinamento più forte, mentre vieta di digitare Modifier.padding().background() + anotherModifier, il che spezza la catena e più difficile da leggere (Iedd58, b/161529964)
  • Aggiungi [Abstract]Sottoclassi ComposeView per ospitare i contenuti di ComposeView in una gerarchia View. (I46357)
  • Row e Column sono ora funzioni incorporate per ridurre in modo significativo l'overhead associato al loro utilizzo. (I75c10)
  • SubcomposeLayout è stato aggiunto. Si tratta di una primitiva di basso livello che consente di comporre i figli durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in seguito durante la misura per la composizione del sottoalbero. Ad esempio, WithConstraints non viene implementato utilizzando SubcomposeLayout. (I25cc8)
  • È stato aggiunto SemanticsNode.positionInRoot per ottenere la posizione di un SemanticsNode rispetto alla radice della gerarchia di Compose (Icdf26, b/161336532)
  • Gli eventi MotionEvents vengono trasferiti da Android, a Compose e di nuovo ad Android. (I14be8, b/158034713).
  • Menu a discesa Popup rimosso. (I00430)
  • Posizione popup corretta sui display sagomati. (Idd7dd)
  • Aggiungi un'azione di accessibilità per ottenere TextLayoutResult (I9d6e6)
  • RemeasurementModifier aggiunto. Consente di rimisurare il layout in modo sincrono. In generale non è mai necessario poiché la nuova misurazione e il relayout avvengono automaticamente, ma li utilizziamo all'interno di LazyColumnItems durante lo scorrimento. (I5f331, b/160791058)
  • Rimuovi getLineEllipsisOffset/getLineEllipsisCount. Usa invece getLineVisibileEnd/getLineEnd/isLineEllipsize. (I85aa2)
  • Aggiungi alcuni segni/annotazioni come motivo di best practice. (I66b20)
  • e esporre più API riga in TextLayoutResult. (I79bd2)
  • I convertitori vettoriali integrati per la conversione di unità integrate sono ora accessibili tramite Foo.VectorConverter, ad esempio Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter e così via (I3e273)

Correzioni di bug

  • Risolvi i problemi generici dell'API (I077bc)
    1. Rimuovi l'interfaccia OffsetBase inutilizzata
    2. Allinea le classi Offset e IntOffset per avere una superficie API coerente
    3. Rinomina IntOffset.Origin in IntOffset.Zero per essere coerente con l'API Offset
    4. Spostamento del metodo nativeCanvas dall'interfaccia Canvas per supportare i consumatori nella creazione
    5. È stata creata la classe SvuotaCanvas dello stub per refactoring DrawScope in modo che sia un parametro non null anziché lateinit e garantire che il campo non sia nullo
    6. Enum ClipOp rinominate in Pascal Case
    7. Le enumerazioni del campo Qualità dei filtri sono state rinominate in Pascal Case
    8. Enumerazioni Strokejoin rinominate in Pascal Case
    9. Le enumerazioni di PointMode sono state rinominate in Pascal Case
    10. Le enumerazioni PaintingStyle rinominate in Pascal Case sono state rinominate
    11. Le enumerazioni PathFillType rinominate in Pascal Case sono state rinominate
    12. Le enumerazioni di StrokeCap rinominate in Pascal Case sono state rinominate
    13. L'implementazione di DrawCache è stata aggiornata per non usare più i parametri lateinit
    14. Aggiornamento di DrawScope per non usare più la delega lazy per i parametri interni di FillPaint e StrikePaint
    15. Aggiornata l'immagine componibile per evitare l'uso di Box con meno overhead
    16. Classe Outline aggiornata in modo che abbia annotazioni @Immutable
    17. PathNode aggiornato per avere annotazioni @Immutable per ogni istruzione del percorso
    18. La sottocomposizione vettoriale è stata aggiornata per rimuovere i controlli condizionali ridondanti per l'uguaglianza, poiché la composizione li gestisce già
    19. Metodi del costruttore companion rettangoli deprecati a favore di costruttori di funzioni
    20. Sono stati aggiornati i costruttori di funzioni e le classi Brush con le API @Immutable e @Stable
    21. È stata aggiornata l'enumerazione di VertexMode in PascalCase
    22. Aggiornamento del metodo selectPaint di DrawScope per sovrascrivere in modo condizionale i parametri del tratto nel dipinto se sono
    23. Dimensione aggiornata per aggiungere l'API distruttiva, rinomina UnspecifiedSize in Non specificato e rimosso i metodi inutilizzati
  • È stato aggiornato l'utilizzo dell'API Composer per mappare correttamente le modalità BlendModes del framework Android e le modalità PorterDuff in base al livello API. È stata introdotta l'API BlendMode#isSupported come query di funzionalità per determinare se il metodo BlendMode è supportato sul dispositivo prima dell'uso. (I0ef42)
  • LazyItemScope è stato aggiunto per il parametro itemContent degli elenchi Lazy. Fornisce modificatori per riempire la dimensione massima dell'elemento, che risolve il caso d'uso in cui l'elemento deve riempire l'area visibile e il normale Modifier.fillMaxSize() non funziona perché l'elemento viene misurato con vincoli di infinito. (Ibd3b2, b/162248854).
  • SemanticsNodeInteraction.performPartialGesture rimosso. Usa invece SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems è stato rinominato in LazyColumnFor. LazyRowItems è stato rinominato in LazyRowFor (I84f84)
  • Il pacchetto foundation.shape.corner è stato suddiviso in foundation.share (I46491, b/161887429)
  • Rinominato AndroidComposeTestRule in createAndroidComposeRule. (I70aaf)
  • Sono state aggiunte altre API a TextLayoutResult. (Id7e04)
  • Il materiale FilledTextField è stato rinominato in TextField e il TextField fondamentale è stato rinominato in BaseTextField per rendere più semplice l'individuazione e l'utilizzo dell'API desiderata (Ia6242, b/155482676)
  • Modifier.drawBackground è stato rinominato Modifier.background (I13677)

Versione 0.1.0-dev15

22 luglio 2020

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

Aggiornamento delle dipendenze

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

Modifiche alle API

  • FocusModifier è stato ritirato a favore di Modifier.focus, Modifier.focusRequester, Modifier.focusObservationr. FocusState e FocusDetailsState sono deprecati a favore di FocusState2 (I46919, b/160822875, b/160922136)
  • È stato aggiunto un modificatore per osservare il cambiamento dello stato attivo. (I05866, b/160924455, b/160923326).
  • È stato aggiunto un modificatore per richiedere modifiche allo stato attivo (I8dd73, b/161182057, b/160924778)
  • Modifica il menu della barra degli strumenti per visualizzare le opzioni di copia, taglia e incolla. (Id3955)
  • Le proprietà della semantica a valore singolo ora utilizzano uno stile di chiamata. Ad esempio, l'attributo 'semantics {hidden = true }" è ora scritto come: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412).
  • È stato aggiunto Modifier.focus, che sostituisce FocusModifier. (Ib852a, b/160924778).
  • Aggiungi FloatingToolbar per la selezione del campo di testo. (Ie8b07)
  • È stata aggiunta un'annotazione API sperimentale per l'API correlata all'input della chiave (I53c0a)
  • Aggiunta un'annotazione API sperimentale per tutte le API correlate a Focus (I53b24, b/160903352)
  • Aggiunta di FocusState2 che sostituirà FocusDetailsState (I0a3ba, b/160822595)
  • È stata aggiunta l'Sperimentale Focus, che è un'annotazione @optIn per l'API Focus. (I1544b, b/160820961).
  • È stata aggiunta una classe di unità IntBounds, che rappresenta i limiti di pixel di numeri interi dal layout. L'API di PopupPositionProvider è stata aggiornata in modo da utilizzarla. (I0d8d0, b/159596546).
  • L'applicatore ora richiede un metodo clear() per smaltire le composizioni (Ibe697)
  • L'evento KeyEvent è deprecato e sostituito da KeyEvent2 (I68730)
  • È stato aggiunto un nuovo flag facoltativo useUnmergedTree ai programmi di ricerca di test. (I2ce48).
  • API sperimentale Made LayoutNode (I4f2e9)
  • Sono stati aggiunti metodi di copia a vari tipi di classi incorporate, tra cui:

    • Offset
    • Dimensioni
    • Raggio
    • Movimento
    • TransformOrigin

    • Metodo oggetto companion size.copy deprecato a favore del metodo di copia dell'istanza (Ife290, b/159905651)

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

  • TextDirection viene rinominata ResolvedTextDirection (I3ff38)

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

  • Esegui il refactoring degli handle di selezione per il riutilizzo. (I420e0).

  • L'opzione Cliccabile è stata rimossa. Usa Modifier.clickable (I84bdf)

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

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

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

  • Le posizioni Int della riga di allineamento restituite da Placeable#get(ExactmentLine) sono ora non null. Se manca la linea di allineamento oggetto della query, verrà restituito Guidelines.Unspecified. (I896c5, b/158134875)

  • Al componibile AndroidView è stato aggiunto un parametro di modifica. (I48a88, b/158746303).

  • La semantica() è deprecata. Usa invece Modifier.semantics(). (I72407, b/158841414)

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

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

  • Per consolidare il numero di classi utilizzate per rappresentare le informazioni sulle dimensioni, standardizza l'utilizzo della classe size anziché di PxSize. Ciò offre i vantaggi di una classe in linea di utilizzare una classe long per comprimere 2 valori in virgola mobile per rappresentare la larghezza e l'altezza rappresentate come valori in virgola mobile. (Ic0191)

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

  • È stato sostituito l'uso della classe Px in varie classi di composizione nell'ambito dell'ampio sforzo di refactoring, che prevedeva l'uso solo di DP e di tipi primitivi per i parametri pixel. Classe Px eliminata completamente (I3ff33)

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I086f4)

  • Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su DP e tipi primitivi per i parametri pixel (Id3434)

  • Sostituito l'utilizzo della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I97a5a)

  • Il tag TestTag è stato ritirato. Al suo posto, utilizza Modifier.testTag. (If5110, b/157173105)

  • L'implementazione automatica automatica di ParentDataModifier#modifyParentData è stata rimossa ed equivale alla mancata implementazione dell'interfaccia. (I0deaa)

  • ScaleFit era già stato ritirato come rimosso. Usa invece ContentScale. (Ifbc5b).

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande impegno di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I19d02)

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

  • Rimosso LayoutTag() deprecato. Usa invece Modifier.tag(). Rimosso il metodo Modifier.matchParent() deprecato. Usa invece Modifier.matchParentSize(). (If8044)

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (I57bff)

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

  • ha consolidato le implementazioni di CanvasScope, quindi ora sono disponibili solo DrawScope e ContentDrawScope rinominata CanvasScope in DrawScope. Aggiornamento di DrawScope per implementare l'interfaccia Density e fornire LayoutDirection. La sottoclasse DrawScope eliminata in ContentDrawScope Painter e PainterModifier è stata aggiornata in modo da non mantenere più una proprietà RTL, in quanto DrawScope lo fornisce già senza fornirla manualmente (I1798e)

  • Il filtro GestiS doppio tocco ora disambigua il filtro SingleToccaGesto all'interno dell'albero. (If92b1)

  • È stata aggiornata l'API Guidelines e aggiunto supporto per l'allineamento assoluto (che non esegue il mirroring automatico nel contesto Rtl) (I38cd3)

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

  • Sono state aggiornate le API di composizione di livello superiore che espongono CanvasScope per esporre CanvasScope. In questo modo, i consumatori non dovranno più gestire i propri oggetti Paint. I consumatori che devono comunque accedere a Canvas possono utilizzare il metodo dell'estensione disegnoCanvas, che offre un callback per inviare i comandi di disegno con Canvas sottostante. (I80afd)

  • L'API WithConstraints finale lambda è stata modificata. Ora, invece di due parametri, ha un ambito ricevitore che, oltre a vincoli e layoutDirection, fornisce le proprietà minwidth, maxwidth, minHeight e maxHeight in Dp (I91b9a, b/149979702).

  • È stato rinominato LayoutModifier2 in LayoutModifier. (Id29f3)

  • È stata rimossa l'interfaccia di LayoutModifier deprecata. (I2a9d6).

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

  • È possibile misurare gli elementi secondari Layout e LayoutModifier con una direzione del layout diversa. (Ibd731)

  • La nuova funzione Modifier.zIndex() viene aggiunta per controllare l'ordine di disegno degli elementi secondari nello stesso layout principale. La proprietà elevazione in DrawlayerModifier viene rinominata in shadowElevation e non controlla più l'ordine di disegno. L'ordine dei parametri per DrawShadow viene modificato: l'elevazione è ora la prima e la forma è la seconda con un valore predefinito Rettangoloforma. (I20150, b/152417501)

  • Rimosso onSizeChange e onPositionChange in Proprietario. (I5c718)

  • Aggiunti vincoli2, una copia dei vincoli che supporta solo i valori dei vincoli Int anziché IntPx. Il valore IntPx verrà rimosso e tutti i vincoli relativi ai numeri interi verranno considerati pixel come Android.

    • È stato aggiunto anche IntSize, che sostituirà IntPxSize. (I4b43a).
  • Allineamento reso istantaneo con valori arbitrari. Aggiunta degli allineamenti 1D. (Ia0c05).

  • allineaToSiblings ora accetta un valore Misurato anziché un valore Posizionabile. (I5788d)

  • (I45f09, b/152842521).

    • ScaleFit rinominato in ContentScale
    • Spostato ContentScale da ui-graphics al modulo ui-core per risiedere nello stesso modulo dell'API Allineamento.
    • FillMaxDimensione rinominata in Ritaglia
    • Dimensione FillMin rinominata in Adatta
    • Rinominata Adatta in Inside per una corrispondenza migliore
    • Equivalenti di ImageView.ScaleType
    • È stata aggiunta la documentazione che indica che la combinazione di Ritaglia e allineato.Center ottiene gli stessi risultati di ImageView.ScaleType.CENTER_CROP e Fit utilizzati conline.Center ottiene lo stesso risultato di ImageView.ScaleType.FIT_CENTER Inside utilizzato conline.Center ottiene lo stesso risultato di ImageView.ScaleType.CENTER_INSIDE
  • Supporto RTL per i modificatori di disegno. (I0aaf9).

  • Rilasciata un'API per aumentare le visualizzazioni Android da XML. Per ulteriori dettagli, vedi la demo di ViewInCompose. (I42916)

  • Migliora l'API DrawModifier:

    • È stato impostato l'ambito del destinatario perDraw() ContentDrawScope
    • Rimossi tutti i parametri in disegno()
    • DrawScope ha la stessa interfaccia del precedente CanvasScope
    • ContentDrawScope ha il metodoDrawContent() (Ibaced, b/152919067)
  • Aggiunti positionInParent e boundsInParent per leCoordinate di Layout. (Icacdd, b/152735784)

  • DrawlayerModifier e disegno Layer() ora prevedono il valore predefinito di clipToBounds e clipToOutline su false. (I0eb8b, b/152810850).

  • Rinominato LayoutResult in MeasureResult. (Id8c68)

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

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

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

  • Sono stati aggiunti i parametri pivotX e pivotY alle API Layer per supportare la rotazione e la scalabilità in base a un determinato punto in un livello (Icf7c3)

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

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

  • La direzione del layout è stata propagata dal nodo del layout principale ai nodi secondari. Modificatore di direzione del layout aggiunto. (I3d955)

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

  • Supporto iniziale per RTL nel layout di Compose (Ia5519)

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

  • Modificato LayoutCoordinates per rendere providedAllineamentLines un insieme anziché Mappa e in modo che LayoutCoordinates implementi l'operatore get() per recuperare un valore. In questo modo, i modificatori possono modificare più facilmente uno o più valori dell'insieme senza creare una nuova raccolta per ogni modificatore. (I0245a).

  • LayoutCoordinates non ha più una proprietà di posizione. La proprietà "position" non ha senso quando si considerano i modificatori di layout, la rotazione o la scalabilità. Invece, gli sviluppatori dovrebbero usare parentCoordinates e childToLocal() per calcolare la trasformazione da LayoutCoordinate a un altro.

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

  • Miglioramenti alla superficie API dei vincoli (I0fd15)

  • Creazione dell'API CanvasScope che esegue il wrapping di un oggetto Canvas per esporre una superficie API di disegno dichiarativo e stateless. Le trasformazioni sono contenute all'interno del loro ambito di ricezione e le informazioni sulle dimensioni hanno anche l'ambito dei corrispondenti limiti inseriti. Non richiede che un consumer mantenga il proprio oggetto stato Paint per configurare le operazioni di disegno.

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

  • RettangoloShape spostato da androidx.ui.foundation.shape.* ad androidx.ui.graphics.* (Ia74d5, b/154507984).

  • Sostituiti tutti gli utilizzi di colori con valori null nell'API con valori non null e utilizza Color.Unset anziché null (Iabaa7)

  • Introduci un parametro rettangolo facoltativo aggiuntivo a ImagePainter per supportare il disegno di una sottosezione dell'asset ImageAsset sottostante (I0ea9e)

  • È stato aggiunto il colore Annulla impostazione per rappresentare un valore non impostato senza boxing Colors. (If901a)

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

    È stato anche spostato Canvas.rotateRad come metodo di estensione per la coerenza (Ibaca6)

  • Creazione dell'API PixelMap per supportare l'esecuzione di query sulle informazioni relative ai pixel da un ImageAsset. (I69ad6).

  • È stato rinominato toFrameworkRect/toFrameworkRectF in AndroidRect/toAndroidRectF per creare corrispondenze con la convenzione di denominazione per le conversioni degli oggetti tra le API Composer e Android framework su cui si basano. Aggiornata anche la documentazione su queste API (I86337)

  • È stata aggiunta l'API VectorPainter per sostituire l'API di sottocomposizione esistente per le grafiche vettoriali. Il risultato della sottocomposizione è un oggetto VectorPainter anziché un DrawModifier. Ritirati dei precedenti componibili DrawVector a favore di VectorPainter.

    Rinominata API Image(Painter) in PaintBox(Painter) Crea componibile Vector che si comporta come l'immagine componibile tranne che con un VectorAsset invece di un ImageAsset (I9af9a, b/149030271)

  • È stato rinominato ImageAsset per distinguere meglio la differenza tra i dati dell'immagine e l'imminente formato componibile di immagini utilizzato per partecipare al layout e disegnare contenuti. _Body:Created metodo di estensione su android.graphics.Bitmap, Bitmap.asImageAsset(), per creare un'istanza di un ImageAsset utile per combinare lo sviluppo di app Android tradizionali con il framework di composizione (Id5bbd)

  • Aggiunta di TextDirection.Content (I48f36)

  • Operatore TextDecoration.plus aggiunto (I0ad1a)

  • Force rimosso dai valori enum di TextDirectionAlgorithm (Icc944)

  • TextDirectionAlgorithm è rinominato TextDirection (I75ce8)

  • Implementa LongPressAndTrascina per la selezione di campi di testo. (I17919)

  • Sono state aggiunte AnnotatedString.getStringAnnotazioni che restituiscono tutte le annotazioni comprese nell'intervallo. (I1fa00)

  • Il nome del pacchetto per Impostazioni internazionali e LocaleList è stato modificato da androidx.ui.text ad androidx.ui.intl (I8132c)

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

  • Modifica all'API: AnnotatedString(builder: Builder) viene rinominato in annotatedString(builder: Builder). (Ia6377)

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

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

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

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

  • Il file FontWeight.lerp non esegue più lo scatto. È ancora una classe di dati. (I521c2).

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

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

  • il modulo ui-text viene rinominato come ui-text-core (I57dec)

  • È stata rimossa la classe size inutilizzata perché è presente una classe size duplicata nel modulo ui-geometry utilizzato. (I1b602)

  • Aggiunto AdapterList, un componente di elenco a scorrimento che solo compone e dispone gli elementi visibili. I problemi attualmente noti includono il fatto che l'estensione è solo verticale e non gestisce completamente tutti i casi di modifiche agli elementi secondari. (Ib351b)

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

Correzioni di bug

  • Callback onFocusChange nei campi di testo rinominati onFocusChanged (Ida4a1)
  • VerticalScorrier e HoriziontalScorrier sono stati ritirati. Utilizza scrollableColumn e scrollableRow per usufruire di un'esperienza integrata con il comportamento e i parametri di colonne/riga oppure con Modifier.verticalscroll e Modifier.Horizontalscroll per il tuo elemento. Allo stesso modo, scrollerPosition è stato ritirato a favore di scrollState" (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose rinominato in runOnIdle (I83607)
  • Diverse API di test sono state rinominate per essere più intuitive. Tutte le API FindXYZ sono state rinominate onNodeXYZ. Tutte le API doXYZ sono state rinominate performXYZ. (I7f164).
  • Ora è possibile comporre l'UI di composizione all'interno di ViewGroups senza richiedere una nuova composizione. Vedi ViewInteropDemo per un esempio. (I9ab0b, b/160455080).
  • Sono stati aggiunti sortWith e removeRange a MutableVector (ICCf7)
  • Implementa i punti di manipolazione di selezione con trascinamento per modificare la selezione per TextField. (I27032)
  • È stata rimossa la classe in linea Shader che ha aggregato la classe NativeShader e la classe è stata rinominata NativeShader in Shader. La classe incorporata Shader con wrapping non aggiungeva nulla di valore alla piattaforma API ed era una classe in linea, quindi usa direttamente la classe NativeShader. (I25e4d).
  • È stato eseguito il refactoring di PainterModifier per non fornire più il ridimensionamento in base ai vincoli e al parametro ContentScale specificati. Le implementazioni di Painter scalano i contenuti del disegno in base alle dimensioni fornite del DrawScope in cui si trovano.

    Risolto il problema per cui la bitmap della cache di VectorPainter veniva ridimensionata alla dimensione predefinita anziché alla dimensione specificata.

    Abbiamo aggiornato ImagePainter per scalare i propri contenuti anziché affidarsi a PainterModifier. (I6ba90)

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

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

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

  • Risolto il problema per cui l'invio del puntatore dell'input del puntatore causava un arresto anomalo se i PointerInputFiltri venivano rimossi tramite una sottocomposizione durante la scrittura. Il problema ora è stato risolto. (I1f48b, b/157998762).

  • Risolto il problema per cui l'invio dell'input del puntatore causava un arresto anomalo se i PointerInputFiltri venivano rimossi tramite una sottocomposizione durante la disptach. Il problema ora è stato risolto. (Iab398, b/157998762).

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

    È stato aggiornato DrawScope.drawRoundRect per utilizzare un singolo parametro Radius anziché due valori mobili separati per il raggio lungo l'asse x e y (I46d1b).

  • L'elemento Ricomponi componibile non è più un'astrazione utile. La maggior parte della ricomposizione avviene a seguito delle assegnazioni MutableState. Per qualsiasi cosa oltre questo limite, ti consigliamo di utilizzare la funzione invalidate per attivare una ricomposizione dell'ambito corrente. (Ifc992).

  • Sostituito l'uso della classe Px in varie classi di composizione nell'ambito del grande sforzo di refactoring, basato solo su Dp, e sui tipi primitivi per i parametri pixel (Iede0b)

  • Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore del compositore trasformava le chiamate in funzioni componibili. Con questa modifica, ora trasformiamo il corpo di una funzione componibile e lasciamo il sito di chiamata inalterato (soprattutto).

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

    Questa modifica dovrebbe essere compatibile con il codice sorgente per tutti gli utilizzi di Compose. A seguito di questa modifica, la maggior parte degli utenti di Scrivi non dovrebbe dover aggiornare alcun codice.

    Per supportare questa operazione, la firma della JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta 3 parametri. I parametri aggiuntivi sono Composer, un numero intero "chiave", un numero intero della maschera di bit utilizzato per propagare i metadati tramite le chiamate.

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

    Modifiche comportamentali intenzionali note derivanti da:

    1. Alcune chiamate salteranno dove non sarebbe stato possibile in precedenza
    2. Le espressioni componibili nelle espressioni di argomenti predefinite vengono ora sottoscritte e gestite correttamente

    Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti di parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Ciò comporterà un minor numero di confronti in fase di runtime, una riduzione delle dimensioni della tabella degli slot e una maggiore possibilità di ignorare le funzioni componibili che in precedenza non erano state ignorate 2. I parametri che vengono determinati come "statici" al momento della compilazione non vengono più confrontati né archiviati nel runtime. In questo modo ridurrai il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e si riduce il lavoro per il runtime 4. I parametri di invio e ricevitore inutilizzati delle funzioni non sono inclusi nel determinare la possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.

    La maggior parte delle modifiche che provocano errori riguardava le API scelte direttamente dal compilatore e il tipico utilizzo dell'interfaccia di composizione non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call è stato deprecato 4. Gli overload non varargs di key sono stati rimossi. D'ora in poi, utilizza la versione vararg. 5. L'annotazione Pivotal è stata ritirata. Utilizza key in sostituzione. 6. ScopeUpdateScope::updateScope è stato modificato per prevedere una Function3 anziché una Function1 7. rebootableFunction e rampableFunctionN sono stati aggiornati per includere ulteriori parametri di tempo di compilazione (I60756, b/143464846)

  • Sono stati rimossi i modificatori LayoutAllineati deprecati. (I10877)

  • Rimosso RepaintBoundary a favore di DrawlayerModifier (I00aa4)

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

  • Sostituire il valore ButtonStyle con funzioni distinte e rimuovere il sovraccarico di testo (stringa). Consulta gli esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131).

  • Interruzione delle modifiche all'API Ambient. Per informazioni dettagliate, consulta la documentazione relativa al log e a Ambient<T> (I4c7ee, b/143769776)

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

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

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

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