뷰가 그려지는 건 레이아웃 트리의 루트노드 부터 시작하게 된다.
레이아웃 트리는 말 그대로 레이아웃에 있는 뷰 그룹이나 뷰 들을 트리행태로 나타난건데 예를 들면 이런 구조로 되어 있다면

이를 오른쪽 처럼 전위순회 하면서 그려지는 방식이다.
레이아웃을 그리는 과정은 측정패스(Measure Pass)와 레이아웃패스(Layout Pass)가 있다.
Measure Pass는 OnMeasure 메소드를 호출하는데 뷰의 크기를 결정하기 위한 메소드 이다.
Layout Pass는 OnLayout메소드를 호출하는데 뷰의 위치를 결정하기 위해 호출되는 메소드 이다.
만약 저 위 상태의 레이아웃 호출되는 순서를 보면 오른쪽 표처럼 전위순회하면서
onMeasure 메소드를 호출하고 이후 루트노드부터 다시 onLayout 메소드를 호출한다.
그리고 onDraw 메소드를 호출하여 뷰를 기리게 된다.
참고
onMeasure 메소드가 2번 나타나게 되는데 공식문서에 보면 한 번 측정하여 원하는 크기를 구한 다음 만약 그합의 크기가 너무 크거나 너무 작으면 measure를 다시 실행하여 구체적인 값을 구한다고 되어있다.
https://developer.android.com/guide/topics/ui/how-android-draws
참고
https://dog-footprint.tistory.com/41
안드로이드 뷰가 그려지는 과정
안녕하세요. 이번 포스팅에서는 안드로이드에서 뷰가 그려지는 과정에 대해 포스팅해보겠습니다. 액티비티가 포커스를 얻게 될때 레이아웃을 그리게 요청하는데요. 뷰가 그려지는 건 레이아웃
dog-footprint.tistory.com
'안드로이드 > CS' 카테고리의 다른 글
configChanges (0) | 2022.11.02 |
---|---|
QUERY_ALL_PACKAGES (0) | 2022.11.02 |
안드로이드 앱 서명 (1) | 2022.10.31 |
안드로이드 앱 번들 (0) | 2022.10.31 |
코틀린 Companion object, 자바 static 차이 (0) | 2022.10.27 |