ViewGroup을 상속하여 onDraw()를 override하면, invalidate()시에 onDraw()가 호출되지 않는다. 왜, 그럴까? ViewGroup은 뭔가를 그리는 기능이 아니라, child view를 관리하는 객체이기 때문이다. 그래서, 그려질 필요가 있을때는 dispatchDraw (Canvas canvas)가 호출된다. 그래도 그리고 싶을때는 어떻게 해야 할 까? setWillNotDraw(false)를 추가하면 onDraw()가 호출되고 해당 부분을 그리면 된다. 왜, 이렇게 했을까? setWillNotDraw()는 최적화를 위한 메쏘드다. ViewGroup과 같이 관리만 하는 것은 draw 부분을 skip하려는 것이다. |
'Developer > Android' 카테고리의 다른 글
lombok 어노테이션으로 getter/setter을 없애기 (0) | 2016.12.07 |
---|---|
touch evnet flow (0) | 2016.11.10 |
유용한 라이브러리 (0) | 2016.11.05 |
include merge 태그 차이점 (0) | 2016.10.25 |
custom view 만들기 (0) | 2016.10.03 |