2011-01-11 80 views
4

我想在Android画布上为单个路径创建动画。Android:在画布上为单个路径的Alpha创建动画

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; 
    } 
} 

现在我有路径[],我想单独为每一个动画。我希望它能够像增长一样改变alpha。起初只有一点点,然后它成长为一条线,重复。

可以这样做吗?

怎么样?

+0

你解决呢? – 2011-04-09 20:03:30

回答

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(); 
    } 
}