package com.saulmm.material.activities; import android.animation.Animator; import android.app.Activity; import android.os.Bundle; import android.transition.Slide; import android.transition.Transition; import android.view.Gravity; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.LinearLayout; import com.saulmm.material.R; import com.saulmm.material.utils.AnimatorAdapter; import com.saulmm.material.utils.TransitionAdapter; public class TransitionSecondActivity extends Activity { private static final int SCALE_DELAY = 30; private LinearLayout rowContainer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_transition_second); rowContainer = (LinearLayout) findViewById(R.id.row_container2); Slide slideExitTransition = new Slide(Gravity.BOTTOM); slideExitTransition.excludeTarget(android.R.id.navigationBarBackground, true); slideExitTransition.excludeTarget(android.R.id.statusBarBackground, true); getWindow().getEnterTransition().addListener(new TransitionAdapter() { @Override public void onTransitionEnd(Transition transition) { super.onTransitionEnd(transition); getWindow().getEnterTransition().removeListener(this); for (int i = 0; i < rowContainer.getChildCount(); i++) { View rowView = rowContainer.getChildAt(i); rowView.animate().setStartDelay(i * SCALE_DELAY) .scaleX(1).scaleY(1); } } }); } @Override public void onBackPressed() { for (int i = 0; i < rowContainer.getChildCount(); i++) { View rowView = rowContainer.getChildAt(i); ViewPropertyAnimator propertyAnimator = rowView.animate() .setStartDelay(i * SCALE_DELAY) .scaleX(0).scaleY(0) .setListener(new AnimatorAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); finishAfterTransition(); } }); } } }