gráficos
Esta tabela lista todos os artefatos no grupo androidx.graphics
.
Artefato | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
núcleo gráfico | 1.0.0 | - | - | - |
caminho gráfico | 1.0.1 | - | - | - |
formas gráficas | - | - | 1.0.0-beta01 | - |
Declarar dependências
Para adicionar uma dependência a Graphics, é preciso adicionar o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle
do
seu app ou módulo:
Groovy
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") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Não há notas de versão para este artefato.
Graphics Shapes versão 1.0
Versão 1.0.0-beta01
1o de maio de 2024
Lançamento de 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
. A versão 1.0.0-beta01 contém this commits.
Mudanças na API
- Permita que as formas sejam pré-giradas para começar em um ponto diferente. Essa mudança permite que as formas de
pillStar
iniciem as curvas de um ponto não padrão no perímetro. Isso pode ser útil ao animar o traço do caminho da forma para começar a desenhar a partir de um local específico no contorno da forma. (Ifbb4d, b/324303807). - Foram adicionadas funções
calculateBounds()
ao Morph, que são paralelas às mesmas funções noRoundedPolygon
(I8a3b6, b/325463575).
Versão 1.0.0-alpha05
7 de fevereiro de 2024
Lançamento de 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
. A versão 1.0.0-alpha05 contém estas confirmações.
Novos recursos
- A biblioteca agora oferece novas funções
pill()
epillStar()
para facilitar a criação dessas formas arredondadas/com estrela. Há também novas APIs para calcular os limites exatos necessários para uma forma (os limites anteriores eram apenas uma estimativa com base nos pontos de controle e âncora da curva de Bézier) e os limites máximos possíveis, que podem ser úteis para determinar o tamanho do contêiner que a contém se ele for girado. (I71827).
Mudanças na API
- Agora há mais opções para recuperar limites exatos e máximos. (I6d49f, b/317286450).
Correções de bugs
- Havia artefatos de renderização ocasionais ao desenhar essas formas como caminhos traçados, devido a um problema de renderização de baixo nível relacionado a curvas de comprimento zero. Esse bug foi corrigido eliminando todas as curvas de comprimento zero (que as formas não precisam, economizando, assim, a sobrecarga dos caminhos produzidos pelas formas).
Versão 1.0.0-alpha04
13 de dezembro de 2023
Lançamento de 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
. A versão 1.0.0-alpha04 contém estas confirmações.
Novos recursos
- Esta versão contém várias mudanças de API, assim como correções de bugs.
- Muitas das mudanças da API tornam a biblioteca Shapes compatível com KMP. Isso facilita fazer chamadas de códigos que não são do Android, como um código do Compose independente de Android. Por exemplo, não há tipos de Android na API, como os tipos anteriores PointF, Matrix e Path.
- Várias mudanças também foram feitas nas APIs e na implementação por motivos de desempenho, especificamente para minimizar a alocação (e a coleta) de objetos. Por exemplo, o movimento de PointF para separar parâmetros Float evita alocar muitas estruturas temporárias de PointF para conter esses vértices.
Mudanças na API
Morph.asMutableCubics
foi substituída por uma função para iterar noMutableCubics
. Mudança da interface funcionalPointTransformer
. Agora, ela usa as coordenadas x e y de umPoint
e retorna umTransformedResult
, que é construído com as coordenadas x e y transformadas (I6719e).- O construtor público
Cubic
foi removido e transformado em uma função de fábrica (I409ce). - Adição de APIs de transformação e desenho específicas do Android (I079f6, b/292289543).
- Eliminação de dependências do Android (Iadc1c, b/292289543).
- Os nomes de propriedades de fixação e controle agora são mais sensíveis (If13bd, b/294562941).
- Os parâmetros
PointF
mudaram para paresFloat
(Id4705, b/276466399, b/290254314). - O
progress
agora é transmitido diretamente para os comandos de desenho doMorph
(Icdca2).
Correções de bugs
- Correção de bug ao criar formas grandes. (I4fd66, b/313497325).
Versão 1.0.0-alpha03
7 de junho de 2023
Lançamento de androidx.graphics:graphics-shapes:1.0.0-alpha03
. A versão 1.0.0-alpha03 contém estas confirmações.
Mudanças na API
- A nova função
RoundedPolygon.rectangle()
foi adicionada (I78e7e, b/280322189). - As funções Star e Circle agora têm a primeira letra maiúscula e são chamadas pelo objeto complementar de
RoundedPolygon
: por exemplo,RoundedPolygon.star(...)
(I14735).
Correções de bugs
- Correção de bug na suavização (Ibf894).
- Correção de um bug que ocorria quando a forma inicial e final eram as mesmas. Distribua melhor o espaço disponível na lateral para cortes, primeiro usando o espaço disponível para arredondamento e depois para suavização se houver espaço restante. (Ibd320, b/277936300).
Versão 1.0.0-alpha02
19 de abril de 2023
Lançamento de androidx.graphics:graphics-shapes:1.0.0-alpha02
. A versão 1.0.0-alpha02 contém estas confirmações.
Mudanças na API
- A superclasse Polygon foi mesclada com a subclasse
RoundedPolygon
. Agora todos os polígonos são [opcionalmente] polígonos arredondados. - A função Star, que ainda retorna um
RoundedPolygon
, agora usa um valorinnerRadius
, em vez do parâmetroinnerRadiusRatio
anterior. Ele tem as mesmas unidades que o parâmetro de raio existente, o que torna tudo mais simples e consistente. Além disso, o parâmetronumOuterVertices
foi renomeado comonumVerticesPerRadius
para esclarecer que o mesmo número é aplicado a raios internos e externos. - Foi documentado anteriormente que
CornerRounding.radius
era relativo ao tamanho do polígono, mas era (e deveria ser) um valor absoluto, não relativo. Os documentos foram atualizados, e a anotação que os limitava a um valor máximo de 1,0 foi corrigida.
Versão 1.0.0-alpha01
5 de abril de 2023
Graphics-Shapes é uma nova biblioteca que permite a criação e renderização fáceis de formas poligonais arredondadas, bem como a transformação simples e automática (animação) entre diferentes formas.
Lançamento de androidx.graphics:graphics-shapes:1.0.0-alpha01
. Esta versão foi lançada em um branch interno.
Novos recursos
- Use a API Polygon para criar polígonos regulares e de estrela com o número desejado de vértices.
- Use parâmetros
CornerRounding
opcionais para especificar o raio de arredondamento e os parâmetros de suavização para os cantos, resultando em formas poligonais com cantos arredondados. - Use a nova API
Morph(Polygon, Polygon)
para calcular automaticamente uma forma "transformada" com progresso que pode ser definido de 0 a 1 para ser animado entre as formas inicial e final. Anime esse progresso ao longo do tempo, desenhando o resultado em cada frame, para criar uma animação suave entre essas novas formas arredondadas.
Graphics Path: versão 1.0
Versão 1.0.1
1o de maio de 2024
Lançamento de androidx.graphics:graphics-path:1.0.1
. A versão 1.0.1 contém estas confirmações.
Correções de bugs
- Melhorias nas sinalizações do compilador.
Versão 1.0.0
6 de março de 2024
Lançamento de androidx.graphics:graphics-path:1.0.0
.
Versão 1.0.0-rc01
21 de fevereiro de 2024
Lançamento de androidx.graphics:graphics-path:1.0.0-rc01
. A versão 1.0.0-rc01 contém estas confirmações.
Correções de bugs
- Melhoria na performance do PathIterator na API anterior à 34 (Id4629).
Versão 1.0.0-beta02
10 de janeiro de 2024
As mudanças nesta versão tratavam da redução do tamanho da biblioteca, que era maior que o necessário devido às suposições feitas pelo código nativo.
Lançamento de androidx.graphics:graphics-path:1.0.0-beta02
. A versão 1.0.0-beta02 contém estas confirmações.
Correções de bugs
- O tamanho de
libandroidx.graphics.path.so
foi reduzido em 96%. (I71397). - Reduza o tamanho do
libandroidx.graphics.path.so
em 5%. (I2da7c). - Os componentes nativos de
androidx.graphics:graphics-path
foram reduzidos em 43%. (I8e40d).
Versão 1.0.0-beta01
29 de novembro de 2023
Lançamento de androidx.graphics:graphics-path:1.0.0-beta01
. A versão 1.0.0-beta01 contém estas confirmações.
Mudanças na API
- Remoção dos usos da API
isAtLeastU()
experimental (Ie9117, b/289269026).
Correções de bugs
- Várias correções e melhorias no desempenho, incluindo a forma como a biblioteca lida com cônicas.
Versão 1.0.0-alpha02
7 de junho de 2023
Lançamento de androidx.graphics:graphics-path:1.0.0-alpha02
. Esta versão é desenvolvida em um branch interno.
Novos recursos
- Foi corrigido um problema com a verificação de versão interna da plataforma que causava problemas ao ser executado nas prévias do Android 14. A verificação de versão falhava, mas o mecanismo para realizar ações em versões anteriores não funcionava corretamente no Android 14.
Versão 1.0.0-alpha01
22 de março de 2023
Lançamento de androidx.graphics:graphics-path:1.0.0-alpha01
. A versão 1.0.0-alpha01 contém estas confirmações.
Novos recursos
- Essa nova biblioteca permite consultar dados de caminho usando a nova API
PathIterator
. Com essa API, os autores das chamadas podem iterar em todos os segmentos de um objeto de caminho para determinar a operação e os dados desses segmentos. - A biblioteca usa APIs semelhantes introduzidas na prévia do Android 14, mas essa versão AndroidX da API também funciona em versões anteriores à API 21.
Graphics Core: versão 1.0
Versão 1.0.0
29 de maio de 2024
Lançamento de androidx.graphics:graphics-core:1.0.0
. A versão 1.0.0 contém estas confirmações (link em inglês).
Principais recursos da versão 1.0.0
- Versão estável oficial da biblioteca de núcleo gráfico. Inclui pequenas correções de bugs e melhorias de desempenho da versão 1.0.0-rc01.
Versão 1.0.0-rc01
17 de abril de 2024
Lançamento de androidx.graphics:graphics-core:1.0.0-rc01
. Esta versão é desenvolvida em um branch interno.
Correções de bugs
- Correção do problema que levava ao possível fechamento duplo de descritores de arquivos com o
CanvasBufferedRendererAPI
em alguns dispositivos com o Android 14. - Correção do problema em que
FrameBuffer
não excluía corretamente as instâncias de framebuffer.
Versão 1.0.0-beta01
13 de dezembro de 2023
Lançamento de androidx.graphics:graphics-core:1.0.0-beta01
. A versão 1.0.0-beta01 contém estas confirmações.
Novos recursos
- Introdução de uma nova API
LowLatencyCanvasView
para oferecer suporte à renderização de baixa latência com as APIs de gráficos 2D do Android (Canvas + Paint) na hierarquia de visualização. - Introdução da API
CanvasBufferedRenderer
para oferecer suporte à renderização de Canvas acelerada por hardware em umHardwareBuffer
. Isso pode ser usado para desenhar uma parte de uma interface do usuário em um buffer que pode ser convertido em um bitmap usando a APIBitmap.wrapHardwareBuffer
.
Mudanças na API
- Atualização da API
CanvasBufferRenderer#releaseBuffer
para ter um parâmetro de limite opcional A documentação foi atualizada para descrever quandoRenderResult#fence
é retornado. (If1ea7). - O método
draw
foi adicionado aRenderRequest
para oferecer suporte ao uso de corrotinas para programar solicitações de desenho. O método de desenho anterior que consumiu um executor foi renomeado comodrawAsync
. Refatoração do métodoisClosed()
para uma propriedade (I5bff6). - Parâmetro de formato de buffer exposto para
CanvasFrontBufferRenderer
a fim de mapear diretamente paraCanvasBufferedRenderer.Builder#setBufferFormat
(I0f272). - Criação da API
CanvasBufferedRenderer
para lidar com a renderização de tela acelerada por hardware em umHardwareBuffer
Isso fornece uma implementação de backport para o Android Q, além da configuração de uma profundidade de cadeia de troca deHardwareBuffers
. A configuração deColorSpace
ainda está limitada ao Android U+, mas a implementação de compatibilidade oferece um comportamento de ambiente autônomo em nome dos desenvolvedores. (I9b1d8). - Adicione as APIs
setFrameRate
/clearFrameRate
aoSurfaceControlCompat.Transaction
para controlar o frame rate e a estratégia de mudança para transições perfeitas ou padrão (I6045c). - Redução do nível da API necessário do
setDataSpace
para o Android Q do Android T. (I59c34). - Adição do callback
onBufferReleased
à APIGLFrameBufferRenderer
para dar aos consumidores a oportunidade de limpar o estado quando um buffer não estiver mais sendo apresentado (I8a4e2). - Crie
LowLatencyCanvasView
para oferecer suporte a um caso de uso simples de renderização de conteúdo com baixa latência que é sincronizado com a renderização da hierarquia de visualização. Isso reduz as complexidades associadas ao gerenciamento deSurfaceView
, gerenciando internamente a instânciaSurfaceView
que é traduzida fora/na tela para renderização sincronizada e baixa latência, respectivamente. (I9253b). - Foi adicionado suporte à configuração do espaço de cores à API
CanvasFrontBufferedRenderer
Atualização dos callbacks com vários buffers para incluir também oSurfaceControl
com buffer de retorno (I24bd9).
Versão 1.0.0-alpha05
6 de setembro de 2023
Lançamento de androidx.graphics:graphics-core:1.0.0-alpha05
. A versão 1.0.0-alpha05 contém estas confirmações.
Novos recursos
- Introdução da API
GLFrameBufferRenderer
. Isso fornece uma combinação de dependências do OpenGL, configuração da cadeia de troca, formatos de pixel e configuração deSurfaceControl
. (Ic775b).
Mudanças na API
- Adição de parâmetros de largura e altura a várias APIs de callback para as dimensões de barra vertical de
SurfaceHolder#Callbacks
(I7f9fc). - Foi adicionada uma API clara para limpar as camadas frontal e múltipla com buffer. (Ic1f95).
- Foi adicionado suporte à configuração do tipo de buffer subjacente de cadeias de troca usadas em
GLFrontBufferedRenderer
(I07a13). - Adição de propriedades do Kotlin para getters em
GLFrameBufferRenderer
, anotaçãoIntRange
para entradas de buffer máximo e anotaçõesHardwareBufferFormart
eHardwareBufferUsage
parasetFormat
/setUsage
, respectivamente (Ief89e). - A API
setBuffer
foi atualizada em transaçõesSurfaceControl
para fornecer um limite de liberação. (Ice1bb). - Foram adicionadas APIs
SurfaceControlCompat.Transaction
para configurar o espaço de dados, bem como definir o intervalo estendido de brilho. (Ic378d).
Versão 1.0.0-alpha04
7 de junho de 2023
Lançamento de androidx.graphics:graphics-core:1.0.0-alpha04
. A versão 1.0.0-alpha04 contém estas confirmações.
Novos recursos
CanvasFrontBufferedRenderer
foi introduzido para oferecer suporte a gráficos de baixa latência usando a APIandroid.graphics.Canvas
com a implementação atual do OpenGL.
Mudanças na API
- A API
SurfaceControlCompat.Transaction#setBuffer
foi atualizada para permitir que instânciasHardwareBuffer
anuláveis sejam espelhadas na API da plataforma correspondente (I173d7). - Os métodos que se referem à renderização com buffer duplo foram renomeados para vários buffers, já que a cadeia de troca de apoio pode conter mais de dois buffers. (I830d7).
- Criação da API
CanvasFrontBufferedRenderer
para permitir que terceiros aproveitem um sistema de renderização em buffer frontal usando a API Canvas (Ibfc29).
Correções de bugs
- Correção do problema em que o
GLFrontBufferedRenderer
não renderizava conteúdo depois de retomar a atividade correspondente - Correção do problema em que o conteúdo frontal armazenado em buffer era apagado prematuramente.
- Foi corrigido um problema em que
SurfaceHolder.Callbacks
não era removido após o lançamento das APIs gráficas de baixa latência.
Versão 1.0.0-alpha03
22 de março de 2023
Lançamento de androidx.graphics:graphics-core:1.0.0-alpha03
. A versão 1.0.0-alpha03 contém estas confirmações.
Mudanças na API
- A implementação de callback
GLFrontBufferedRenderer
foi atualizada para fornecer um objetoBufferInfo
que contém largura/altura do buffer com um identificador de buffer de frame que pode ser usado para redirecionar o destino original após a renderização para um buffer de rascunho intermediário (I7fe20). - A criação de
SyncFence
foi consolidada para o método estático de fábrica emSyncFenceCompat
. - O método de compatibilidade pública de
eglDupNativeFenceFDANDROID
foi removido e substituído pelo método de fábricaSyncFenceCompat
para a criação de SyncFence Isso garante que todas as plataformas da API recebam a implementação correta daSyncFence
, independente do nível da API. (I849bb). - Foi adicionada documentação para
FrameBufferRenderer
eSyncStrategy
FrameBufferRenderer
+FrameBuffer
+FrameBufferPool
foram movidos para o pacoteandroidx.graphics.opengl
SyncStrategy
foi movido para o pacoteandroidx.graphics.opengl
RenderCallback#onDraw
documentos atualizados- Atualização da documentação de
RenderCallback#obtainFrameBuffer
informando que o implementador da API é responsável por chamarFrameBuffer.close
. onDrawComplete
foi atualizado para indicar que os consumidores são responsáveis por enviar conteúdo para a tela.- As interfaces/classes de compatibilidade
SyncFence
foram movidas para o pacoteandroidx.hardware
para espelhar o framework. - A API
SyncFence
foi renomeada comoSyncFenceV19
e tornada particular para consolidar os usos paraSyncFenceCompat
, que aproveita a APISyncFence
do framework sempre que possível (I5149c).
- Os métodos
GLFrontBufferedRenderer#cancel
eGLFrontBufferedRenderer#execute
foram adicionados. O primeiro é útil em cenários de rejeição de palmas em que a renderização para o buffer frontal precisa ser cancelada e ocultar o buffer frontal. Essa última opção é útil em cenários para manipular objetos na linha de execução GL sem precisar programar uma renderização. (If0b7f). - Adição de API para renderização direta na camada em buffer duplo. Isso ajuda a renderizar novamente uma cena após a retomada, além de dar aos consumidores a oportunidade de determinar seletivamente quando aproveitar a renderização frontal em buffer dinamicamente com base na cena desejada para renderização. (Ied56c).
- Uma nova API foi adicionada a
SurfaceControlCompat.Builder
para oferecer suporte à configuração doSurfaceControl
pai de outra instância deSurfaceControl
, além do mecanismo existente de umSurfaceView
(I1d1b6). - Mais nulidade do tipo de retorno das funções com uso oculto (Ibf7b0).
- Adição da constante de extensão
EGL_ANDROID_get_native_client_buffer
para consultar se o dispositivo Android oferece suporte à importação de instânciasHardwareBuffer
para objetosEGLClientBuffer
que podem ser consumidos como uma instânciaEGLImage
(Iad767). - A anotação
@JvmDefaultWithCompatibility
foi adicionada (I8f206).
Versão 1.0.0-alpha02
9 de novembro de 2022
Lançamento de androidx.graphics:graphics-core:1.0.0-alpha02
. A versão 1.0.0-alpha02 contém estas confirmações.
Mudanças na API
- Correção da anotação
RequiresApi
ausente noaddTransactionCommitListener
, que foi introduzida no Android S (I0a035). - Os callbacks de buffer
onDraw<Front/Double>
foram atualizados para fornecer uma matriz de transformação que os consumidores podem transmitir para os sombreadores de vértice, além da largura e altura do buffer atual. Os consumidores são responsáveis por usar esses parâmetros para pré-rotacionar da forma correta o código de renderização do OpenGL (I82f9e).
Correções de bugs
- Melhorada a latência gráfica ao pré-rotacionar os buffers antes de emitir transações
SurfaceControl
. - Corrigido o problema em que os registros de erros mostravam o erro 300d (EGL_BAD_SURFACE).
- Corrigimos o problema em que o
GLFrontBufferedRenderer
era considerado inválido após a retomada da atividade correspondente. - Aumento do suporte aos emuladores e dispositivos ChromeOS.
- Corrigimos o problema em que a camada de buffer frontal podia ser ocultada de forma prematura.
Versão 1.0.0-alpha01
24 de outubro de 2022
Lançamento de androidx.graphics:graphics-core:1.0.0-alpha01
. A versão 1.0.0-alpha01 contém estas confirmações.
Novos recursos
- Versão inicial da principal biblioteca de gráficos do AndroidX. Essa versão inclui APIs compatíveis com casos de uso de baixa latência, como entrada da stylus. Também introduz algumas APIs auxiliares para uso do OpenGL.
Mudanças na API
- Introdução de
GLFrontBufferedRenderer
para auxiliar na renderização frontal e com vários buffers a fim de alcançar saída de baixa latência e alta qualidade de renderização. - Introdução da API
GLRenderer
para auxiliar na renderização do OpenGL para vários provedores de Surface, comoSurfaceView
,TextureView
e outros.