View와 View group
뷰(View)의 속성
- 뷰는 일반적으로 컨트롤이나 위젯으로 불리는 UI 구성 요소.
- 즉, 사용자의 눈에 보이는 화면의 구성 요소.
- 뷰를 여러 개 포함하고 있는 것을 뷰그룹(View Group)이라고 하고, 이 뷰그룹 안에서 뷰의 위치를 지정할 수 있음.
- 뷰그룹은 여러 개의 뷰를 담고 있는 그릇과 같아서 뷰와는 다른 것.
- 또 다른 뷰그룹을 뷰그룹 안에 넣고 다른 뷰와 동일하게 다루도록 만들 수도 있음.
- 이 때문에, 뷰그룹은 뷰를 상속하여 뷰그룹도 뷰처럼 다룰 수 있도록 만들어져 있음.
- 뷰와 뷰그룹의 관계는 여러 가지 디자인 패턴 중에 컴포지트 패턴(Composite Pattern)을 사용하여 만들어짐.
- 컴포지트 패턴으로 만들어지는 뷰그룹은 뛰어난 확장성을 가짐.
다음은, 대표적으로 많이 쓰이는 뷰이다.
뷰(View)는 사용자의 키 입력, 터치와 상호작용한다.
TextView
: 텍스트를 출력하는 뷰Button
: 버튼을 클릭하면 실제 버튼이 눌린 효과EditText
: 사용자가 직접 텍스트를 입력할 수 있는 뷰ImageView
: 이미지를 출력하는 뷰
뷰 클래스 상속도
위 그림에서 확인할 수 있듯이 TextView, Button, EditText, ImageView 모두 뷰(View) 클래스를 상속받고 있다.
화면에 보이는 요소들은 모두 뷰(View)를 상속받아야 한다.
그런데 뷰는 자신이 어디에 그려져야 하는지에 대한 정보가 없다. 그렇기 때문에, 뷰만으로는 절대 화면에 나타낼 수 없다.
뷰를 화면에 배치하기 위해서는 뷰그룹(ViewGroup) 혹은 뷰컨테이너(Container)가 반드시 필요하다.
뷰 그룹 상속도
위에서 말했다시피, 뷰그룹은 뷰의 위치를 지정한다고 했다.
뷰가 다양하듯이 뷰그룹도 다양하다. 즉, 다양한 배치방식을 가진다.
대표적으로, LinearLayout, RelativeLayout, FrameLayout등이 있다.
뷰와 뷰그룹의 관계
위 그림에서 확인할 수 있듯이, 뷰그룹은 뷰만 배치가 가능하고 뷰그룹 조차도 뷰로써 다뤄진다.
그래서 자식 뷰그룹을 배치할 수 있다.
안드로이드 화면은 오직 뷰로만 구성되어 있다.
위젯(Widget) 과 레이아웃(Layout)
뷰와 뷰그룹의 역할을 구분하기 위해 뷰의 종류에 따라 다른 이름으로 부르는 것이다.
뷰 중에서 일반적인 컨트롤의 역할을 하는 것을 위젯(Widget)이라고 부르며,
뷰그룹 중에서 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할을 하는 것을 레이아웃(Layout)이라고 부른다.
안드로이드는 기존 언어들이 갖고 있는 장점을 대폭 수용하여 UI를 설계한다. 그러면서 뷰와 위젯, 뷰그룹과 레이아웃 개념을 혼용하게 되었다. 즉, 뷰와 위젯을 명확하게 구분하는 것은 중요하지 않다. 화면 구성 요소는 뷰, 사용자 눈에 보이는 컨트롤 역할을 하는 뷰를 위젯이라고 생각하면 된다. 뷰그룹과 레이아웃도 비슷한 방법으로 구분한다. 뷰를 담고 있는 그릇은 뷰그룹, 뷰그룹 안의 뷰를 배치하는 것을 레이아웃이라고 생각하면 된다.
'안드로이드 > Android-Dev' 카테고리의 다른 글
Android # java file에서 layout 생성 (0) | 2019.12.14 |
---|---|
Android # 상태 드로어블 적용 (0) | 2019.12.13 |
Android # drawable 폴더(해상도) (0) | 2019.12.13 |
Android # 크기 표시 단위(px, dp, sp, em) (0) | 2019.12.12 |
Android # Hello Project (0) | 2019.12.12 |