Ответ
Метод onDraw() вызывается каждый раз при необходимости перерисовки View. Частота зависит от частоты обновления экрана (обычно 60 Гц, то есть ~16.6 мс на кадр), но может быть реже, если:
- View не требует перерисовки (
invalidate()не вызывается) - Происходит пропуск кадров (jank)
- Используется
postInvalidateOnAnimation()для синхронизации с VSYNC
Пример:
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
// Вызывается при каждой перерисовке
}
Для анимаций лучше использовать ValueAnimator или Choreographer, а не полагаться на частоту onDraw().