use of com.example.fragmenttransitions.core.sharedelements.HasSharedElement 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());
}
}
}
Aggregations