728x90
※참조 링크 :
View가 그려지는 과정
- 액티비티가 포커스를 얻으면 자신의 레이아웃을 그리도록 요청된다.
- 이 때 액티비티에 레이아웃의 계층구조 중 루트(root) 노드를 제공해야한다.
- 즉 그리기는 레이아웃의 루트 노드에서 시작되며 레이아웃 트리를 따라 이동해가며 그려지게 된다.
- 트리에서 부모 뷰는 자식 뷰 이전에 그려지고 자식 뷰들은 전위순회 방식의 순서로 그려진다.
레이아웃을 그리는 과정은 '측정순서'와 '레이아웃 순서' 로 나뉨
1. 측정 순서 measure(int, int)
메서드 | 파라미터 | 설명 |
measure | int widthMeasureSpec | - 뷰의 크기를 결정하기 위해 호출되는 메서드 - 부모는 width, height에 관한 제약정보를 제공한다. - 실제 뷰의 측정 작업은 onMeasure 메서드에서 진행된다. |
int heightMeasureSpec |
2. 레이아웃 순서 layout(int, int, int, int)
메서드 | 파라미터 | 설명 |
layout | int l | - 뷰와 자식 뷰들의 크기, 위치를 할당(결정) 한다. - layout 메커니즘의 두 번째 단계 - 부모는 측정된 크기를 사용하여 모든 자식 뷰들의 레이아웃 위치를 결정한다. - 파라미터 값들은 각각 부모 레이아웃에 대한 상대적 위치 |
int t | ||
int r | ||
int b |
- measure() 메서드가 리턴될 때, getMeasuredWidth(), getMeasuredHeight() 메서드의 값이 설정됨 (자식 뷰들의 값도 포함
- measure(), layout() 메서드는 내부적으로 onMeasure(), onLayout() 메서드 호출
728x90
'Android' 카테고리의 다른 글
[안드로이드] TabLayout과 ViewPager 사용 (0) | 2020.08.23 |
---|---|
[안드로이드 JetPack] 데이터 바인딩 (0) | 2020.08.23 |
[안드로이드] Parcelable (0) | 2020.08.22 |
[안드로이드] ANR (0) | 2020.08.22 |
[안드로이드] AsyncTask (0) | 2020.08.22 |
댓글