Grafica

  
Sfrutta le strutture grafiche su diverse release della piattaforma Android

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

Elemento Release stabile Candidato per la release Versione beta Release alpha
core grafico - 1.0.0-rc01 - -
percorso-grafica 1.0.1 - - -
forme grafiche - - 1.0.0-beta01 -
Ultimo aggiornamento: questa raccolta è stata aggiornata il: 1° maggio 2024

Dichiarazione delle dipendenze

Per aggiungere una dipendenza alla grafica, 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.graphics:graphics-core:1.0.0-rc01"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.0.0-beta01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.0-rc01")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.0.0-beta01")
}

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.

Non sono disponibili note di rilascio per questo elemento.

Graphics Shapes versione 1.0

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

  • Consenti di pre-ruotare le forme per iniziare da un punto diverso. Questa modifica consente alle forme pillStar di iniziare le proprie curve da un punto non predefinito sul perimetro. Può essere utile quando si anima la traccia del percorso della forma per iniziare a disegnare da una posizione specifica sul contorno della forma. (Ifbb4d, b/324303807).
  • Sono state aggiunte funzioni calculateBounds() a Morph, che sono in parallelo alle stesse funzioni su 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/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 controllo e ancoraggio della curva di Bezier sottostanti), nonché i limiti massimi possibili, che possono essere utili per determinare le dimensioni del container che lo ospita se verrà ruotato all'interno di quel container. (I71827)

Modifiche alle API

  • Sono state ora disponibili altre opzioni per il recupero dei limiti esatti e massimi. (I6d49f, b/317286450).

Correzioni di bug

  • Occasionalmente si verificavano artefatti di rendering quando si disegnavano queste forme come percorsi tracciati, a causa di un problema di rendering di basso livello relativo alle curve di lunghezza zero. Questo bug è stato risolto eliminando tutte le curve di lunghezza zero (di cui le forme non hanno bisogno, risparmiando così anche l'overhead 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 e correzioni di bug.
  • Molte delle modifiche all'API rendono la libreria di forme compatibile con KMP. In questo modo è più facile effettuare chiamate da codici non Android (come il codice di Compose indipendenti da Android). Ad esempio, nell'API non esistono tipi di Android, come i tipi PointF, Matrix e Path precedenti.
  • Sono state apportate anche diverse modifiche alle API e all'implementazione per motivi legati alle prestazioni, in particolare per ridurre al minimo l'allocazione degli oggetti (e la raccolta). Ad esempio, il passaggio da PointF a parametri Float separati evita di allocare molte strutture PointF temporanee in cui inserire questi vertici.

Modifiche alle API

  • È stata sostituita Morph.asMutableCubics con una funzione da ripetere in MutableCubics. Interfaccia funzionale PointTransformer modificata, ora utilizza le coordinate x e y di un Point e restituisce TransformedResult (che è costruito con le coordinate x e y trasformate) (I6719e)
  • È stato rimosso il costruttore Cubic pubblico e lo è stato impostato come funzione di fabbrica. (I409ce)
  • Aggiunta di API di trasformazione e disegno specifiche per Android (I079f6, b/292289543)
  • Elimina le dipendenze Android (Iadc1c, b/292289543)
  • I nomi delle proprietà di ancoraggio e controllo sono ora più appropriati (If13bd, b/294562941)
  • Parametri PointF cambiati in coppie Float (Id4705, b/276466399, b/290254314)
  • progress viene ora passato direttamente ai comandi di disegno Morph (Icdca2)

Correzioni di bug

  • È stato corretto il bug durante la creazione di forme grandi. (I4fd66, b/313497325).

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

  • Aggiunta nuova funzione RoundedPolygon.rectangle() (I78e7e, b/280322189)
  • Le funzioni Stella e Cerchio ora vengono deselezionate e richiamate tramite l'oggetto associato di RoundedPolygon: ad esempio, RoundedPolygon.star(...)(I14735)

Correzioni di bug

  • Corretto il bug sul livellamento (Ibf894)
  • Risolto un bug che si verificava quando la forma di inizio e la forma di fine erano uguali. Distribuisci in modo più efficace lo spazio disponibile sul lato per i tagli, utilizzando prima lo spazio disponibile per arrotondare, poi per levigare se c'è spazio rimasto. (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 alle API

  • La superclasse Polygon è stata fusa con la sua sottoclasse, RoundedPolygon; ora tutti i poligoni sono [facoltativamente] poligoni arrotondati.
  • La funzione Stella (che restituisce ancora RoundedPolygon, come in precedenza) ora richiede un valore innerRadius anziché il parametro innerRadiusRatio precedente. Si tratta delle stesse unità del parametro raggio esistente, il che rende il tutto più semplice e coerente. Inoltre, il parametro numOuterVertices è stato rinominato in numVerticesPerRadius per chiarire che lo stesso numero viene applicato ai raggi interno ed esterno.
  • In precedenza è stato documentato che CornerRounding.radius era relativo alle dimensioni del poligono, ma era (e dovrebbe essere) un valore assoluto, non relativo. I documenti sono stati aggiornati e l'annotazione che la 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 la creazione e il rendering di forme poligonali arrotondate e la morphing (animazione) semplice e automatica 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 CornerRounding facoltativi per specificare il raggio di arrotondamento e i parametri di smussamento per gli angoli, dando vita a forme poligonali con angoli arrotondati.
  • Usa la nuova API Morph(Polygon, Polygon) per calcolare automaticamente una forma "morph" il cui avanzamento può essere impostato da 0 a 1 per animare tra le forme iniziale e finale. Anima i progressi nel tempo, tracciando il risultato su ogni frame, per creare un'animazione uniforme tra queste nuove forme arrotondate.

Graphics Path 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

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

Versione 1.0.0-beta02

10 gennaio 2024

Le modifiche in questa release riguardavano la riduzione delle dimensioni della libreria, che erano maggiori del necessario per via delle 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

  • Dimensioni di libandroidx.graphics.path.so ridotte del 96%. (I71397)
  • Riduci le dimensioni di libandroidx.graphics.path.so del 5%. (I2da7c).
  • I componenti nativi di androidx.graphics:graphics-path sono stati ridotti 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 alle API

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

Correzioni di bug

  • Varie correzioni e miglioramenti delle prestazioni, incluso 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 il problema relativo al controllo della versione della piattaforma interna che causava problemi durante l'esecuzione sulle anteprime di Android 14 (il controllo della versione non andrebbe a buon fine, ma il meccanismo per eseguire operazioni nelle release precedenti non funzionava 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 del percorso tramite la nuova API PathIterator. Utilizzando questa API, i chiamanti possono eseguire l'iterazione in tutti i segmenti di un oggetto Path per determinare l'operazione e i dati per quei segmenti.
  • La libreria usa API simili introdotte nell'anteprima di Android 14, ma questa versione dell'API per AndroidX funziona anche sulle versioni precedenti all'API 21.

Graphics Core versione 1.0

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 il problema che causava la potenziale doppia chiusura dei descrittori dei file con CanvasBufferedRendererAPI su alcuni dispositivi Android con Android 14.
  • Risolto il problema per cui FrameBuffer non eliminava correttamente le istanze 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 grafiche 2D di Android (Canvas + Paint) nella gerarchia delle visualizzazioni.
  • È stata introdotta l'API CanvasBufferedRenderer per supportare il rendering Canvas con accelerazione hardware su un HardwareBuffer. Può essere utilizzato per disegnare una parte di un'interfaccia utente in un buffer che può essere convertito in una bitmap utilizzando l'API Bitmap.wrapHardwareBuffer.

Modifiche alle API

  • L'API CanvasBufferRenderer#releaseBuffer è stata aggiornata in modo da avere un parametro di recinzione facoltativo. Documentazione aggiornata per descrivere quando viene restituito RenderResult#fence. (If1ea7)
  • Aggiungi il metodo draw a RenderRequest per supportare l'uso delle coroutine per pianificare le richieste di prelievo. Il metodo di disegno precedente che utilizzava un esecutore è stato rinominato in drawAsync. Metodo isClosed() sottoposto a refactoring su proprietà. (I5bff6).
  • Parametro del formato del buffer esposto su CanvasFrontBufferRenderer per la mappatura direttamente su CanvasBufferedRenderer.Builder#setBufferFormat (I0f272)
  • È stata creata l'API CanvasBufferedRenderer per gestire il rendering del canvas con accelerazione hardware in un elemento HardwareBuffer. In questo modo viene fornito un'implementazione di cui è stato eseguito il backporting in Android Q, oltre alla configurazione di una profondità della swapchain di HardwareBuffers. La configurazione di ColorSpace è ancora limitata ad Android U e versioni successive, ma l'implementazione compatibile offre un comportamento autonomo per conto degli sviluppatori. (I9b1d8).
  • Aggiungi setFrameRate/clearFrameRate API a SurfaceControlCompat.Transaction per controllare la frequenza fotogrammi insieme alla strategia di modifica e ottenere transizioni predefinite o fluide. (I6045c)
  • Livello API richiesto ridotto per setDataSpace ad Android Q a partire da Android T. (I59c34).
  • È stato aggiunto il callback onBufferReleased all'API GLFrameBufferRenderer per offrire ai consumatori l'opportunità di pulire lo stato quando non è più visualizzato un buffer (I8a4e2)
  • Crea LowLatencyCanvasView per supportare un semplice caso d'uso di rendering di contenuti a bassa latenza che vengono sincronizzati con il rendering della gerarchia di visualizzazione. Questo riduce le complessità associate alla gestione di SurfaceView tramite la gestione interna dell'istanza SurfaceView che viene tradotta rispettivamente all'esterno e sullo schermo per il rendering sincronizzato e a bassa latenza. (I9253b)
  • È stato aggiunto il supporto della configurazione dello spazio colore all'API CanvasFrontBufferedRenderer. Sono stati aggiornati i callback multibuffered per includere anche il back-buffered SurfaceControl (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à

  • Introduzione dell'API GLFrameBufferRenderer. Ciò fornisce una combinazione di dipendenze OpenGL, configurazione della catena di scambio, formati di pixel e configurazione di SurfaceControl. (Ic775b)

Modifiche alle API

  • Sono stati aggiunti parametri di larghezza + altezza a varie API di callback per le dimensioni della barra verticale da SurfaceHolder#Callbacks. (I7f9fc).
  • È stata aggiunta un'API trasparente per cancellare i livelli con buffer frontale e multiplo. (Ic1f95)
  • Aggiunto il supporto per la configurazione del tipo di buffer sottostante delle swapchain utilizzate all'interno di GLFrontBufferedRenderer. (I07a13)
  • Sono state aggiunte proprietà kotlin per i getter su GLFrameBufferRenderer, l'annotazione IntRange per il numero massimo di voci buffer e le annotazioni HardwareBufferFormart e HardwareBufferUsage rispettivamente per setFormat/setUsage. (Ief89e).
  • L'API setBuffer è stata aggiornata nelle transazioni SurfaceControl per fornire un blocco di rilascio. (Ice1bb).
  • Sono state aggiunte le 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 grafica a bassa latenza che sfrutta l'API android.graphics.Canvas insieme all'implementazione OpenGL esistente

Modifiche alle API

  • L'API SurfaceControlCompat.Transaction#setBuffer è stata aggiornata per consentire alle istanze HardwareBuffer con null di eseguire il mirroring dell'API della piattaforma corrispondente (I173d7)
  • Rinomina invece i metodi che fanno riferimento al rendering con doppio buffer in multibuffer, poiché la swapchain di supporto potrebbe contenere più di due buffer. (I830d7)
  • Crea l'API CanvasFrontBufferedRenderer per consentire a 3ps di usare un sistema di rendering con buffer frontale tramite l'API Canvas. (Ibfc29).

Correzioni di bug

  • È stato risolto il problema per cui GLFrontBufferedRenderer non visualizzava i contenuti dopo aver ripristinato l'attività corrispondente.
  • Risolto il problema per cui i contenuti con buffer anteriore venivano cancellati prematuramente.
  • Risolto il problema per cui SurfaceHolder.Callbacks non veniva rimosso dopo il rilascio delle API grafiche 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 alle API

  • È stata aggiornata l'implementazione del callback GLFrontBufferedRenderer per fornire un oggetto BufferInfo contenente larghezza/altezza del buffer insieme a un identificatore del buffer del frame che può essere usato per reindirizzare la destinazione originale dopo il rendering a un buffer temporaneo intermedio. (I7fe20).
  • Creazione di SyncFence consolidata nel metodo di fabbrica statico il giorno SyncFenceCompat.
  • Rimosso il metodo di compatibilità pubblica di eglDupNativeFenceFDANDROID a favore del metodo di fabbrica SyncFenceCompat per la creazione di SyncFence. Questo serve a garantire che tutte le piattaforme API ricevano l'implementazione SyncFence corretta a prescindere dal livello API. (I849bb)
  • È stata aggiunta la documentazione per FrameBufferRenderer e SyncStrategy.
    • Spostamento di FrameBufferRenderer + FrameBuffer + FrameBufferPool nel pacchetto androidx.graphics.opengl completato
    • SyncStrategy spostato nel pacchetto androidx.graphics.opengl
    • RenderCallback#onDraw documenti aggiornati
    • Documentazione aggiornata di RenderCallback#obtainFrameBuffer che l'implementatore dell'API è responsabile delle chiamate a FrameBuffer.close
    • Aggiornamento di onDrawComplete aggiornato per indicare che i consumatori sono responsabili dell'invio dei contenuti da visualizzare
    • SyncFence interfacce/classi di compatibilità spostate nel pacchetto androidx.hardware per eseguire il mirroring del framework
    • L'API SyncFence è stata rinominata in SyncFenceV19 e resa privata per consolidare gli utilizzi in SyncFenceCompat, che sfrutta ove possibile l'API SyncFence del framework. (I5149c)
  • Metodi GLFrontBufferedRenderer#cancel e GLFrontBufferedRenderer#execute aggiunti. Il primo è utile negli scenari di rifiuto del palmo, in cui il rendering sul buffer anteriore deve essere annullato e deve nascondere il buffer anteriore. Il secondo è utile negli 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 buffer doppio. Ciò aiuta a eseguire il rendering di una scena dopo il riassunto, oltre a offrire ai consumatori l'opportunità di determinare in modo selettivo quando sfruttare in modo dinamico il rendering con buffer frontale in base alla scena desiderata per il rendering. (Ied56c)
  • È stata aggiunta una nuova API a SurfaceControlCompat.Builder per supportare la configurazione dell'elemento SurfaceControl principale da un'altra istanza SurfaceControl oltre al meccanismo esistente di un'istanza SurfaceView. (I1d1b6).
  • Altro tipo di restituzione nulla delle funzioni deprecate nascoste (Ibf7b0)
  • È stata aggiunta la costante di estensione EGL_ANDROID_get_native_client_buffer per eseguire una query per stabilire se il dispositivo Android supporta l'importazione di istanze HardwareBuffer in oggetti EGLClientBuffer che possono essere utilizzati come istanza EGLImage. (Iad767)
  • Aggiunta dell'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 alle API

  • È stata corretta l'annotazione RequiresApi mancante per addTransactionCommitListener, che è stata introdotta in Android S (I0a035)
  • Sono stati aggiornati i callback del buffer onDraw<Front/Double> per fornire una matrice di trasformazione che i consumatori possono passare ai propri Shader Vertex, oltre all'attuale larghezza/altezza del buffer. È responsabilità dei consumatori utilizzare questi parametri per pre-rotare correttamente il codice di rendering OpenGL. (I82f9e).

Correzioni di bug

  • Latenza grafica migliorata grazie alla pre-rotazione dei buffer prima dell'emissione di SurfaceControl transazioni.
  • Risolto il problema per cui i log degli errori mostravano l'errore 300d (EGL_BAD_SURFACE).
  • Risolto il problema per cui GLFrontBufferedRenderer non sarebbe più valido dopo il ripristino dell'attività corrispondente in cui era utilizzato.
  • Supporto esteso per emulatori e dispositivi ChromeOS.
  • Risolto il problema per cui lo strato con buffer anteriore veniva 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 di base grafica. Ciò include API per supportare casi d'uso a bassa latenza come l'input con stilo. Vengono introdotte anche alcune API helper per l'utilizzo di OpenGL.

Modifiche alle API

  • Presenta GLFrontBufferedRenderer per assistere il rendering con buffer frontale e multi-buffer al fine di ottenere risultati di rendering a bassa latenza e di alta qualità.
  • Introduce l'API GLRenderer per supportare il rendering OpenGL per vari provider di Surface come SurfaceView, TextureView e altri.