package com.cui.trypro.activity_animation.activityOptionCS.anim;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.view.View;
import com.cui.trypro.activity_animation.activityOptionCS.transition.TransitionAnims;
public class SceneScaleUp extends TransitionAnims {
private float mStartX;
private float mStartY;
private float mHeight;
private float mWidth;
/**
// * @param time
// * @param isShowing:是否是从无到有的显示状态,如果是true就是显示
*/
public SceneScaleUp(Activity activity,
float startX, float startY, float width, float height) {
super(activity);
// TODO 自动生成的构造函数存根
mStartX = startX;
mStartY = startY;
mWidth = width;
mHeight = height;
}
public void playScreenAnims(final boolean isEnter) {
//Activity activity = getActivity();
View sceneRoot = getSceneRoot();
float fromAlpha,toAlpha;
float fromX, toX ;
float fromY, toY;
float fromScaleX, toScaleX;
float fromScaleY, toScaleY;
if (isEnter) {
fromAlpha = 0f;
toAlpha = 1f;
fromX = mStartX;
toX = 0f;
fromY = mStartY;
toY = 0f;
fromScaleX = (float)mWidth / getSceneRoot().getWidth();
toScaleX = 1f;
fromScaleY = (float)mHeight / getSceneRoot().getHeight();
toScaleY = 1f;
}else {
fromAlpha = 1f;
toAlpha = 0f;
fromX = 0f;
toX = mStartX;
fromY = 0f;
toY = mStartY;
fromScaleX = 1f;
toScaleX = (float)mWidth / getSceneRoot().getWidth();
fromScaleY = 1f;
toScaleY = (float)mHeight / getSceneRoot().getHeight();
}
//定义移动的起始位置,如果不定义就是相对于自身中心
sceneRoot.setPivotX(0f);
sceneRoot.setPivotY(0f);
// TODO 自动生成的方法存根
AnimatorSet set = new AnimatorSet();
ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(sceneRoot, "alpha", fromAlpha, toAlpha);
ObjectAnimator xAnim = ObjectAnimator.ofFloat(sceneRoot, "x", fromX, toX);
ObjectAnimator yAnim = ObjectAnimator.ofFloat(sceneRoot, "y", fromY, toY);
ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(sceneRoot, "scaleX", fromScaleX, toScaleX);
ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(sceneRoot, "scaleY",fromScaleY, toScaleY);
set.addListener(new TransitionAnimsListener() {
@Override
public void onAnimationEnd(Animator animator) {
// TODO 自动生成的方法存根
super.onAnimationEnd(animator);
if (isEnter) {
enterAnimsEnd();
}else {
exitAnimsEnd();
}
}
});
set.play(alphaAnim).with(xAnim).with(yAnim).with(scaleXAnim).with(scaleYAnim);
set.setDuration(getAnimsDuration());
set.setStartDelay(getAnimsStartDelay());
set.setInterpolator(getAnimsInterpolator());
set.start();
}
@Override
public void playScreenEnterAnims() {
// TODO 自动生成的方法存根
playScreenAnims(true);
}
@Override
public void playScreenExitAnims() {
// TODO 自动生成的方法存根
playScreenAnims(false);
}
}