2017-03-11 8 views
0

애니메이션이있는 사용자 정의보기를 만들어야합니다. View 클래스를 확장하고 onDraw를 재정의합니다. 이 사용자 정의보기에는 애니메이션 캔버스 (onDraw 내부) 파트로 다시 그리기해야하는 몇 가지 메소드가 있습니다. onAnimationUpdate 내에서 ValueAnimator를 통해 애니메이션을 만들고 여기서 애니메이션 오프셋을 계산하고 invalidate()를 호출합니다. 괜찮아요,하지만 난 전체보기, 애니메이션 부분과 나머지를 다시 그려야합니다. 사용을 시도합니다캔버스 부분 무효화

invalidate (int l, int t, int r, int b) 

그러나이 경우 애니메이션이 작동하지 않습니다. onDraw는 두 번 호출됩니다.

  1. 캔버스 부분 만 다시 그리는 것이 가능합니까 아니면 매번 다시 그려야합니까?
  2. 캔버스 애니메이션에 ValueAnimator를 사용하는 것이 좋습니다.

답변

1

그래, 기본적으로 설명하는 방법을 사용하여보기의 일부만 다시 그릴 수 있습니다. 그러나 ValueAnimator를 사용하여 애니메이트하는 경우 전체 뷰를 다시 그리는 오버 헤드는 무시할 수 없으며 다시 그리지 않는 뷰의 "더티"부분과 관련된 애니메이션의 문제를 피할 수 있습니다.

단순히 인수없이 invalidate를 호출하십시오.

P .: 애니메이션을 실행하면 프로파일 링 도구를 열고 애니메이션을 볼 수 있습니다. 정상적인 상황에서는 반응을 볼 수 없을 것입니다.