如何让圆圈只显示动画一次

我有一个应用程序,显示多个圆圈,动画半径从0到300.我遇到的问题是它显示多个圆圈慢慢增加每个圆的半径。 我只想绘制一个增加半径的圆。 这是我的代码。

public class SplashLaunch extends View{ Handler cool = new Handler(); DrawingView v; Paint newPaint = new Paint(); int randomWidthOne = 0; int randomHeightOne = 0; private float radiusOne = 300; final int redColorOne = Color.RED; final int greenColorOne = Color.GREEN; private static int lastColorOne; ObjectAnimator radiusAnimator; private final Random theRandom = new Random(); public SplashLaunch(Context context) { super(context); // TODO Auto-generated constructor stub } private final Runnable circleUpdater = new Runnable() { @Override public void run() { lastColorOne = theRandom.nextInt(2) == 1 ? redColorOne : greenColorOne; newPaint.setColor(lastColorOne); startAnimation(100); cool.postDelayed(this, 1000); invalidate(); } }; @Override protected void onAttachedToWindow(){ super.onAttachedToWindow(); cool.post(circleUpdater); } protected void onDetachedFromWindow(){ super.onDetachedFromWindow(); cool.removeCallbacks(circleUpdater); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if(theRandom == null){ randomWidthOne =(int) (theRandom.nextInt((int) Math.abs(getWidth()-radiusOne/2)) + radiusOne/2f); randomHeightOne = (theRandom.nextInt((int)Math.abs((getHeight()-radiusOne/2 + radiusOne/2f)))); }else { randomWidthOne =(int) (theRandom.nextInt((int) Math.abs(getWidth()-radiusOne/2)) + radiusOne/2f); randomHeightOne = (theRandom.nextInt((int)Math.abs((getHeight()-radiusOne/2 + radiusOne/2f)))); } canvas.drawCircle(randomWidthOne, randomHeightOne, radiusOne, newPaint); } public void setRadiusOne(float value){ this.radiusOne = value; invalidate(); } public int startAnimation(int animationDuration) { if (radiusAnimator == null || !radiusAnimator.isRunning()) { // Define what value the radius is supposed to have at specific time values Keyframe kf0 = Keyframe.ofFloat(0f, 0f); Keyframe kf2 = Keyframe.ofFloat(0.5f, 180f); Keyframe kf1 = Keyframe.ofFloat(1f, 360f); // If you pass in the radius, it will be calling setRadius method, so make sure you have it!!!!! PropertyValuesHolder pvhRotation = PropertyValuesHolder.ofKeyframe("radiusOne", kf0, kf1, kf2); radiusAnimator = ObjectAnimator.ofPropertyValuesHolder(this, pvhRotation); radiusAnimator.setInterpolator(new LinearInterpolator()); radiusAnimator.setDuration(animationDuration); radiusAnimator.start(); } else { Log.d("Circle", "I am already running!"); } return animationDuration; } public void stopAnimation() { if (radiusAnimator != null) { radiusAnimator.cancel(); radiusAnimator = null; } } public boolean getAnimationRunning() { return radiusAnimator != null && radiusAnimator.isRunning(); } } 

尝试使用

 canvas.drawColor(Color.WHITE); 

用于清除super.onDraw(canvas)后的整个视图显示;