protected virtual void OnBeforeFragmentChanging(FragmentTransaction ft, Fragment fragment, MvxFragmentPresentationAttribute attribute) { if (attribute.SharedElements != null) { foreach (var item in attribute.SharedElements) { string name = item.Key; if (string.IsNullOrEmpty(name)) { name = ViewCompat.GetTransitionName(item.Value); } ft.AddSharedElement(item.Value, name); } } if (!attribute.EnterAnimation.Equals(int.MinValue) && !attribute.ExitAnimation.Equals(int.MinValue)) { if (!attribute.PopEnterAnimation.Equals(int.MinValue) && !attribute.PopExitAnimation.Equals(int.MinValue)) { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation, attribute.PopEnterAnimation, attribute.PopExitAnimation); } else { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation); } } if (attribute.TransitionStyle != int.MinValue) { ft.SetTransitionStyle(attribute.TransitionStyle); } }
protected virtual void OnBeforeFragmentChanging(FragmentTransaction ft, MvxFragmentPresentationAttribute attribute) { if (attribute.SharedElements != null) { foreach (var item in attribute.SharedElements) { ft.AddSharedElement(item.Value, item.Key); } } if (!attribute.EnterAnimation.Equals(int.MinValue) && !attribute.ExitAnimation.Equals(int.MinValue)) { if (!attribute.PopEnterAnimation.Equals(int.MinValue) && !attribute.PopExitAnimation.Equals(int.MinValue)) { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation, attribute.PopEnterAnimation, attribute.PopExitAnimation); } else { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation); } } if (attribute.TransitionStyle != int.MinValue) { ft.SetTransitionStyle(attribute.TransitionStyle); } }
protected virtual void OnBeforeFragmentChanging(FragmentTransaction ft, Fragment fragment, MvxFragmentPresentationAttribute attribute, MvxViewModelRequest request) { if (CurrentActivity is IMvxAndroidSharedElements sharedElementsActivity) { var elements = new List <string>(); foreach (KeyValuePair <string, View> item in sharedElementsActivity.FetchSharedElementsToAnimate(attribute, request)) { var transitionName = item.Value.GetTransitionNameSupport(); if (!string.IsNullOrEmpty(transitionName)) { ft.AddSharedElement(item.Value, transitionName); elements.Add($"{item.Key}:{transitionName}"); } else { MvxLog.Instance.Warn("A XML transitionName is required in order to transition a control when navigating."); } } if (elements.Count > 0) { fragment.Arguments.PutString(SharedElementsBundleKey, string.Join("|", elements)); } } if (!attribute.EnterAnimation.Equals(int.MinValue) && !attribute.ExitAnimation.Equals(int.MinValue)) { if (!attribute.PopEnterAnimation.Equals(int.MinValue) && !attribute.PopExitAnimation.Equals(int.MinValue)) { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation, attribute.PopEnterAnimation, attribute.PopExitAnimation); } else { ft.SetCustomAnimations(attribute.EnterAnimation, attribute.ExitAnimation); } } if (attribute.TransitionStyle != int.MinValue) { ft.SetTransitionStyle(attribute.TransitionStyle); } }
protected virtual void SetAnimationsOnTransaction(FragmentTransaction fragmentTransaction, MvxFragmentPresentationAttribute attribute) { if (fragmentTransaction == null) { return; } if (attribute == null) { return; } if (attribute.EnterAnimation != int.MinValue && attribute.ExitAnimation != int.MinValue) { if (attribute.PopEnterAnimation != int.MinValue && attribute.PopExitAnimation != int.MinValue) { fragmentTransaction.SetCustomAnimations( attribute.EnterAnimation, attribute.ExitAnimation, attribute.PopEnterAnimation, attribute.PopExitAnimation); } else { fragmentTransaction.SetCustomAnimations( attribute.EnterAnimation, attribute.ExitAnimation); } } if (attribute.TransitionStyle != int.MinValue) { fragmentTransaction.SetTransitionStyle(attribute.TransitionStyle); } }
protected virtual void PopFragment(FragmentManager fragmentManager, FragmentTransaction fragmentTransaction, MvxFragmentPresentationAttribute fragmentAttribute, string fragmentName, bool removeIsNeeded = false, bool forward = false) { fragmentAttribute = fragmentAttribute ?? DeqeueFragmentAttributeIfExist(fragmentName); if (fragmentAttribute != null) { if (!fragmentAttribute.EnterAnimation.Equals(int.MinValue) && !fragmentAttribute.ExitAnimation.Equals(int.MinValue)) { if (!fragmentAttribute.PopEnterAnimation.Equals(int.MinValue) && !fragmentAttribute.PopExitAnimation.Equals(int.MinValue)) { fragmentTransaction.SetCustomAnimations(fragmentAttribute.EnterAnimation, fragmentAttribute.ExitAnimation, fragmentAttribute.PopEnterAnimation, fragmentAttribute.PopExitAnimation); } else { fragmentTransaction.SetCustomAnimations(fragmentAttribute.EnterAnimation, fragmentAttribute.ExitAnimation); } } if (fragmentAttribute.TransitionStyle != int.MinValue) { fragmentTransaction.SetTransitionStyle(fragmentAttribute.TransitionStyle); } } if ((FragmentsBackStack.LastOrDefault(x => x.Key == fragmentName)?.ViewModel as IBaseViewModel)?.VmNavigationType == NavigationType.PresentModal) { lock (this) { _presentedModalFragments--; } } var oldFragment = fragmentManager.FindFragmentByTag(fragmentName); if (oldFragment != null) { if (!oldFragment.IsDetached) { if (removeIsNeeded) { RemoveFragmentFromBackStack(fragmentName); fragmentTransaction.Remove(oldFragment); } else { fragmentTransaction.Detach(oldFragment); } } else if (removeIsNeeded) { RemoveFragmentFromBackStack(fragmentName); fragmentTransaction.Remove(oldFragment); } if (!forward) { OnFragmentPopped(fragmentTransaction, oldFragment, null); } } }