뷰와 뷰 그룹
안드로이드 화면에서 화면 표시에 사용되는 클래스들은 모두 view라는 클래스의 상속을 받은 객체이다.
이러한 클래스를 위젯 또는 뷰라고 부른다.
또한 다른 위젯을 담을 수 있는 위젯은 ViewGroup 클래스의 하위에 존재하는데, 이렇게 다른 위젯을 담을 수 있는 클래스를 레이아웃이라고 한다.
-> UI, 화면그리기
-> xml 소스를 UI 툴로 편집이 가능
구성
<요소
속성이름 = "속성값"
속성이름 = "속성값".../>
</요소>
기본 속성
- id : 요소들을 구분하는 식별자, xml이나 java코드에서 해당 UI 구성요소를 지정할 수 있는 고유 값
- layout_width : 가로크기
- layout_height : 세로크기
- background : 생상, 이미지(colors.xml에 정의된 값 사용가능)
- text : 내부 텍스트 명, 직접 입력하거나 string.xml 에 정의된 값 사용가능
- txetSize : 내부 텍스트 폰트 사이즈
- fontfamily : 폰트 종류
- margin : 외부 여백 크기 (layout 종류에 따라 이름이 다를 수 있다)
- padding : 내부 여백 크기
- gravity : 내부 구성 요소의 위치
속성값
wrap_content : 내부 구성 요소에 따라 컨텐츠의 크기를 조정
match_parent : 부모 속성 요소와 동일하게 컨텐츠의 크기를 조정
숫자로 크기를 지정 : 10px, 20dp, 30sp
단위
- px : 픽셀, 화면밀도와 관계가 없고, 스크인상의 실제 픽셀에 대응하는 단위
- dp(dip : Density-Independent Pixcel) : 여러 밀도의 화면에서 일정한 크기를 보여줄 수 있도록 제공되는 치수, px = dp * (dpi / 160)과 같이 계산
- sp(Scale-Independent Pixcel) : dp와 유사한 기능을 한다. 추가적으로 사용자의 설정에 따라 변경되는 텍스트 크기를 반영
- pt(Points) : 화면밀도, 픽셀과 관계가 없고, 1pt는 물리적 화면 크기의 1/72인치
- in(Inches) : 화면밀도, 픽셀과 관계가 없고, 물리적 화면 크기의 1인치
- mm(milimeters) : 화면밀도, 픽셀과 관계가 없고, 물리적 화면 크기의 1mm
-> 화면 밀도 : 물리적 화면 공간에 있는 픽셀의 갯수, 일반적으로 dpi(dots per inch)라고 함.
-> ldpi (저밀도) : ~120dpi
mdpi (중간 밀도) : ~160dpi
hdpi (고밀도) : ~240dpi
xhdpi (초고밀도) : ~320dpi
xxhdpi (초초고밀도) : ~480dpi
xxxhdpi : ~640dpi
=================================================
뷰 그룹
=================================================
LinearLayout : 뷰를 수직 혹은 수평으로 배치할 수 있는 뷰
orientation 속성을 통해 배치방향을 결정 할 수 있다.
1. linear layout에서 gravity와 layout_gravity :
gravity는 부모뷰에 정의, 자식뷰가 내부 어디에 위치하는지를 정의
layout_gravity는 자식뷰가 부모뷰의 어디에 위치하는지를 정의
2. layout_weight 속성
크기가 정해져 있지 않을 경우 가중치를 정해 자식뷰의 크기 비율을 결정
=================================================
RelativeLayout : 자식 뷰 또는 부모 뷰 간의 관계에 따라 배치를 적용하는 레이아웃
1. RelativeLayout의 기본 속성(부모 뷰에 정의)
gravity 자식뷰의 중력 방향 결정
ignoregravity gravity 설정 상태에서 특정 자식 뷰에 대해 gravity 속성을 무시
2. 부모 뷰 그룹간의 관계에 따른 배치(자식 뷰에 정의) == 1번 항목에 위배되지 않을 경우 적용
layout_alignPrentStart 부모 뷰 그룹 영역에서 좌측에 배치
layout_centerHorizontal 부모 뷰 수평 영역에서 중앙에 배치
layout_alignPrentEnd 부모 뷰 그룹 영역에서 우측에 배치
layout_alignPrentTop 부모 뷰 그룹 영역에서 상단에 배치
layout_alignPrentBottom 부모 뷰 그룹 영역에서 하단에 배치
3. 자식 뷰 간의 관계 배치 속성
layout_above = [기준이 되는 뷰 ID] 기준이 되는 뷰의 상단에 배치
layout_below = [기준이 되는 뷰 ID] 기준이 되는 뷰의 하단에 배치
layout_toStartOf = [기준이 되는 뷰 ID] 기준이 되는 뷰의 좌측에 배치
layout_toEndOf = [기준이 되는 뷰 ID] 기준이 되는 뷰의 우측에 배치
=================================================
FrameLayout : 여러개의 뷰를 중첩으로 배치하고 그 중 하나를 레이아웃 전면에 표시할 때 사용하는 레이아웃
액자(Frame)에 그림을 끼우면 제일 앞에 끼워진 그림이 전면에 보여지듯이, 가장 마지막으로 추가된 자식 뷰 위젯이 전면에 겹쳐서 표시되는 레이아웃
=================================================
ConstraintLayout : 구성 시, 뷰 위젯의 위치와 크기를 유연하게 조절할 수 있게 만들어주는 레이아웃
레이아웃에 배치되는 뷰들에 여러 제약(Constraint)을 적용하여 각 뷰의 위치와 크기를 결정
layout_constraintXXX 와 같이 구체적인 제약조건을 지정
=================================================
TextView : 화면에 고정된 텍스트 문자열을 고정하는 뷰
=================================================
EditText : TextView에게서 상속받은 클래스, 사용자에게 입력을 받을 수 있는 뷰, 입력기능을 제외하고 텍스트 뷰와 동일
hint : 사용자 입력전에 보여지면, 입력하면 사라지는 속성(placeholder)
=================================================
Button : 클릭할 수 있는 버튼
ImageButton : 이미지를 설정 할 수 있는 버튼
scaleType : fitcenter : scaleType을 fillcenter로 지정하여야 일정한 비율로 크기를 변경 가능
background:@android:color/transparent : 배경색 제거
scrCompat : 이미지 버튼 이미지에 대한 위치를 지정
contentDescription : 이미지 버튼을 사용할 경우 해당 속성을 사용하여 주석을 달아주어야 함
=================================================
Switch : 두 개의 상태를 표시하는 버튼
showText : 스위치에 표시되는 텍스트를 사용할 것인지 유무
textOff : 스위치 Off 상태일 경우 표시하는 텍스트 - showText 속성이 true로 정의도어 있어야 동작
textOn : 스위치 On 상태일 경우 표시하는 텍스트 - showText 속성이 true로 정의도어 있어야 동작
checked : 스위치의 default 값을 지정
=================================================
CheckBox : 체크됨, 체크되지 않음 을 표시하는 버튼
Checked : 디폴트 체크 상태를 설정
'Android' 카테고리의 다른 글
| Android 초기 설정·개념 (0) | 2021.12.05 |
|---|
