(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 지정한 뷰와 내용물의 아래쪽 기준선을 맞춤
RECENT COMMENT