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.FloatingTextView;
/**
* Author UFreedom
*
*/
public class TranslateFloatingAnimator extends ReboundFloatingAnimator {
private float translateY;
private long duration;
public TranslateFloatingAnimator() {
translateY = -200f;
duration = 1500;
}
public TranslateFloatingAnimator(float translateY, long duration) {
this.translateY = translateY;
this.duration = duration;
}
@Override
public void applyFloatingAnimation(final FloatingTextView view) {
view.setTranslationY(0);
view.setAlpha(1f);
view.setScaleX(0f);
view.setScaleY(0f);
Spring scaleAnim = createSpringByBouncinessAndSpeed(10, 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);
}
});
ValueAnimator translateAnimator = ObjectAnimator.ofFloat(0, translateY);
translateAnimator.setDuration(duration);
translateAnimator.setStartDelay(50);
translateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setTranslationY((Float) valueAnimator.getAnimatedValue());
}
});
translateAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setTranslationY(0);
view.setAlpha(0f);
}
});
ValueAnimator alphaAnimator = ObjectAnimator.ofFloat(1.0f, 0.0f);
alphaAnimator.setDuration(duration);
alphaAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setAlpha((Float) valueAnimator.getAnimatedValue());
}
});
scaleAnim.setEndValue(1f);
alphaAnimator.start();
translateAnimator.start();
}
}