package com.cui.trypro.activity_animation.activityOptionCS.transition; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.TimeInterpolator; import android.app.Activity; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import com.cui.trypro.R; public abstract class TransitionAnims { //private String TAG = getClass().getSimpleName(); private Activity mActivity; private View mSceneRoot; private Drawable mBackground; private long mTime = 300; private long mStartDelay = 0; private TimeInterpolator mTimeInterpolator = new AccelerateDecelerateInterpolator(); private TransitionCompat.TransitionListener mListener; /** * @param activity */ public TransitionAnims(Activity activity) { mActivity = activity; //设置窗口的背景图,用来做渐变 mBackground = activity.getResources().getDrawable(R.drawable.background); mBackground.setAlpha(0);//初始背景透明度为0 // http://ask.csdn.net/questions/209 // http://blog.csdn.net/u011494050/article/details/38775589 // 得到当前视图的顶级视图,用来做布局的动画 mSceneRoot = ((ViewGroup) getActivity().getWindow().getDecorView()).getChildAt(0); //mSceneRoot = ((ViewGroup) activity.getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0); mActivity.getWindow().setBackgroundDrawable(mBackground); } /** * 进入动画结束时应该有的操作 */ protected void enterAnimsEnd() { mSceneRoot.setAlpha(255); mBackground.setAlpha(255); } /** * 退出动画结束时应该有的动画 */ protected void exitAnimsEnd() { mSceneRoot.setAlpha(0); mBackground.setAlpha(0); mActivity.finish(); mActivity.overridePendingTransition(0, 0); } /** * @return 当前的activity */ public Activity getActivity() { return mActivity; } /** * @return 要进行动画的view */ public View getSceneRoot() { return mSceneRoot; } /** * @return 当前activity的背景图 */ public Drawable getBackground() { return mBackground; } /** * 设置动画延迟的时间 * @param delayTime */ public void setAnimsStartDelay(long delayTime) { mStartDelay = delayTime; } public long getAnimsStartDelay() { return mStartDelay; } /** * 设置动画变化效果 * @param interpolator */ public void setAnimsInterpolator(TimeInterpolator interpolator) { mTimeInterpolator = interpolator; } public TimeInterpolator getAnimsInterpolator() { return mTimeInterpolator; } /** * 设置动画持续的时间 * @param time */ public void setAnimsDuration(long time) { mTime = time; } public long getAnimsDuration() { return mTime; } /** * 开始执行activity进入的动画 */ public abstract void playScreenEnterAnims(); /** * 开始执行activity退出的动画 */ public abstract void playScreenExitAnims(); /** * 添加动画的监听器 * @param transitionListener */ public void addListener(TransitionCompat.TransitionListener transitionListener) { mListener = transitionListener; } /** * 这里面传入的false没有任何意义 * @author:Jack Tony * @tips : * @date :2014-11-27 */ protected class TransitionAnimsListener implements AnimatorListener, AnimationListener{ @Override public void onAnimationStart(Animator animator) { // TODO 自动生成的方法存根 if (mListener != null) { mListener.onTransitionStart(animator, null, false); } } @Override public void onAnimationEnd(Animator animator) { // TODO 自动生成的方法存根 if (mListener != null) { mListener.onTransitionEnd(animator, null, false); } } @Override public void onAnimationCancel(Animator animator) { // TODO 自动生成的方法存根 if (mListener != null) { mListener.onTransitionCancel(animator, null, false); } } @Override public void onAnimationRepeat(Animator animator) { // TODO 自动生成的方法存根 } @Override public void onAnimationStart(Animation animation) { // TODO 自动生成的方法存根 if (mListener != null) { mListener.onTransitionStart(null, animation, false); } } @Override public void onAnimationEnd(Animation animation) { // TODO 自动生成的方法存根 if (mListener != null) { mListener.onTransitionEnd(null, animation, false); } } @Override public void onAnimationRepeat(Animation animation) { // TODO 自动生成的方法存根 } } }