[Android] 안드로이드 뷰와 뷰 그룹, 레이아웃 종류

반응형

안드로이드나 iOS 개발은 사실 UI의 비중이 큽니다. 웹 프론트엔드 개발 보다 다양한 기술을 포함하긴 하지만 일단 화면을 잘 그릴 수 있어야 합니다. 때문에 안드로이드 앱 개발의 핵심 요소는 인터페이스 디자인과 생성이라고도 할 수 있습니다. 안드로이드의 화면 구성은 뷰와 뷰 그룹 그리고 레이아웃으로 이루어집니다. 

 

android view class hierarchy

뷰와 뷰 그룹

안드로이드 화면 인터페이스의 모든 컴포넌트는 View(android.view.View) 클래스의 서브 클래스입니다. 안드로이드는 TextView, Button, CheckBox 와 같은 여러가지 View의 서브 클래스를 제공합니다. 이런 뷰들을 위젯(Widget) 또는 컴포넌트(Component)라고 합니다. 또한 뷰를 서브클래싱 해서 새로운 위젯을 만들 수도 있으며 기존의 컴포넌트를 커스텀해서 사용할 수도 있습니다.

 

복합 뷰 (Composite View)

안드로이드 ViewGroup(android.view.ViewGroup) 클래스를 상속 받는 뷰 그릅은 여러개의 뷰로 구성된 복합 뷰 입니다. 복합 뷰는 부모 뷰와 자식 뷰로 이루어져 있으며 컨테이너 뷰 또는 루트 엘리먼트라고도 합니다. 레이아웃 매니저는 이 ViewGroup 기반의 컨테이너 뷰 입니다.

View Group

 

레이아웃 매니저 (Layout manager)

레이아웃은 ViewGroup의 서브 클래스이며 자식 뷰들의 배치를 관리하기 위한 레이아웃 용 뷰 그룹이라고 생각하면 됩니다. 안드로이드에는 다양한 레이아웃이 있으며 화면비율 또는 구성에 따라 적절한 레이아웃을 선택해서 사용할 수 있습니다. 전체 구조를 ConstraintLayout으로 배치하고 세부적으로 다양한 레이아웃을 사용해서 화면을 만드는 것이 일반적입니다.

 

  • ConstraintLayout - 최근에 포함된 레이아웃으로 현재 안드로이드 스튜디오에서 기본 레이아웃으로 채택되어 있습니다. 특별한 이유가 아니라면 전체 구조를 잡을 때는 ConstraintLayout을 사용하는 것이 좋습니다. 근접하는 뷰들에 제약을 추가해서 배치하며 유연하고 복잡한 레이아웃을 구성할 수 있습니다.
  • LinearLayout - 특정 방향에 따라 뷰를 배치하는 레이아웃으로 선형 배치로 생각하면 좋습니다. 행 또는 열로 배치되며 차례대로 자식 뷰들이 추가되며 자식 뷰의 영역을 가중치로 조절할 수 있습니다.
  • TableLayout - 격자 형태의 레이아웃으로 테이블 구조로 자식 뷰를 관리할 수 있습니다.
  • FrameLayout - 특정한 프레임에 자식 뷰를 포함하기 위한 레이아웃 입니다.
  • RelativeLayout - ConstraintLayout과 비슷하게 구성이 가능한 레이아웃입니다. 하지만 뷰가 많아지면 매우 복잡해질 수도 있어서 이 레이아웃을 사용할 바에는 ConstraintLayout을 사용하는 것을 추천합니다.
  • AbsoluteLayout - 특정 뷰를 해당 좌표 위치에 추가할 수 있습니다.

 

 

반응형

댓글

Designed by JB FACTORY