본문 바로가기
📱 Android

[Android] invalidate()와 requestLayout()의 차이

by DEV_DAON 2023. 11. 21.

오늘은 Andoid에서 사용하는 invalidate()requestLayout()의 차이에 대해 알아보겠다!

 

View의 생명주기

 

우선 View의 생명주기를 알아놓으면 좋다.

 

invalidate는 onDraw를 반드시 호출하지만, 사이즈를 지정하는 콜백인 onMeasure가 호출되진 않는다.

그러므로 Size가 변하지 않는다.

 

requestLayout은 invalidate와 반대로 onMeasure를 호출하지만, onDraw를 반드시 호출하진 않는다.

대신 onMeasure가 호출되므로 Size가 업데이트된다.

 

즉, 단순한 변경 사항을 보여주기 위하여 다시 그리는 경우엔 invalidate를 사용하고 사이즈가 바뀌어 뷰 간의 경계에도 영향을 준다면 requestLayout을 호출해서 사용하자!