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.
- Cómo dibujar el juego en Android Canvas con un montón de primitivos
- Chartv Donut desaparece
- Añadir un oyente táctil a imágenes en lienzo girado
- SVG en el navegador de Android
- Escala de lona y mantenimiento de centro
(La imagen demuestra el problema)
(Imagen que muestra cómo debe aparecer el gráfico – aún en par de brechas menores)
- Copiar contenido de lienzo a otro lienzo similar a amaziograph app de iphone
- Lona de Android, múltiples rutas con diferentes cantidades de zoom
- Configuración de varios elementos personalizados en MultiAutoCompleteTextView: Android
- Lanzar una lona de Android
- Dibujar cuadrado con esquinas redondeadas
- Android dibujo sobre lienzo
- Cómo dibujar un gráfico en android como Wifi Analyzer App?
- Dibuje la forma transparente sobre lienzo
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.