public void startSwitch(boolean forward) {
   if (isInSwitching()) {
     stopSwitching();
   }
   mState = forward ? SwitchState.TO_NEXT : SwitchState.TO_PREVIOUS;
   mFlingState = FlingState.FORWARD;
   mDampedSpringScroller.setScrollToTarget(forward ? getEndPosition() : getStartPosition(), 0);
   if (mListener != null) {
     mListener.onSwitchStarted(mState);
   }
 }
  public void stopSwitching() {
    if (mListener != null) {
      mListener.onSwitchFinished(mState, mFlingState);
    }
    mState = SwitchState.CURRENT;
    mFlingState = FlingState.IDLE;

    mDampedSpringScroller.setScrollToTarget(getStartPosition(), 0);
    mDampedSpringScroller.forceFinished(true);
    mFling = false;
    mCurrentDistance = 0;
  }
 protected void onSwitching() {
   if (mListener != null) {
     mListener.onSwitching(mState);
   }
 }