뷰는 액티비티의 구성요소이다. 뷰 여러개가 모여서 액티비티를 구성하고 액티비티가 여러개 모여서 응용프로그램이 된다. 뷰는 안드로이드의 UI(User Interface)를 구성하는 핵심적인 컴포넌트이다.
뷰는 크게 두가지로 나뉜다.
- 위젯 : 직접적으로 보이며 사용자 인터페이스를 구성함, 버튼 텍스트 뷰, 에디트 등이 위젯이며 흔히 컨트롤이라고도 한다. 사용자에게 정보를 보여주고 명령을 집직접 입력받음
- 뷰 그룹 : 직접적으로 보이지 않으며 다른 뷰를 담는 컨테이너 역활을 한다. 관련된 여러개의 뷰를 유기적으로 모아 놓은 뷰의 집합이다. 이 부류의 클래스를 레이아웃이라고 한다.
▶뷰의 속성
- id
뷰를 하나만의 고유한 이름이다. 코드나 XML 문서상에서도 뷰를 참조할 때 id를 사용하여 참조한다.사용법으로는
android:id = "@[+]id/ID";
형태로 사용한다. XML에 ID를 등록해 주면 이 이름이 R.java에 정수 상수로 정의된다. 코드에서 뷰를 참조할때는 findViewById 라는 메소드를 이용해서 참조할 뷰의 id를 전달한다. 하지만 필수요소는 아니며 코드상에서 참조할 필요가 없다면 id는 사용하지 않아도 된다.
- layout_width, layout_height
뷰의 폭과 높이를 지정한다. 부는 부모 뷰 또는 액티비티 안에 정의 되는데 이 속성을 지정하는 만큼의 크기로 배치된다. 수평, 수직 각 방향에 대해 크기를 지정할 수 있다.
● match_parent(fill_parent) : 부모의 주어진 크기를 채운다.
● wrap_content : 내용물의 크기만큼 채운다.
● 상수 크기 : 지정한 크기에 맞춘다. (단위 : px, in, mm, pt, dp(dip), sp(sip) )
위의 3가지 값중 하나를 가진다.
android:layout_width = "10px";
형태로 사용하게 된다.
- background
뷰의 배경을 어떻게 채울 것인지를 지정한다. 별 다른 지정이 없으면 디폴트 배경이 그려진다.
● #RGB
● #ARGB
● #RRGGBB
● #AARRGGBB
의 4가지 형태로 사용하며 # 다음에 16진수로 각 색상 요소의 강도를 지정하며 윕에서 흔히 사용하는 방식이고 A는 알파값으로 투명도를 지정해줄 수 있다.
- padding
뷰들 간의 간격과 뷰와 내용물 간의 간격을 지정한다. padding 속성에 값을 지정하면 4방향에 대해 동일한 여백이 지정되며 paddingLeft, paddingTop, paddingRight, paddingBottom으로 각각의 변에 서로다른 여백을 줄 수도 있다.
- visibility
뷰를 보일것인가 아닌가를 지정한다. 별다른 지정이 없으면 보이는 상태로 배치되지만 이속성을 지정하면 디자인 타임에 숨셔 놓았다가 런타임에 필요한 때만 보이도록 할 수 있다.
● visible : 보이는 상태
● invisible : 숨겨진 상태이되 자리는 차지함
● goen : 숨겨진 상태이며 자리도 차지하지 않는다.
invisible과 goen은 똑같이 사라지지만 자리를 차지하냐 차지하지 않냐에 따라서 다르다. 보이기 상태는 런타임에도 언제든지 변화 시킬 수 있다.
- focusable
키보드 포커스를 받을 수 있는지를 지정한다. 뷰 클래스 자체는 디폴트로 포커스를 받지 않도록 되어 있다. 그렇기 때문에 키 입력을 받으려면 이 속성값을 true 로 지정하면 된다.
▶ TextView
화면에 텍스트를 출력하는 위젝이다. 단순히 문자열을 보여 주기만 할 뿐이며 사용자 입력은 받아들이지 않는다. 고정된 텍스트를 보여준다거나 다른 위젯의 제목을 표시할때 사용된다.
-text
텍스트 뷰의 가장 중요한 속성으로 출력할 문자열을 지정한다. 디폴트로 빈 문자열을 가지며 이 상태로 출력하면 준재 자체가 보이지 않으므로 이 속성은 반드시 대입해야 한다.
● "문자열" : 겹 따옴표로 문자열을 싸서 바로 대입 하며 \ 문자가 들어가면 이스케이프 되고 \n은 개행을 하며 \uXXXX는 유니코드이다.
● @[패키지:]type:name : 리소스에 대한 래퍼런스로 지정한다. 보총 strings.xml에 문자열을 정의하고 @string/id 식으로 지정한다.
● ?[패키지:][type:]name : 테마 속성으로 지정한다.
따옴표로 문자열을 지정하는것이 가장 간단하다. 하지만 다국어 버전을 만들 계획이 있다거나 일괄된 메세지를 관리하기에는 strings.xml에 id를 지정하여 사용하는것이 유리하다.
- textSize
텍스트의 폰트 크기를 지정한다. 실수 타입으로 정밀한 크기를 지정할 수 있으며 숫자 뒤에 sp, dp ... 등의 단위를 같이 지정한다. 텍스트는 폰트 크기에 따라 가면적인 sp 단위를 쓰는게 가장 합리적이다.
- textStyle
폰트 속성을 지정한다. normal, bold, italic 중 하나를 쓰거나 | 로 묶어서 두개이상의 상수값을 지정 할 수 있다. 하지만 띄어쓰기는 지원하지 않으므로 띄어쓰기를 사용해서는 안된다.
"bold|normal" -> O
"bold | normal: -> X
XML은 띄어쓰기를 인지하지 못함으로 함부로 띄어쓰기를 넣어서는 안된다.
-typeface
폰트를 지정한다. 모바일에서는 데스크탑처럼 많이 지원은 하지 않지만 점점 추가되고 있으니 인터넷에서 확인하여 지정하면 된다.
-singleLine
텍스트가 위젯의 폭보다 더 길게 강제로 한 줄에 출력된다. 다만 폭을 넘어서면 ... 생략 포시가 나타난다. 사용을 위허서는 값을 true로 지정해주면 된다.
▶ ImageView
이미지 뷰는 아이콘이나 비트맵을 출력하는 위젝이다. 텍스트만으론 직관적인 화면을 만들기 어렵기 때문에 모바일에서 광법위하게 사용된다. 다양한 경로로도 사용이 가능한데 리소스 안에 파일은 물론 웹 상의 이미지도 표시할 수 있다.
-src
출력할 이미지를 지정하는 가장 중요한 요소이다. #RRGGBB 형태의 색상값을 출력할 수도 있고 외부의 이미지도 지정할 수 있다. 가장 흔히 쓰는 방법으로는 리소르에 저장된 이미지를 불러오는 방법이다.
@drawable/ID
형식으로 아이디를 지정하면 해당 이미지가 이미지 뷰의 표면에 출력된다.
- maxHeight, maxWidth
이미지가 최대로 출력될 최대 크기를 지정한다. 별다른 지정이 없으면 이미지의 원래 크기대로 출력되지만 모바일 장비의 해상도가 충분하지 않으므로 최개 크기를 정당히 제한할 필요가 있다.
- adjustViewBounds
이미지의 종횡비를 맞추기 위해 이미지 뷰의 크기를 적당히 조정할 것인가를 지정한다. 사용 할지 말지를 지정하는 것이기 때문에 true or false로 사용한다.
- cropToPadding
true일 정우 위젝의 주어진 여백에 맞추기 위해 이미지의 일부를 잘라낸다. 이 속성을 사용하면 여백을 강제로 유지하기 때문에 이미지 전체가 보이지 않을수도 있다.
- tint
이미지에 색조를 입한다. #AARRGGBB 형식으로 지정한다. 불투명하면 단색을 주는것이기 때문에 알파값을 사용해야 변화를 느끼게만 지정이 가능하다.
- scaleType
이미지의 원래 크기와 다르게 출력할 때 적용할 확대, 축소 방식을 지정한다. matrix, fitXY, center, centerCrop, centerInside 등의 여러가지 방법 중 하나를 지정한다.
이미지의 확장자는 jpg, png, gif 등이 가장 많이 사용하지만 gif는 품질이 떨어지니 비추이다. 그리고 리소스 폴더를 보면 3가지가 더 있다.
- ldpi : 120의 저밀도 이미지
- mdpi : 160의 중밀도 이미지
- hdpi : 240의 고밀도 이미지
위의 형태로 지정하여 이미지를 알맞게 넣어두면 이미지를 사용할때 운영체자가 알어서 알맞는 이미지를 사용한다.
▶ Button & EditText
버튼과 에디트 뷰에서는 사용자와의 상호작용을 위해서 사용하는 뷰어이다. 프로그램이 사용자의 명령을 받아들이려면 명령을 전달받는 버튼, 문자열을 입력받는 에디트 같은 위젝이 필요하다. 입력을 받는 위젯은 다른 위젯에 비해 속성도 많으며 처리해야할 이벤트도 많아 복잡하다.
- Button
사용자가 클릭하여 명령을 내릴 수 있는 위젯이다. 사각형의 모양이며 표면에 버튼의 이름을 지정해 줄 수 있다. 클래스 명이 Button이며 xml 엘리먼드 값 또한 Button이다. 속성은 대부분 View나 TextVIew로부터 상속 받으며 고유의 속성은 따로 가지지 않는다.
- EditText
문자열을 입력받는 위젯이다. TextView의 서브 클래스이므로 TextView의 모든 속성을 사용할 수 있다. 그리고 추가로 문자열 편집과 관련된 메서드가 제공이된다.
이상으로 Android에서 사용하는 기본적인 View들에 대한 설명입니다. 공부하면서 찾기 쉽도록 정리하기 위해서 올린것이니 잘못된게 있다면 알려주시면 감사하겠습니다.
'Programming' 카테고리의 다른 글
[Android] Layout - RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout (0) | 2013.09.30 |
---|---|
[Android] Layout - LinearLayout (0) | 2013.09.29 |
[Info] 프로그래밍 언어 (0) | 2013.06.15 |
[JAVA] 출력 스트림 ( OutputStream ) (0) | 2013.06.06 |
[JAVA] FileInputStream과 InputStream (0) | 2013.06.06 |