Ответ
invalidate() перерисовывает View без изменения его размеров или положения. Он помечает область View как "грязную", и система вызывает onDraw() при следующем проходе рендеринга.
requestLayout() запрашивает пересчет layout-параметров (размеров и положения). Вызывает onMeasure() и onLayout() для View и его родителей, если нужно.
Пример:
// Просто перерисовываем View
myView.invalidate()
// Запрашиваем перерасчет layout (например, после изменения размеров)
myView.requestLayout()
Ключевые отличия:
invalidate()- только перерисовкаrequestLayout()- перерасчет layout + перерисовкаrequestLayout()затрагивает родительские Viewinvalidate()работает быстрее