package com.novoda.magicmirror.sfx;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.os.SystemClock;
import android.view.View;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RainDropEffect implements ParticleEffect {
private static final long FALL_DURATION = 250L;
private static final Random RANDOM = new Random(SystemClock.currentThreadTimeMillis());
private final Interpolator INTERPOLATOR = new LinearInterpolator();
private List<ObjectAnimator> animators = new ArrayList<>();
@Override
public void animateParticle(View particleView, int parentWidth, int parentHeight) {
float x = RANDOM.nextFloat() * parentWidth;
particleView.setX(x);
ObjectAnimator animator = ObjectAnimator.ofFloat(particleView, "y", 0, parentHeight);
animator.setDuration(FALL_DURATION + RANDOM.nextInt(250));
animator.setInterpolator(INTERPOLATOR);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.start();
animators.add(animator);
}
@Override
public void stop() {
for (ObjectAnimator animator : animators) {
animator.setRepeatCount(1);
}
animators.clear();
}
@Override
public int delayInBetween() {
return 250 + RANDOM.nextInt(250);
}
}