Layout
레이아웃은 앱에서 사용자 인터페이스를 위한 구조를 정의한다. 이 레이아웃은 View 위젯들을 화면에 배치하는 과정에서, 위젯의 위치를 정렬하거나, 연관된 위젯들을 그룹화하는 역할을 수행한다. 즉, Layout 클래스는 View 위젯들을 그룹화하여 배치하기 위한 용도로 사용되는 ViewGroup이며, 자체적인 UI 표시 기능이나 사용자 이벤트 처리 기능은 매우 제한적이다.

Layout 종류
- LinearLayout
- RelativeLayout
- ConstraintLayout
- FrameLayout
- TableLayout
- GridLayout
- DrawerLayout
- 기타 레이아웃
LinearLayout
가로 혹은 세로로 순차적으로 쌓아나가는 레이아웃
대표적으로 많이 사용하는 레이아웃이다.

RelativeLayout
상대적으로 위치를 지정해주는 레이아웃
부모 뷰인 RelativeLayout을 기준으로 위치를 지정하거나 다른 뷰의 위치를 기준으로 위치를 지정해 줄 수 있다.

ConstraintLayout
RelativeLayout에 가중치를 추가하여 조금 더 발전된 레이아웃
부모 뷰를 기준으로 위치를 지정하거나 다른 뷰의 위치를 기준으로 위치를 지정해 줄 수 있고, 각 View의 크기를 유연하게 지정할 수 있다.

FrameLayout
여러 개의 뷰를 중첩시킬 수 있는 레이아웃
여러 개의 뷰를 중첩한 후 android:visibility를 설정하여 한가지의 뷰만 visible처리를 하여 보여주는 방식으로 사용한다.

TableLayout
View들을 표처럼 배치할 수 있는 레이아웃
<TableRow> 태그는 TableLayout의 행(Row)이 되고 TableRow안에 들어가는 뷰들의 수만큼의 열(Column)이 생기게 된다.

GridLayout
TableLayout의 좀 더 발전된 형태의 레이아웃
TableLayout과 LinearLayout이 합쳐진 레이아웃으로 LinearLayout과 마찬가지로 android:orientation을 설정해 세로 배치 또는 가로 배치를 설정해 줄 수 있다.

DrawerLayout
화면의 끝에서 가운데로 드래그하여 나타내는 보조 레이아웃
하지만 최신 안드로이드에서는 제스처 효과 때문에 드래그 기능은 막고 특정 버튼을 통해 띄울 수 있도록 사용하기를 권장하고 있다.

사진 출처