gráficos

  
Use recursos gráficos em várias versões da Plataforma Android.

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.1 - - -
caminho-gráfico 1.0.1 - - -
formas gráficas 1.0.1 - - -
Esta biblioteca foi atualizada pela última vez em 4 de setembro de 2024

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.2"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.0.1"
}

Kotlin

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

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.

Criar novo problema

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

21 de agosto de 2024

Lançamento de androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0 e androidx.graphics:graphics-shapes-desktop:1.0.0. A versão 1.0.0 contém estas confirmações.

Versão 1.0.0-rc01

24 de julho de 2024

Lançamento de 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. A versão 1.0.0-rc01 contém estas confirmações.

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 estas confirmações.

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 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 paralelas às mesmas funções em RoundedPolygon (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() e pillStar() 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 baseada na âncora da curva de Bézier e nos pontos de controle), assim como os limites máximos possíveis, que podem ser úteis para determinar o tamanho do contêiner se ele for girado dentro desse contêiner. (I71827).

Mudanças na API

  • Agora, há mais opções para recuperar limites exatos e máximos. (I6d49f, b/317286450).

Correções de bugs

  • Houve 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 ao eliminar todas as curvas de comprimento zero, que as formas não precisam, o que também reduz 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

  • Essa versão contém várias mudanças na API, bem como correções de bugs.
  • Muitas das mudanças da API tornam a biblioteca Shapes compatível com o KMP. Isso facilita chamadas de códigos que não são do Android (como códigos do Compose independentes do Android). Por exemplo, não há tipos de Android na API, como os tipos anteriores PointF, Matrix e Path.
  • Também foram feitas várias mudanças nas APIs e na implementação por motivos de desempenho, especificamente para minimizar a alocação (e coleta) de objetos. Por exemplo, o movimento de PointF para parâmetros Float separados evita alocar muitas estruturas PointF temporárias para manter esses vértices.

Mudanças na API

  • Morph.asMutableCubics foi substituído por uma função para iterar no MutableCubics. Mudança da interface funcional PointTransformer. Agora, ela usa as coordenadas x e y de um Point e retorna um TransformedResult, que é construído com as coordenadas x e y transformadas (I6719e).
  • Remoção do construtor público Cubic e o transformou em uma função de fábrica. (I409ce).
  • Adição de APIs de transformação e desenho específicas do Android (I079f6, b/292289543).
  • Elimine as dependências do Android (Iadc1c, b/292289543).
  • Nomes de propriedades de âncora e controle são mais sensíveis agora (If13bd, b/294562941).
  • Mudança dos parâmetros PointF para pares Float (Id4705, b/276466399, b/290254314).
  • O progress agora é transmitido diretamente para os comandos de desenho do Morph (Icdca2).

Correções de bugs

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 ficam sem letra maiúscula e são chamadas pelo objeto complementar de RoundedPolygon, por exemplo, RoundedPolygon.star(...)(I14735).

Correções de bugs

  • Correção do bug na suavização (Ibf894).
  • Correção de um bug que ocorria quando as formas inicial e final eram as mesmas. Distribua melhor o espaço disponível ao lado para cortes, usando primeiro o espaço disponível para arredondamento e depois para suavização se houver espaço disponível. (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. todos os polígonos agora são, opcionalmente, polígonos arredondados.
  • A função Star, que ainda retorna um RoundedPolygon, como antes, agora usa um valor innerRadius, em vez do parâmetro innerRadiusRatio anterior. Ele tem as mesmas unidades que o parâmetro Root existente, o que torna as coisas mais simples e consistentes. Além disso, o parâmetro numOuterVertices foi renomeado como numVerticesPerRadius para esclarecer que o mesmo número é aplicado aos raios interno e externo.
  • Anteriormente, CornerRounding.radius foi documentado como sendo 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 fácil criação e renderização de formas poligonais arredondadas, bem como 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 de uma ramificação interna.

Novos recursos

  • Use a API Polygon para criar polígonos regulares e em 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 dos cantos, resultando em formas poligonais com cantos arredondados.
  • Use a nova API Morph(Polygon, Polygon) para calcular automaticamente uma forma de transformação cujo progresso pode ser definido de 0 a 1 para animar entre as formas inicial e final. Anime o progresso ao longo do tempo, mostrando 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 no desempenho de PathIterator na API < 34 (Id4629).

Versão 1.0.0-beta02

10 de janeiro de 2024

As mudanças nesta versão foram relacionadas à redução do tamanho da biblioteca, que era maior do 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 de libandroidx.graphics.path.so em 5%. (I2da7c).
  • Redução dos componentes nativos de androidx.graphics:graphics-path 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

Correções de bugs

  • Várias correções e melhorias de 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. Essa versão é desenvolvida em uma ramificação interna.

Novos recursos

  • Foi corrigido um problema com a verificação de versão interna da plataforma que causava problemas ao executar em visualizações do Android 14. A verificação de versão falhava, mas o mecanismo para fazer coisas em versões anteriores não funciona corretamente no Android 14 em particular.

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. Usando essa API, os autores da chamada podem iterar em todos os segmentos de um objeto Path para determinar a operação e os dados desses segmentos.
  • A biblioteca usa APIs semelhantes introduzidas na versão de pré-lançamento 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.1

4 de setembro de 2024

Lançamento de androidx.graphics:graphics-core:1.0.1. A versão 1.0.1 contém estas confirmações.

Correções de bugs

  • Correção do problema em que os recursos de memória não eram liberados de vez em quando.

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.

Principais recursos da versão 1.0.0

  • Versão estável oficial da biblioteca Graphics-Core. Inclui pequenas correções de bugs e melhorias no 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. Essa versão é desenvolvida em uma ramificação interna.

Correções de bugs

  • Correção do problema que causava o possível fechamento duplo de descritores de arquivo 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 gráficas 2D do Android (Canvas + Paint) na hierarquia de visualização.
  • A API CanvasBufferedRenderer foi introduzida para oferecer suporte à renderização de tela acelerada por hardware em uma HardwareBuffer. Isso pode ser usado para desenhar uma parte da interface do usuário em um buffer que pode ser convertido em um bitmap usando a API Bitmap.wrapHardwareBuffer.

Mudanças na API

  • A API CanvasBufferRenderer#releaseBuffer foi atualizada para ter um parâmetro de limite opcional. Atualizamos a documentação para descrever quando RenderResult#fence é retornado. (If1ea7).
  • O método draw foi adicionado ao RenderRequest para oferecer suporte ao uso de corrotinas para programar solicitações de desenho. O método de desenho anterior que consumia um executor foi renomeado como drawAsync. O método isClosed() foi refatorado para uma propriedade. (I5bff6).
  • Parâmetro de formato de buffer exposto para CanvasFrontBufferRenderer, para mapear diretamente para CanvasBufferedRenderer.Builder#setBufferFormat (I0f272).
  • Criação da API CanvasBufferedRenderer para processar a renderização de tela acelerada por hardware em uma HardwareBuffer. Isso fornece uma implementação de backport para o Android Q, além da configuração de uma profundidade de cadeia de troca de HardwareBuffers. A configuração ColorSpace ainda está limitada ao Android U e versões mais recentes. No entanto, a implementação de compatibilidade fornece comportamento de ambiente autônomo nos nome de usuário. (I9b1d8).
  • As APIs setFrameRate/clearFrameRate foram adicionadas ao SurfaceControlCompat.Transaction para controlar o frame rate com a estratégia de mudança e possibilitar transições perfeitas ou padrão. (I6045c).
  • O nível da API necessário do setDataSpace para o Android Q foi reduzido do Android T. (I59c34).
  • O callback onBufferReleased foi adicionado à API GLFrameBufferRenderer para oferecer 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 do SurfaceView, gerenciando internamente a instância SurfaceView que é traduzida fora/na tela para renderização sincronizada e de baixa latência, respectivamente. (I9253b).
  • Foi adicionado suporte à configuração de espaço de cores da API CanvasFrontBufferedRenderer. Atualização dos callbacks com vários buffers para incluir também o SurfaceControl com buffer traseiro (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 OpenGL, configuração de cadeia de troca, formatos de pixel e configuração de SurfaceControl. (Ic775b).

Mudanças na API

  • Foram adicionados parâmetros de largura + altura a várias APIs de callback para dimensões de barra vertical a partir de SurfaceHolder#Callbacks. (I7f9fc).
  • Foi adicionada uma API clara para limpar as camadas frontal e com vários buffers. (Ic1f95).
  • Foi adicionado suporte à configuração do tipo de buffer das cadeias de troca usadas em GLFrontBufferedRenderer (I07a13).
  • Foram adicionadas propriedades Kotlin para getters em GLFrameBufferRenderer, anotação IntRange para entradas máximas de buffer e anotações HardwareBufferFormart e HardwareBufferUsage para setFormat/setUsage, respectivamente. (Ief89e).
  • A API setBuffer foi atualizada em transações SurfaceControl para fornecer um limite de lançamento. (Ice1bb).
  • Foram adicionadas APIs SurfaceControlCompat.Transaction para configurar o espaço de dados e definir o intervalo de brilho estendido. (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

  • O CanvasFrontBufferedRenderer foi introduzido para oferecer suporte a gráficos de baixa latência, aproveitando a API android.graphics.Canvas com a implementação do OpenGL existente.

Mudanças na API

  • A API SurfaceControlCompat.Transaction#setBuffer foi atualizada para permitir que instâncias HardwareBuffer anuláveis espelhem a API de plataforma correspondente (I173d7).
  • Renomeação de métodos que se referem à renderização em buffer duplo para buffer múltiplo, já que a cadeia de troca de apoio pode conter mais de dois buffers. (I830d7).
  • Crie a API CanvasFrontBufferedRenderer para permitir que terceiros usem um sistema de renderização em buffer frontal usando a API Canvas. (Ibfc29).

Correções de bugs

  • Correção do problema em que GLFrontBufferedRenderer não renderizava conteúdo depois de retomar a atividade correspondente
  • Corrigimos o problema em que o conteúdo em buffer frontal era apagado prematuramente.
  • Correção do problema em que SurfaceHolder.Callbacks não era removido após o lançamento de 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 do callback GLFrontBufferedRenderer foi atualizada para fornecer o objeto BufferInfo que contém a largura/altura do buffer e 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).
  • Consolidamos a criação de SyncFence no método estático de fábrica em SyncFenceCompat.
  • Remoção do método de compatibilidade público de eglDupNativeFenceFDANDROID em favor do método de fábrica SyncFenceCompat para a criação do SyncFence. Isso garante que todas as plataformas de API recebam a implementação correta de SyncFence, independente do nível da API. (I849bb).
  • Foi adicionada a documentação para FrameBufferRenderer e SyncStrategy.
    • FrameBufferRenderer + FrameBuffer + FrameBufferPool movidos para o pacote androidx.graphics.opengl
    • SyncStrategy foi movido para o pacote androidx.graphics.opengl
    • Documentos atualizados: RenderCallback#onDraw
    • Atualizamos a documentação de RenderCallback#obtainFrameBuffer, que o implementador da API é responsável por chamar FrameBuffer.close.
    • onDrawComplete foi atualizado para indicar que os consumidores são responsáveis por enviar conteúdo para mostrar
    • As interfaces/classes de compatibilidade SyncFence foram movidas para o pacote androidx.hardware para espelhar o framework.
    • A API SyncFence foi renomeada como SyncFenceV19 e transformada em privada para consolidar os usos em SyncFenceCompat, que aproveita a API SyncFence do framework sempre que possível (I5149c).
  • Os métodos GLFrontBufferedRenderer#cancel e GLFrontBufferedRenderer#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. O último método é útil em cenários para manipular objetos na linha de execução GL sem precisar programar uma renderização. (If0b7f).
  • Foi adicionada uma API para renderizar diretamente na camada com 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 usar a renderização em buffer frontal dinamicamente com base na cena desejada para renderização. (Ied56c).
  • Foi adicionada uma nova API ao SurfaceControlCompat.Builder para oferecer suporte à configuração do SurfaceControl pai de outra instância da SurfaceControl, além do mecanismo já existente de um SurfaceView. (I1d1b6).
  • Mais nulidade do tipo de retorno das funções com uso oculto (Ibf7b0).
  • A constante de extensão EGL_ANDROID_get_native_client_buffer foi adicionada para consultar se o dispositivo Android oferece suporte à importação de instâncias de HardwareBuffer em objetos EGLClientBuffer que podem ser consumidos como uma instância EGLImage (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 no addTransactionCommitListener, 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, como SurfaceView, TextureView e outros.