2014-11-04 126 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等)更好,而不是繪製在畫布上的點。

我使用的解決方案是每隔一段時間重新繪製畫布,並修改繪製的圓的半徑以模擬動畫。