+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.Samples
+{
+ public class PageTransitionSample : IExample
+ {
+ private readonly string[,] Keywords = new string[3, 2]
+ {
+ {"red", "redGrey"},
+ {"green", "greenGrey"},
+ {"blue", "blueGrey"}
+ };
+ private readonly string totalGreyTag = "totalGrey";
+
+ private Navigator navigator;
+ private Page mainPage;
+ private Page redPage, greenPage, bluePage, totalPage;
+
+ private readonly Vector4 ColorGrey = new Vector4(0.82f, 0.80f, 0.78f, 1.0f);
+ private readonly Vector4 ColorBackground = new Vector4(0.99f, 0.94f, 0.83f, 1.0f);
+
+ private readonly Vector4[] TileColor = { new Color("#F5625D"), new Color("#7DFF83"), new Color("#7E72DF") };
+
+ private readonly Vector2 baseSize = new Vector2(480.0f, 800.0f);
+ private Vector2 contentSize;
+
+ private float magnification;
+
+ private float convertSize(float size)
+ {
+ return size * magnification;
+ }
+
+
+ public void Activate()
+ {
+ Window window = NUIApplication.GetDefaultWindow();
+ Vector2 windowSize = new Vector2((float)(window.Size.Width), (float)(window.Size.Height));
+ magnification = Math.Min(windowSize.X / baseSize.X, windowSize.Y / baseSize.Y);
+ contentSize = baseSize * magnification;
+
+ navigator = new Navigator()
+ {
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent,
+ Transition = new Transition()
+ {
+ TimePeriod = new TimePeriod(0.4f),
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseInOutSine),
+ },
+ };
+ window.Add(navigator);
+
+ View mainRoot = new View()
+ {
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent
+ };
+
+ View layoutView = new View()
+ {
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.BottomCenter,
+ ParentOrigin = ParentOrigin.BottomCenter,
+ Layout = new LinearLayout()
+ {
+ LinearAlignment = LinearLayout.Alignment.Center,
+ LinearOrientation = LinearLayout.Orientation.Horizontal,
+ CellPadding = new Size(convertSize(60), convertSize(60)),
+ },
+ Position = new Position(0, -convertSize(30))
+ };
+ mainRoot.Add(layoutView);
+
+ View redButton = CreateButton(TileColor[0], Keywords[0, 0], Keywords[0, 1], redPage);
+ View greenButton = CreateButton(TileColor[1], Keywords[1, 0], Keywords[1, 1], greenPage);
+ View blueButton = CreateButton(TileColor[2], Keywords[2, 0], Keywords[2, 1], bluePage);
+
+ layoutView.Add(redButton);
+ layoutView.Add(greenButton);
+ layoutView.Add(blueButton);
+
+ mainPage = new Page(mainRoot);
+ navigator.Push(mainPage);
+
+ View totalGreyView = new View()
+ {
+ Size = new Size(convertSize(50), convertSize(50)),
+ CornerRadius = convertSize(25),
+ BackgroundColor = ColorGrey,
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = totalGreyTag,
+ }
+ };
+
+ totalGreyView.TouchEvent += (object sender, View.TouchEventArgs e) =>
+ {
+ if (e.Touch.GetState(0) == PointStateType.Down)
+ {
+ navigator.PushWithTransition(totalPage);
+ }
+ return true;
+ };
+ layoutView.Add(totalGreyView);
+
+
+ // ------------------------------------------------------
+
+
+ View totalPageRoot = new View()
+ {
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ SizeHeight = contentSize.Height,
+ };
+
+ View totalLayoutView = new View()
+ {
+ Layout = new GridLayout()
+ {
+ Rows = 2,
+ GridOrientation = GridLayout.Orientation.Vertical,
+ },
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.Center,
+ ParentOrigin = ParentOrigin.Center,
+ };
+ totalPageRoot.Add(totalLayoutView);
+
+ for (int i = 0; i < 3; ++i)
+ {
+ View sizeView = new View()
+ {
+ Size = new Size(contentSize.Width / 2.0f, contentSize.Height / 2.0f),
+ };
+ View smallView = CreatePageScene(TileColor[i], Keywords[i, 0], Keywords[i, 1]);
+ smallView.Scale = new Vector3(0.45f, 0.45f, 1.0f);
+ smallView.PositionUsesPivotPoint = true;
+ smallView.PivotPoint = PivotPoint.Center;
+ smallView.ParentOrigin = ParentOrigin.Center;
+ sizeView.Add(smallView);
+ totalLayoutView.Add(sizeView);
+ }
+
+ View sizeGreyView = new View()
+ {
+ Size = new Size(contentSize.Width / 2.0f, contentSize.Height / 2.0f),
+ };
+
+ View totalGreyReturnView = new View()
+ {
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.Center,
+ ParentOrigin = ParentOrigin.Center,
+ Size = new Size(convertSize(70), convertSize(70)),
+ CornerRadius = convertSize(20),
+ BackgroundColor = ColorGrey,
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = totalGreyTag,
+ }
+ };
+ sizeGreyView.Add(totalGreyReturnView);
+ totalLayoutView.Add(sizeGreyView);
+
+ totalGreyReturnView.TouchEvent += (object sender, View.TouchEventArgs e) =>
+ {
+ if (e.Touch.GetState(0) == PointStateType.Down)
+ {
+ navigator.PopWithTransition();
+ }
+ return true;
+ };
+
+ totalPage = new Page(totalPageRoot);
+ }
+
+ private View CreateButton(Color color, string colorTag, string greyTag, Page secondPage)
+ {
+ View colorView = new View()
+ {
+ Size = new Size(convertSize(50), convertSize(50)),
+ CornerRadius = 0.45f,
+ CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ BackgroundColor = color,
+ Orientation = new Rotation(new Radian((float)Math.PI / 2.0f), Vector3.ZAxis),
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = colorTag,
+ },
+ };
+
+ View greyView = new View()
+ {
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.Center,
+ ParentOrigin = ParentOrigin.Center,
+ Size = new Size(convertSize(40), convertSize(40)),
+ CornerRadius = 0.45f,
+ CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ BackgroundColor = ColorGrey,
+ Orientation = new Rotation(new Radian(-(float)Math.PI / 2.0f), Vector3.ZAxis),
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = greyTag,
+ }
+ };
+
+ secondPage = CreatePage(color, colorTag, greyTag);
+
+ greyView.TouchEvent += (object sender, View.TouchEventArgs e) =>
+ {
+ if (e.Touch.GetState(0) == PointStateType.Down)
+ {
+ navigator.PushWithTransition(secondPage);
+ }
+ return true;
+ };
+ colorView.Add(greyView);
+ return colorView;
+ }
+
+ private View CreatePageScene(Color color, string colorTag, string greyTag)
+ {
+ View pageBackground = new View()
+ {
+ SizeWidth = contentSize.Width,
+ SizeHeight = contentSize.Height,
+ };
+
+ View colorView = new View()
+ {
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent,
+ CornerRadius = 0.05f,
+ CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ BackgroundColor = color,
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = colorTag
+ }
+ };
+
+ View greyView = new View()
+ {
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.TopCenter,
+ ParentOrigin = ParentOrigin.TopCenter,
+ Position = new Position(0, convertSize(80)),
+ SizeWidth = contentSize.Width * 0.7f,
+ SizeHeight = contentSize.Height * 0.06f,
+ CornerRadius = 0.1f,
+ CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ BackgroundColor = ColorGrey,
+ TransitionOptions = new TransitionOptions()
+ {
+ TransitionTag = greyTag
+ }
+ };
+
+ View whiteView = new View()
+ {
+ PositionUsesPivotPoint = true,
+ PivotPoint = PivotPoint.BottomCenter,
+ ParentOrigin = ParentOrigin.BottomCenter,
+ Position = new Position(0, -convertSize(60)),
+ SizeWidth = contentSize.Width * 0.75f,
+ SizeHeight = contentSize.Height * 0.7f,
+ CornerRadius = 0.1f,
+ CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ BackgroundColor = Color.AntiqueWhite,
+ };
+ pageBackground.Add(colorView);
+ pageBackground.Add(whiteView);
+ pageBackground.Add(greyView);
+
+ return pageBackground;
+ }
+
+ private Page CreatePage(Color color, string colorTag, string greyTag)
+ {
+ View pageRoot = new View()
+ {
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent
+ };
+
+ View pageBackground = CreatePageScene(color, colorTag, greyTag);
+ pageBackground.TouchEvent += (object sender, View.TouchEventArgs e) =>
+ {
+ if (e.Touch.GetState(0) == PointStateType.Down)
+ {
+ navigator.PopWithTransition();
+ }
+ return true;
+ };
+ pageRoot.Add(pageBackground);
+
+ Page page = new Page(pageRoot);
+ return page;
+ }
+
+ public void Deactivate()
+ {
+ }
+ }
+}