2014-11-04 96 views
0

每次调用onDraw()时,我都会在画布上绘制一系列点。我如何动画一个点,以便它改变颜色或淡入淡出?所以基本上是从橙色 - >红色,背部或不透明 - >透明,然后回来?在Android画布上设置动画点

我做了以下内容:

public void onDraw(Canvas canvas) { 
    drawDots(); 
} 

private void drawDots() { 
    canvas.drawCircle(xcoord, ycoord, 20, getPaintObj(param)); 
} 

private Paint getPaintObj(int param) { 
    if (param % 2 == 0) { 
    ObjectAnimator colorFade = ObjectAnimator.ofObject(paintObj, "color", new ArgbEvaluator(), 0xff00ff00, 0xffff0000, 0xff0000ff); 
    colorFade.setDuration(2000); 
    colorFade.setInterpolator(new LinearInterpolator()); 
    colorFade.setRepeatCount(ValueAnimator.INFINITE); 
    colorFade.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      invalidate(); 
     } 
    }); 
    colorFade.start(); 
    return paintObj; 

    } else { 
    return otherPaintObj; 
    } 
} 

的问题是,它没有动画。它坚持第一种颜色(0xff00ff00)。我究竟做错了什么?

+0

要么使用'ObjectAnimator'或'canvas ondraw'。 – Pr38y 2014-11-04 06:52:26

回答

1

因为我试图在画布上绘制一个圆,所以ObjectAnimator在画布上效果不佳。对实际对象(TextView,ImageView等)更好,而不是绘制在画布上的点。

我使用的解决方案是每隔一段时间重新绘制画布,并修改绘制的圆的半径以模拟动画。