본문 바로가기

안드로이드

사용자 인터페이스 (UI) 기초

사용자 인터페이스 (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 

 화면에 보이게 한다. 디폴트 값 

 invisible

 표시되지 않는다. 그러나 배치에서 공간을 차지한다. 

 gone

 완전히 숨겨진다. 




마진과 패딩


패딩(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의 모든 속성을 사용할 수 있다.