(1) View
안드로이드에서 사용자가 눈으로 보는 모든 것은 View이다. 화면의 기본적인 컴포넌트라고 얘기 할 수 있다.
TextView, ImageView, EditText, ... 등 자주 쓰는 모든 UI 관련된 컴포넌트는 View라는 클래스를 상속 받는다.
public class Button extends TextView {
....
}
public class TextView extends View implements OnPreDrawListener {
....
}
그림과 코드에서 보이는 것과 같이, 최상단에 View가 있으며, 모든 UI 관련 컴포넌트는 결국 View를 상속받아 구현된다.
View 안에 View를 포함할 수 있으며, 중첩하여 사용 할 수 있다.
(2) ViewGroup
ViewGroup은 n개의 View를 포함할 수 있는 Container이다.
정의 상으로는 낯설어 보일 수 있으나, 우리가 자주 쓰는 레이아웃이 ViewGroup에 해당한다.
ex) LinearLayout, ConstraintLayout ...
n개의 View를 포함하는 ViewGroup 역시도 View를 상속받아 만들어진 클래스이다.
ViewGroup에는 View, ViewGroup이 포함될 수 있으며, ViewGroup은 결국 View를 포함한다. 모든 UI는 결국 View이다.
View에 대해 공부하고 느낀 부분은 막연하게 구현되어있는 View만을 고집하지 않고, CustomView 구현 등의 방식을 익혀 이를 적재적소에 활용 할 수 있다면 성능과 코드 리팩토링 등에 있어 많은 효율을 낼 수 있을 것이라고 생각한다.
View를 상속받은 많은 클래스들이 있지만 결국 CustomView와 같이 상황에 맞는 유동적인 방식이 도움이 될 테니까 말이다.
출처 : https://developer.android.com/reference/android/view/View
https://www.charlezz.com/?p=853