Android Custom View(커스텀 뷰) 만들기 | 찰스의 안드로이드
Android 드로잉 보기 방법 | Android 개발자 | Android Developers
기획자, 디자이너, 유저 등 요구사항에 맞는 기능을 안드로이드 기본 위젯을 사용하여 만들긴 어렵다. 요구사항에 맞는 디자인과 기능을 개발하기 위해 필요하다. 즉, 요구사항에 맞는 View를 직접 만들기 위해 사용해야한다.
<aside>
💡 커스텀 뷰의 핵심은 onMeasure
, onDraw
, onLayout
이다.
도화지 크기를 선택하고(onMeasure), 어느 위치에(onLayout) 어떤 그림을 그릴지(onDraw)
</aside>
onDraw()
, onMeasure()
, onLayout()
,onKeyDown()
과 같이 시작하는 메서드를 오버라이드 한다.View는 위 그림과 같이 생명주기 메서드를 거쳐 화면에 그려진다.
View 계층은 부모노드(View Group)에서 분기가 있는 리프노드(Child View)의 트리 구조와 같기 때문에 순회 단계라고 한다.
따라서 각 메서드는 부모에서 시작하여 마지막 노드까지 전위순회하여 제약 조건을 정의한다.
전위순회를 하며 왼쪽 이미지의 순서대로 뷰가 그려진다.
왼쪽 그림 순서대로 onMeasure()를 통해 순회 후
onLayout()을 호출해서 다시 순회한 후에
onDraw()를 통해서 그려지게 된다.
신기한점은 View에 backgroud나, 다른 그려지는 속성이 없다면 onDraw() 메서드를 호출하지 않는다.
뷰는 최대 4개의 생성자를 가진다.
View(Context context)
: 코드에서 동적으로 뷰를 생성할 때 사용할 수 있는 간단한 생성자이다. 파라미터 context를 통해 현재 실행중인 뷰의 리소스 등에 액세스 할 수 있다.View(Context context, AttributeSet attrs)
: xml에서 생성할 때