import * as view from "tns-core-modules/ui/core/view"; import * as pages from "tns-core-modules/ui/page"; import { Button } from "tns-core-modules/ui/button"; import { SegmentedBar, SegmentedBarItem } from "tns-core-modules/ui/segmented-bar"; import { Label } from "tns-core-modules/ui/label"; export function easeAnimate(args) { const clicked = args.object as Button; const page: pages.Page = clicked.page; const target = view.getViewById(page, "target") as Label; const select = view.getViewById(page, "select") as SegmentedBar; const item: SegmentedBarItem = select.items[select.selectedIndex]; const easeType: string = clicked.text; const extent = 128; let duration = easeType === "spring" ? 800 : 500; let delay = easeType === "spring" ? 0 : 200; let animateKey: string = null; let animateValueTo: any = null; let animateValueFrom: any = null; switch (item.title) { case "height": animateKey = "height"; target.originX = target.originY = 0; animateValueTo = 0; animateValueFrom = extent; break; case "width": animateKey = "width"; target.originX = target.originY = 0; animateValueTo = 0; animateValueFrom = extent; break; case "opacity": animateKey = "opacity"; animateValueTo = 0; animateValueFrom = 1; break; case "color": animateKey = "backgroundColor"; animateValueTo = "blue"; animateValueFrom = "purple"; break; case "rotate": animateKey = "rotate"; target.originX = target.originY = 0.5; animateValueTo = 180; animateValueFrom = 0; break; case "scale": animateKey = "scale"; target.originX = target.originY = 0.5; animateValueTo = { x: 1.5, y: 1.5 }; animateValueFrom = { x: 1, y: 1 }; break; } target .animate({ [animateKey]: animateValueTo, duration, curve: easeType }) .then(() => { return target.animate({ [animateKey]: animateValueFrom, delay, duration, curve: easeType }); }) .catch((e) => console.log(e)); }