2017-12-05 17 views
1

Canvas에 애니메이션을 추가하려고합니다. 나는 하나의 ArrayList를 가지고 있는데, 나는 경로를 그리기 위해 사용하고있다.Canvas Path animation을 만드는 방법은 무엇입니까?

MyCode :

for (int i = 0; i < points.size(); i++) { 

      Point point = points.get(i); 

      if (pId == 0) { 
       path.moveTo(point.x, point.y);      
      } else { 
       float midX = (prevPoint.x + point.x)/2; 
       float midY = (prevPoint.y + point.y)/2; 

       if (pId == 1) { 
        path.lineTo(midX, midY); 
       } else { 
        path.quadTo(prevPoint.x, prevPoint.y, midX, midY); 
       } 
       pId++; 
      } 
      prevPoint = point; 
} 

이 상기 코드이다. 이제는 애니메이션을 사용하여 패스를 그리는 중입니다.

제발 좀 솔루션을 제안하십시오.

답변

1

클래스 생성보기를 생성하고 animationValue로 그려야합니다.

public class XXX extends View { 

    //... 

    int valueAnimation; 

    void animationStart() { 

     ValueAnimator valueAnimatorLoading = ValueAnimator.ofInt(startValue, endValue); 
     valueAnimatorLoading.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
      @Override 
      public void onAnimationUpdate(ValueAnimator valueAnimator) { 
       valueAnimation = (int) (Integer) valueAnimator.getAnimatedValue(); //factor for use in onDraw() 
       invalidate();// call onDraw 
      } 
     }); 
     valueAnimatorLoading.start(); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     //draw in canvas by valueAnimation 
    } 

}