이말이 그말같은데 그말이 아니고, 이말이 그말이 아닌거 같은데 그말이고..
이런 경우, 개념 정립이 제대로 되어있지 않으면, 개발하는데 어려움을 많으 겪게 됩니다.
다들 그런 경험 한번쯤은 있으시죠? ㅠ
이 포스트에서는 뷰, 위젯, 그리고 앱 위젯이 무엇인지를 간단하게 설명하고자 합니다.
| 뷰와 위젯 : VIew & Widget |
우선 뷰에 대해서 얘기해 봅시다.
아래의 스크린 샷을 보면,
Object를 상속받은 View라는 녀석은 android.view라는 패키지안에 있습니다.
또 이 View를 상속받은 ImageView라는 녀석은 android.widget 이라는 패키지안에 있습니다.
다시 이 ImageView라는 녀석을 상속받은 ImageButton이라는 녀석은 역시 android.widget 이라는 패키지안에 있습니다.
android.widget 안에 있는 애들은 모두 [위젯]이라고 부를 수 있는거죠.
ImageView, Button, ImageButton, TextView, ListView, RadioButton, CheckBox, GridView 등 생각하는 왠만한 것들은 모두 위젯입니다.
그런데 이놈들을 뷰라고도 부릅니다. 모두 View를 상속받았기 때문에 View의 특성을 가지고 있기도 하죠.
실제로 View 처럼 사용할 수 있구요.
정리하자면, 위젯은 뷰를 상속받았다. 뷰는 뷰다. 위젯도 뷰라고 볼 수 있다.
| 뷰 그룹 : ViewGroup |
여기서 또 한가지 생각해야 될 것들이 있습니다. 바로 뷰 그룹이라는 것이지요.
뷰 그룹은 위의 스크린샷과 같이 View를 상속 받았습니다.
또 ViewGroup은 위젯들을 가지고 있습니다.(어떤 위젯들은 ViewGroup을 상속받았다는 거지요.)
ViewGroup에는 어떤것들이 속해 있나 보니,
AbsoluteLayout, AdapterView, FrameLayout, LinearLayout, MapView, RelativeLayout, SlidingDrawer 가 있습니다.
뷰 그룹도 위젯입니다.
또 뷰 그룹은 뷰를 상속받았습니다.
위젯은 뷰를 상속받았죠.
일반적인 위젯들(이미지뷰, 텍스트뷰 등) 처럼 뷰를 바로 상속 받았을 수도 있고,
뷰 그룹을 상속 받은 위젯들(리니어 레이아웃, 프레임 레이아웃 등)도 있구요.
이렇게 나뉘어져 있는 이유가 다 있지요.
| 1. 뷰 그룹은 자신의 자식(child)으로 뷰를 가질 수 있다. 2. 뷰 그룹은 뷰이다. 3. 위젯은 뷰이다. 4. 뷰 그룹은 복수의 자식을 가질 수 있다. |
뷰 그룹은 자신의 자식으로 위젯들을 배치 할 수 있습니다.
즉 자신의 내부에 위젯을 담을 수 있다는 것이지요. 특별히 꼭 위젯이어야 한다기보다는 뷰이기만 하면 됩니다.
뷰 그룹은 뷰를 그룹지어주는 역할을 하지요.
뷰 그룹은 "아름다운 화면"을 구성하기 위해 꼭 필요한 것입니다.
뷰 그룹이 없다면, 안드로이드는 이상한 UI 만을 가졌겠지요.
| 앱 위젯 : AppWidget |
그런데 이상합니다.
보통 위젯이라고 하면 왜인지 모르게 안드로이드 바탕화면에 나와서 뭔가 아기자기하게 보여주어야만 할 것 같습니다.
사실 이런 부분에 대해서 많은 개념의 혼돈이 와버리게 되죠.
보통 우리가 위젯이라고 부르는 바탕화면에 있는 녀석들은 정확히는 앱 위젯(AppWidget) 입니다.
앱 위젯은 위젯과는 완전히 다른 개념입니다.
( 앱 위젯에 대해 알아보기 : [Android] App Widget - 앱 위젯 )
그렇기 때문에 "앱"이 붙었나 안붙었나의 차이밖에 없다고 생각될 수 있지만,
앱 위젯과 위젯은 다르다는걸 명심하고 용어를 사용해야 합니다.
| 마지막으로 개념정리 한번- |
끝으로 짧게 개념정리를 한번 해보죠.
뷰 : 뷰는 화면을 직사각형 모양으로 일부분 점유하고 있는 영역입니다. 즉 화면에 보여지는 부분들을 말합니다.
위젯 : 뷰를 상속받았습니다. 이미지를 보여주거나, 텍스트를 보여주거나, 리스트를 보여주거나,
또는 어떤 이벤트에 대한 처리를 해주는 뷰들입니다.
화면에 보여지는 것에 대해서 기능을 나누어 두었다고 생각하면 됩니다.
뷰 그룹 : 뷰를 상속받았습니다. 뷰 그룹은 위젯입니다.
뷰 그룹은 위젯을 자식으로 가질 수 있습니다. 복수의 자식도 가능합니다.
뷰 그룹은 화면을 구성하는 것(Layout)에 대해 프로그래머가 컨트롤 할 수 있게 해 줍니다.
( 레이아웃에 대해 알아보기 : http://croute.me/338 / http://croute.me/341 )
앱 위젯 : 앱 위젯은 흔히 우리가 생각하는 스마트폰 바탕화면에 보여지는 위젯들 입니다.
위젯 어플, 위젯 등으로 표현 되어지고 있습니다.
앱 위젯과 위젯을 함께 말할때는 혼동되지 않도록 주의해야 합니다.
'Android > Samples & Tips' 카테고리의 다른 글
| [Android Tip] 시스템 액티비티 호출, 안드로이드 액티비티 호출 (0) | 2011.05.17 |
|---|---|
| [Android Tip] 엑티비티 관련 (0) | 2011.04.27 |
| [Android Error] R.java / android.R / packagename.R (1) | 2011.04.11 |
| [Android] SDCARD에 APP 설치하기 Manifest 속성 (6) | 2011.03.28 |
| [Android] Vibrator - 바이브레이터, 진동 (0) | 2011.03.22 |