/**
   * At this point the scrolling direction is determined and every child is interpolated to its
   * previous or next position
   */
  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    final int count = getChildCount();

    final int currentScrollX = mPosition * (mPager.getWidth() + mPager.getPageMargin());

    Direction dir = Direction.Center;

    float x = 0.0f;

    if (mPager.getScrollX() < currentScrollX) {
      dir = Direction.Left;
      x = 1 - positionOffset;
    } else if (mPager.getScrollX() > currentScrollX) {
      dir = Direction.Right;
      x = positionOffset;
    }

    for (int i = 0; i < count; i++) {
      ViewPagerTab tab = (ViewPagerTab) getChildAt(i);

      final float y0 = tab.currentPos;
      float y1 = 0.0f;

      if (dir == Direction.Left) y1 = tab.nextPos;
      else if (dir == Direction.Right) y1 = tab.prevPos;
      else y1 = tab.currentPos;

      tab.layoutPos = (int) (y0 + (y1 * x - y0 * x));
    }

    this.requestLayout();
  }
 public void a(int j, float f1, int k) {
   s.a(k + j * (r.getWidth() + r.getPageMargin()));
   for (int l = 0; l < p.size(); l++) {
     TabInfo tabinfo = (TabInfo) p.get(l);
     if (tabinfo.b != null) {
       tabinfo.b.e();
     }
   }
 }
 @Override
 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
   mIndicator.onScrolled(
       (mPager.getWidth() + mPager.getPageMargin()) * position + positionOffsetPixels);
   for (int i = 0; i < mTabs.size(); i++) {
     TabInfo tab = mTabs.get(i);
     if (tab.fragment != null) {
       tab.fragment.onScrolled();
     }
   }
 }