[Android] - 레이아웃을 어떻게 하면 잘 구성할 수 있을까?

명준쓰·2023년 6월 21일
0
post-thumbnail

안녕하세요 오늘은 화면을 보기좋게 구성하는 여러가지 레이아웃의 간단한 정리와 가이드라인을 포스팅 해보겠습니다.

안드로이드는 여러가지 디바이스들이 존재하고 디바이스마다 각 크기가 다르기 때문에 어느 디바이스에서도 일관된 경험을 할 수 있게 구성을 해야 합니다. 또한 기능 구현을 할 때도 신경을 써야하지만 landscape, portrait 등 화면 회전 요소도 생각을 해야합니다.

먼저 안드로이드 스튜디오에서 화면을 구하는데 사용하는 6가지 레이아웃을 먼저 살펴보겠습니다.


출처 https://recipes4dev.tistory.com/66

LinearLayout

LinearLayout은 요소들을 수평 또는 수직으로 정렬하기 위한 컨테이너 역할을 하는 레이아웃입니다.

LinearLayout은 카카오톡 채팅방이나 채팅방 목록등의 레이아웃을 확인하면 쉽게 이해하실 수 있습니다.

단순한 구조로 뷰를 이루는대 효과적이며 구조가 간단하고 계산 비용이 적어 성능이 우수합니다.
하지만 복잡한 UI구성을 할 때는 LinearLayout으로는 힘든 경우가 많아 단순한 UI구성이나 선형적인 요소 정렬이 필요할 때 사용하시면 좋습니다.

RelativeLayout

RelativeLayout은 상대적인 위치에 따라 뷰를 배치하는데 사용됩니다. 뷰 간의 상대적인 위치를 지정하여 유연하고 복잡한 UI 구성이 가능합니다.

여러 속성으로 다양한 UI구성을 가능하게 해주는 레이아웃입니다. 하지만 계층 구조가 복잡해질수록 성느이 저하될 수 있으므로, 최대한 계층 구조를 단순하게 유지해줘야 합니다.

FrameLayout

FrameLayout은 자식으로 추가된 여러 뷰 위젯들 중 하나를 Layout의 전면에 표시할 때 사용하는 레이아웃입니다. 스택구조로 이루어지며 가장 최근에 추가된 view가 가장 상위의 위치합니다.

주로 Fragment의 컨테이너 역할로써 FrameLayout을 사용합니다.

간단하면서도 유연한 레이아웃으로, 단일 뷰나 여러뷰를 겹쳐서 사용, 상태 변화에 따라 뷰를 변경하는 등 여러가지 상황에서 쓸 수 잇는 뷰 입니다.
그러나 겹치는 뷰가 많아질수록 가독성과 유지보수성이 떨어지므로, FrameLayout을 너무 많이 사용하는 것은 권장하지않습니다.

TableLayout

TableLayout은 자식 View 위젯들을 테이블(행과 열)로 나누어 표시하는 Layout 클래스입니다.

제가 생각했을 때 계산기 만큼 TableLayout을 잘 설명할 수 있는 그림은 없는것 같습니다.

행과 열의 구조를 가지고 있고 구조화된 데이터를 표현하는데 가장 적합한 뷰 입니다.(제 생각...)
Table 형태로 데이터를 표현하는데 특화되어 있어 다른 유형의 레이아웃에 비해서는 유연성이 많이 떨어지는 편입니다.

ListView

ListView는 데이터를 세로 목록 형태로 표시하는 데 사용되는 뷰입니다.
ListView와 같은 뷰 그룹은 스크롤 기능을 지원하며 사용자가 배치된 각 항목을 선택하는것도 가능합니다.

ListView에 사용자가 정의한 데이터를 표시하기 위해서는 Adapter를 사용해야 합니다.

예전에는 저도 프로젝트를 진행하며 게시판 형태의 UI를 만들때는 꼭 ListView를 사용했엇습니다.(요즘은 RecyclerView 사용중...)
많은 양의 데이터를 목록 표시를 하기 위한 효과적인 뷰입니다.

GridView

GridView는 격자 형식으로 데이터를 표시하는 다목적 뷰입니다.


위의 그림과 같이 목록은 행과 열로 나뉘어 격자 형태로 표시되며, 각 격자는 목록 아이템을 나타냅니다.
물론 ListView와 마찬가지로 데이터를 표시하기 위해서는 Adpater를 사용해야 합니다.

GridView의 장점으로는 격자 형식으로 데이터를 표현하기 때문에 직관적인 UI를 제공합니다.
또한 스크롤이 가능해 많은 양의 데이터를 처리할 수 있고 다양한 커스터마이징을 통해 개발자가 원하는 모양과 동작을 구현할 수 있습니다.

단점으로는 고정된 크기의 격자를 사용해 다양한 화면 크기와 방향에 대한 대응을 해줘야합니다.
또한 아이템의 크기가 가변적일 경우에는 GridView는 부적합합니다.


안드로이드에서 많이 쓰이느 6가지의 레이아웃의 기본적인 포스팅이기 때문에 더 자세한 내용은 Android docs를 참고하시면 공부하실 때 도움이 됩니다.

profile
개린이

0개의 댓글