FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fixed: The exit transition of the current page is not played by hamorphis · Pull Request #2242 · NativeScript/NativeScript · GitHub

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .ts  (3) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
2 changes: 1 addition & 1 deletion tns-core-modules/ui/frame/frame.android.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ export class Frame extends frameCommon.Frame {
// We need to reverse the transitions because Android will ask the current fragment
// to create its POP EXIT animator due to popping the back stack, but in reality
// we need to create the EXIT animator because we are actually going forward and not back.
transitionModule._reverseTransitionsDirection(currentFragment);
transitionModule._prepareCurrentFragmentForClearHistory(currentFragment);
}
let firstEntryName = manager.getBackStackEntryAt(0).getName();
if (trace.enabled) {
Expand Down
39 changes: 21 additions & 18 deletions tns-core-modules/ui/transition/transition.android.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ interface ExpandedFragment {
exitPopEnterTransition: definitionTransition;
completePageAdditionWhenTransitionEnds: CompleteOptions;
completePageRemovalWhenTransitionEnds: CompleteOptions;
exitHack: boolean;
isDestroyed: boolean;
reverseNextAnimDirection: boolean;
}

let enterFakeResourceId = -10;
Expand Down Expand Up @@ -457,14 +457,22 @@ function _addNativeTransitionListener(fragment: any, nativeTransition: any/*andr

export function _onFragmentCreateAnimator(fragment: any, nextAnim: number): android.animation.Animator {
let expandedFragment = <ExpandedFragment>fragment;
let noReverse = !expandedFragment.reverseNextAnimDirection;
delete expandedFragment.reverseNextAnimDirection;
let transitionType;
switch (nextAnim) {
case enterFakeResourceId: transitionType = noReverse ? AndroidTransitionType.enter : AndroidTransitionType.popEnter; break;
case exitFakeResourceId: transitionType = noReverse ? AndroidTransitionType.exit : AndroidTransitionType.popExit; break;
case popEnterFakeResourceId: transitionType = noReverse ? AndroidTransitionType.popEnter : AndroidTransitionType.enter; break;
case popExitFakeResourceId: transitionType = noReverse ? AndroidTransitionType.popExit : AndroidTransitionType.exit; break;
case enterFakeResourceId: transitionType = AndroidTransitionType.enter; break;
case exitFakeResourceId: transitionType = AndroidTransitionType.exit; break;
case popEnterFakeResourceId: transitionType = AndroidTransitionType.popEnter; break;
case popExitFakeResourceId: transitionType = AndroidTransitionType.popExit; break;
}

// Clear history hack.
if ((nextAnim === popExitFakeResourceId || !nextAnim) && expandedFragment.exitHack) {
// fragment is the current fragment and was popped due to clear history.
// We have to simulate moving forward with the fragment's exit transition.
// nextAnim can be null if the transaction which brought us to the fragment
// was without a transition and setCustomAnimations was not called.
trace.write(`HACK EXIT FOR ${fragment}`, trace.categories.Transition);
transitionType = AndroidTransitionType.exit;
}

let transition;
Expand All @@ -478,10 +486,11 @@ export function _onFragmentCreateAnimator(fragment: any, nextAnim: number): andr
transition = expandedFragment.exitPopEnterTransition;
break;
}

let animator: android.animation.Animator;
if (transition) {
animator = <android.animation.Animator>transition.createAndroidAnimator(transitionType);
trace.write(`${transition}.createAndroidAnimator(${transitionType}): ${animator}`, trace.categories.Transition);
let transitionListener = new android.animation.Animator.AnimatorListener({
onAnimationStart: function (animator: android.animation.Animator): void {
if (trace.enabled) {
Expand Down Expand Up @@ -527,19 +536,13 @@ export function _onFragmentCreateAnimator(fragment: any, nextAnim: number): andr
return animator;
}

export function _reverseTransitionsDirection(fragment: any): void {
trace.write(`Swapping ${fragment} transitions...`, trace.categories.Transition);
export function _prepareCurrentFragmentForClearHistory(fragment: any): void {
trace.write(`Preparing ${fragment} transitions fro clear history...`, trace.categories.Transition);
let expandedFragment = <ExpandedFragment>fragment;
expandedFragment.reverseNextAnimDirection = true;
expandedFragment.exitHack = true;
if (_sdkVersion() >= 21) {
let enterTransition = fragment.getEnterTransition();
let exitTransition = fragment.getExitTransition();
let reenterTransition = fragment.getReenterTransition();
let returnTransition = fragment.getReturnTransition();
fragment.setEnterTransition(exitTransition);
fragment.setExitTransition(enterTransition);
fragment.setReenterTransition(returnTransition);
fragment.setReturnTransition(reenterTransition);
fragment.setReturnTransition(exitTransition);
}
_printTransitions(fragment);
}
Expand Down
2 changes: 1 addition & 1 deletion tns-core-modules/ui/transition/transition.d.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
export function _onFragmentShown(fragment: any, isBack: boolean): void;
export function _onFragmentHidden(fragment: any, isBack: boolean, destroyed: boolean): void;
export function _removePageNativeViewFromAndroidParent(page: Page): void;
export function _reverseTransitionsDirection(fragment: any): void;
export function _prepareCurrentFragmentForClearHistory(fragment: any): void;

export function _createIOSAnimatedTransitioning(navigationTransition: NavigationTransition, nativeCurve: any, operation: number, fromVC: any, toVC: any): any;
//@endprivate
Expand Down

Back | FazBrowse Home | New Git URL