View에서 draw와 onDraw의 차이점은 무엇인가요?

VIew 자체의 콘텐츠 그리기는 View.onDraw(canvas) 함수를 호출하여 수행됩니다.

자체 하위 그리기는 dispatchDraw(canvas)를 통해 수행됩니다.

View 컴포넌트 Drawing은 draw(Canvas canvas) 메소드를 호출합니다. Drawable 배경은 주로 drawable에 대해 setBounds() 메소드를 호출한 다음 draw(Canvas c) 메소드를 호출합니다. 배경 드로어블의 실제 크기는 뷰 구성 요소의 크기에 영향을 미치며, 드로어블의 실제 크기는 getIntrinsicWidth() 및 getIntrinsicHeight()를 통해 얻어집니다. 배경 드로어블의 크기와 같습니다.

배경을 그린 후 그리기 프로세스는 onDraw(Canvas 캔버스) 메서드를 호출한 다음, dispatchDraw(Canvas 캔버스) 메서드는 주로 그리기를 위한 하위 구성 요소에 배포됩니다. 구성 요소 사용자 정의 재정의된 것은 onDraw() 메서드입니다. 주목할 점은 ViewGroup 컨테이너 컴포넌트를 그릴 때 배경이 없을 때는 dispatchDraw() 메서드가 직접 호출되고, 배경이 있을 때는 draw() 메서드가 호출된다는 점입니다. 및 draw() 이 메서드에는 dispatchDraw() 메서드에 대한 호출이 포함되어 있습니다. 따라서 ViewGroup에 무언가를 그리려는 경우 onDraw() 메서드 대신 dispatchDraw() 메서드를 다시 작성하거나 Drawable을 사용자 정의하고 해당 draw(Canvas c) 및 getIntrinsicWidth(), getIntrinsicHeight() 메서드를 다시 작성하는 경우가 많습니다. 그런 다음 배경으로 설정하십시오.