public void Update()
        {
            double width  = Core.Instance.PlatformManager.GetScreenWidth();
            double height = Core.Instance.PlatformManager.GetScreenHeight();

            List <CustomPageView> views = page.Views;

            for (int i = 0; i < views.Count; i++)
            {
                CustomPageView      v    = views[i];
                TransitionSlideData data = (TransitionSlideData)v.TransData;

                if (v.IsEnabled)
                {
                    data.CurrentPosition = DoubleUtil.Lerp(data.CurrentPosition, data.TargetPosition, data.Speed);
                    AbsoluteLayout.SetLayoutBounds(v, new Rectangle(data.CurrentPosition, 0, width, height));
                }
            }
        }
        public void Add(CustomPageView view)
        {
            if (currentView == null)
            {
                currentView = view;
            }

            double width  = Core.Instance.PlatformManager.GetScreenWidth();
            double height = Core.Instance.PlatformManager.GetScreenHeight();

            TransitionSlideData data = new TransitionSlideData();

            if (view != page.CurrentView)
            {
                data.CurrentPosition = width;
                data.TargetPosition  = width;
            }
            data.Speed     = 0.2;
            view.TransData = data;

            AbsoluteLayout.SetLayoutBounds(view, new Rectangle(data.CurrentPosition, 0, width, height));
        }
        public void Switch(CustomPageView current, CustomPageView last, bool returning)
        {
            this.currentView = current;
            this.lastView    = last;

            double width = Core.Instance.PlatformManager.GetScreenWidth();

            List <CustomPageView> views = page.Views;

            for (int i = 0; i < views.Count; i++)
            {
                CustomPageView v = views[i];
                v.IsEnabled = false;
                v.IsVisible = false; // disable everything
            }

            current.IsEnabled = true;
            current.IsVisible = true;
            TransitionSlideData curData = (TransitionSlideData)current.TransData;

            curData.TargetPosition = 0;

            if (last != null)
            {
                last.IsEnabled = true;
                last.IsVisible = true;
                TransitionSlideData lastData = (TransitionSlideData)last.TransData;

                if (returning)
                {
                    lastData.TargetPosition = width;
                }
                else
                {
                    lastData.TargetPosition = -width;
                }
            }
        }