2011-01-11 8 views
4

アンドロイドキャンバス上に単一のパスをアニメートしたいと思います。Android:キャンバス上の単一パスのアルファベットをアニメ化

public class MyView extends View { 
    private Path paths[]; 
    protected void onDraw(Canvas canvas) { 
     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeWidth(8); 
     paint.setColor(Color.BLUE); 

     Path path = new Path(); 
     path.moveTo(75, 11); 
     path.quadTo(62, 87, 10, 144); 
     canvas.drawPath(path, paint); 
     paths[0] = path; 

     path.reset(); 
     path.moveTo(50, 100); 
     path.lineTo(150, 200); 
     canvas.drawPath(path, paint); 
     paths[1] = path; 
    } 
} 

私はパス[]を持っていますが、私はそれぞれ別々にアニメーション化したいと思います。私はそれが成長しているようにアルファを変更したいと思います。最初はちょっと小さな点があり、それが線になって繰り返されます。

できますか?

どのようにですか?

+0

あなたがそれを解決した、現​​在のアルファを設定するためにそれを使用するのでしょうか? –

+0

私は似たような問題がありますhttp://stackoverflow.com/questions/16686861/not-duplicate-help-draw-path-in-canvas-as-an-animation誰か助けてください... – Marek

答えて

0

私は、現在のアニメーションの割合を維持し、0から1までの新しいフロートを追加し、

public class MyView extends View { 
    private Path paths[]; 
    private float mAnimPercentage = 0.0f; 

    private static final int clip(int value){ //forces the value to be between 0 and 255 
     return Math.max(0, Math.min(255, value)); 
    } 
    protected void onDraw(Canvas canvas) { 
     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeWidth(8); 
     paint.setColor(Color.BLUE); 

     Path path = new Path(); 
     path.moveTo(75, 11); 
     path.quadTo(62, 87, 10, 144); 
     //edited here 
     paint.setAlpha(clip(mAnimPercentage*255*2)); 
     canvas.drawPath(path, paint); 
     paths[0] = path; 

     path.reset(); 
     path.moveTo(50, 100); 
     path.lineTo(150, 200); 
     //edited here 
     paint.setAlpha(clip(-127 + mAnimPercentage*255*2)); //the biggest is the negative value, the latter this path will show, the biggest is the number multiplied by mAnimPercentage, the fastest this path will get completely opaque 
     canvas.drawPath(path, paint); 
     paths[1] = path; 
     mAnimPercentage+= 0.01; //FIXME this is for TEST only, you should update it with an animator 
     postInvalidate(); 
    } 
} 
関連する問題