Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Cómo optimizar la vista

Ahora que tienes una vista bien diseñada que responde a gestos y transiciones entre estados, asegúrate de que se ejecute con rapidez. Para evitar una IU lenta o inestable durante la reproducción, asegúrate de que las animaciones se ejecuten de forma coherente a 60 fotogramas por segundo.

Haz menos, con menos frecuencia

Para acelerar tu vista, elimina el código innecesario de las rutinas que se llaman con frecuencia. Comienza trabajando en onDraw(), que te dará el mayor beneficio. En particular, debes eliminar las asignaciones en onDraw(), porque las asignaciones pueden conducir a una recolección de elementos no utilizados que causaría inestabilidades. Asigna objetos durante la inicialización, o bien entre animaciones. Nunca hagas una asignación mientras se ejecuta una animación.

Además de agilizar onDraw(), asegúrate también de que reciba la menor cantidad de llamadas posible. La mayoría de las llamadas a onDraw() son el resultado de una llamada a invalidate(), por lo que debes eliminar las llamadas innecesarias a invalidate().

Otra operación muy costosa es desviar diseños. Cada vez que una vista llama a requestLayout(), el sistema de IU de Android debe desviar toda la jerarquía de vistas para averiguar qué tan grande debe ser cada vista. Si encuentras mediciones en conflicto, es posible que debas atravesar la jerarquía varias veces. Los diseñadores de IU a veces crean jerarquías detalladas de objetos ViewGroup anidados para que la IU se comporte correctamente. Estas jerarquías detalladas causan problemas de rendimiento. Diseña tus jerarquías con la mayor simpleza posible.

Si tienes una IU compleja, considera crear un ViewGroup personalizado para realizar su diseño. A diferencia de las vistas integradas, la vista personalizada puede hacer suposiciones específicas de la aplicación sobre el tamaño y la forma de sus elementos secundarios, y así evitar el desvío de los elementos secundarios para calcular las medidas. El ejemplo de PieChart muestra cómo extender ViewGroup como parte de una vista personalizada. PieChart tiene vistas secundarias, pero nunca las mide. En su lugar, establece los tamaños directamente según su propio algoritmo de diseño personalizado.