2014-11-04 5 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

ответ

1

ObjectAnimator не очень хорошо работает с холстом, поскольку я пытался анимировать круг, нарисованный на самом холсте. Работает лучше для реальных объектов (TextView, ImageView и т. Д.), А не точек, нарисованных на холстах.

Решение, которое я использовал, время от времени перерисовывает холст и изменяет радиус круга, нарисованного для имитации анимации.

Смежные вопросы