View / Layout

안드로이드 UI 구성 요소

View / Layout

View 구조


안드로이드의 뷰는 트리 구조로 최상위부터 최하위까지 Top-Down 방식으로 그려지며, 뷰가 그려지는 순서는 onMeasure(), onLayout(), onDraw() 순으로 그려진다.

onMeasure() 는 뷰의 크기를 정하고, onLayout() 은 뷰의 위치를 정하고, onDraw() 는 최종적으로 뷰를 Canvas 를 사용해 그린다.


Layout


안드로이드에서 사용되는 대표적인 레아아웃은 ConstraintLayut, LinearLayout 등이 있으며, 레이아웃이 중첩되면 성능이 저하되기 때문에 ConstraintLayut 을 사용해서 작업을 하는 것이 권장된다.

중첩된 레이아웃은 뷰의 계층 구조 깊이를 높이게 되어 뷰를 검색하고 측정하는데 더 많은 시간이 소요된다.

따라서 화면을 다시 그리거나 레이아웃을 다시 계산하는데 더 많은 시간을 소비하게 되어 화면 갱신이 느려질 수 있고, 이는 사용자 경험에 부정적인 영향을 미칠 수 있다.

또한 각 레이아웃은 메모리에 뷰를 저장하고 관리하기 때문에 중첩된 레아아웃을 사용하게 되면 더 많은 리소스를 필요로 해서 메모리 부족과 성능 저하를 유발할 수 있다.

LinearLayout

수평(Horizontal) 혹은 수직(Vertical)의 방향성을 가지고 있는 레이아웃이며, 뷰의 비율(layout_weight)을 조정할 수 있다.

RelativeLayout

다른 뷰를 기준으로 상대적인 위치와 방향을 조정할 수 있는 레이아웃이다.

FrameLayout

다른 뷰들과 겹쳐질 수 있도록 하는 레이아웃이다.

ConstraintLayout

각 뷰들에 제약 조건을 적용해서 크기와 위치를 정할 수 있는 레이아웃으로, LinearLayout 에서만 가능했던 뷰의 비율을 조정할 수 있고, RelativeLayout 에서는 불가능했던 자식 뷰들간에 상호 관계를 정의할 수 있다.

essential