※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※
View가 그려지는 과정
뷰 포커싱 -> 레이아웃 그리도록 요청 -> 루트노드(최상단 부모 뷰)에서부터 트리를 따라 전위순회
-> 부모 뷰는 자식 뷰 뒤에 그려짐 -> 형제 뷰는 전위 방식에 따라 그려짐
( 즉, 그저 전위순회를 따라 그려짐. 다만 먼저 그려지는 부모 뷰는 자식 뷰의 뒤에 그려진다는 것을 생각.)
전위순회(Pre-order Traversal)
root -> Left -> Right ( 부모노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드)

A - B - C - E - D - F - G
레이아웃을 그리는 과정은 측정(measure) 단계와 레이아웃(layout)단계로 그려진다.
measure 메서드
public final void measure(int widthMeasureSpec, int heightMeasureSpec)
- 뷰의 크기를 알아내기위해 호출
- 뷰의 크기를 측정하는 것은 measure 내부에 있는 onMeasure(int,int)에서 측정
layout 메서드
public void layout(int l, int t, int r, int b)
- 뷰와 자식 뷰들의 크기와 위치를 할당할 때 사용
- measure(int,int)에 의해 각 뷰에 저장된 크기를 사용하여 위치 지정
- onLayout()를 호출하고 onLayout()에서 실제 뷰의 위치를 할당
뷰의 measure 메서드가 호출될 때 뷰의 width와 heigth가 설정 -> 만약 자식 뷰의 측정값이 너무 크거나 작으면
-> measure()메서드를 다시 호출하여 크기를 재측정.
반응형
'gyub's 공부일기 > 그저 내 공부' 카테고리의 다른 글
Iterator (0) | 2021.04.01 |
---|---|
Vector vs ArrayList vs LinkedList (0) | 2021.04.01 |
String Literal (0) | 2021.04.01 |
Activity LifeCycle (0) | 2021.03.31 |
View Lifecycle (0) | 2021.03.31 |