Search in sources :

Example 1 with DetailsTransition

use of com.example.fragmenttransitions.core.sharedelements.DetailsTransition in project simple-stack by Zhuinden.

the class SharedElementFragmentStateChanger method configureFragmentTransaction.

@Override
protected void configureFragmentTransaction(@Nonnull FragmentTransaction fragmentTransaction, @Nullable Fragment topPreviousFragment, @Nonnull Fragment topNewFragment, @Nonnull StateChange stateChange) {
    BaseKey topNewKey = stateChange.topNewKey();
    BaseKey topPreviousKey = stateChange.topPreviousKey();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (topPreviousFragment != null) {
            topPreviousFragment.setExitTransition(new Fade());
        }
        topNewFragment.setEnterTransition(new Fade());
        if (topNewKey instanceof HasSharedElement || topPreviousKey instanceof HasSharedElement) {
            topNewFragment.setSharedElementEnterTransition(new DetailsTransition());
            topNewFragment.setSharedElementReturnTransition(new DetailsTransition());
            if (topPreviousFragment != null) {
                topPreviousFragment.setSharedElementEnterTransition(new DetailsTransition());
                topPreviousFragment.setSharedElementReturnTransition(new DetailsTransition());
            }
        }
    }
    fragmentTransaction.setReorderingAllowed(true);
    if (topNewKey instanceof HasSharedElement) {
        HasSharedElement forwardKey = (HasSharedElement) topNewKey;
        if (forwardKey.sharedElement() != null) {
            // to eliminate use of WeakReference<View>, we add the view's transition name to the FragmentTransaction directly.
            BackstackRecordAccessor.addSharedElement(fragmentTransaction, forwardKey.sharedElement().sourceTransitionName(), forwardKey.sharedElement().targetTransitionName());
        }
    }
    if (topPreviousKey instanceof HasSharedElement) {
        HasSharedElement backwardKey = (HasSharedElement) topPreviousKey;
        if (backwardKey.sharedElement() != null) {
            // during back navigation, we must invert the received "source" and "target".
            BackstackRecordAccessor.addSharedElement(fragmentTransaction, backwardKey.sharedElement().targetTransitionName(), backwardKey.sharedElement().sourceTransitionName());
        }
    }
}
Also used : HasSharedElement(com.example.fragmenttransitions.core.sharedelements.HasSharedElement) Fade(android.transition.Fade) DetailsTransition(com.example.fragmenttransitions.core.sharedelements.DetailsTransition)

Aggregations

Fade (android.transition.Fade)1 DetailsTransition (com.example.fragmenttransitions.core.sharedelements.DetailsTransition)1 HasSharedElement (com.example.fragmenttransitions.core.sharedelements.HasSharedElement)1