본문 바로가기
Android App/Kotlin

레이아웃(Layout)

by AppJinny 2022. 11. 2.

*레이아웃(Layout)

-'lay something out : 펼쳐놓다'

-책이나 광고 등 일정 공간에 목적과 시각적 효과를 고려해 요소를 배치하는 것

-소스코드가 아닌 리소스로 분류됨

-리소스 파일 : 이미지, MP3, DB 등 소스 코드 파일을 제외한 모든 파일

-파일명은 모두 소문자로 작성하고 파일타입은 xml

-위젯을 포함한 화면 요소들의 배치를 담당하는 레이아웃

--ConstraintLayout : 안드로이드 기본 레이아웃, 배치되는 위젯 사이에 간단한 제약조건 설정만으로 화면 구성

--LinearLayout : 가로 또는 세로 한 줄로 배치하기 위한 레이아웃

--FrameLayout: 위젯을 중첩하기위한 레이아웃

--RelativeLayout : 레거시(이제 업데이트를 지원하지 않는 레이아웃), 위젯을 자유롭게 배치 가능, 중첩가능함

--GridLayout : 레거시(이제 업데이트를 지원하지 않는 레이아웃)

-레이아웃 안에서 보조도구 사용가능

--ScrollView : 스크롤 할 수 있는 뷰, 최상위 레이아웃으로 사용하거나 레이아웃 안에 사용

--Space : 빈 공간을 만듦

 

*ConstraintLayout

-핸들러(Handler) : 위젯 상하좌우에 있는 4개의 동그라미, 연결상태 시 색이 채워지며 연결해제 시 빈 동그라미

-컨스트레인트(Constraint) : 핸들러를 레이아웃의 가장자리나 위젯의 핸들러와 연결 시 나타나는 주름무늬 선

-앵커 포인트(Anchor Point) : 컨스트레인트가 연결될 수 있는 부위

-크기조절 핸들러(세 가지 모드) : 상하 또는 좌우 양쪽에 컨스트레인트가 연결되었을 때 사용, 핸들러 가운데 사각박스 안의 >> << 모양 클릭

--랩 컨텐트(Wrap Content) : 위젯의 크기를 내용물의 크기에 맞춤(텍스트 뷰의 경우 문자의 크기에 맞춰 크기 조절)

--매치 컨스트레인트(Match Constraint) : 컨스트레인트의 시작과 끝(앵커포인트)에 맞춰 크기조절

--픽스드(Fixed) : layout_width(길이), layout_height(높이) 속성에 입력된 크기(dp)로 고정

-바이어스(Bias) : 위치조절 버튼, 상하 또는 좌우 양쪽이 같이 연결되었을 때 위치조절 버튼 활성화

바이어스 설정 시

-가로세로비 설정(Aspect Ratio) : 매치 컨스트레인트 설정 시 좌측 위 모서리에 작은 삼각형 사용, 위젯의 가로세로 비율 변경

-레이아웃 툴바 :

컨스트레인트 레이아웃 툴바

-체이닝(Chaining) : 컨스트레인트로 연결된 위젯끼리 서로의 위치값으로 공유해 상대적인 값으로 크기와 위치 결정

--4개 버튼(위 2개, 아래 2개)을 체이닝 하려고 할 때 : 모두 선택 후 적용하면 원하는 결과가 나오지 않음, 한 줄씩 체인을 적용해야 함

--먼저 위쪽에 있는 버튼 2개 선택 후 [우클릭] - [Chains] - [Create Horizontal Chain(가로축 체인 생성)]

--같은 방법으로 아래 버튼 2개도 가로축으로 체인 연결

--좌측 버튼 세로축으로 2개 연결 후 오른쪽 버튼도 연결 [우클릭] - [Chains] - [Create Vertical Chain(가로축 체인 생성)]

--4개 버튼 모두 선택 후 layout_width, layout_height 값 : 0dp(match_constraint)

-가이드라인(GuideLine) : 가상의 앵커포인트(컨스트레인트 레이아웃에서만 사용가능한 보조도구)

 

*리니어 레이아웃(LinearLayout)

-위젯을 가로 또는 세로 한 줄로 배치하기 위한 레이아웃

-리니어 레이아웃 사용 시 컨스트레인트 레이아웃 안에 추가하면 그래픽 처리 속도가 느려지기 때문에

-기본 레이아웃인 컨스트레인트 레이아웃 삭제 후 리니어 레이아웃(LinearLayout)으로 변경

-orientation : horizental(가로, 기본값)또는 vertical(세로) 설정 시 위젯 나열방향 변경

-layout_weight : 레이아웃 안에서 배치되는 위젯의 크기를 비율로 나타냄

--정확한 비율값 : layout_width, layout_height 값을 0dp로 입력하고 사용

 

*gravity 속성과 layout_gravity 속성

-gravity : 레이아웃에 삽입되는 위젯안 속성을 설정된 방향으로 정렬, 동시에 2개 선택가능

-layout_gravity : 부모 레이아웃을 기준으로 자신의 위치를 설정할 때 사용

-gravity는 버튼 내부의 텍스트 위치가 변경되지만 layout_gravity는 버튼 자신의 위치가 변경됨

 

*프레임 레이아웃(FrameLayout)

-입력되는 위젯의 위치를 결정하기보다 위젯을 중첩해서 사용하기 위한 레이아웃

-주로 게임화면처럼 배경과 플레이어가 서로 다른 레이어에서 겹쳐 움직여야할 때 사용

-레이아웃 중 처리속도가 가장 빠르며, 1개의 이미지만 화면에 보여주는 등 단순한 형태로 사용할 경우 성능이 좋음

-필수 속성이 따로 없음

 

**보조도구

*스크롤뷰(ScrollView)

-스크롤 할 수 있는 뷰, 최상위 레이아웃으로 사용하거나 레이아웃 안에 사용

*스페이스(Space)

-빈 여백을 만들 수 있음

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="btn01"/>

<Space
    android:layout_width="20dp"
    android:layout_height="wrap_content"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="btn02"/>




이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.