protected override void OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
        {
            if (State == JazzyState.Idle && positionOffset > 0)
            {
                oldPage = CurrentItem;
                State   = position == oldPage ? JazzyState.GoingRight : JazzyState.GoingLeft;
            }
            bool goingRight = position == oldPage;

            if (State == JazzyState.GoingRight && !goingRight)
            {
                State = JazzyState.GoingLeft;
            }
            else if (State == JazzyState.GoingLeft && goingRight)
            {
                State = JazzyState.GoingRight;
            }

            float effectOffset = IsSmall(positionOffset) ? 0 : positionOffset;

            var adapter = JazzyPageAdapter;

            if (adapter != null)
            {
                var leftView  = adapter.FindViewFromObject(position);
                var rightView = adapter.FindViewFromObject(position + 1);

                if (OutlineEnabled)
                {
                    AnimateOutline(leftView, rightView);
                }

                if (State != JazzyState.Idle)
                {
                    if (leftView != null)
                    {
                        ManageLayer(leftView, true);
                    }
                    if (rightView != null)
                    {
                        ManageLayer(rightView, true);
                    }
                }

                if (TransitionEffect != null)
                {
                    TransitionEffect.Animate(this, leftView, rightView, positionOffset, positionOffsetPixels);
                }
            }

            base.OnPageScrolled(position, positionOffset, positionOffsetPixels);

            if (effectOffset == 0)
            {
                DisableHardwareLayer();
                State = JazzyState.Idle;
            }
        }