[英]how to animate view drawn using Canvas in android?
為了補充我的評論,這是一種使用ValueAnimator
在onDraw()
逐步移動圓的解決方案。
class CircleWithMotion extends View implements ValueAnimator.AnimatorUpdateListener {
private final int CIRCLE_RADIUS = 30;
private final int STEP_Y = 200;
private final PointF circlePosition = new PointF(100, 100);
private ValueAnimator animator;
private Paint paint;
public CircleWithMotion(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.BLUE);
// HERE you can change the type and duration of the animation
animator = new ValueAnimator();
animator.setDuration(1000);
animator.setInterpolator(new DecelerateInterpolator());
animator.addUpdateListener(this);
}
// Call this to start the animation
public void movingToNextStep() {
// Sets the START and END values for the animation (FROM current y position TO next position)
animator.setFloatValues(circlePosition.y, circlePosition.y + STEP_Y);
animator.start();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(circlePosition.x, circlePosition.y, CIRCLE_RADIUS, paint);
}
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// Update the Y circle position with the calculated value from animator
circlePosition.y = (float) animator.getAnimatedValue();
// say the view must be redraw
this.invalidate();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.