로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
심화

안드로이드 앱 프로그래밍

임시 이미지 정재곤
http://www.boostcourse.org/mo316/notice/2564
좋아요 1436 수강생 20099
아래의 글은 BOOSTER 서포터즈로 활동했던 bmj0***님이
작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/bmj0178/221796197225
2)작성날짜: 20/02/04
<본문작성>

1) 대표적인 레이아웃 살펴보기


학습 목표

1. 대표적인 레이아웃으로는 어떤 것들이 있는지 살펴봅시다.

2. 대표적인 레이아웃이 어떻게 사용될 수 있을 지 설명해봅시다.

학습하기

- *표 위주로 본다.

1. 제약 레이아웃

- 제약 조건 사용해 화면 구성

- 디폴트 레이아웃

2. 리니어 레이아웃*

- 박스 모델(방향 지정하여 한쪽으로 쭉 쌓음)

3. 상대 레이아웃*

- 상대적 위치로 화면 구성(제약 레이아웃(최근에 만들어짐)과 유사)

- 두가지 관계 (1) 뷰(위젯), 부모와의 관계 (2) 다른 레이아웃과의 관계

4. 프레임 레이아웃*

- 가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법(중첩하여 쌓임)

- 필요시 다른 뷰를 가장 위쪽으로 올리던지, 상위 뷰를 안보이게 만드는 식

5. 테이블 레이아웃

- 격자모델

6. 뷰의 영역

- 마진 : 뷰가 다른 것과 얼마나 떨어져 있을 지

- 패딩 : 내용물과 테두리 간의 거리

생각해보기

1.리니어 레이아웃 안에 리니어 레이아웃을 포함시키면 어떤 화면이든 다 만들 수 있는 걸까요?

- 리니어 레이아웃은 뷰들이 순서대로 정렬이 되기 때문에, 다른 레이아웃이 갖는 특성을 구현해낼 수 없을 것 같다.


2) 리니어 레이아웃


학습 목표

1. 리니어 레이아웃이 어떤 것인지 이해하고 간단한 몇 개의 뷰를 추가해봅시다.

2. 리니어 레이아웃 안에 넣은 뷰에 추가할 수 있는 대표적인 속성들이 어떻게 적용되는지 설명해봅시다.

학습하기

**.xml : layout file-> 화면 바꾸기 위해 xml 파일 수정한다.

**화면배치 -> layout

1. 리니어 레이아웃

(1) component tree의 최상위 레이아웃을 LinearLayout로 바꿀 것

- xml 파일(text)에서 제약 레이아웃(default) -> 리니어 레이아웃로 바꿔준다.

제약 레이아웃: <androidx.constraintlayout.widget.ConstraintLayout xmlns:></androidx.constraintlayout.widget.ConstraintLayout>

리니어 레이아웃: <LinearLayout xmlns:></LinearLayout>

(2) orientation(horizontal<수평>, vertical<수직>)을 정해줘야 한다.

(:리니어 레이아웃은 박스모델이기 때문에 정해진 방향(orientation)으로 뷰들이 쌓이는 형식이다.)

- default(지정 안할 시): horizontal

- common attribute의 orientation에서 설정 -> xml 파일에 속성이 자연스럽게 추가

android:orientation="vertical"

- 위젯을 화면 어디에 드래그 해도 설정한 방향으로 순서대로 쌓인다.

// 아래의 속성들은 ALL ATTRIBUTE 에서 찾을 수 있다

(3) Layout gravity : 여유공간 안에서 뷰 정렬

(4) gravity : 뷰 안 내용물 정렬

(5) Layout margin : 테두리 바깥쪽 폭을 정한다.

(6) padding : 테두리와 뷰의 내용물 사이 폭을 정한다.

(7) textsize : 텍스트의 크기/ dp, sp (전체적인 화면의 비율을 보고 맞추는 경우도 있다.)

(8) textcolor : 텍스트의 색상

(9) background : 배경색 지정

(10) layoutweight : 남아있는 공간을 분할하는 역할

-orientation이 horizontal 일 때, 한개의 위젯을 추가했을 때 wrap_content 임에도 불구하고 match_parent인 것처럼 보이는데 이는 android:layout_weight="1" 이기 때문이다. 1은 비율을 말하며 한개의 위젯이 1만큼의 크기를 차지함으로 남아있는 공간을 모두 차지하기 때문에 match_parent 처럼 보이는 것이다.

layout_weight="1"

layout_weight="1"(1/2), layout_weight="1"(1/2)

layout_weight="3"(3/5), layout_weight="2"(2/5)

생각해보기

1. 리니어 레이아웃 안에 리니어 레이아웃을 포함시키면 어떤 화면이든 다 만들 수 있는 걸까요?

- 리니어 레이아웃은 뷰들이 순서대로 정렬이 되기 때문에, 다른 레이아웃이 갖는 특성을 구현해낼 수 없을 것 같다.

2. 화면의 위, 아래 끝에 작은 뷰를 배치하고 싶다면 리니어 레이아웃을 쓰는 것보다 더 좋은 방법이 있을까요?

- 제약 혹은 상대 레이아웃을 쓴다.

 

*********************************************