mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00
81 lines
2.8 KiB
TypeScript
81 lines
2.8 KiB
TypeScript
import * as TKUnit from "../TKUnit";
|
|
import * as helper from "../ui/helper";
|
|
import * as platform from "platform";
|
|
import * as trace from "trace";
|
|
import {Color} from "color";
|
|
import {NavigationEntry, NavigationTransition} from "ui/frame";
|
|
import {Page} from "ui/page";
|
|
import {AnimationCurve} from "ui/enums"
|
|
|
|
function _testTransition(navigationTransition: NavigationTransition) {
|
|
var testId = `Transition[${JSON.stringify(navigationTransition)}]`;
|
|
if (trace.enabled) {
|
|
trace.write(`Testing ${testId}`, trace.categories.Test);
|
|
}
|
|
var navigationEntry: NavigationEntry = {
|
|
create: function (): Page {
|
|
let page = new Page();
|
|
page.id = testId;
|
|
page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255));
|
|
return page;
|
|
},
|
|
animated: true,
|
|
transition: navigationTransition
|
|
}
|
|
|
|
helper.navigateWithEntry(navigationEntry);
|
|
TKUnit.wait(0.100);
|
|
}
|
|
|
|
// Extremely slow. Run only if needed.
|
|
export var test_Transitions = function () {
|
|
helper.navigate(() => {
|
|
var page = new Page();
|
|
page.id = "TransitionsTestPage_MAIN"
|
|
page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255));
|
|
return page;
|
|
});
|
|
|
|
var transitions;
|
|
var testCustomTransition = true;
|
|
if (platform.device.os === platform.platformNames.ios) {
|
|
transitions = ["curl"];
|
|
}
|
|
else {
|
|
var _sdkVersion = parseInt(platform.device.sdkVersion);
|
|
transitions = _sdkVersion >= 21 ? ["explode"] : [];
|
|
if (_sdkVersion === 23) {
|
|
// Apparently, there is some kind of Android 6.0 (API 23) bug when using ObjectAnimators
|
|
// http://stackoverflow.com/questions/33188485/resultindex-is-1-the-polygon-must-be-invalid-adter-addview
|
|
testCustomTransition = false;
|
|
}
|
|
}
|
|
transitions = transitions.concat(["fade", "flip", "slide"]);
|
|
var durations = [undefined, 500];
|
|
var curves = [undefined, AnimationCurve.easeIn];
|
|
|
|
// Built-in transitions
|
|
var t, d, c;
|
|
var tlen = transitions.length;
|
|
var dlen = durations.length;
|
|
var clen = curves.length;
|
|
for (t = 0; t < tlen; t++) {
|
|
for (d = 0; d < dlen; d++) {
|
|
for (c = 0; c < clen; c++) {
|
|
_testTransition({
|
|
name: transitions[t],
|
|
duration: durations[d],
|
|
curve: curves[c]
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
// Custom transition
|
|
if (testCustomTransition) {
|
|
var customTransitionModule = require("./custom-transition");
|
|
var customTransition = new customTransitionModule.CustomTransition();
|
|
_testTransition({ instance: customTransition });
|
|
}
|
|
}
|