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; } }