public void drag(long time,float x,float y,float deltaX,float deltaY,float totalX,float totalY){
  resetResizeTimeout(false);
  deltaX=MathUtils.flipSignIf(deltaX,LocalizationUtils.isLayoutRtl());
  mNewTabButton.drag(x,y);
  if (mLastPressedCloseButton != null) {
    if (!mLastPressedCloseButton.drag(x,y))     mLastPressedCloseButton=null;
  }
  if (mInReorderMode) {
    float accumulatedDeltaX=x - mLastReorderX;
    if (Math.abs(accumulatedDeltaX) >= 1.f) {
      if (!LocalizationUtils.isLayoutRtl()) {
        if (deltaX >= 1.f) {
          mReorderState|=REORDER_SCROLL_RIGHT;
        }
 else         if (deltaX <= -1.f) {
          mReorderState|=REORDER_SCROLL_LEFT;
        }
      }
 else {
        if (deltaX >= 1.f) {
          mReorderState|=REORDER_SCROLL_LEFT;
        }
 else         if (deltaX <= -1.f) {
          mReorderState|=REORDER_SCROLL_RIGHT;
        }
      }
      mLastReorderX=x;
      updateReorderPosition(accumulatedDeltaX);
    }
  }
 else   if (!mScroller.isFinished()) {
    mScroller.setFinalX((int)(mScroller.getFinalX() + deltaX));
  }
 else {
    float fastExpandDelta=calculateOffsetToMakeTabVisible(mInteractingTab,true,true,true);
    if (mInteractingTab != null && fastExpandDelta != 0.f) {
      if ((fastExpandDelta > 0 && deltaX > 0) || (fastExpandDelta < 0 && deltaX < 0)) {
        mScroller.startScroll(mScrollOffset,0,(int)fastExpandDelta,0,time,EXPAND_DURATION_MS);
      }
    }
 else {
      updateScrollOffsetPosition((int)(mScrollOffset + deltaX));
    }
  }
  if (!mInReorderMode) {
    final float absTotalX=Math.abs(totalX);
    final float absTotalY=Math.abs(totalY);
    if (totalY > mReorderMoveStartThreshold && absTotalX < mReorderMoveStartThreshold * 2.f && (absTotalX > EPSILON && (absTotalY / absTotalX) > TAN_OF_REORDER_ANGLE_START_THRESHOLD)) {
      startReorderMode(time,x,x - totalX);
    }
  }
  if (!mInReorderMode)   mInteractingTab=null;
  mUpdateHost.requestUpdate();
}

public void drag ( long time , float x , float y , float deltaX , float deltaY , float totalX , float totalY ) { resetResizeTimeout ( false ) ; deltaX = MathUtils . flipSignIf ( deltaX , LocalizationUtils . isLayoutRtl ( ) ) ; mNewTabButton . drag ( x , y ) ; if ( mLastPressedCloseButton != null ) { if ( ! mLastPressedCloseButton . drag ( x , y ) ) mLastPressedCloseButton = null ; } if ( mInReorderMode ) { float accumulatedDeltaX = x - mLastReorderX ; if ( Math . abs ( accumulatedDeltaX ) >= 1.f ) { if ( ! LocalizationUtils . isLayoutRtl ( ) ) { if ( deltaX >= 1.f ) { mReorderState |= REORDER_SCROLL_RIGHT ; } else if ( deltaX <= - 1.f ) { mReorderState |= REORDER_SCROLL_LEFT ; } } else { if ( deltaX >= 1.f ) { mReorderState |= REORDER_SCROLL_LEFT ; } else if ( deltaX <= - 1.f ) { mReorderState |= REORDER_SCROLL_RIGHT ; } } mLastReorderX = x ; updateReorderPosition ( accumulatedDeltaX ) ; } } else if ( ! mScroller . isFinished ( ) ) { mScroller . setFinalX ( ( int ) ( mScroller . getFinalX ( ) + deltaX ) ) ; } else { float fastExpandDelta = calculateOffsetToMakeTabVisible ( mInteractingTab , true , true , true ) ; if ( mInteractingTab != null && fastExpandDelta != 0.f ) { if ( ( fastExpandDelta > 0 && deltaX > 0 ) || ( fastExpandDelta < 0 && deltaX < 0 ) ) { mScroller . startScroll ( mScrollOffset , 0 , ( int ) fastExpandDelta , 0 , time , EXPAND_DURATION_MS ) ; } } else { updateScrollOffsetPosition ( ( int ) ( mScrollOffset + deltaX ) ) ; } } if ( ! mInReorderMode ) { final float absTotalX = Math . abs ( totalX ) ; final float absTotalY = Math . abs ( totalY ) ; if ( totalY > mReorderMoveStartThreshold && absTotalX < mReorderMoveStartThreshold * 2.f && ( absTotalX > EPSILON && ( absTotalY / absTotalX ) > TAN_OF_REORDER_ANGLE_START_THRESHOLD ) ) { startReorderMode ( time , x , x - totalX ) ; } } if ( ! mInReorderMode ) mInteractingTab = null ; mUpdateHost . requestUpdate ( ) ; }
called on touch drag event .
