2017-12-05 18 views
1

キャンバスにアニメーションを追加しようとしています。私は、私はパスを描画するために使用している1つのArrayListのポイントがあります。Canvas Pathアニメーションの作成方法は?

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 
    } 

} 
関連する問題