private void setupExitAnimations() { Fade fade = new Fade(); getWindow().setReturnTransition(fade); fade.setDuration(getResources().getInteger(R.integer.anim_duration_medium)); fade.setStartDelay(getResources().getInteger(R.integer.anim_duration_medium)); fade.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { transition.removeListener(this); animateButtonsOut(); animateRevealHide(binding.revealRoot); } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); }
private void performTransition() { if (isDestroyed()) { return; } Fragment previousFragment = mFragmentManager.findFragmentById(R.id.fragment_container); Fragment nextFragment = Fragment2.newInstance(); FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); // 1. Exit for Previous Fragment Fade exitFade = new Fade(); exitFade.setDuration(FADE_DEFAULT_TIME); previousFragment.setExitTransition(exitFade); // 2. Shared Elements Transition TransitionSet enterTransitionSet = new TransitionSet(); enterTransitionSet.addTransition(TransitionInflater.from(this).inflateTransition(android.R.transition.move)); enterTransitionSet.setDuration(MOVE_DEFAULT_TIME); enterTransitionSet.setStartDelay(FADE_DEFAULT_TIME); nextFragment.setSharedElementEnterTransition(enterTransitionSet); // 3. Enter Transition for New Fragment Fade enterFade = new Fade(); enterFade.setStartDelay(MOVE_DEFAULT_TIME + FADE_DEFAULT_TIME); enterFade.setDuration(FADE_DEFAULT_TIME); nextFragment.setEnterTransition(enterFade); View logo = ButterKnife.findById(this, R.id.fragment1_logo); fragmentTransaction.addSharedElement(logo, logo.getTransitionName()); fragmentTransaction.replace(R.id.fragment_container, nextFragment); fragmentTransaction.commitAllowingStateLoss(); }