package com.ufreedom.uikit.effect;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import com.facebook.rebound.SimpleSpringListener;
import com.facebook.rebound.Spring;
import com.ufreedom.uikit.BaseFloatingPathAnimator;
import com.ufreedom.uikit.FloatingTextView;
/**
* Author UFreedom
*
*/
public class CurvePathFloatingAnimator extends BaseFloatingPathAnimator {
@Override
public void applyFloatingPathAnimation(final FloatingTextView view, float start, float end) {
ValueAnimator translateAnimator;
ValueAnimator alphaAnimator;
Spring scaleAnim = createSpringByBouncinessAndSpeed(11, 15)
.addListener(new SimpleSpringListener() {
@Override
public void onSpringUpdate(Spring spring) {
float transition = transition((float) spring.getCurrentValue(), 0.0f, 1.0f);
view.setScaleX(transition);
view.setScaleY(transition);
}
});
translateAnimator = ObjectAnimator.ofFloat(start, end);
translateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
float pos[] = getFloatingPosition(value);
float x = pos[0];
float y = pos[1];
view.setTranslationX(x);
view.setTranslationY(y);
}
});
translateAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setTranslationX(0);
view.setTranslationY(0);
view.setAlpha(0f);
}
});
alphaAnimator = ObjectAnimator.ofFloat(1.0f, 0f);
alphaAnimator.setDuration(3000);
alphaAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha((Float) valueAnimator.getAnimatedValue());
}
});
scaleAnim.setEndValue(1f);
translateAnimator.setDuration(3000);
translateAnimator.setStartDelay(50);
translateAnimator.start();
alphaAnimator.start();
}
}