Written by
lsm
on
on
TIL-View가 그려지는 순서
안드로이드 View가 그려지는 순서
- View는 Focus를 받게되면 화면을 그리게 됨
- root node에 그림 그릴 것을 요청
- root node는 setContentView 메소드를 통해 셋팅 가능한 뷰
- 뷰가 그리는 순서는 최상위 뷰부터 최하위 뷰까지 전위 순회 구조(traversed pre-order tree) 구조를 통해 그림
- 부모 뷰가 자식 뷰보다 먼저 그려짐
그리는 방식
1. Measure pass
- measure()를 포함한 전위 순회
- measure pass가 끝나면 모든 View는 View 측정치를 가지고 있음
2. Layout pass
- measure pass와 똑같은 전위순회
- measure pass에 측정된 값을 가지고 화면에 View를 배치
- View가 requestLayout()을 호출해 화면을 초기화
measure() -> onMeasure() -> layout() -> onLayout()
- measure : View 크기를 알기 위해 호출, 실제 크기 측정을 위해 onMeaure() 호출
- onMeasure : View의 실제 크기를 측정
- layout : View의 위치를 할당을 위해 호출, 실제 할당을 위해 onLayout 호출
- onLayout : 실제 View를 할당
References
- https://developer.android.com/guide/topics/ui/how-android-draws.html
- https://black-jin0427.tistory.com/190
- https://jungwoon.github.io/android/2019/10/02/How-to-draw-View/
- https://april-21.tistory.com/15