grafica

  
Sfrutta le funzionalità di grafica su più release della piattaforma Android

Questa tabella elenca tutti gli elementi nel gruppo androidx.graphics.

Elemento Release stabile Candidato per la release Versione beta Versione alpha
graphics-core 1.0.2 - - -
graphics-path 1.0.1 - - -
graphics-shapes 1.0.1 - - 1.1.0-alpha01
Questa libreria è stata aggiornata l'ultima volta il 11 dicembre 2024

Dichiarazione delle dipendenze

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

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

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.2"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.2")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.1.0-alpha01")
}

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

Feedback

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

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Non sono disponibili note di rilascio per questo elemento.

Versione grafica 1.1

Versione 1.1.0-alpha01

11 dicembre 2024

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

Nuove funzionalità

  • La demo principale è stata ristrutturata in un editor di forme generico. In questo modo puoi importare le forme da un percorso svg, modificare manualmente gli elementi rilevati in caso di errori nel processo automatico ed esportare il risultato in un codice che può essere utilizzato nel codice di produzione. (I1ac13)
  • Sostituisci le misurazioni dell'angolo per l'avanzamento del contorno della forma con le misurazioni della lunghezza della curva, in modo da poter utilizzare forme più complesse per la trasformazione. (I75478) , I390dd
  • È stato migliorato l'algoritmo di mappatura delle funzionalità, quindi le trasformazioni dovrebbero apparire più naturali. (I83287)

Modifiche all'API

  • Aggiungi l'importazione del percorso SVG e il serializzatore delle funzionalità. Il flusso usuale è:
    • Utilizza il nuovo SvgPathParser.parseFeatures() per convertire un percorso SVG (il valore dell'attributo d nell'elemento path di un file SVG) in un List<Feature>.
    • che può essere modificato e poi serializzato in una stringa con FeatureSerializer.serialize().
    • La stringa risultante può essere utilizzata nel codice di produzione, importandola con FeatureSerializer.parse()
    • Tieni presente che i passaggi 1 e 2 vengono eseguiti una sola volta e possono essere eseguiti con la nuova app. Per il codice di produzione è necessario eseguire solo il passaggio 3. (I9bd00, b/371196190), (Ic3842), (If68ed), (I10251)
  • Mostra gli elementi poligono e i relativi tipi. Ora è possibile creare RoundedPolygons più generici con il costruttore di base che accetta un List<Features>. Gli elementi sono principalmente un elenco di curve cubiche di Bézier, ma sono taggati per aiutare l'algoritmo Morph a trovare una corrispondenza tra le forme iniziale e finale (i vertici convessi vengono mappati ai vertici convessi e i vertici concavi ai vertici concavi). (I61e76), (I1fc5c)
  • Aggiunta del supporto per il target KMP watchosDeviceArm64 e il target Kotlin 1.9. (Icf15d, b/364652024)

Correzioni di bug

  • È stato corretto un caso limite in cui l'ultima funzionalità era vuota. (I390dd)
  • Migliorare la creazione di RoundedPolygon. (Ib862c, b/360888486)
  • Correzione di un bug relativo all'inizializzazione di RoundedPolygon. (I83ddb)
  • Correggere un errore nell'algoritmo per stimare il centro del poligono. (Ida147)

Forme grafiche versione 1.0

Versione 1.0.0

21 agosto 2024

androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0 e androidx.graphics:graphics-shapes-desktop:1.0.0 vengono rilasciati. La versione 1.0.0 contiene questi commit.

Versione 1.0.0-rc01

24 luglio 2024

androidx.graphics:graphics-shapes:1.0.0-rc01, androidx.graphics:graphics-shapes-android:1.0.0-rc01 e androidx.graphics:graphics-shapes-desktop:1.0.0-rc01 vengono rilasciati. La versione 1.0.0-rc01 contiene questi commit.

Versione 1.0.0-beta01

1° maggio 2024

androidx.graphics:graphics-shapes:1.0.0-beta01, androidx.graphics:graphics-shapes-android:1.0.0-beta01 e androidx.graphics:graphics-shapes-desktop:1.0.0-beta01 vengono rilasciati. La versione 1.0.0-beta01 contiene questi commit.

Modifiche all'API

  • Consente di pre-ruotare le forme in modo che inizino in un punto diverso. Questa modifica consente alle forme pillStar di iniziare le curve da un punto diverso da quello predefinito sul perimetro. Questa opzione può essere utile per animare il tratto del percorso della forma, in modo da iniziare a disegnare da una posizione specifica sul contorno della forma. (Ifbb4d, b/324303807)
  • A Morph sono state aggiunte le funzioni calculateBounds(), che corrispondono alle stesse funzioni di RoundedPolygon. (I8a3b6, b/325463575)

Versione 1.0.0-alpha05

7 febbraio 2024

androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05 e androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05 vengono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Nuove funzionalità

  • La libreria ora offre nuove funzioni pill() e pillStar() per creare facilmente queste forme arrotondate/con stelle. Esistono anche nuove API per calcolare i limiti esatti richiesti per una forma (i limiti precedenti erano solo una stima basata sui punti di ancoraggio e di controllo della curva di Bezier sottostante), nonché i limiti massimi possibili, che possono essere utili per determinare le dimensioni del contenitore che la contiene se verrà ruotata all'interno di quel contenitore. (I71827)

Modifiche all'API

  • Ora sono disponibili più opzioni per il recupero dei limiti esatti e massimi. (I6d49f, b/317286450)

Correzioni di bug

  • Occasionalmente si verificavano artefatti di rendering durante il disegno di queste forme come percorsi con tratto, a causa di un problema di rendering a basso livello relativo alle curve di lunghezza pari a zero. Questo bug è stato corretto eliminando tutte le curve di lunghezza pari a zero (che non sono necessarie per le forme, risparmiando così anche sui costi generali dei percorsi prodotti dalle forme).

Versione 1.0.0-alpha04

13 dicembre 2023

androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04 e androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04 vengono rilasciati. La versione 1.0.0-alpha04 contiene questi commit.

Nuove funzionalità

  • Questa release contiene diverse modifiche all'API, oltre a correzioni di bug.
  • Molte delle modifiche all'API rendono la libreria Shapes compatibile con KMP. In questo modo è più facile chiamare da codice non Android (ad esempio codice Compose agnostico Android). Ad esempio, nell'API non sono presenti tipi Android, come i tipi PointF, Matrix e Path precedenti.
  • Sono state apportate anche diverse modifiche alle API e all'implementazione per motivi di rendimento, in particolare per ridurre al minimo l'allocazione (e la raccolta) degli oggetti. Ad esempio, il passaggio da PointF a parametri Float separati evita di allocare molte strutture PointF temporanee per contenere questi vertici.

Modifiche all'API

  • Morph.asMutableCubics sostituito con una funzione per eseguire l'iterazione su MutableCubics. È stata modificata l'interfaccia funzionale PointTransformer, ora prende le coordinate x e y di un Point e restituisce un TransformedResult (costruito con le coordinate x e y trasformate) (I6719e)
  • È stato rimosso il costruttore pubblico Cubic e trasformato in una funzione di fabbrica. (I409ce)
  • Aggiunta di API di trasformazione e disegno specifiche per Android (I079f6, b/292289543)
  • Elimina le dipendenze da Android (Iadc1c, b/292289543)
  • I nomi delle proprietà di ancoraggio e di controllo sono ora più significativi (If13bd, b/294562941)
  • Parametri PointF modificati in coppie Float (Id4705, b/276466399, b/290254314)
  • progress viene ora passato direttamente ai comandi di disegno Morph (Icdca2)

Correzioni di bug

Versione 1.0.0-alpha03

7 giugno 2023

androidx.graphics:graphics-shapes:1.0.0-alpha03 viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche all'API

  • È stata aggiunta una nuova funzione RoundedPolygon.rectangle() (I78e7e, b/280322189)
  • Le funzioni Stella e Cerchio ora non sono più maiuscole e vengono chiamate tramite l'oggetto companion di RoundedPolygon: ad es. RoundedPolygon.star(...)(I14735)

Correzioni di bug

  • Bug relativo all'appiattimento corretto (Ibf894)
  • È stato risolto un bug che si verificava quando le forme di inizio e di fine erano uguali. Distribuisci meglio lo spazio disponibile sui lati per i tagli, utilizzando prima lo spazio disponibile per arrotondare, poi per smussare se rimane spazio. (Ibd320, b/277936300)

Versione 1.0.0-alpha02

19 aprile 2023

androidx.graphics:graphics-shapes:1.0.0-alpha02 viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.

Modifiche all'API

  • La superclasse Polygon è stata unita alla sua sottoclasse RoundedPolygon; tutti i poligoni ora sono [facoltativamente] arrotondati.
  • La funzione ASTRA (che restituisce ancora un RoundedPolygon, come prima) ora accetta un valore innerRadius anziché il parametro innerRadiusRatio precedente. Si tratta delle stesse unità del parametro raggio esistente, il che semplifica e rende più coerente la situazione. Inoltre, il parametro numOuterVertices è stato rinominato in numVerticesPerRadius per chiarire che lo stesso numero viene applicato sia ai raggi interni che a quelli esterni.
  • In precedenza, CornerRounding.radius era documentato come relativo alle dimensioni del poligono, ma era (e dovrebbe essere) un valore assoluto, non relativo. La documentazione è stata aggiornata e l'annotazione che lo limitava a un valore massimo di 1,0 è stata corretta.

Versione 1.0.0-alpha01

5 aprile 2023

Graphics-Shapes è una nuova libreria che consente di creare e visualizzare facilmente forme poligonali arrotondate, nonché di eseguire morphing (animazione) semplici e automatici tra forme diverse.

androidx.graphics:graphics-shapes:1.0.0-alpha01 viene rilasciato. Questa versione è stata rilasciata da un ramo interno.

Nuove funzionalità

  • Utilizza l'API Polygon per creare poligoni regolari e a stella con il numero di vertici desiderato.
  • Utilizza i parametri facoltativi CornerRounding per specificare il raggio di arrotondamento e i parametri di smussamento per gli angoli, in modo da ottenere forme poligonali con angoli arrotondati.
  • Utilizza la nuova API Morph(Polygon, Polygon) per calcolare automaticamente una forma "morph" il cui avanzamento può essere impostato da 0 a 1 per animare le forme iniziale e finale. Anima l'avanzamento nel tempo, disegnando il risultato in ogni frame, per creare un'animazione fluida tra queste nuove forme arrotondate.

Percorso grafico versione 1.0

Versione 1.0.1

1° maggio 2024

androidx.graphics:graphics-path:1.0.1 viene rilasciato. La versione 1.0.1 contiene questi commit.

Correzioni di bug

  • Miglioramenti ai flag del compilatore.

Versione 1.0.0

6 marzo 2024

androidx.graphics:graphics-path:1.0.0 viene rilasciato.

Versione 1.0.0-rc01

21 febbraio 2024

androidx.graphics:graphics-path:1.0.0-rc01 viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.

Correzioni di bug

  • Migliorare le prestazioni di PathIterator su API < 34 (Id4629)

Versione 1.0.0-beta02

10 gennaio 2024

Le modifiche di questa release hanno riguardato esclusivamente la riduzione delle dimensioni della libreria, che erano maggiori del necessario a causa di ipotesi fatte dal codice nativo.

androidx.graphics:graphics-path:1.0.0-beta02 viene rilasciato. La versione 1.0.0-beta02 contiene questi commit.

Correzioni di bug

  • Le dimensioni di libandroidx.graphics.path.so sono state ridotte del 96%. (I71397)
  • Riduci le dimensioni di libandroidx.graphics.path.so del 5%. (I2da7c)
  • Ridotti i componenti nativi di androidx.graphics:graphics-path del 43%. (I8e40d)

Versione 1.0.0-beta01

29 novembre 2023

androidx.graphics:graphics-path:1.0.0-beta01 viene rilasciato. La versione 1.0.0-beta01 contiene questi commit.

Modifiche all'API

  • Sono stati rimossi gli utilizzi dell'API isAtLeastU() sperimentale (Ie9117, b/289269026)

Correzioni di bug

  • Vari bug fix e miglioramenti delle prestazioni, tra cui il modo in cui la libreria gestisce le coniche.

Versione 1.0.0-alpha02

7 giugno 2023

androidx.graphics:graphics-path:1.0.0-alpha02 viene rilasciato. Questa versione è sviluppata in un ramo interno.

Nuove funzionalità

  • È stato risolto un problema con il controllo della versione della piattaforma interna che causava problemi durante l'esecuzione nelle anteprime di Android 14 (il controllo della versione non andava a buon fine, ma il meccanismo per eseguire operazioni nelle release precedenti non funziona correttamente in particolare su Android 14).

Versione 1.0.0-alpha01

22 marzo 2023

androidx.graphics:graphics-path:1.0.0-alpha01 viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Questa nuova libreria consente di eseguire query sui dati di Path tramite la nuova API PathIterator. Con questa API, gli utenti chiamanti possono eseguire l'iterazione di tutti i segmenti di un oggetto Path per determinare l'operazione e i dati relativi a questi segmenti.
  • La libreria utilizza API simili a quelle introdotte nella versione di anteprima di Android 14, ma questa versione AndroidX dell'API funziona anche sulle versioni precedenti all'API 21.

Graphics Core Version 1.0

Versione 1.0.2

16 ottobre 2024

androidx.graphics:graphics-core:1.0.2 viene rilasciato. La versione 1.0.2 contiene questi commit.

Correzioni di bug

  • È stato risolto il problema per cui le istanze SurfaceControl continuavano a essere gestite dal compositore di sistema anche dopo essere state rilasciate.
  • È stato risolto il problema per cui l'istanza HardwareBuffer attualmente presentata non veniva rilasciata dopo lo smaltimento delle dipendenze a bassa latenza
  • È stato risolto un problema di sfarfallio su alcuni dispositivi Android 14 e versioni successive che non supportavano l'indicatore di utilizzo del buffer anteriore

Versione 1.0.1

4 settembre 2024

androidx.graphics:graphics-core:1.0.1 viene rilasciato. La versione 1.0.1 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui a volte le risorse di memoria non venivano rilasciate.

Versione 1.0.0

29 maggio 2024

androidx.graphics:graphics-core:1.0.0 viene rilasciato. La versione 1.0.0 contiene questi commit.

Funzionalità principali della versione 1.0.0

  • Uscita stabile ufficiale della libreria graphics-core. Sono incluse correzioni di bug minori e miglioramenti delle prestazioni rispetto alla versione 1.0.0-rc01

Versione 1.0.0-rc01

17 aprile 2024

androidx.graphics:graphics-core:1.0.0-rc01 viene rilasciato. Questa versione è sviluppata in un ramo interno.

Correzioni di bug

  • È stato risolto un problema che poteva causare la potenziale doppia chiusura dei descrittori file con CanvasBufferedRendererAPI su alcuni dispositivi Android con Android 14.
  • È stato risolto un problema per cui FrameBuffer non eliminava correttamente le istanze del framebuffer.

Versione 1.0.0-beta01

13 dicembre 2023

androidx.graphics:graphics-core:1.0.0-beta01 viene rilasciato. La versione 1.0.0-beta01 contiene questi commit.

Nuove funzionalità

  • È stata introdotta una nuova API LowLatencyCanvasView per supportare il rendering a bassa latenza con le API di grafica 2D di Android (Canvas + Paint) all'interno della gerarchia View.
  • È stata introdotta l'API CanvasBufferedRenderer per supportare il rendering di Canvas con accelerazione hardware in un HardwareBuffer. Questo può essere utilizzato per disegnare una parte di un'interfaccia utente in un buffer che può essere convertito in un bitmap utilizzando l'API Bitmap.wrapHardwareBuffer.

Modifiche all'API

  • L'API CanvasBufferRenderer#releaseBuffer è stata aggiornata per includere un parametro recinto facoltativo. Documentazione aggiornata per descrivere quando viene restituito RenderResult#fence. (If1ea7)
  • Aggiungi il metodo draw a RenderRequest per supportare l'utilizzo delle coroutine per pianificare le richieste di estrazione. Il metodo draw precedente che utilizzava un'esecuzione è stato rinominato in drawAsync. Metodo isClosed() sottoposto a refactoring in una proprietà. (I5bff6)
  • Parametro del formato del buffer esposto a CanvasFrontBufferRenderer per mappare direttamente a CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • È stata creata l'API CanvasBufferedRenderer per gestire il rendering della tela con accelerazione hardware in un HardwareBuffer. Ciò fornisce un'implementazione di backporting ad Android Q insieme alla configurazione di una profondità della catena di scambio di HardwareBuffers. La configurazione di ColorSpace è ancora limitata ad Android U e versioni successive, ma l'implementazione di compatibilità fornisce un comportamento di no-op per conto degli sviluppatori. (I9b1d8)
  • Aggiungi le API setFrameRate/clearFrameRate a SurfaceControlCompat.Transaction per controllare la frequenza dei fotogrammi insieme alla strategia di modifica per le transizioni senza interruzioni o predefinite. (I6045c)
  • È stato abbassato il livello API richiesto per setDataSpace ad Android Q da Android T. (I59c34)
  • È stato aggiunto il callback onBufferReleased all'API GLFrameBufferRenderer per offrire ai consumatori l'opportunità di ripulire lo stato quando un buffer non viene più presentato (I8a4e2)
  • Crea LowLatencyCanvasView per supportare un semplice caso d'uso di rendering dei contenuti con bassa latenza che viene sincronizzato con il rendering della gerarchia delle visualizzazioni. In questo modo, le complessità associate alla gestione di SurfaceView vengono mitigate gestendo internamente l'istanza SurfaceView che viene tradotta sullo schermo/al di fuori dello schermo per il rendering rispettivamente sincronizzato e a bassa latenza. (I9253b)
  • È stato aggiunto il supporto della configurazione dello spazio di colore all'API CanvasFrontBufferedRenderer. Aggiornamento dei callback con più buffer per includere anche SurfaceControl con buffer posteriore (I24bd9)

Versione 1.0.0-alpha05

6 settembre 2023

androidx.graphics:graphics-core:1.0.0-alpha05 viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.

Nuove funzionalità

  • È stata introdotta l'API GLFrameBufferRenderer. Fornisce una combinazione di dipendenze OpenGL, configurazione della catena di scambio, formati pixel e configurazione di SurfaceControl. (Ic775b)

Modifiche all'API

  • Sono stati aggiunti i parametri larghezza + altezza a varie API di callback per le dimensioni del canale a partire da SurfaceHolder#Callbacks. (I7f9fc)
  • È stata aggiunta l'API clear per cancellare i livelli anteriori e con più buffer. (Ic1f95)
  • È stato aggiunto il supporto per configurare il tipo di buffer sottostante delle swapchain utilizzate in GLFrontBufferedRenderer. (I07a13)
  • Sono state aggiunte proprietà Kotlin per i getter su GLFrameBufferRenderer, l'annotazione IntRange per le voci del buffer massimo e le annotazioni HardwareBufferFormart e HardwareBufferUsage per setFormat/setUsage rispettivamente. (Ief89e)
  • È stata aggiornata l'API setBuffer per le transazioni SurfaceControl per fornire una barriera di rilascio. (Ice1bb)
  • Sono state aggiunte API SurfaceControlCompat.Transaction per configurare lo spazio dati e impostare l'intervallo di luminosità esteso. (Ic378d)

Versione 1.0.0-alpha04

7 giugno 2023

androidx.graphics:graphics-core:1.0.0-alpha04 viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.

Nuove funzionalità

  • È stato introdotto CanvasFrontBufferedRenderer per supportare la grafica a bassa latenza sfruttando l'API android.graphics.Canvas insieme all'implementazione OpenGL esistente

Modifiche all'API

  • L'API SurfaceControlCompat.Transaction#setBuffer è stata aggiornata per consentire alle istanze HardwareBuffer nullable di rispecchiare l'API della piattaforma corrispondente (I173d7)
  • Rinomina i metodi che fanno riferimento al rendering con doppio buffer in Multi Buffered, poiché la swapchain di supporto potrebbe contenere più di 2 buffer. (I830d7)
  • Crea l'API CanvasFrontBufferedRenderer per consentire ai fornitori di terze parti di sfruttare un sistema di rendering con buffering in primo piano utilizzando l'API Canvas. (Ibfc29)

Correzioni di bug

  • È stato risolto il problema per cui GLFrontBufferedRenderer non mostrava i contenuti dopo la ripresa dell'attività corrispondente.
  • È stato risolto il problema per cui i contenuti in primo piano memorizzati nella cache venivano cancellati prematuramente.
  • È stato risolto il problema per cui SurfaceHolder.Callbacks non veniva rimosso dopo il rilascio delle API di grafica a bassa latenza.

Versione 1.0.0-alpha03

22 marzo 2023

androidx.graphics:graphics-core:1.0.0-alpha03 viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Modifiche all'API

  • È stata aggiornata l'implementazione del callback GLFrontBufferedRenderer per fornire un oggetto BufferInfo contenente la larghezza/l'altezza del buffer e un identificatore del frame buffer che può essere utilizzato per eseguire il ricliccamento della destinazione originale dopo il rendering in un buffer intermedio. (I7fe20)
  • Creazione consolidata di SyncFence nel metodo di fabbrica statico su SyncFenceCompat.
  • È stato rimosso il metodo di compatibilità pubblico per eglDupNativeFenceFDANDROID a favore del metodo di fabbrica SyncFenceCompat per la creazione di SyncFence. Questo serve ad assicurarti che tutte le interfacce API ricevano l'implementazione corretta di SyncFence, indipendentemente dal livello dell'API. (I849bb)
  • È stata aggiunta la documentazione per FrameBufferRenderer e SyncStrategy.
    • FrameBufferRenderer + FrameBuffer + FrameBufferPool spostati nel pacchetto androidx.graphics.opengl
    • SyncStrategy spostato nel pacchetto androidx.graphics.opengl
    • Documenti RenderCallback#onDraw aggiornati
    • Documentazione aggiornata di RenderCallback#obtainFrameBuffer che l'implementatore dell'API è responsabile di chiamare FrameBuffer.close
    • Aggiornamento di onDrawComplete per indicare che i consumatori sono responsabili dell'invio dei contenuti da visualizzare
    • Le interfacce/classi di compatibilità SyncFence sono state spostate nel pacchetto androidx.hardware per rispecchiare il framework
    • L'API SyncFence è stata rinominata in SyncFenceV19 e resa privata per consolidare gli utilizzi in SyncFenceCompat, che sfrutta l'API SyncFence del framework ove possibile. (I5149c)
  • Sono stati aggiunti i metodi GLFrontBufferedRenderer#cancel e GLFrontBufferedRenderer#execute. Il primo è utile negli scenari di rifiuto della palma in cui l'elaborazione nel buffer anteriore deve essere annullata e il buffer anteriore deve essere nascosto. Quest'ultimo è utile in scenari per manipolare gli oggetti nel thread GL senza dover pianificare un rendering. (If0b7f)
  • Aggiungi l'API per eseguire il rendering direttamente nel livello con doppio buffer. Questo consente di eseguire nuovamente il rendering di una scena dopo la ripresa e offre ai consumatori l'opportunità di determinare in modo selettivo quando utilizzare il rendering con buffering in primo piano in base alla scena da eseguire. (Ied56c)
  • È stata aggiunta una nuova API a SurfaceControlCompat.Builder per supportare la configurazione del SurfaceControl principale da un'altra istanza di SurfaceControl, oltre al meccanismo esistente da un SurfaceView. (I1d1b6)
  • Maggiore nullabilità del tipo di ritorno delle funzioni nascoste ritirate (Ibf7b0)
  • È stata aggiunta la costante di estensione EGL_ANDROID_get_native_client_buffer per verificare se il dispositivo Android supporta l'importazione di istanze HardwareBuffer in oggetti EGLClientBuffer che possono essere utilizzati come istanze EGLImage. (Iad767)
  • Aggiunta di un'annotazione @JvmDefaultWithCompatibility (I8f206)

Versione 1.0.0-alpha02

9 novembre 2022

androidx.graphics:graphics-core:1.0.0-alpha02 viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.

Modifiche all'API

  • È stata corretta l'annotazione RequiresApi mancante per addTransactionCommitListener, introdotta in Android S (I0a035)
  • Aggiornati i onDraw<Front/Double> callback del buffer per fornire una matrice di trasformazione che gli utenti possono passare ai loro shader vertex, oltre alla larghezza/all'altezza del buffer corrente. È responsabilità dei consumatori utilizzare questi parametri per pre-ruotare correttamente il codice di rendering OpenGL. (I82f9e)

Correzioni di bug

  • La latenza della grafica è stata migliorata mediante la pre-rotazione dei buffer prima dell'emissione delle transazioni SurfaceControl.
  • Risolto un problema per cui i log degli errori mostravano l'errore 300d (EGL_BAD_SURFACE).
  • È stato risolto il problema per cui GLFrontBufferedRenderer non era valido dopo la ripresa dell'attività corrispondente in cui era utilizzato.
  • Maggiore supporto per emulatori e dispositivi ChromeOS.
  • È stato risolto il problema per cui il livello in primo piano con buffer potrebbe essere nascosto prematuramente.

Versione 1.0.0-alpha01

24 ottobre 2022

androidx.graphics:graphics-core:1.0.0-alpha01 viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Versione iniziale della libreria AndroidX Graphics Core. Sono incluse le API per supportare casi d'uso a bassa latenza come l'input con lo stilo. Vengono inoltre introdotte alcune API di supporto per l'utilizzo di OpenGL.

Modifiche all'API

  • Viene introdotto GLFrontBufferedRenderer per supportare il rendering in primo piano e con più buffer al fine di ottenere sia una latenza ridotta sia un'uscita di rendering di alta qualità.
  • Viene introdotta l'API GLRenderer per supportare il rendering OpenGL per vari fornitori di piattaforme come SurfaceView, TextureView e altri.