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