private void initViewPager(View root) {
    mViewPager = (CatchTouchViewPager) root.findViewById(R.id.content);
    mViewPager.setOnTouchListener(
        new View.OnTouchListener() {
          @Override
          public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
              case MotionEvent.ACTION_DOWN:
                mItemHScrollView.touchDown();
                break;
              case MotionEvent.ACTION_UP:
                mItemHScrollView.touchUp();
                break;
            }
            return false;
          }
        });
    mViewPager.setOnPageChangeListener(
        new ViewPager.OnPageChangeListener() {
          float lastOffset;
          boolean isScrolling = false;

          @Override
          public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            //                if (Math.abs(lastOffset - positionOffset) < 0.005f) return;

            if (lastOffset == 0) {
              lastOffset = positionOffset;
              return;
            }
            boolean toRight = false;
            if (lastOffset > positionOffset) { // to right
              toRight = true;
            } else {
              toRight = false;
            }
            mItemHScrollView.onPageScrolled(position, convert(positionOffset), toRight);
            lastOffset = positionOffset;
          }

          @Override
          public void onPageSelected(int position) {
            LogUtils.D("onPageSelected " + position);
            mItemHScrollView.setSelectedItem(position);
            lastOffset = 0;
          }

          @Override
          public void onPageScrollStateChanged(int state) {
            if (state == 1) {
              isScrolling = true;
            } else {
              isScrolling = false;
            }
          }
        });
  }