Android – drawline con aceleración de hardware y antialiasing causa artefactos

Estoy trabajando en una vista gráfica personalizada de Android que utiliza Canvas # drawLines y un objeto de pintura que tiene antialiasing activado. Mi vista tiene aceleración de hardware activada. De vez en cuando cuando pincho zoom in / out, algunas de las líneas en mi gráfico aparecerán desunidos y que tipo de conicidad en un gradiente. Si cambio a la capa de software o deshabilito antialiasing, el problema desaparece. ¿Se trata de un error con drawLines o alguien tiene una idea de lo que podría estar pasando?

La primera imagen muestra el problema, la segunda imagen se movió ligeramente y muestra cómo la gráfica se ve la mayor parte del tiempo, con líneas totalmente unidas.

(La imagen demuestra el problema) Introduzca aquí la descripción de la imagen

(Imagen que muestra cómo debe aparecer el gráfico – aún en par de brechas menores) Introduzca aquí la descripción de la imagen

Creo que este post de Romain Guy responde a algunas de sus preguntas: http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html

Esencialmente, el anti-aliasing no es compatible con drawLines cuando la aceleración de hardware está activada. También recuerde que la aceleración de hardware no siempre será "mejor" para su aplicación. Si lo que está dibujando se puede acelerar, su aplicación se beneficiará de ella, pero para ciertas operaciones podría ser peor.

Creo que eso explica por qué sus líneas aparecen desunidas cuando el hardware se acelera. No estoy muy seguro de que explique por qué funciona cuando se desactiva el anti-aliasing, sin embargo. Me imagino que parece desunido incluso con anti-aliasing off, pero claramente que no es el caso!

Intente forzar una actualización después de los gestos de cambio de tamaño.

Echa un vistazo a mi antigua aplicación de Toy Acelerómetro . (Sí, REALMENTE necesita actualizarse …) Si no ves el problema con esa aplicación, entonces probablemente puedo ayudar.

  • DrawLine problema con Paint.StrokeWidth = 1 en Android
  • Canvas .toDataURL () devuelve la imagen parcialmente dañada
  • Dibujo sobre tema de lona en dispositivos de gama alta
  • ¿Cuándo sincronizo métodos o utilizo bloques sincronizados en mis métodos en un juego de Android?
  • Cómo saber el tamaño de un texto al usar Canvas.drawText ()
  • Gridview, permite que el lienzo de fondo dibuje fuera de la vista
  • Android dibujar con desenfoque
  • Coordenadas no correspondientes
  • Cómo hacer lienzo área de dibujo transparente en android?
  • Lienzo dirección drawtext
  • Checkin si se presiona dentro de rectF en onTouchEvent
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.