본문 바로가기
개발/Android

[Android] Custom View – Intro

by Dev Aaron 2020. 11. 8.
반응형

Android에는 이미 기본적으로 제공되는 많은 Widget들이 있고, 이것들만 사용해도 어지간한 서비스 개발은 충분합니다. 하지만 디자이너들의 좀더 디테일한 요구사항을 맞춰주기 위해서는 다소 부족하죠. 아니, 부족하다기 보다는 디자이너의 요구 사항이 창의적이라고 표현하는게 맞을 것 같네요. (비꼬는 것이 아닙니다, 그런 창의적인 산출물을 내는 것이 그들의 의무이니까요.)

그리고 그러한 기존 Widget으로 대응하기 어려운 UI의 경우 직접 만들어야 하는 케이스가 있습니다. 바로 Custom View를 통해서 말이죠.

우선 Custom View를 다루기 전에 반드시 알아야 하는 함수들을 언급하도록 하겠습니다.

  • onDraw()
  • onMeasure()
  • onLayout()
  • onSizeChanged()

이외에도 많은 함수들이 있지만, 그 중에 특히 반드시 알아야 할 중요한? 함수들입니다.

onDraw()

화면이 갱신되어야 할 때마다 불리는 콜백 함수입니다. Custom View를 개발하신다면 보통 onDraw 함수를 오버라이드하여 이 함수에서 그리고 싶은 ui 화면을 그리게 됩니다.

onDraw가 불리는 시점은 최초 view가 보여질 때 당연히 그려질 거고요.
다음으로는 코드에서 invalidate() 함수를 호출할 때입니다.

onMeasure()

View의 크기를 결정하는 함수로 이 함수를 오버라이드할 때는 측정한 View의 크기를 저장하기 위해 반드시 setMeasuredDimension() 함수를 호출해야 합니다. 만약 부르지 않으면 아래와 같이 Runtime Exception이 발생합니다.

java.lang.IllegalStateException: View with id 2131165235: com.youknow.customfancontroller.DialView#onMeasure() did not set the measured dimension by calling setMeasuredDimension()

onLayout()

View의 크기와 위치를 할당합니다.

onSizeChanged()

View 크기가 변경될 때마다 호출되는 콜백 함수로,View가 처음 시작할 때에는 size 정보가 없이 시작하기 때문에 Activity가 처음 생성될 때에도 불립니다.

반응형