package com.xdroid.animation.anim;
import com.xdroid.animation.base.AnimationBase;
import com.xdroid.animation.interfaces.Duration;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
/**
* Scale animation, the default 0.0 - > 1.0 f f
*
* @author Robin
* @since 2015-07-21 14:40:02
*
*/
public class ScaleAnimation extends AnimationBase<ScaleAnimation>{
/** X direction change of attribute values */
protected float[] valuesX;
/** Y direction change of attribute values */
protected float[] valuesY;
/*
* ==================================================================
* Constructor
* ==================================================================
*/
public ScaleAnimation(View targetView) {
this.targetView = targetView;
interpolator = new AccelerateDecelerateInterpolator();
duration = Duration.DURATION_LONG;
listener = null;
valuesX = new float[]{ 0.0f , 1.0f };
valuesY = new float[]{ 0.0f , 1.0f };
}
/*
* ==================================================================
* Override CombinableMethod
* ==================================================================
*/
@Override
public void animate() {
createAnimatorSet().start();
}
@Override
public AnimatorSet createAnimatorSet() {
/*targetView.setScaleX(0f);
targetView.setScaleY(0f);*/
targetView.setVisibility(View.VISIBLE);
AnimatorSet scaleSet = new AnimatorSet();
scaleSet.playTogether(ObjectAnimator.ofFloat(targetView, View.SCALE_X, valuesX ),
ObjectAnimator.ofFloat(targetView, View.SCALE_Y, valuesY ));
scaleSet.setInterpolator(interpolator);
scaleSet.setDuration(duration);
if (listener != null) {
scaleSet.addListener(listener);
}
return scaleSet;
}
/*
* ==================================================================
* Getter And Setter
* ==================================================================
*/
public ScaleAnimation setValuesX(float[] valuesX) {
this.valuesX = valuesX;
return this;
}
public ScaleAnimation setValuesY(float[] valuesY) {
this.valuesY = valuesY;
return this;
}
}