사용자 인터페이스 (UI: User Interface)
**안드로이드의 사용자 인터페이스는 자바에서 기본적으로 제공하는 Swing이 아니다. Swing은 데스크톱 애플리케이션에 적합한 것으로 모바일 기기는 화면의 크기가 작고 CPU의 성능이 다소 떨어지기 떄문에 Swing이 제대로 돌아가지 않는다.
1. 뷰그룹(레이아웃)
- 다른 뷰들을 담는 컨테이너 기능을 한다.
- ViewCroup 클래스에서 상속받아서 작성된다.
2. 뷰(컨트롤,위젯)
- View 클래스(모든 뷰들의 부모 클래스)를 상속받아서 작성된다.
뷰의 위치와 크기
- 뷰의 위치와 크기는 부의 배치를 담당하는 뷰그룹 객체에 의하여 전적으로 결정된다.
- xml 속성 앞에 layout이 붙으면 뷰그룹 객체가 배치를 위하여 사용하는 속성이 된다.
- 뷰의 실제 위치는 getLeft()와 getTop()으로 얻을수 있고, 실제 너비와 실제 높이는 getWidth()와 getHeight()로 얻을 수 있다.
상수 |
설명 |
match_parent |
부모의 크기를 꽉 채운다.(fill_parent도 같은 의미) |
wrap_content |
뷰가 나타내는 내용물의 크기에 맞춘다. |
숫자 |
크기를 정확히 지정한다. |
크기를 나타내는 단위
단위 |
설명 |
px (pixels) |
화면의 실제 픽셀을 나타낸다. 픽셀은 권장되는 단위는 아닌데 그 이유는 장치마다 화면으 밀도가 다르기 때 문이다. |
dp (density-independent pixels) |
dp는 화면의 밀도가 160dpi 화면에서 하나의 물리적인 픽셀을 말한다. 따라서 크기를 160dp로 지정하면 화 면의 밀도와는 상관없이 항상 1인치가 된다. dp로 뷰의 크기를 지정하면 화면의 밀도가 다르더라도 항상 동 일한 크기로 표시된다. |
sp (scale-independent pixels) |
화면 밀도와 사용자가 지정한 폰트 크디에 영향을 받아서 변환된다. 이 단위는 폰트 크기를 지정하는 경우에 추천된다. |
pt (points) |
1/72 인치를 표시한다. |
mm (millimeters) |
밀리미터를 나타낸다. |
in (inches) |
인치를 나타낸다. |
그리기
- 뷰를 그리는 것은 안드로이드 프레임워크의 책임이다. 프레임워크는 뷰들의 트리를 순회하면서 각 뷰들을 그린다.
- 부모 뷰들이 먼저 그려지고 자식들이 나중에 그려진다.
- 만약 뷰를 강제적으로 그리게 하고 싶으면 invalidate()를 호출하면 된다.
- 만약 초기에 뷰의 표시 여부를 제어하려면 visibility 속성을 다음 중의 하나로 설정하면 된다.
상수 |
값 |
설명 |
visible |
0 |
화면에 보이게 한다. 디폴트 값 |
invisible |
1 |
표시되지 않는다. 그러나 배치에서 공간을 차지한다. |
gone |
2 |
완전히 숨겨진다. |
마진과 패딩
패딩(padding)은 뷰와 콘텐츠와의 간격이다.
- xml에서는 padding속성을 사용하면 상하좌우로 똑같은 패딩이 설정된다.
- 각각 paddingLeft , paddingRight , paddingTop , paddingBottom 속성을 줄 수 있다.
- 메소드로 설정하려면 setPadding(int, int, int, int) 메소드를 사용한다.
마진(margin)은 컨테이너와 뷰와의 간격이다.
- xml에서는 layout_margin 속성을 사용하면 상하좌우로 똑같은 마진을 설정할 수 있다.
- 각각 layout_marginLeft , layout_marginRight , layout_marginTop , layout_marginBottom 속성을 사용 할 수 있다.
텍스트 뷰(TextView) = 레이블(label)
중요 속성
속성 |
설정 메소드 |
설명 |
text |
setText(CharSequence) |
표시할 테스트 |
textColor |
setTextColor(ColorStateList) |
텍스트 색상 |
textSize |
setTextSize(float) |
텍스트의 크기 |
textStyle |
setTextStyle(~) |
텍스트의 스타일(bold, italic, bolditalic) |
typeface |
setTypeface(Typeface) |
테스트 폰트(normal, sans, serif, monospace) |
width |
setWidth(int) |
픽셀 단위로 텍스트뷰의 길이를 설정 |
height |
setHeight(int) |
픽셀 단위로 텍스트뷰의 높이를 설정 |
lines |
setLines(int) |
텍스트뷰의 높이를 설정 |
에디트 텍스트(Edit Text)
- EditText는 TextView의 자식 클래스이다.
중요 속성(TextView 클래스에서 상속받는 속성들이다.)
속성 |
설명 |
android:autoText |
자동으로 타이핑 오류를 교정한다. |
android:drawableBottom |
텍스트의 아래에 표시되는 이미지 리소스이다. |
android:drawableRight |
텍스트의 오른쪽에 표시되는 이미지 리소스이다. |
android:editable |
편집가능 |
android:text |
표시되는 텍스트이다. |
android:singleLine |
true이면 한 줄만 받음 |
android:inputType |
입력의 종류 (numberPassword..) |
android:hint |
입력 필드에 표시되는 힌트 메세지 |
inputType 속성
inputType |
설명 |
none |
편집이 불가능한 문자열 |
Text |
일반적인 문자열 |
textMultiLine |
여러 줄로 입력 가능 |
textPostalAddress |
우편번호 |
textEmailAddress |
이메일 주소 |
textPassword |
패스워드 |
textVisiblePassword |
패스워드 화면에 보여진다. |
number |
숫자 |
numberSigned |
부호가 붙은 숫자 |
numberDecimal |
소수점이 있는 숫자 |
phone |
전화번호 |
datetime |
시간 |
View 클래스에서 상속받은 속성
속성 | 설명 |
android:background | 배경 이미지 리소스 |
android:contentDescription | 뷰의 내용을 기술하는 텍스트 |
android:id | 아이디 |
android:onClick | 클릭외었을 때 호출되는 메소드 |
android:visibility | 가시성 여부 |
이미지 뷰(ImageView)
- TextVIew 클래스를 확장한 것으로 이미지를 표시할 수 있는 TextVIew라고 생각하면 된다.
속성 |
설정 메소드 |
설명 |
android:adjustViewBounds |
setAdjustViewBounds(boolean) |
drawable의 종횡비를 유지하기 위하여 이미지 뷰의 가로, 세로 를 조정 |
android:cropToPadding |
|
true이면 패딩 안에 맞추어서 이미지를 자른다. |
android:maxHeight |
setMaxHeight(int) |
이미지 뷰의 최대 높이 |
android:maxWidth |
setMaxWidth(int) |
이미지 뷰의 최대 너비 |
android:scaleType |
setScaleType(ImageView.ScaleType) |
이미지 뷰의 크기에 맞추어 어떻게 확대나 축소할 것인지의 방법 선 택 |
android:src |
setImageResource(int) |
이미지 소스 |
android:tint |
setColorFilter(int, PorterDuff.Mode) |
이미지 배경 색상 |
버튼(Button)
- TextView 클래스를 상속받아서 작성되었으므로 TextVIew의 모든 속성을 사용할 수 있다.
'안드로이드' 카테고리의 다른 글
이벤트 처리 (0) | 2016.03.31 |
---|---|
레이아웃 (0) | 2016.03.31 |
Error:Execution failed for task ':app:mergeDebugResources' (0) | 2016.03.29 |
Google Maps Android API v2 예제[펌] (0) | 2016.02.03 |
[펌] 개발자를 위한 안드로이드 5.0 롤리팝의 중요 변경사항 정리 (0) | 2016.01.04 |