mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
A lot of re-factoring + bug fix for navigation events
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import definition = require("controls-page");
|
import definition = require("controls-page");
|
||||||
import {View} from "ui/core/view";
|
import {View} from "ui/core/view";
|
||||||
import {Page} from "ui/page";
|
import {Page, NavigatedData} from "ui/page";
|
||||||
import {topmost as topmostFrame, NavigationTransition, Frame} from "ui/frame";
|
import {topmost as topmostFrame, NavigationTransition, Frame} from "ui/frame";
|
||||||
import {Orientation, AnimationCurve} from "ui/enums";
|
import {Orientation, AnimationCurve} from "ui/enums";
|
||||||
import {StackLayout} from "ui/layouts/stack-layout";
|
import {StackLayout} from "ui/layouts/stack-layout";
|
||||||
@@ -39,25 +39,25 @@ export class NavPage extends Page implements definition.ControlsPage {
|
|||||||
|
|
||||||
var that = this;
|
var that = this;
|
||||||
that.on(View.loadedEvent, (args) => {
|
that.on(View.loadedEvent, (args) => {
|
||||||
console.log(`${args.object}.loadedEvent`);
|
console.log(`Loaded ${args.object}`);
|
||||||
//if (topmostFrame().android) {
|
if (topmostFrame().android) {
|
||||||
// topmostFrame().android.cachePagesOnNavigate = true;
|
topmostFrame().android.cachePagesOnNavigate = true;
|
||||||
//}
|
}
|
||||||
});
|
});
|
||||||
that.on(View.unloadedEvent, (args) => {
|
that.on(View.unloadedEvent, (args) => {
|
||||||
console.log(`${args.object}.unloadedEvent`);
|
console.log(`Unloaded ${args.object}`);
|
||||||
});
|
});
|
||||||
that.on(Page.navigatingFromEvent, (args) => {
|
that.on(Page.navigatingFromEvent, (args: NavigatedData) => {
|
||||||
console.log(`${args.object}.navigatingFromEvent`);
|
console.log(`NavigatING FROM ${args.object}, isBackNavigation: ${args.isBackNavigation}`);
|
||||||
});
|
});
|
||||||
that.on(Page.navigatedFromEvent, (args) => {
|
that.on(Page.navigatedFromEvent, (args: NavigatedData) => {
|
||||||
console.log(`${args.object}.navigatedFromEvent`);
|
console.log(`NaviagatED FROM ${args.object}, isBackNavigation: ${args.isBackNavigation}`);
|
||||||
});
|
});
|
||||||
that.on(Page.navigatingToEvent, (args) => {
|
that.on(Page.navigatingToEvent, (args: NavigatedData) => {
|
||||||
console.log(`${args.object}.navigatingToEvent`);
|
console.log(`NavigatING TO ${args.object}, isBackNavigation: ${args.isBackNavigation}`);
|
||||||
});
|
});
|
||||||
that.on(Page.navigatedToEvent, (args) => {
|
that.on(Page.navigatedToEvent, (args: NavigatedData) => {
|
||||||
console.log(`${args.object}.navigatedToEvent`);
|
console.log(`NavigatED TO ${args.object}, isBackNavigation: ${args.isBackNavigation}`);
|
||||||
(<any>topmostFrame())._printFrameBackStack();
|
(<any>topmostFrame())._printFrameBackStack();
|
||||||
if (topmostFrame().android) {
|
if (topmostFrame().android) {
|
||||||
(<any>topmostFrame())._printNativeBackStack();
|
(<any>topmostFrame())._printNativeBackStack();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as TKUnit from "../TKUnit";
|
import * as TKUnit from "../TKUnit";
|
||||||
import {Page} from "ui/page";
|
import {Page, NavigatedData} from "ui/page";
|
||||||
import {topmost as topmostFrame, NavigationTransition} from "ui/frame";
|
import {topmost as topmostFrame, NavigationTransition} from "ui/frame";
|
||||||
import {Color} from "color";
|
import {Color} from "color";
|
||||||
|
|
||||||
@@ -174,3 +174,65 @@ export var test_ClearHistoryWithTransitionDoesNotBreakNavigation = function () {
|
|||||||
// Clean up
|
// Clean up
|
||||||
topmost.transition = undefined;
|
topmost.transition = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _test_NavigationEvents(transition?: NavigationTransition) {
|
||||||
|
let argsToString = (args: NavigatedData) => {
|
||||||
|
return `${(<Page>args.object).id} ${args.eventName} ${(args.isBackNavigation ? "back" : "forward") }`
|
||||||
|
};
|
||||||
|
|
||||||
|
let topmost = topmostFrame();
|
||||||
|
let mainTestPage = topmost.currentPage;
|
||||||
|
let originalMainPageId = mainTestPage.id;
|
||||||
|
mainTestPage.id = "main-page";
|
||||||
|
let actualMainPageEvents = new Array<string>();
|
||||||
|
mainTestPage.on(Page.navigatingFromEvent, (args: NavigatedData) => { actualMainPageEvents.push(argsToString(args)); });
|
||||||
|
mainTestPage.on(Page.navigatedFromEvent, (args: NavigatedData) => { actualMainPageEvents.push(argsToString(args)); });
|
||||||
|
mainTestPage.on(Page.navigatingToEvent, (args: NavigatedData) => { actualMainPageEvents.push(argsToString(args)); });
|
||||||
|
mainTestPage.on(Page.navigatedToEvent, (args: NavigatedData) => { actualMainPageEvents.push(argsToString(args)); });
|
||||||
|
|
||||||
|
let actualSecondPageEvents = new Array<string>();
|
||||||
|
let secondPageFactory = function (): Page {
|
||||||
|
var secondPage = new Page();
|
||||||
|
secondPage.id = "second-page"
|
||||||
|
secondPage.on(Page.navigatingFromEvent, (args: NavigatedData) => { actualSecondPageEvents.push(argsToString(args)); });
|
||||||
|
secondPage.on(Page.navigatedFromEvent, (args: NavigatedData) => { actualSecondPageEvents.push(argsToString(args)); });
|
||||||
|
secondPage.on(Page.navigatingToEvent, (args: NavigatedData) => { actualSecondPageEvents.push(argsToString(args)); });
|
||||||
|
secondPage.on(Page.navigatedToEvent, (args: NavigatedData) => { actualSecondPageEvents.push(argsToString(args)); });
|
||||||
|
secondPage.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255));
|
||||||
|
return secondPage;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Go to other page
|
||||||
|
topmost.navigate({ create: secondPageFactory, transition: transition });
|
||||||
|
TKUnit.waitUntilReady(() => { return topmost.currentPage !== mainTestPage; });
|
||||||
|
|
||||||
|
// Go back to main
|
||||||
|
topmost.goBack();
|
||||||
|
TKUnit.waitUntilReady(() => { return topmost.currentPage === mainTestPage; });
|
||||||
|
mainTestPage.id = originalMainPageId;
|
||||||
|
|
||||||
|
let expectedMainPageEvents = [
|
||||||
|
"main-page navigatingFrom forward",
|
||||||
|
"main-page navigatedFrom forward",
|
||||||
|
"main-page navigatingTo back",
|
||||||
|
"main-page navigatedTo back"
|
||||||
|
];
|
||||||
|
TKUnit.arrayAssert(actualMainPageEvents, expectedMainPageEvents, "Actual main-page events are different from expected.");
|
||||||
|
|
||||||
|
let expectedSecondPageEvents = [
|
||||||
|
"second-page navigatingTo forward",
|
||||||
|
"second-page navigatedTo forward",
|
||||||
|
"second-page navigatingFrom back",
|
||||||
|
"second-page navigatedFrom back"
|
||||||
|
];
|
||||||
|
TKUnit.arrayAssert(actualSecondPageEvents, expectedSecondPageEvents, "Actual second-page events are different from expected.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export var test_NavigationEvents = function () {
|
||||||
|
_test_NavigationEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
export var test_NavigationEvents_WithTransition = function () {
|
||||||
|
_test_NavigationEvents({ name: "slide" });
|
||||||
|
}
|
||||||
@@ -9,11 +9,18 @@ import trace = require("trace");
|
|||||||
var _sdkVersion = parseInt(platform.device.sdkVersion);
|
var _sdkVersion = parseInt(platform.device.sdkVersion);
|
||||||
var _defaultInterpolator = new android.view.animation.AccelerateDecelerateInterpolator();
|
var _defaultInterpolator = new android.view.animation.AccelerateDecelerateInterpolator();
|
||||||
|
|
||||||
var ENTER_POPEXIT_TRANSITION = "ENTER_POPEXIT_TRANSITION";
|
interface CompleteOptions {
|
||||||
var EXIT_POPENTER_TRANSITION = "EXIT_POPENTER_TRANSITION";
|
isBack: boolean;
|
||||||
var COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS = "COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS";
|
}
|
||||||
var COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS = "COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS";
|
|
||||||
var DESTROYED = "DESTROYED";
|
interface ExpandedFragment {
|
||||||
|
enterPopExitTransition: definition.Transition;
|
||||||
|
exitPopEnterTransition: definition.Transition;
|
||||||
|
completePageAdditionWhenTransitionEnds: CompleteOptions;
|
||||||
|
completePageRemovalWhenTransitionEnds: CompleteOptions;
|
||||||
|
isDestroyed: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
var enterFakeResourceId = -10;
|
var enterFakeResourceId = -10;
|
||||||
var exitFakeResourceId = -20;
|
var exitFakeResourceId = -20;
|
||||||
var popEnterFakeResourceId = -30;
|
var popEnterFakeResourceId = -30;
|
||||||
@@ -27,9 +34,10 @@ export module AndroidTransitionType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function _clearBackwardTransitions(fragment: any): void {
|
export function _clearBackwardTransitions(fragment: any): void {
|
||||||
if (fragment[ENTER_POPEXIT_TRANSITION]) {
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
trace.write(`Cleared ENTER_POPEXIT_TRANSITION ${fragment[ENTER_POPEXIT_TRANSITION]} for ${fragment.getTag()}`, trace.categories.Transition);
|
if (expandedFragment.enterPopExitTransition) {
|
||||||
fragment[ENTER_POPEXIT_TRANSITION] = undefined;
|
trace.write(`Cleared enterPopExitTransition ${expandedFragment.enterPopExitTransition} for ${fragment.getTag()}`, trace.categories.Transition);
|
||||||
|
expandedFragment.enterPopExitTransition = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_sdkVersion >= 21) {
|
if (_sdkVersion >= 21) {
|
||||||
@@ -47,9 +55,10 @@ export function _clearBackwardTransitions(fragment: any): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function _clearForwardTransitions(fragment: any): void {
|
export function _clearForwardTransitions(fragment: any): void {
|
||||||
if (fragment[EXIT_POPENTER_TRANSITION]) {
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
trace.write(`Cleared EXIT_POPENTER_TRANSITION ${fragment[EXIT_POPENTER_TRANSITION]} for ${fragment.getTag()}`, trace.categories.Transition);
|
if (expandedFragment.exitPopEnterTransition) {
|
||||||
fragment[EXIT_POPENTER_TRANSITION] = undefined;
|
trace.write(`Cleared exitPopEnterTransition ${expandedFragment.exitPopEnterTransition} for ${fragment.getTag()}`, trace.categories.Transition);
|
||||||
|
expandedFragment.exitPopEnterTransition = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_sdkVersion >= 21) {
|
if (_sdkVersion >= 21) {
|
||||||
@@ -199,9 +208,11 @@ export function _setAndroidFragmentTransitions(navigationTransition: frameModule
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (transition) {
|
if (transition) {
|
||||||
newFragment[ENTER_POPEXIT_TRANSITION] = transition;
|
var newexpandedFragment = <ExpandedFragment>newFragment;
|
||||||
|
newexpandedFragment.enterPopExitTransition = transition;
|
||||||
if (currentFragment) {
|
if (currentFragment) {
|
||||||
currentFragment[EXIT_POPENTER_TRANSITION] = transition;
|
var currentexpandedFragment = <ExpandedFragment>currentFragment;
|
||||||
|
currentexpandedFragment.exitPopEnterTransition = transition;
|
||||||
}
|
}
|
||||||
fragmentTransaction.setCustomAnimations(enterFakeResourceId, exitFakeResourceId, popEnterFakeResourceId, popExitFakeResourceId);
|
fragmentTransaction.setCustomAnimations(enterFakeResourceId, exitFakeResourceId, popEnterFakeResourceId, popExitFakeResourceId);
|
||||||
}
|
}
|
||||||
@@ -222,68 +233,69 @@ function _setUpNativeTransition(navigationTransition: frameModule.NavigationTran
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function _onFragmentShown(fragment: android.app.Fragment, isBack: boolean): void {
|
export function _onFragmentShown(fragment: any, isBack: boolean): void {
|
||||||
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
var transitionType = isBack ? "Pop Enter" : "Enter";
|
var transitionType = isBack ? "Pop Enter" : "Enter";
|
||||||
var relevantTransition = isBack ? EXIT_POPENTER_TRANSITION : ENTER_POPEXIT_TRANSITION;
|
var relevantTransition = isBack ? expandedFragment.exitPopEnterTransition : expandedFragment.enterPopExitTransition;
|
||||||
if (fragment[relevantTransition]) {
|
if (relevantTransition) {
|
||||||
trace.write(`${fragment.getTag()} has been shown when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${fragment[relevantTransition]}. Will complete page addition when transition ends.`, trace.categories.Transition);
|
trace.write(`${fragment.getTag() } has been shown when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${relevantTransition}. Will complete page addition when transition ends.`, trace.categories.Transition);
|
||||||
fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS] = { isBack: isBack };
|
expandedFragment.completePageAdditionWhenTransitionEnds = { isBack: isBack };
|
||||||
}
|
}
|
||||||
else if (_sdkVersion >= 21) {
|
else if (_sdkVersion >= 21) {
|
||||||
var nativeTransition = isBack ? (<any>fragment).getReenterTransition() : (<any>fragment).getEnterTransition();
|
var nativeTransition = isBack ? (<any>fragment).getReenterTransition() : (<any>fragment).getEnterTransition();
|
||||||
if (nativeTransition) {
|
if (nativeTransition) {
|
||||||
trace.write(`${fragment.getTag() } has been shown when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${nativeTransition.getClass().getSimpleName()} transition. Will complete page addition when transition ends.`, trace.categories.Transition);
|
trace.write(`${fragment.getTag() } has been shown when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${nativeTransition.getClass().getSimpleName()} transition. Will complete page addition when transition ends.`, trace.categories.Transition);
|
||||||
fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS] = { isBack: isBack };
|
expandedFragment.completePageAdditionWhenTransitionEnds = { isBack: isBack };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS] === undefined) {
|
if (!expandedFragment.completePageAdditionWhenTransitionEnds) {
|
||||||
_completePageAddition(fragment, isBack, true);
|
_completePageAddition(fragment, isBack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function _onFragmentHidden(fragment: android.app.Fragment, isBack: boolean, destroyed: boolean) {
|
export function _onFragmentHidden(fragment: any, isBack: boolean, destroyed: boolean) {
|
||||||
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
var transitionType = isBack ? "Pop Exit" : "Exit";
|
var transitionType = isBack ? "Pop Exit" : "Exit";
|
||||||
var relevantTransition = isBack ? ENTER_POPEXIT_TRANSITION : EXIT_POPENTER_TRANSITION;
|
var relevantTransition = isBack ? expandedFragment.enterPopExitTransition : expandedFragment.exitPopEnterTransition;
|
||||||
if (fragment[relevantTransition]) {
|
if (relevantTransition) {
|
||||||
trace.write(`${fragment.getTag()} has been hidden when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${fragment[relevantTransition]}. Will complete page removal when transition ends.`, trace.categories.Transition);
|
trace.write(`${fragment.getTag()} has been hidden when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${relevantTransition}. Will complete page removal when transition ends.`, trace.categories.Transition);
|
||||||
fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS] = true;
|
expandedFragment.completePageRemovalWhenTransitionEnds = { isBack: isBack };
|
||||||
}
|
}
|
||||||
else if (_sdkVersion >= 21) {
|
else if (_sdkVersion >= 21) {
|
||||||
var nativeTransition = isBack ? (<any>fragment).getReturnTransition() : (<any>fragment).getExitTransition();
|
var nativeTransition = isBack ? (<any>fragment).getReturnTransition() : (<any>fragment).getExitTransition();
|
||||||
if (nativeTransition) {
|
if (nativeTransition) {
|
||||||
trace.write(`${fragment.getTag()} has been hidden when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${nativeTransition.getClass().getSimpleName()} transition. Will complete page removal when transition ends.`, trace.categories.Transition);
|
trace.write(`${fragment.getTag()} has been hidden when going ${isBack ? "back" : "forward"}, but there is ${transitionType} ${nativeTransition.getClass().getSimpleName()} transition. Will complete page removal when transition ends.`, trace.categories.Transition);
|
||||||
fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS] = true;
|
expandedFragment.completePageRemovalWhenTransitionEnds = { isBack: isBack };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment[DESTROYED] = destroyed;
|
expandedFragment.isDestroyed = destroyed;
|
||||||
|
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS] === undefined) {
|
if (expandedFragment.completePageRemovalWhenTransitionEnds === undefined) {
|
||||||
// This might be a second call if the fragment is hidden and then destroyed.
|
// This might be a second call if the fragment is hidden and then destroyed.
|
||||||
_completePageRemoval(fragment, true, isBack);
|
_completePageRemoval(fragment, isBack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _completePageAddition(fragment: android.app.Fragment, isBack: boolean, force?: boolean) {
|
function _completePageAddition(fragment: any, isBack: boolean) {
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS] || force) {
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS] = undefined;
|
expandedFragment.completePageAdditionWhenTransitionEnds = undefined;
|
||||||
var frame = (<any>fragment).frame;
|
var frame = fragment.frame;
|
||||||
var entry: frameModule.BackstackEntry = (<any>fragment).entry;
|
var entry: frameModule.BackstackEntry = fragment.entry;
|
||||||
var page: pageModule.Page = entry.resolvedPage;
|
var page: pageModule.Page = entry.resolvedPage;
|
||||||
// The original code that was once in Frame onFragmentShown
|
// The original code that was once in Frame onFragmentShown
|
||||||
frame._currentEntry = entry;
|
frame._currentEntry = entry;
|
||||||
page.onNavigatedTo(isBack);
|
page.onNavigatedTo(isBack);
|
||||||
frame._processNavigationQueue(page);
|
frame._processNavigationQueue(page);
|
||||||
trace.write(`ADDITION of ${page} completed`, trace.categories.Transition);
|
trace.write(`ADDITION of ${page} completed`, trace.categories.Transition);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _completePageRemoval(fragment: android.app.Fragment, force: boolean = false, isBack: boolean = false) {
|
function _completePageRemoval(fragment: any, isBack: boolean) {
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS] || force) {
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS] = undefined;
|
expandedFragment.completePageRemovalWhenTransitionEnds = undefined;
|
||||||
var frame = (<any>fragment).frame;
|
var frame = fragment.frame;
|
||||||
var entry: frameModule.BackstackEntry = (<any>fragment).entry;
|
var entry: frameModule.BackstackEntry = fragment.entry;
|
||||||
var page: pageModule.Page = entry.resolvedPage;
|
var page: pageModule.Page = entry.resolvedPage;
|
||||||
if (page.frame) {
|
if (page.frame) {
|
||||||
frame._removeView(page);
|
frame._removeView(page);
|
||||||
@@ -293,10 +305,9 @@ function _completePageRemoval(fragment: android.app.Fragment, force: boolean = f
|
|||||||
else {
|
else {
|
||||||
trace.write(`REMOVAL of ${page} has already been done`, trace.categories.Transition);
|
trace.write(`REMOVAL of ${page} has already been done`, trace.categories.Transition);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (fragment[DESTROYED]) {
|
if (expandedFragment.isDestroyed) {
|
||||||
fragment[DESTROYED] = undefined;
|
expandedFragment.isDestroyed = undefined;
|
||||||
if (page._context) {
|
if (page._context) {
|
||||||
page._onDetached(true);
|
page._onDetached(true);
|
||||||
trace.write(`DETACHMENT of ${page} completed`, trace.categories.Transition);
|
trace.write(`DETACHMENT of ${page} completed`, trace.categories.Transition);
|
||||||
@@ -307,24 +318,25 @@ function _completePageRemoval(fragment: android.app.Fragment, force: boolean = f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _addNativeTransitionListener(fragment: android.app.Fragment, nativeTransition: any/*android.transition.Transition*/) {
|
function _addNativeTransitionListener(fragment: any, nativeTransition: any/*android.transition.Transition*/) {
|
||||||
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
var transitionListener = new (<any>android).transition.Transition.TransitionListener({
|
var transitionListener = new (<any>android).transition.Transition.TransitionListener({
|
||||||
onTransitionCancel: function (transition: any): void {
|
onTransitionCancel: function (transition: any): void {
|
||||||
trace.write(`CANCEL ${nativeTransition} transition for ${fragment}`, trace.categories.Transition);
|
trace.write(`CANCEL ${nativeTransition} transition for ${fragment}`, trace.categories.Transition);
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageRemovalWhenTransitionEnds) {
|
||||||
_completePageRemoval(fragment);
|
_completePageRemoval(fragment, expandedFragment.completePageRemovalWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageAdditionWhenTransitionEnds) {
|
||||||
_completePageAddition(fragment, fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS].isBack);
|
_completePageAddition(fragment, expandedFragment.completePageAdditionWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onTransitionEnd: function (transition: any): void {
|
onTransitionEnd: function (transition: any): void {
|
||||||
trace.write(`END ${nativeTransition} transition for ${fragment}`, trace.categories.Transition);
|
trace.write(`END ${nativeTransition} transition for ${fragment}`, trace.categories.Transition);
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageRemovalWhenTransitionEnds) {
|
||||||
_completePageRemoval(fragment);
|
_completePageRemoval(fragment, expandedFragment.completePageRemovalWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageAdditionWhenTransitionEnds) {
|
||||||
_completePageAddition(fragment, fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS].isBack);
|
_completePageAddition(fragment, expandedFragment.completePageAdditionWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onTransitionPause: function (transition: any): void {
|
onTransitionPause: function (transition: any): void {
|
||||||
@@ -340,7 +352,8 @@ function _addNativeTransitionListener(fragment: android.app.Fragment, nativeTran
|
|||||||
nativeTransition.addListener(transitionListener);
|
nativeTransition.addListener(transitionListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function _onFragmentCreateAnimator(fragment: android.app.Fragment, nextAnim: number): android.animation.Animator {
|
export function _onFragmentCreateAnimator(fragment: any, nextAnim: number): android.animation.Animator {
|
||||||
|
var expandedFragment = <ExpandedFragment>fragment;
|
||||||
var transitionType;
|
var transitionType;
|
||||||
switch (nextAnim) {
|
switch (nextAnim) {
|
||||||
case enterFakeResourceId: transitionType = AndroidTransitionType.enter; break;
|
case enterFakeResourceId: transitionType = AndroidTransitionType.enter; break;
|
||||||
@@ -353,11 +366,11 @@ export function _onFragmentCreateAnimator(fragment: android.app.Fragment, nextAn
|
|||||||
switch (transitionType) {
|
switch (transitionType) {
|
||||||
case AndroidTransitionType.enter:
|
case AndroidTransitionType.enter:
|
||||||
case AndroidTransitionType.popExit:
|
case AndroidTransitionType.popExit:
|
||||||
transition = <Transition>fragment[ENTER_POPEXIT_TRANSITION];
|
transition = expandedFragment.enterPopExitTransition;
|
||||||
break;
|
break;
|
||||||
case AndroidTransitionType.exit:
|
case AndroidTransitionType.exit:
|
||||||
case AndroidTransitionType.popEnter:
|
case AndroidTransitionType.popEnter:
|
||||||
transition = <Transition>fragment[EXIT_POPENTER_TRANSITION];
|
transition = expandedFragment.exitPopEnterTransition;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,20 +386,20 @@ export function _onFragmentCreateAnimator(fragment: android.app.Fragment, nextAn
|
|||||||
},
|
},
|
||||||
onAnimationEnd: function (animator: android.animation.Animator): void {
|
onAnimationEnd: function (animator: android.animation.Animator): void {
|
||||||
trace.write(`END ${transitionType} ${transition}`, trace.categories.Transition);
|
trace.write(`END ${transitionType} ${transition}`, trace.categories.Transition);
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageRemovalWhenTransitionEnds) {
|
||||||
_completePageRemoval(fragment);
|
_completePageRemoval(fragment, expandedFragment.completePageRemovalWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageAdditionWhenTransitionEnds) {
|
||||||
_completePageAddition(fragment, fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS].isBack);
|
_completePageAddition(fragment, expandedFragment.completePageAdditionWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onAnimationCancel: function (animator: android.animation.Animator): void {
|
onAnimationCancel: function (animator: android.animation.Animator): void {
|
||||||
trace.write(`CANCEL ${transitionType} ${transition} for ${fragment.getTag()}`, trace.categories.Transition);
|
trace.write(`CANCEL ${transitionType} ${transition} for ${fragment.getTag()}`, trace.categories.Transition);
|
||||||
if (fragment[COMPLETE_PAGE_REMOVAL_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageRemovalWhenTransitionEnds) {
|
||||||
_completePageRemoval(fragment);
|
_completePageRemoval(fragment, expandedFragment.completePageRemovalWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
if (fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS]) {
|
if (expandedFragment.completePageAdditionWhenTransitionEnds) {
|
||||||
_completePageAddition(fragment, fragment[COMPLETE_PAGE_ADDITION_WHEN_TRANSITION_ENDS].isBack);
|
_completePageAddition(fragment, expandedFragment.completePageAdditionWhenTransitionEnds.isBack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user