(1)뷰와 뷰그룹

뷰(View)는 일반적으로 콘트롤이나 위젯이라는 이름으로 불리는 UI구성요소

뷰그룹(ViewGroup)은 뷰들을 여러 개 포함하고 있는 것

뷰그룹을 뷰에서 상속하면 뷰그룹도 뷰가 된다.

즉, 뷰그룹 역시 다시 하나의 뷰 라고 본다면 또 다른 뷰 그룹이 이 뷰그룹을 뷰처럼 다룰 수 있다.

: 컴포지트 패턴(Composite Pattern), 확장성이 뛰어남

[Object] <- [View] <- [ViewGroup] <- [LinearLayout] (뷰를 배치하는 레이아웃도 뷰를 상속)

                            <- [TextView] <- [Button]

 

- layout_width, layout_height : 뷰의 폭과 높이를 설정

속성값은 match_parent(무조건 남은 여유공간 채움), wrap_content(뷰에 들어있는 내용물 크기만큼 뷰사이즈 설정)

android:layout_width="wrap_content"

android:layout_height="wrap_content"

뷰의 크기지정 단위

px(픽셀) : 화면 픽셀

dp, dip(밀도 독립적 픽셀) : density independent pixel

sp, sip(축척 독립적 픽셀) : scale independent pixel

in(인치)

mm(밀리미터)

em(텍스트크기)

- id : 뷰의 id를 지정

android:id="@+id/button"

- background : 뷰의 배경을 설정

지정하지 않으면 디폴트 회색으로 지정

색상지정 포맷 ARGB (A: Alpha, R: Red, G:Green, B: Blue)

#RRGGBB

#AARRGGBB

 

(2)레이아웃

레이아웃 /res/layout/mail.xml 파일이 디폴트로 생성된다.

기본 레이아웃

- 리니어 레이아웃 : 박스 모델

- 상대 레이아웃 : 룰 기반 모델 ex) top, bottom

- 절대 레이아웃 : 절대 위치 모델(좌표값)-미지원

- 테이블 레이아웃 : 격차 모델 ex) columns, rows

- 스크롤 뷰

 

뷰 배치속성

- 채우기(fill model) : 부모의 여유공간을 채우는 방식

- 방향(orientation)

- 정렬방향(gravity)

- 여유공간(padding)

- 공간가중치(weight)

 

(3)리니어 레이아웃 (LinearLayout)

ㅇ  앱이 실행될 때 처음 보이는 액티비티를 매니페스트에서 바꾸어줄 수 있다. (AndroidManifest.xml)

<activity android:name="sampleActivity">

 

ㅇ 안드로이드에서 컨텍스트 (context) 객체의 역할은?

일반적으로 문맥 이라는 의미로 쓰이지만, 안드로이드 에서는 객체의 상태 정보로 표현됨.

UI구성요소인 뷰에 대한 정보를 손쉽게 확인하거나 설정 할 수 있도록 뷰의 생성자에 Context객체를 전달

 

ㅇ layout_gravity 와 gravity 의 차이점

layout_gravity는 부모 컨테이너의 여유공간 내에서 뷰가 모두 채워지지 않은 공간내에서 뷰의 정렬

: 화면에서 버튼의 정렬 위치

gravity는 뷰 내에서 표시되는 내용물의 정렬, 단. wrap_content상태에서는 의미없음

: 버튼에 표시되는 텍스트의 정렬 위치

: 속성값들

top, bottom, left, right,

center_vertical, center_horizontal (수직, 수평방향의 중앙에 배치)

fill_vertical, fill_horizontal (수직,수평방향으로 여유 공간만큼 확대하여 채우기)

center (수직방향과 수평방향의 중앙에 배치하기)

fill (수직방향과 수평방향으로 여유 공간만큼 확대하여 채우기)

clip_vertical, clip_horizontal (대상 객체의 상하, 좌우 길이가 여유 공간보다 클 경우 남는 부분 잘라내기)

 

ㅇ 여유공간 설정 (padding/margin)

보통 버튼이나 텍스트뷰와 같이 화면을 구성하는 콘트롤을 뷰 중에서도 '위젯' 이라고 부르는데 위젯이나 뷰 들은 부모 컨테이너로 부터 할당된 공간을 차지하게 되며 이를 위젯 셀(cell) 이라고 부른다.

- 뷰 내에서 글자나 이미 같은 내용물이 차지하는 사이즈와의 여백 공간을 paddingLeft/Right/Top/Bottom

 : 뷰 내부의 여백

- 위젯 셀 내부에서 뷰가 차지하는 공간과의 여백 공간을 layout_marginLeft, layout_margieTop

 : 부모 여유공간과 뷰 사이의 여백

 

ㅇ 공간가중치 (layout_weight)

뷰의 중요도를 의미하는 것으로 그 값의 비율만큼 뷰에게 여유공간을 할당

1:1, 1:2, 1:3 과 같이 비율로 지정

 

(4)상대 레이아웃 (RelativeLayout)

부모 컨테이너나 다른 뷰와의 상대적인 위치를 이용해 뷰의 위치 결정

예를들어 버튼A 가 있다면 추가되는 버튼B는 버튼A의 오른쪽 아래, 버튼C는 버튼A의 아래 같은식

 

ㅇ 상대 레이아웃에서 부모 컨테이너와의 상대적 위치를 이용하는 속성

layout_alignParentTop   부모 컨테이너의 위쪽과 뷰의 위쪽을 맞춤

layout_alignParentBottom

layout_alignParentLeft

layout_alignParentRight

layout_centerHorizontal   부모 컨테이너의 수평 방향 중앙에 배치

layout_centerVertical   부모 컨테이너의 수직 방향 중앙에 배치

layout_centerInParent   부모 컨테이너의 수평과 수직 방향 중앙에 배치

 

ㅇ 다른 뷰 와의 상대적 위치지정 속성

layout_above   지정한 뷰의 위쪽에 배치

layout_below   지정한 뷰의 아래쪽에 배치

layout_toLeftOf   지정한 뷰의 왼쪽에 배치

layout_toRightOf   지정한 뷰의 오른쪽에 배치

layout_alignTop   지정한 뷰의 위쪽과 맞춤

layout_alignBottom   지정한 뷰의 아래쪽과 맞춤

layout_alignLeft   지정한 뷰의 왼쪽과 맞춤

layout_alignRight   지정한 뷰의 오른쪽과 맞춤

layout_alignBaseline   지정한 뷰와 내용물의 아래쪽 기준선을 맞춤

by wisegirl 2013. 3. 1. 00:38