본문 바로가기
Android

[안드로이드] View가 그려지는 과정

by Sky Titan 2020. 8. 23.
728x90

※참조 링크 :

 

[안드로이드] 뷰가 그려지는 과정

이어지는 글     안드로이드 레이아웃       뷰가 그려지는 과정    ◀ 현재 위치 읽기전에 손가락 한번 클릭~ >_< 고마워요 ~ Chu ~ ♥ 안드로이드의 레이아웃에 관한 글입니다. 안드로이드

namsieon.com

 

 

안드로이드 면접 | 현우의 개발노트

View가 그려지는 과정 뷰는 포커스를 얻으면 레이아웃을 그리도록 요청한다. 이때 레이아웃의 계층구조 중 루트 뷰를 제공해야한다. 따라서 그리기는 루트노드에서 시작되어 트리를 따라 전위 ��

hyeonu1258.github.io

view의 생명주기

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

댓글