Метод
View.invalidate() шедулит перерисовку view. Результат вызова этого метода – асинхронный вызов
onDraw().
invalidate() используется, когда нужно перерисовать view без изменения размеров, например когда изменяется цвет бэкграунда.
Метод
View.requestLayout() асинхронно вызывает методы
onMesure() и
onLayout() на текущей view и на всех родителях.
Этот метод используется, чтобы обновить view после изменения размеров.
На картинке изображен жизненный цикл view и то, как на него влияют
invalidate() и
requestLayout(), но есть одна неточность:
requestLayout() не гарантирует вызов
onDraw().
Чтобы обновить view,
requestLayout() следует вызывать вместе с
invalidate().