안드로이드 애플리케이션 개발을 진행하다보면, 용어에 대한 정의에서 굉장히 헷갈리는 부분들이 있습니다.
이말이 그말같은데 그말이 아니고, 이말이 그말이 아닌거 같은데 그말이고..

이런 경우, 개념 정립이 제대로 되어있지 않으면, 개발하는데 어려움을 많으 겪게 됩니다.
다들 그런 경험 한번쯤은 있으시죠? ㅠ


이 포스트에서는 뷰, 위젯, 그리고 앱 위젯이 무엇인지를 간단하게 설명하고자 합니다.



 뷰와 위젯 : 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 )

앱 위젯 : 앱 위젯은 흔히 우리가 생각하는 스마트폰 바탕화면에 보여지는 위젯들 입니다.
             위젯 어플, 위젯 등으로 표현 되어지고 있습니다.
             앱 위젯과 위젯을 함께 말할때는 혼동되지 않도록 주의해야 합니다.
 



 


Posted by croute

댓글을 달아 주세요

  1. mng 2012.06.20 21:22 신고  댓글주소  수정/삭제  댓글쓰기

    oh! 제가 원하던 글 뷰와 위젯이 무엇인줄알고 그차이점까지 정확하게 알려주셔서 감사합니다 ^^