@Override
 public void scrollToPage(int page) {
   activePage = page;
   int onePageWidth = getMeasuredWidth();
   int scrollTo = page * onePageWidth;
   smoothScrollTo(scrollTo, 0);
   if (pageChangedListener != null) pageChangedListener.onPageChanged(this, page);
 }
  public void snapToScreen(int whichScreen) {
    whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
    if (getScrollX() != (whichScreen * getWidth())) {

      final int delta = whichScreen * getWidth() - getScrollX();
      int duration = Math.abs(delta) * 2;
      int num = getWidth() * 2;
      mScroller.startScroll(getScrollX(), 0, delta, 0, duration > num ? num : duration);
      if (mCurScreen != whichScreen) {
        mCurScreen = whichScreen;
        isNotifyChanged = true;
      }
      if (mListener != null) {
        mListener.onPageChanged(mCurScreen);
      }
      invalidate(); // Redraw the layout
    } else {
      if (mListener != null) {
        mListener.onPageChanged(mCurScreen);
      }
    }
  }