@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();
     }
   }
 }
  private final void initViews() {
    // Show the main screen by default
    mCurrentTab = onPrepareTabInfoData(mTabs);
    Intent intent = getIntent();
    if (intent != null) {
      mCurrentTab = intent.getIntExtra(EXTRA_TAB, mCurrentTab);
    }

    myAdapter = new MyAdapter(this, getSupportFragmentManager(), mTabs);

    // Setup the views
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(myAdapter);
    mPager.setOnPageChangeListener(this);
    mPager.setOffscreenPageLimit(mTabs.size());

    mIndicator = (TitleIndicator) findViewById(R.id.pagerindicator);
    mIndicator.init(mCurrentTab, mTabs, mPager);

    mPager.setCurrentItem(mCurrentTab);
    final Message msg = getInitMessage();
    mPager.post(
        new Runnable() {
          @Override
          public void run() {
            TabInfo ti = getFragmentById(mCurrentTab);
            mLastTab = mCurrentTab;
            if (ti != null) {
              if (ti.fragment != null) ti.fragment.onScrollIn();
            }
            if (msg != null) {
              msg.sendToTarget();
            }
          }
        });
  }
 @Override
 public void onPageSelected(int position) {
   mIndicator.onSwitched(position);
   mCurrentTab = position;
 }