*레이아웃(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 에서 발췌하였습니다.
'Android App > Kotlin' 카테고리의 다른 글
레이아웃(Layout) 사용 예제 (0) | 2022.11.02 |
---|---|
XML 태그의 구조, 주석 (0) | 2022.11.02 |
스코프 함수(run, let, apply, also, with) (0) | 2022.10.31 |
지연 초기화(lateinit, lazy) (1) | 2022.10.31 |
null 값에 대한 안정적인 처리(Null Safety) (0) | 2022.10.31 |