graphics

  
Aprovecha las instalaciones de gráficos en diferentes versiones de la plataforma de Android.

En esta tabla, se enumeran todos los artefactos del grupo androidx.graphics.

Artefacto Versión estable Versión potencial Versión beta Versión alfa
núcleos-gráficos - 1.0.0-rc01 - -
ruta de los gráficos 1.0.0 - - -
formas de gráficos - - - 1.0.0-alpha05
Esta biblioteca se actualizó por última vez el 17 de abril de 2024.

Cómo declarar dependencias

Para agregar una dependencia en Graphics, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.0-rc01"
    implementation "androidx.graphics:graphics-path:1.0.0"
    implementation "androidx.graphics:graphics-shapes:1.0.0-alpha05"
}

Kotlin

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

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

No hay notas de la versión para este artefacto.

Graphics Shapes versión 1.0

Versión 1.0.0-alpha05

7 de febrero de 2024

Lanzamiento de androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05 y androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Nuevas funciones

  • La biblioteca ahora ofrece nuevas funciones pill() y pillStar() para crear fácilmente estas formas redondeadas o destacadas. También hay nuevas APIs para calcular los límites exactos que se requieren para una forma (los límites anteriores eran solo una estimación basada en los puntos de control y el anclaje de la curva subyacente de Bézier), así como los límites máximos posibles, que pueden ser útiles para determinar el tamaño del contenedor que la contiene si se rotará dentro de ese contenedor. (I71827).

Cambios en la API

  • Ahora hay más opciones para recuperar los límites exactos y máximos. (I6d49f, b/317286450).

Correcciones de errores

  • Ocasionalmente, se producían artefactos de renderización cuando se dibujaban estas formas como rutas con trazo, debido a un problema de renderización de bajo nivel relacionado con las curvas de longitud cero. Este error se corrigió eliminando todas las curvas de longitud cero (que las formas no necesitan, por lo que también ahorran la sobrecarga de las rutas producidas por las formas).

Versión 1.0.0-alpha04

13 de diciembre de 2023

Lanzamiento de androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04 y androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Esta versión incluye varios cambios en la API, así como correcciones de errores.
  • Muchos de los cambios en la API hacen que la biblioteca de Shapes sea compatible con KMP. De esta manera, es más fácil llamar desde código que no sea de Android (como el código de Compose independiente de Android). Por ejemplo, no hay tipos de Android en la API, como los tipos anteriores de PointF, Matrix y Path.
  • También se realizaron varios cambios en las APIs y la implementación por motivos de rendimiento, específicamente para minimizar la asignación (y recopilación) de objetos. Por ejemplo, el movimiento de PointF a parámetros de número de punto flotante separados evita la asignación de muchas estructuras de PointF temporales para contener esos vértices.

Cambios en la API

  • Se reemplazó Morph.asMutableCubics por una función para iterar en MutableCubics. Se cambió la interfaz funcional PointTransformer. Ahora toma las coordenadas x e y de una Point y muestra un TransformedResult (que se construye con las coordenadas x e y transformadas) (I6719e)
  • Se quitó el constructor público Cubic y se convirtió en una función de fábrica. (I409ce).
  • Se agregaron APIs de dibujo y transformación específicas de Android (I079f6, b/292289543).
  • Se eliminaron las dependencias de Android. (Iadc1c, b/292289543)
  • Ahora los nombres de las propiedades de anclaje y de control son más sensibles (If13bd, b/294562941).
  • Se cambiaron los parámetros PointF a pares Float. (Id4705, b/276466399, b/290254314)
  • Ahora, progress se pasa directamente a los comandos de dibujo Morph (Icdca2).

Correcciones de errores

  • Se corrigió el error que se producía cuando se creaban formas grandes. (I4fd66, b/313497325).

Versión 1.0.0-alpha03

7 de junio de 2023

Lanzamiento de androidx.graphics:graphics-shapes:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó una nueva función RoundedPolygon.rectangle() (I78e7e, b/280322189).
  • Las funciones de estrella y círculo ahora se quitan de las mayúsculas y se llaman mediante el objeto complementario de RoundedPolygon, p.ej., RoundedPolygon.star(...)(I14735).

Correcciones de errores

  • Se corrigió el error de suavizado (Ibf894).
  • Se corrigió un error que ocurría cuando las formas de inicio y fin eran iguales. Distribuye mejor el espacio disponible al costado para los cortes. Primero, usa el espacio disponible para redondear y, luego, si queda espacio, para suavizar. (Ibd320, b/277936300).

Versión 1.0.0-alpha02

19 de abril de 2023

Lanzamiento de androidx.graphics:graphics-shapes:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se combinó la superclase Polygon con su subclase RoundedPolygon. Ahora, todos los polígonos son polígonos redondeados [opcionalmente].
  • La función Star (que todavía muestra un RoundedPolygon, como antes) ahora toma un valor innerRadius, en lugar del parámetro innerRadiusRatio anterior. Está en las mismas unidades que el parámetro de radio existente, lo que hace que los elementos sean más simples y coherentes. Además, se cambió el nombre del parámetro numOuterVertices por numVerticesPerRadius para aclarar que se aplica el mismo número a los radios interno y externo.
  • Anteriormente, se documentó que CornerRounding.radius tenía relación con el tamaño del polígono, pero era (y debería ser) un valor absoluto, no relativo. Se actualizaron los documentos y se corrigió la anotación que limitaba su valor máximo a 1.0.

Versión 1.0.0-alpha01

5 de abril de 2023

Graphics-Shapes es una nueva biblioteca que permite la creación y el procesamiento de formas poligonales redondeadas, además de la transformación simple y automática (animación) entre diferentes formas.

Lanzamiento de androidx.graphics:graphics-shapes:1.0.0-alpha01. Esta versión se lanzó a partir de una rama interna.

Nuevas funciones

  • Usa la API de Polygon para crear polígonos regulares y en estrella con la cantidad deseada de vértices.
  • Usa los parámetros opcionales CornerRounding para especificar el radio de redondeo y los parámetros de suavizado de las esquinas, lo que genera formas poligonales con esquinas redondeadas.
  • Usa la nueva API de Morph(Polygon, Polygon) para calcular automáticamente una forma "transformada" cuyo progreso se pueda establecer de 0 a 1 para animar entre las formas inicial y final. Anima el progreso con el tiempo y dibuja el resultado en cada fotograma para crear una animación fluida entre estas nuevas formas redondeadas.

Graphics Path versión 1.0

Versión 1.0.0

6 de marzo de 2024

Lanzamiento de androidx.graphics:graphics-path:1.0.0.

Versión 1.0.0-rc01

21 de febrero de 2024

Lanzamiento de androidx.graphics:graphics-path:1.0.0-rc01. La versión 1.0.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Se mejoró el rendimiento de PathIterator en la API inferior a 34 (Id4629).

Versión 1.0.0-beta02

10 de enero de 2024

Los cambios en esta versión se centraron en la reducción del tamaño de la biblioteca, que era más grande de lo necesario debido a las suposiciones que realizaba el código nativo.

Lanzamiento de androidx.graphics:graphics-path:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se redujo el tamaño de libandroidx.graphics.path.so en un 96%. (I71397).
  • Reduce el tamaño de libandroidx.graphics.path.so en un 5%. (I2da7c).
  • Se redujeron los componentes nativos de androidx.graphics:graphics-path en un 43%. (I8e40d).

Versión 1.0.0-beta01

29 de noviembre de 2023

Lanzamiento de androidx.graphics:graphics-path:1.0.0-beta01. La Versión 1.0.0-beta01 contiene estas confirmaciones.

Cambios en la API

Correcciones de errores

  • Se implementaron varias correcciones y mejoras de rendimiento, incluida la forma en que la biblioteca aborda las cónicas.

Versión 1.0.0-alpha02

7 de junio de 2023

Lanzamiento de androidx.graphics:graphics-path:1.0.0-alpha02. Esta versión se desarrolla en una rama interna.

Nuevas funciones

  • Se corrigió el problema con la verificación interna de la versión de la plataforma que causaba problemas cuando se ejecutaba en las versiones preliminares de Android 14 (la verificación de versión fallaba, pero el mecanismo para realizar tareas en versiones anteriores no funcionaba correctamente en Android 14, en particular).

Versión 1.0.0-alpha01

22 de marzo de 2023

Lanzamiento de androidx.graphics:graphics-path:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Esta biblioteca nueva permite consultar datos de ruta a través de la nueva API de PathIterator. Con esta API, los emisores pueden iterar a través de todos los segmentos de un objeto Path para determinar la operación y los datos de esos segmentos.
  • La biblioteca usa APIs similares introducidas en la versión preliminar de Android 14, pero esta versión de AndroidX de la API también funciona en versiones anteriores a la API 21.

Graphics Core versión 1.0

Versión 1.0.0-rc01

17 de abril de 2024

Lanzamiento de androidx.graphics:graphics-core:1.0.0-rc01. Esta versión se desarrolla en una rama interna.

Correcciones de errores

  • Se solucionó el problema que generaba un posible cierre doble de descriptores de archivos con CanvasBufferedRendererAPI con ciertos dispositivos Android que ejecutaban Android 14
  • Se solucionó un problema por el que FrameBuffer no borraba correctamente las instancias del búfer de fotogramas

Versión 1.0.0-beta01

13 de diciembre de 2023

Lanzamiento de androidx.graphics:graphics-core:1.0.0-beta01. La Versión 1.0.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Se introdujo una nueva API de LowLatencyCanvasView para admitir la renderización de baja latencia con las APIs de gráficos en 2D de Android (Canvas + Paint) dentro de la jerarquía de vistas.
  • Se introdujo la API de CanvasBufferedRenderer para admitir la renderización de Canvas acelerada por hardware en una HardwareBuffer. Se puede usar para dibujar una parte de una interfaz de usuario en un búfer que se puede convertir en un mapa de bits mediante la API de Bitmap.wrapHardwareBuffer.

Cambios en la API

  • Se actualizó la API de CanvasBufferRenderer#releaseBuffer para que tenga un parámetro de valla opcional Se actualizó la documentación para describir cuándo se muestra RenderResult#fence. (If1ea7).
  • Se agregó el método draw a RenderRequest para admitir el uso de corrutinas y programar solicitudes de dibujo. Se cambió el nombre del método de dibujo anterior que consumía un ejecutor a drawAsync Se refactorizó el método isClosed() en una propiedad. (I5bff6).
  • Se expuso el parámetro de formato del búfer a CanvasFrontBufferRenderer para asignarlo directamente a CanvasBufferedRenderer.Builder#setBufferFormat (I0f272).
  • Se creó la API de CanvasBufferedRenderer para controlar la renderización de lienzo acelerado por hardware en un HardwareBuffer. Esto proporciona una implementación de portabilidad a versiones anteriores para Android Q junto con la configuración de una profundidad de cadena de intercambio de HardwareBuffers. La configuración de ColorSpace sigue limitada a Android U y versiones posteriores, pero la implementación de compatibilidad proporciona un comportamiento no operativo por parte de los desarrolladores. (I9b1d8).
  • Se agregaron las APIs de setFrameRate/clearFrameRate a SurfaceControlCompat.Transaction para controlar la velocidad de fotogramas junto con la estrategia de cambio y obtener transiciones predeterminadas o fluidas. (I6045c).
  • Se redujo el nivel de API requerido para setDataSpace a Android Q desde Android T. (I59c34).
  • Se agregó la devolución de llamada onBufferReleased a la API de GLFrameBufferRenderer para brindar a los consumidores la oportunidad de limpiar el estado cuando ya no se presenta un búfer (I8a4e2).
  • Se creó LowLatencyCanvasView para admitir un caso de uso simple de renderización de contenido con baja latencia que se sincroniza con la renderización de la jerarquía de vistas. Esto evita las complejidades asociadas con la administración de SurfaceView mediante la administración interna de la instancia de SurfaceView que se traduce en la pantalla para la renderización sincronizada y de baja latencia, respectivamente. (I9253b).
  • Se agregó compatibilidad con la configuración del espacio de color a la API de CanvasFrontBufferedRenderer Se actualizaron las devoluciones de llamada con almacenamiento en búfer múltiples para que también se incluyan SurfaceControl con búfer hacia atrás (I24bd9).

Versión 1.0.0-alpha05

6 de septiembre de 2023

Lanzamiento de androidx.graphics:graphics-core:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Nuevas funciones

  • Se introdujo la API de GLFrameBufferRenderer. Esto proporciona una combinación de dependencias de OpenGL, configuración de la cadena de intercambio, formatos de píxeles y configuración de SurfaceControl. (Ic775b).

Cambios en la API

  • Se agregaron parámetros de ancho y alto a varias APIs de devolución de llamada a las dimensiones de la canalización desde SurfaceHolder#Callbacks. (I7f9fc).
  • Se agregó una API simple para borrar las capas frontal y múltiples con búfer (Ic1f95).
  • Se agregó compatibilidad para configurar el tipo de búfer subyacente de las cadenas de intercambio usadas en GLFrontBufferedRenderer (I07a13).
  • Se agregaron propiedades de Kotlin para métodos get en GLFrameBufferRenderer, anotación IntRange para entradas de búfer máximas y anotaciones HardwareBufferFormart y HardwareBufferUsage para setFormat/setUsage, respectivamente. (Ief89e).
  • Se actualizó la API de setBuffer en transacciones de SurfaceControl para proporcionar una valla de liberación (Ice1bb).
  • Se agregaron APIs de SurfaceControlCompat.Transaction para configurar el espacio de datos y el rango de brillo extendido. (Ic378d).

Versión 1.0.0-alpha04

7 de junio de 2023

Lanzamiento de androidx.graphics:graphics-core:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó CanvasFrontBufferedRenderer para admitir gráficos de baja latencia aprovechando la API de android.graphics.Canvas junto con la implementación de OpenGL existente

Cambios en la API

  • Se actualizó la API de SurfaceControlCompat.Transaction#setBuffer para permitir que las instancias de HardwareBuffer anulables dupliquen la API de la plataforma correspondiente (I173d7).
  • El nombre de los métodos hacen referencia a la renderización con búfer doble a Con búfer múltiple, ya que la cadena de intercambio de respaldo puede contener más de 2 búferes. (I830d7).
  • Se creó la API de CanvasFrontBufferedRenderer para permitir que 3ps aprovechen un sistema de renderización con búfer frontal mediante la API de Canvas. (Ibfc29).

Correcciones de errores

  • Se solucionó el problema por el que GLFrontBufferedRenderer no renderizaba contenido después de reanudar la Activity correspondiente.
  • Se solucionó el problema por el que el contenido almacenado en búfer frontal se borraba de forma prematura
  • Se solucionó el problema por el que no se quitaba SurfaceHolder.Callbacks después de que se lanzaran las APIs de gráficos de baja latencia.

Versión 1.0.0-alpha03

22 de marzo de 2023

Lanzamiento de androidx.graphics:graphics-core:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se actualizó la implementación de devolución de llamada GLFrontBufferedRenderer para proporcionar un objeto BufferInfo que contiene el ancho o la altura del búfer junto con un identificador de búfer de marco que se puede usar para volver a segmentar el destino original después de la renderización en un búfer temporal intermedio. (I7fe20).
  • Se consolidó la creación de SyncFence en un método de fábrica estático en SyncFenceCompat.
  • Se quitó el método de compatibilidad pública para eglDupNativeFenceFDANDROID y se reemplazó por el método de fábrica SyncFenceCompat para la creación de SyncFence Esto permite garantizar que todas las plataformas de API reciban la implementación correcta de SyncFence, independientemente del nivel de API. (I849bb).
  • Se agregó documentación para FrameBufferRenderer y SyncStrategy.
    • Se movieron FrameBufferRenderer + FrameBuffer + FrameBufferPool al paquete androidx.graphics.opengl
    • Se movió SyncStrategy al paquete androidx.graphics.opengl
    • Se actualizaron RenderCallback#onDraw documentos
    • Se actualizó la documentación de RenderCallback#obtainFrameBuffer que el implementador de la API es responsable de llamar a FrameBuffer.close.
    • Se actualizó onDrawComplete para indicar que los consumidores son responsables de enviar el contenido que se mostrará.
    • Se trasladaron las interfaces o clases de compatibilidad de SyncFence al paquete androidx.hardware para duplicar el framework.
    • Se cambió el nombre de la API de SyncFence por SyncFenceV19 y se hizo privado para consolidar los usos en SyncFenceCompat, lo que aprovecha la API de SyncFence del framework siempre que sea posible. (I5149c).
  • Se agregaron los métodos GLFrontBufferedRenderer#cancel y GLFrontBufferedRenderer#execute. El primero es útil en situaciones de rechazo de la palma en las que la renderización en el búfer frontal debe cancelarse y ocultarse. Esta última opción es útil en situaciones para manipular objetos en el subproceso de GL sin tener que programar una renderización. (If0b7f).
  • Se agregó una API para renderizar directamente en la capa con búfer doble Esto ayuda a volver a renderizar una escena tras la reanudación y les da la oportunidad a los consumidores para determinar selectivamente cuándo aprovechar la renderización en búfer frontal de forma dinámica según la escena deseada que se debe renderizar. (Ied56c).
  • Se agregó una nueva API a SurfaceControlCompat.Builder para admitir la configuración del SurfaceControl superior desde otra instancia de SurfaceControl, además del mecanismo existente de un SurfaceView (I1d1b6).
  • Se aumentó la nulabilidad de tipo de datos que se muestra de las funciones ocultas obsoletas (Ibf7b0).
  • Se agregó la constante de extensión EGL_ANDROID_get_native_client_buffer para consultar si el dispositivo Android admite la importación de instancias de HardwareBuffer a objetos EGLClientBuffer que se pueden consumir como una instancia de EGLImage. (Iad767).
  • Se agregó la anotación @JvmDefaultWithCompatibility (I8f206).

Versión 1.0.0-alpha02

9 de noviembre de 2022

Lanzamiento de androidx.graphics:graphics-core:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se corrigió la anotación RequiresApi faltante para addTransactionCommitListener, que se introdujo en Android S. (I0a035)
  • Se actualizaron las devoluciones de llamada del búfer onDraw<Front/Double> para proporcionar una matriz de transformación que los consumidores puedan pasar a sus sombreadores de Vertex, además del ancho y la altura del búfer actual. Los consumidores son responsables de usar estos parámetros para prerrotar el código de renderización de OpenGL correctamente. (I82f9e)

Correcciones de errores

  • Se mejoró la latencia de los gráficos mediante la rotación previa de búferes antes de emitir transacciones SurfaceControl.
  • Se solucionó el problema por el que los registros de errores mostraban el error 300d (EGL_BAD_SURFACE).
  • Se corrigió el problema por el que GLFrontBufferedRenderer no era válido después de que se reanudaba la actividad correspondiente en la que se usaba.
  • Mayor compatibilidad con emuladores y dispositivos ChromeOS.
  • Se solucionó el problema por el cual la capa almacenada en búfer frontal podía ocultarse antes de tiempo.

Versión 1.0.0-alpha01

24 de octubre de 2022

Lanzamiento de androidx.graphics:graphics-core:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Versión inicial de la biblioteca de gráficos principales de AndroidX. Esto incluye las APIs para admitir casos de uso de latencia baja, como la entrada de pluma stylus. También se presentan algunas APIs auxiliares para el uso de OpenGL.

Cambios en la API

  • Se introdujo GLFrontBufferedRenderer para ayudar en la renderización frontal y en búfer múltiple a fin de lograr resultados renderización de baja latencia y alta calidad.
  • Se introdujo la API de GLRenderer para ayudar en la renderización de OpenGL para varios proveedores de plataformas, como SurfaceView y TextureView, entre otros.