No puedo obtener lisa animación de texto muy lento en un lienzo porque Canvas.drawText
no desea dibujar "entre píxeles". Por ejemplo, dados 4 marcos consecutivos donde dibujo un texto con un desplazamiento Y de 0, 0.5, 1, 1.5, el lienzo en realidad lo dibujará en los desplazamientos 0, 0, 1, 1, respectivamente, lo que hace que la animación sea " espasmódico". Hay una bandera llamada Paint.SUBPIXEL_TEXT_FLAG
que se supone que mantiene la precisión del flotador.Una animación de texto suave muy lenta en un lienzo de Android, SUBPIXEL_TEXT_FLAG no funciona
Encontré un hilo relacionado en el que Romain Guy dijo que esta bandera actualmente no es compatible con Android: Meaning of some Paint constants in Android.
Mi pregunta es: ¿hay alguna solución existente?
Nota: Dibujar el texto en otro mapa de bits una vez, luego dibujar este mapa de bits con compensaciones flotantes en lugar de dibujar el texto, tampoco parece funcionar.
Gracias por su respuesta, esa es una solución bastante buena, y de hecho está cerca de lo que esperaba 'Paint.SUBPIXEL_TEXT_FLAG' hacer. Aunque tiene algunas desventajas. El texto se dibuja dos veces, y con antialiasing, que causa un efecto borroso no deseado junto con un _fake bold_ text, más o menos. Trataré de jugar un poco con eso, pero por lo que puedo ver, todavía no es fácil. Tenga en cuenta que estoy usando una pantalla de 42 "con una resolución de 1280x720: un píxel es bastante grande y la animación está muy lejos de ser uniforme. – Joan
De hecho, el texto se verá en negrita, pero debe tener en cuenta que, dado que El texto no se puede dibujar entre dos píxeles, por lo que tiene que trabajar con eso dibujándolo en dos píxeles. No creo que haya otra solución, pero, por supuesto, el algoritmo puede mejorarse. – DayS
Te retendré publicado, si no puedo encontrar algo mejor, me resignaré y validaré tu respuesta. :) Por ahora, espero que haya un truco de magia en alguna parte. – Joan