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.0-beta01 -
caminho gráfico - - 1.0.0-beta02 -
formas gráficas - - - 1.0.0-alpha05
Esta biblioteca foi atualizada pela última vez em 7 de fevereiro 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.0-beta01"
    implementation "androidx.graphics:graphics-path:1.0.0-beta02"
    implementation "androidx.graphics:graphics-shapes:1.0.0-alpha05"
}

Kotlin

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

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-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 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 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).
  • 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 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 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 valor innerRadius, em vez do parâmetro innerRadiusRatio 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âmetro numOuterVertices foi renomeado como numVerticesPerRadius 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.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

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-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 um HardwareBuffer. 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 API Bitmap.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 quando RenderResult#fence é retornado. (If1ea7).
  • O método draw foi adicionado a RenderRequest 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 como drawAsync. Refatoração do método isClosed() para uma propriedade (I5bff6).
  • Parâmetro de formato de buffer exposto para CanvasFrontBufferRenderer a fim de mapear diretamente para CanvasBufferedRenderer.Builder#setBufferFormat (I0f272).
  • Criação da API CanvasBufferedRenderer para lidar com a renderização de tela acelerada por hardware em um 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 de ColorSpace 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 ao SurfaceControlCompat.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 à API GLFrameBufferRenderer 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 de SurfaceView, gerenciando internamente a instância SurfaceView 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 o SurfaceControl 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 de SurfaceControl. (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ção IntRange para entradas de buffer máximo 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 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 API android.graphics.Canvas com a implementação atual do OpenGL.

Mudanças na API

  • A API SurfaceControlCompat.Transaction#setBuffer foi atualizada para permitir que instâncias HardwareBuffer 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 objeto BufferInfo 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 em SyncFenceCompat.
  • O método de compatibilidade pública de eglDupNativeFenceFDANDROID foi removido e substituído pelo método de fábrica SyncFenceCompat para a criação de SyncFence Isso garante que todas as plataformas da API recebam a implementação correta da SyncFence, independente do nível da API. (I849bb).
  • Foi adicionada documentação para FrameBufferRenderer e SyncStrategy
    • FrameBufferRenderer + FrameBuffer + FrameBufferPool foram movidos para o pacote androidx.graphics.opengl
    • SyncStrategy foi movido para o pacote androidx.graphics.opengl
    • RenderCallback#onDraw documentos atualizados
    • Atualização da documentação de RenderCallback#obtainFrameBuffer informando 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 a tela.
    • 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 tornada particular para consolidar os usos para 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. 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 do SurfaceControl pai de outra instância de SurfaceControl, além do mecanismo existente de um SurfaceView (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âncias HardwareBuffer para 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.