code: public boolean beginFakeDrag() {
          if (mIsBeingDragged) {
              return false;
          }
          mFakeDragging = true;
          setScrollState(SCROLL_STATE_DRAGGING);
          mInitialMotionY = mLastMotionY = 0;
          if (mVelocityTracker == null) {
              mVelocityTracker = VelocityTracker.obtain();
          } else {
              mVelocityTracker.clear();
          }
          final long time = SystemClock.uptimeMillis();
          final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
          mVelocityTracker.addMovement(ev);
          ev.recycle();
          mFakeDragBeginTime = time;
          return true;
      }
docs: Start a fake drag of the pager.
  <p>
  <p>A fake drag can be useful if you want to synchronize the motion of the ViewPager
  with the touch scrolling of another view, while still letting the ViewPager
  control the snapping motion and fling behavior. (e.g. parallax-scrolling tabs.)
  Call {@link #fakeDragBy(float)} to simulate the actual drag motion. Call
  {@link #endFakeDrag()} to complete the fake drag and fling as necessary.
  <p>
  <p>During a fake drag the ViewPager will ignore all touch events. If a real drag
  is already in progress, this method will return false.
  
  @return true if the fake drag began successfully, false if it could not be started.
  @see #fakeDragBy(float)
  @see #endFakeDrag()