Grafica
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 | - | - | - |
percorso-grafica | 1.0.1 | - | - | - |
forme grafiche | - | - | 1.0.0-beta01 | - |
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:
Trendy
dependencies { implementation "androidx.graphics:graphics-core:1.0.0" 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") 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.
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 suRoundedPolygon
. (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()
epillStar()
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 inMutableCubics
. Interfaccia funzionalePointTransformer
modificata, ora utilizza le coordinate x e y di unPoint
e restituisceTransformedResult
(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 coppieFloat
(Id4705, b/276466399, b/290254314) progress
viene ora passato direttamente ai comandi di disegnoMorph
(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 valoreinnerRadius
anziché il parametroinnerRadiusRatio
precedente. Si tratta delle stesse unità del parametro raggio esistente, il che rende il tutto più semplice e coerente. Inoltre, il parametronumOuterVertices
è stato rinominato innumVerticesPerRadius
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
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
- Versione stabile ufficiale della libreria dei core grafici. Include correzioni di bug minori e miglioramenti delle prestazioni dalla 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 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 unHardwareBuffer
. Può essere utilizzato per disegnare una parte di un'interfaccia utente in un buffer che può essere convertito in una bitmap utilizzando l'APIBitmap.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 restituitoRenderResult#fence
. (If1ea7) - Aggiungi il metodo
draw
aRenderRequest
per supportare l'uso delle coroutine per pianificare le richieste di prelievo. Il metodo di disegno precedente che utilizzava un esecutore è stato rinominato indrawAsync
. MetodoisClosed()
sottoposto a refactoring su proprietà. (I5bff6). - Parametro del formato del buffer esposto su
CanvasFrontBufferRenderer
per la mappatura direttamente suCanvasBufferedRenderer.Builder#setBufferFormat
(I0f272) - È stata creata l'API
CanvasBufferedRenderer
per gestire il rendering del canvas con accelerazione hardware in un elementoHardwareBuffer
. In questo modo viene fornito un'implementazione di cui è stato eseguito il backporting in Android Q, oltre alla configurazione di una profondità della swapchain diHardwareBuffers
. La configurazione diColorSpace
è 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 aSurfaceControlCompat.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'APIGLFrameBufferRenderer
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 diSurfaceView
tramite la gestione interna dell'istanzaSurfaceView
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-bufferedSurfaceControl
(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 diSurfaceControl
. (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'annotazioneIntRange
per il numero massimo di voci buffer e le annotazioniHardwareBufferFormart
eHardwareBufferUsage
rispettivamente persetFormat
/setUsage
. (Ief89e). - L'API
setBuffer
è stata aggiornata nelle transazioniSurfaceControl
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'APIandroid.graphics.Canvas
insieme all'implementazione OpenGL esistente
Modifiche alle API
- L'API
SurfaceControlCompat.Transaction#setBuffer
è stata aggiornata per consentire alle istanzeHardwareBuffer
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 oggettoBufferInfo
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 giornoSyncFenceCompat
. - Rimosso il metodo di compatibilità pubblica di
eglDupNativeFenceFDANDROID
a favore del metodo di fabbricaSyncFenceCompat
per la creazione di SyncFence. Questo serve a garantire che tutte le piattaforme API ricevano l'implementazioneSyncFence
corretta a prescindere dal livello API. (I849bb) - È stata aggiunta la documentazione per
FrameBufferRenderer
eSyncStrategy
.- Spostamento di
FrameBufferRenderer
+FrameBuffer
+FrameBufferPool
nel pacchettoandroidx.graphics.opengl
completato SyncStrategy
spostato nel pacchettoandroidx.graphics.opengl
RenderCallback#onDraw
documenti aggiornati- Documentazione aggiornata di
RenderCallback#obtainFrameBuffer
che l'implementatore dell'API è responsabile delle chiamate aFrameBuffer.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 pacchettoandroidx.hardware
per eseguire il mirroring del framework- L'API
SyncFence
è stata rinominata inSyncFenceV19
e resa privata per consolidare gli utilizzi inSyncFenceCompat
, che sfrutta ove possibile l'APISyncFence
del framework. (I5149c)
- Spostamento di
- Metodi
GLFrontBufferedRenderer#cancel
eGLFrontBufferedRenderer#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'elementoSurfaceControl
principale da un'altra istanzaSurfaceControl
oltre al meccanismo esistente di un'istanzaSurfaceView
. (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 istanzeHardwareBuffer
in oggettiEGLClientBuffer
che possono essere utilizzati come istanzaEGLImage
. (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 peraddTransactionCommitListener
, 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 comeSurfaceView
,TextureView
e altri.