【问题标题】:Animating a point on Android canvas在 Android 画布上为点设置动画
【发布时间】:2014-11-04 04:56:58
【问题描述】:

每次调用onDraw() 时,我都会在画布上绘制一系列点。如何为一个点设置动画,使其改变颜色或淡入淡出?所以本质上是从橙色->红色再回来还是不透明->透明再回来?

我正在做以下事情:

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)。我究竟做错了什么?

【问题讨论】:

  • 使用ObjectAnimatorcanvas ondraw

标签: android animation canvas objectanimator


【解决方案1】:

ObjectAnimator 在画布上不能很好地工作,因为我试图为画布上绘制的圆圈设置动画。更适合实际对象(TextView、ImageView 等)而不是画布上绘制的点。

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

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2011-06-06
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2020-04-29
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多