由于一直使用的FlycoTabLayout 很久没有维护了,所以毅然决然找一个新的框架.

https://github.com/hackware1993/MagicIndicator

首先把六个自定义的列出来

CommonPagerIndicator


/*** 通用的indicator,支持外面设置Drawable* Created by hackware on 2016/11/14.*/public class CommonPagerIndicator extends View implements IPagerIndicator {public static final int MODE_MATCH_EDGE = 0;   // drawable宽度 == title宽度 - 2 * mXOffsetpublic static final int MODE_WRAP_CONTENT = 1;    // drawable宽度 == title内容宽度 - 2 * mXOffsetpublic static final int MODE_EXACTLY = 2;private int mMode;  // 默认为MODE_MATCH_EDGE模式private Drawable mIndicatorDrawable;// 控制动画private Interpolator mStartInterpolator = new LinearInterpolator();private Interpolator mEndInterpolator = new LinearInterpolator();private float mDrawableHeight;private float mDrawableWidth;private float mYOffset;private float mXOffset;private List<PositionData> mPositionDataList;private Rect mDrawableRect = new Rect();public CommonPagerIndicator(Context context) {super(context);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (mIndicatorDrawable == null) {return;}if (mPositionDataList == null || mPositionDataList.isEmpty()) {return;}// 计算锚点位置PositionData current = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position);PositionData next = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position + 1);float leftX;float nextLeftX;float rightX;float nextRightX;if (mMode == MODE_MATCH_EDGE) {leftX = current.mLeft + mXOffset;nextLeftX = next.mLeft + mXOffset;rightX = current.mRight - mXOffset;nextRightX = next.mRight - mXOffset;mDrawableRect.top = (int) mYOffset;mDrawableRect.bottom = (int) (getHeight() - mYOffset);} else if (mMode == MODE_WRAP_CONTENT) {leftX = current.mContentLeft + mXOffset;nextLeftX = next.mContentLeft + mXOffset;rightX = current.mContentRight - mXOffset;nextRightX = next.mContentRight - mXOffset;mDrawableRect.top = (int) (current.mContentTop - mYOffset);mDrawableRect.bottom = (int) (current.mContentBottom + mYOffset);} else {    // MODE_EXACTLYleftX = current.mLeft + (current.width() - mDrawableWidth) / 2;nextLeftX = next.mLeft + (next.width() - mDrawableWidth) / 2;rightX = current.mLeft + (current.width() + mDrawableWidth) / 2;nextRightX = next.mLeft + (next.width() + mDrawableWidth) / 2;mDrawableRect.top = (int) (getHeight() - mDrawableHeight - mYOffset);mDrawableRect.bottom = (int) (getHeight() - mYOffset);}mDrawableRect.left = (int) (leftX + (nextLeftX - leftX) * mStartInterpolator.getInterpolation(positionOffset));mDrawableRect.right = (int) (rightX + (nextRightX - rightX) * mEndInterpolator.getInterpolation(positionOffset));mIndicatorDrawable.setBounds(mDrawableRect);invalidate();}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {}@Overrideprotected void onDraw(Canvas canvas) {if (mIndicatorDrawable != null) {mIndicatorDrawable.draw(canvas);}}@Overridepublic void onPositionDataProvide(List<PositionData> dataList) {mPositionDataList = dataList;}public Drawable getIndicatorDrawable() {return mIndicatorDrawable;}public void setIndicatorDrawable(Drawable indicatorDrawable) {mIndicatorDrawable = indicatorDrawable;}public Interpolator getStartInterpolator() {return mStartInterpolator;}public void setStartInterpolator(Interpolator startInterpolator) {mStartInterpolator = startInterpolator;}public Interpolator getEndInterpolator() {return mEndInterpolator;}public void setEndInterpolator(Interpolator endInterpolator) {mEndInterpolator = endInterpolator;}public int getMode() {return mMode;}public void setMode(int mode) {if (mode == MODE_EXACTLY || mode == MODE_MATCH_EDGE || mode == MODE_WRAP_CONTENT) {mMode = mode;} else {throw new IllegalArgumentException("mode " + mode + " not supported.");}}public float getDrawableHeight() {return mDrawableHeight;}public void setDrawableHeight(float drawableHeight) {mDrawableHeight = drawableHeight;}public float getDrawableWidth() {return mDrawableWidth;}public void setDrawableWidth(float drawableWidth) {mDrawableWidth = drawableWidth;}public float getYOffset() {return mYOffset;}public void setYOffset(float yOffset) {mYOffset = yOffset;}public float getXOffset() {return mXOffset;}public void setXOffset(float xOffset) {mXOffset = xOffset;}
}

DotPagerIndicator

/*** 非手指跟随的小圆点指示器* Created by hackware on 2016/7/13.*/
public class DotPagerIndicator extends View implements IPagerIndicator {private List<PositionData> mDataList;private float mRadius;private float mYOffset;private int mDotColor;private float mCircleCenterX;private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);public DotPagerIndicator(Context context) {super(context);mRadius = UIUtil.dip2px(context, 3);mYOffset = UIUtil.dip2px(context, 3);mDotColor = Color.WHITE;}@Overridepublic void onPageSelected(int position) {if (mDataList == null || mDataList.isEmpty()) {return;}PositionData data = mDataList.get(position);mCircleCenterX = data.mLeft + data.width() / 2;invalidate();}@Overridepublic void onPositionDataProvide(List<PositionData> dataList) {mDataList = dataList;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);mPaint.setColor(mDotColor);canvas.drawCircle(mCircleCenterX, getHeight() - mYOffset - mRadius, mRadius, mPaint);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageScrollStateChanged(int state) {}public float getRadius() {return mRadius;}public void setRadius(float radius) {mRadius = radius;invalidate();}public float getYOffset() {return mYOffset;}public void setYOffset(float yOffset) {mYOffset = yOffset;invalidate();}public int getDotColor() {return mDotColor;}public void setDotColor(int dotColor) {mDotColor = dotColor;invalidate();}
}

DummyCircleNavigator

/*** 通用的indicator,支持外面设置Drawable* Created by hackware on 2016/11/14.*/public class CommonPagerIndicator extends View implements IPagerIndicator {public static final int MODE_MATCH_EDGE = 0;   // drawable宽度 == title宽度 - 2 * mXOffsetpublic static final int MODE_WRAP_CONTENT = 1;    // drawable宽度 == title内容宽度 - 2 * mXOffsetpublic static final int MODE_EXACTLY = 2;// 默认为MODE_MATCH_EDGE模式private int mMode;private Drawable mIndicatorDrawable;// 控制动画private Interpolator mStartInterpolator = new LinearInterpolator();private Interpolator mEndInterpolator = new LinearInterpolator();private float mDrawableHeight;private float mDrawableWidth;private float mYOffset;private float mXOffset;private List<PositionData> mPositionDataList;private Rect mDrawableRect = new Rect();public CommonPagerIndicator(Context context) {super(context);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (mIndicatorDrawable == null) {return;}if (mPositionDataList == null || mPositionDataList.isEmpty()) {return;}// 计算锚点位置PositionData current = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position);PositionData next = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position + 1);float leftX;float nextLeftX;float rightX;float nextRightX;if (mMode == MODE_MATCH_EDGE) {leftX = current.mLeft + mXOffset;nextLeftX = next.mLeft + mXOffset;rightX = current.mRight - mXOffset;nextRightX = next.mRight - mXOffset;mDrawableRect.top = (int) mYOffset;mDrawableRect.bottom = (int) (getHeight() - mYOffset);} else if (mMode == MODE_WRAP_CONTENT) {leftX = current.mContentLeft + mXOffset;nextLeftX = next.mContentLeft + mXOffset;rightX = current.mContentRight - mXOffset;nextRightX = next.mContentRight - mXOffset;mDrawableRect.top = (int) (current.mContentTop - mYOffset);mDrawableRect.bottom = (int) (current.mContentBottom + mYOffset);} else {    // MODE_EXACTLYleftX = current.mLeft + (current.width() - mDrawableWidth) / 2;nextLeftX = next.mLeft + (next.width() - mDrawableWidth) / 2;rightX = current.mLeft + (current.width() + mDrawableWidth) / 2;nextRightX = next.mLeft + (next.width() + mDrawableWidth) / 2;mDrawableRect.top = (int) (getHeight() - mDrawableHeight - mYOffset);mDrawableRect.bottom = (int) (getHeight() - mYOffset);}mDrawableRect.left = (int) (leftX + (nextLeftX - leftX) * mStartInterpolator.getInterpolation(positionOffset));mDrawableRect.right = (int) (rightX + (nextRightX - rightX) * mEndInterpolator.getInterpolation(positionOffset));mIndicatorDrawable.setBounds(mDrawableRect);invalidate();}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {}@Overrideprotected void onDraw(Canvas canvas) {if (mIndicatorDrawable != null) {mIndicatorDrawable.draw(canvas);}}@Overridepublic void onPositionDataProvide(List<PositionData> dataList) {mPositionDataList = dataList;}public Drawable getIndicatorDrawable() {return mIndicatorDrawable;}public void setIndicatorDrawable(Drawable indicatorDrawable) {mIndicatorDrawable = indicatorDrawable;}public Interpolator getStartInterpolator() {return mStartInterpolator;}public void setStartInterpolator(Interpolator startInterpolator) {mStartInterpolator = startInterpolator;}public Interpolator getEndInterpolator() {return mEndInterpolator;}public void setEndInterpolator(Interpolator endInterpolator) {mEndInterpolator = endInterpolator;}public int getMode() {return mMode;}public void setMode(int mode) {if (mode == MODE_EXACTLY || mode == MODE_MATCH_EDGE || mode == MODE_WRAP_CONTENT) {mMode = mode;} else {throw new IllegalArgumentException("mode " + mode + " not supported.");}}public float getDrawableHeight() {return mDrawableHeight;}public void setDrawableHeight(float drawableHeight) {mDrawableHeight = drawableHeight;}public float getDrawableWidth() {return mDrawableWidth;}public void setDrawableWidth(float drawableWidth) {mDrawableWidth = drawableWidth;}public float getYOffset() {return mYOffset;}public void setYOffset(float yOffset) {mYOffset = yOffset;}public float getXOffset() {return mXOffset;}public void setXOffset(float xOffset) {mXOffset = xOffset;}
}

ScaleCircleNavigator


/*** 通用的indicator,支持外面设置Drawable* Created by hackware on 2016/11/14.*/public class CommonPagerIndicator extends View implements IPagerIndicator {public static final int MODE_MATCH_EDGE = 0;   // drawable宽度 == title宽度 - 2 * mXOffsetpublic static final int MODE_WRAP_CONTENT = 1;    // drawable宽度 == title内容宽度 - 2 * mXOffsetpublic static final int MODE_EXACTLY = 2;// 默认为MODE_MATCH_EDGE模式private int mMode;private Drawable mIndicatorDrawable;// 控制动画private Interpolator mStartInterpolator = new LinearInterpolator();private Interpolator mEndInterpolator = new LinearInterpolator();private float mDrawableHeight;private float mDrawableWidth;private float mYOffset;private float mXOffset;private List<PositionData> mPositionDataList;private Rect mDrawableRect = new Rect();public CommonPagerIndicator(Context context) {super(context);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (mIndicatorDrawable == null) {return;}if (mPositionDataList == null || mPositionDataList.isEmpty()) {return;}// 计算锚点位置PositionData current = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position);PositionData next = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position + 1);float leftX;float nextLeftX;float rightX;float nextRightX;if (mMode == MODE_MATCH_EDGE) {leftX = current.mLeft + mXOffset;nextLeftX = next.mLeft + mXOffset;rightX = current.mRight - mXOffset;nextRightX = next.mRight - mXOffset;mDrawableRect.top = (int) mYOffset;mDrawableRect.bottom = (int) (getHeight() - mYOffset);} else if (mMode == MODE_WRAP_CONTENT) {leftX = current.mContentLeft + mXOffset;nextLeftX = next.mContentLeft + mXOffset;rightX = current.mContentRight - mXOffset;nextRightX = next.mContentRight - mXOffset;mDrawableRect.top = (int) (current.mContentTop - mYOffset);mDrawableRect.bottom = (int) (current.mContentBottom + mYOffset);} else {    // MODE_EXACTLYleftX = current.mLeft + (current.width() - mDrawableWidth) / 2;nextLeftX = next.mLeft + (next.width() - mDrawableWidth) / 2;rightX = current.mLeft + (current.width() + mDrawableWidth) / 2;nextRightX = next.mLeft + (next.width() + mDrawableWidth) / 2;mDrawableRect.top = (int) (getHeight() - mDrawableHeight - mYOffset);mDrawableRect.bottom = (int) (getHeight() - mYOffset);}mDrawableRect.left = (int) (leftX + (nextLeftX - leftX) * mStartInterpolator.getInterpolation(positionOffset));mDrawableRect.right = (int) (rightX + (nextRightX - rightX) * mEndInterpolator.getInterpolation(positionOffset));mIndicatorDrawable.setBounds(mDrawableRect);invalidate();}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {}@Overrideprotected void onDraw(Canvas canvas) {if (mIndicatorDrawable != null) {mIndicatorDrawable.draw(canvas);}}@Overridepublic void onPositionDataProvide(List<PositionData> dataList) {mPositionDataList = dataList;}public Drawable getIndicatorDrawable() {return mIndicatorDrawable;}public void setIndicatorDrawable(Drawable indicatorDrawable) {mIndicatorDrawable = indicatorDrawable;}public Interpolator getStartInterpolator() {return mStartInterpolator;}public void setStartInterpolator(Interpolator startInterpolator) {mStartInterpolator = startInterpolator;}public Interpolator getEndInterpolator() {return mEndInterpolator;}public void setEndInterpolator(Interpolator endInterpolator) {mEndInterpolator = endInterpolator;}public int getMode() {return mMode;}public void setMode(int mode) {if (mode == MODE_EXACTLY || mode == MODE_MATCH_EDGE || mode == MODE_WRAP_CONTENT) {mMode = mode;} else {throw new IllegalArgumentException("mode " + mode + " not supported.");}}public float getDrawableHeight() {return mDrawableHeight;}public void setDrawableHeight(float drawableHeight) {mDrawableHeight = drawableHeight;}public float getDrawableWidth() {return mDrawableWidth;}public void setDrawableWidth(float drawableWidth) {mDrawableWidth = drawableWidth;}public float getYOffset() {return mYOffset;}public void setYOffset(float yOffset) {mYOffset = yOffset;}public float getXOffset() {return mXOffset;}public void setXOffset(float xOffset) {mXOffset = xOffset;}
}

ColorFlipPagerTitleView

public class ColorFlipPagerTitleView extends SimplePagerTitleView {private float mChangePercent = 0.5f;public ColorFlipPagerTitleView(Context context) {super(context);}@Overridepublic void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {if (leavePercent >= mChangePercent) {setTextColor(mNormalColor);} else {setTextColor(mSelectedColor);}}@Overridepublic void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {if (enterPercent >= mChangePercent) {setTextColor(mSelectedColor);} else {setTextColor(mNormalColor);}}@Overridepublic void onSelected(int index, int totalCount) {}@Overridepublic void onDeselected(int index, int totalCount) {}public float getChangePercent() {return mChangePercent;}public void setChangePercent(float changePercent) {mChangePercent = changePercent;}
}

ScaleTransitionPagerTitleView


/*** 通用的indicator,支持外面设置Drawable* Created by hackware on 2016/11/14.*/public class CommonPagerIndicator extends View implements IPagerIndicator {public static final int MODE_MATCH_EDGE = 0;   // drawable宽度 == title宽度 - 2 * mXOffsetpublic static final int MODE_WRAP_CONTENT = 1;    // drawable宽度 == title内容宽度 - 2 * mXOffsetpublic static final int MODE_EXACTLY = 2;// 默认为MODE_MATCH_EDGE模式private int mMode;private Drawable mIndicatorDrawable;// 控制动画private Interpolator mStartInterpolator = new LinearInterpolator();private Interpolator mEndInterpolator = new LinearInterpolator();private float mDrawableHeight;private float mDrawableWidth;private float mYOffset;private float mXOffset;private List<PositionData> mPositionDataList;private Rect mDrawableRect = new Rect();public CommonPagerIndicator(Context context) {super(context);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (mIndicatorDrawable == null) {return;}if (mPositionDataList == null || mPositionDataList.isEmpty()) {return;}// 计算锚点位置PositionData current = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position);PositionData next = FragmentContainerHelper.getImitativePositionData(mPositionDataList, position + 1);float leftX;float nextLeftX;float rightX;float nextRightX;if (mMode == MODE_MATCH_EDGE) {leftX = current.mLeft + mXOffset;nextLeftX = next.mLeft + mXOffset;rightX = current.mRight - mXOffset;nextRightX = next.mRight - mXOffset;mDrawableRect.top = (int) mYOffset;mDrawableRect.bottom = (int) (getHeight() - mYOffset);} else if (mMode == MODE_WRAP_CONTENT) {leftX = current.mContentLeft + mXOffset;nextLeftX = next.mContentLeft + mXOffset;rightX = current.mContentRight - mXOffset;nextRightX = next.mContentRight - mXOffset;mDrawableRect.top = (int) (current.mContentTop - mYOffset);mDrawableRect.bottom = (int) (current.mContentBottom + mYOffset);} else {    // MODE_EXACTLYleftX = current.mLeft + (current.width() - mDrawableWidth) / 2;nextLeftX = next.mLeft + (next.width() - mDrawableWidth) / 2;rightX = current.mLeft + (current.width() + mDrawableWidth) / 2;nextRightX = next.mLeft + (next.width() + mDrawableWidth) / 2;mDrawableRect.top = (int) (getHeight() - mDrawableHeight - mYOffset);mDrawableRect.bottom = (int) (getHeight() - mYOffset);}mDrawableRect.left = (int) (leftX + (nextLeftX - leftX) * mStartInterpolator.getInterpolation(positionOffset));mDrawableRect.right = (int) (rightX + (nextRightX - rightX) * mEndInterpolator.getInterpolation(positionOffset));mIndicatorDrawable.setBounds(mDrawableRect);invalidate();}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {}@Overrideprotected void onDraw(Canvas canvas) {if (mIndicatorDrawable != null) {mIndicatorDrawable.draw(canvas);}}@Overridepublic void onPositionDataProvide(List<PositionData> dataList) {mPositionDataList = dataList;}public Drawable getIndicatorDrawable() {return mIndicatorDrawable;}public void setIndicatorDrawable(Drawable indicatorDrawable) {mIndicatorDrawable = indicatorDrawable;}public Interpolator getStartInterpolator() {return mStartInterpolator;}public void setStartInterpolator(Interpolator startInterpolator) {mStartInterpolator = startInterpolator;}public Interpolator getEndInterpolator() {return mEndInterpolator;}public void setEndInterpolator(Interpolator endInterpolator) {mEndInterpolator = endInterpolator;}public int getMode() {return mMode;}public void setMode(int mode) {if (mode == MODE_EXACTLY || mode == MODE_MATCH_EDGE || mode == MODE_WRAP_CONTENT) {mMode = mode;} else {throw new IllegalArgumentException("mode " + mode + " not supported.");}}public float getDrawableHeight() {return mDrawableHeight;}public void setDrawableHeight(float drawableHeight) {mDrawableHeight = drawableHeight;}public float getDrawableWidth() {return mDrawableWidth;}public void setDrawableWidth(float drawableWidth) {mDrawableWidth = drawableWidth;}public float getYOffset() {return mYOffset;}public void setYOffset(float yOffset) {mYOffset = yOffset;}public float getXOffset() {return mXOffset;}public void setXOffset(float xOffset) {mXOffset = xOffset;}
}

把效果演示一下:

private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP"};private List<String> mDataList = Arrays.asList(CHANNELS);private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);BlankFragment b1 = new BlankFragment();BlankFragment b2 = new BlankFragment();BlankFragment b3 = new BlankFragment();BlankFragment b4 = new BlankFragment();BlankFragment b5 = new BlankFragment();BlankFragment b6 = new BlankFragment();BlankFragment b7 = new BlankFragment();BlankFragment b8 = new BlankFragment();BlankFragment b9 = new BlankFragment();FmPagerAdapter fmPagerAdapter = new FmPagerAdapter(getSupportFragmentManager());ArrayList<Fragment> fragmentList = new ArrayList<>();fragmentList.add(b1);fragmentList.add(b2);fragmentList.add(b3);fragmentList.add(b4);fragmentList.add(b5);fragmentList.add(b6);fragmentList.add(b7);fragmentList.add(b8);fragmentList.add(b9);fmPagerAdapter.setmFragments(fragmentList);mViewPager = (ViewPager) findViewById(R.id.view_pager);mViewPager.setAdapter(fmPagerAdapter);initMagicIndicator1();initMagicIndicator2();initMagicIndicator3();initMagicIndicator4();initMagicIndicator5();initMagicIndicator6();initMagicIndicator7();initMagicIndicator8();initMagicIndicator9();}private void initMagicIndicator1() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator1);magicIndicator.setBackgroundColor(Color.parseColor("#d43d3d"));CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setSkimOver(true);int padding = UIUtil.getScreenWidth(this) / 2;commonNavigator.setRightPadding(padding);commonNavigator.setLeftPadding(padding);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);clipPagerTitleView.setText(mDataList.get(index));clipPagerTitleView.setTextColor(Color.parseColor("#f2c4c4"));clipPagerTitleView.setClipColor(Color.WHITE);clipPagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return clipPagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {return null;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator2() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator2);magicIndicator.setBackgroundColor(Color.parseColor("#00c853"));CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setScrollPivotX(0.25f);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#c8e6c9"));simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setTextSize(12);simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setMode(LinePagerIndicator.MODE_EXACTLY);indicator.setYOffset(UIUtil.dip2px(context, 3));indicator.setColors(Color.parseColor("#ffffff"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator3() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator3);magicIndicator.setBackgroundColor(Color.BLACK);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);simplePagerTitleView.setNormalColor(Color.GRAY);simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context);linePagerIndicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);linePagerIndicator.setColors(Color.WHITE);return linePagerIndicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator4() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator4);magicIndicator.setBackgroundColor(Color.parseColor("#455a64"));CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#88ffffff"));simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setColors(Color.parseColor("#40c4ff"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator5() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator5);magicIndicator.setBackgroundColor(Color.WHITE);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setScrollPivotX(0.8f);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ScaleTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setTextSize(18);simplePagerTitleView.setNormalColor(Color.parseColor("#616161"));simplePagerTitleView.setSelectedColor(Color.parseColor("#f57c00"));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setStartInterpolator(new AccelerateInterpolator());indicator.setEndInterpolator(new DecelerateInterpolator(1.6f));indicator.setYOffset(UIUtil.dip2px(context, 39));indicator.setLineHeight(UIUtil.dip2px(context, 1));indicator.setColors(Color.parseColor("#f57c00"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator6() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator6);magicIndicator.setBackgroundColor(Color.WHITE);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ScaleTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setTextSize(18);simplePagerTitleView.setNormalColor(Color.GRAY);simplePagerTitleView.setSelectedColor(Color.BLACK);simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {BezierPagerIndicator indicator = new BezierPagerIndicator(context);indicator.setColors(Color.parseColor("#ff4a42"), Color.parseColor("#fcde64"), Color.parseColor("#73e8f4"), Color.parseColor("#76b0ff"), Color.parseColor("#c683fe"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator7() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator7);magicIndicator.setBackgroundColor(Color.parseColor("#fafafa"));CommonNavigator commonNavigator7 = new CommonNavigator(this);commonNavigator7.setScrollPivotX(0.65f);commonNavigator7.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorFlipPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#9e9e9e"));simplePagerTitleView.setSelectedColor(Color.parseColor("#00c853"));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setMode(LinePagerIndicator.MODE_EXACTLY);indicator.setLineHeight(UIUtil.dip2px(context, 6));indicator.setLineWidth(UIUtil.dip2px(context, 10));indicator.setRoundRadius(UIUtil.dip2px(context, 3));indicator.setStartInterpolator(new AccelerateInterpolator());indicator.setEndInterpolator(new DecelerateInterpolator(2.0f));indicator.setColors(Color.parseColor("#00c853"));return indicator;}});magicIndicator.setNavigator(commonNavigator7);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator8() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator8);magicIndicator.setBackgroundColor(Color.WHITE);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setScrollPivotX(0.35f);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#333333"));simplePagerTitleView.setSelectedColor(Color.parseColor("#e94220"));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {WrapPagerIndicator indicator = new WrapPagerIndicator(context);indicator.setFillColor(Color.parseColor("#ebe4e3"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator9() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator9);magicIndicator.setBackgroundColor(Color.WHITE);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setScrollPivotX(0.15f);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#333333"));simplePagerTitleView.setSelectedColor(Color.parseColor("#e94220"));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {TriangularPagerIndicator indicator = new TriangularPagerIndicator(context);indicator.setLineColor(Color.parseColor("#e94220"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ScrollViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:fadeScrollbars="false"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator1"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator2"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator3"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator4"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator5"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator6"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator7"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator8"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /><net.lucode.hackware.magicindicator.MagicIndicatorandroid:id="@+id/magic_indicator9"android:layout_width="match_parent"android:layout_height="@dimen/dp45"android:layout_marginTop="@dimen/dp5" /></LinearLayout></ScrollView><androidx.viewpager.widget.ViewPagerandroid:id="@+id/view_pager"android:layout_width="match_parent"android:layout_height="100dp" /></LinearLayout>

 private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR"};private List<String> mDataList = Arrays.asList(CHANNELS);private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);BlankFragment b1 = new BlankFragment();BlankFragment b2 = new BlankFragment();BlankFragment b3 = new BlankFragment();BlankFragment b4 = new BlankFragment();FmPagerAdapter fmPagerAdapter = new FmPagerAdapter(getSupportFragmentManager());ArrayList<Fragment> fragmentList = new ArrayList<>();fragmentList.add(b1);fragmentList.add(b2);fragmentList.add(b3);fragmentList.add(b4);fmPagerAdapter.setmFragments(fragmentList);mViewPager = (ViewPager) findViewById(R.id.view_pager);mViewPager.setAdapter(fmPagerAdapter);initMagicIndicator1();initMagicIndicator2();initMagicIndicator3();initMagicIndicator4();MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator5);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdjustMode(true);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#88ffffff"));simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);indicator.setColors(Color.parseColor("#40c4ff"));indicator.setYOffset(10);return indicator;}@Overridepublic float getTitleWeight(Context context, int index) {return 1.0f;}});magicIndicator.setNavigator(commonNavigator);LinearLayout titleContainer = commonNavigator.getTitleContainer(); // must after setNavigatortitleContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);titleContainer.setDividerPadding(UIUtil.dip2px(this, 15));titleContainer.setDividerDrawable(getResources().getDrawable(R.drawable.simple_splitter));ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator1() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator1);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setNormalColor(Color.parseColor("#88ffffff"));simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setColors(Color.parseColor("#40c4ff"));return indicator;}});magicIndicator.setNavigator(commonNavigator);LinearLayout titleContainer = commonNavigator.getTitleContainer(); // must after setNavigatortitleContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);titleContainer.setDividerPadding(UIUtil.dip2px(this, 15));titleContainer.setDividerDrawable(getResources().getDrawable(R.drawable.simple_splitter));ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator2() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator2);magicIndicator.setBackgroundColor(Color.WHITE);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdjustMode(true);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ScaleTransitionPagerTitleView(context);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setTextSize(18);simplePagerTitleView.setNormalColor(Color.parseColor("#616161"));simplePagerTitleView.setSelectedColor(Color.parseColor("#f57c00"));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);indicator.setStartInterpolator(new AccelerateInterpolator());indicator.setEndInterpolator(new DecelerateInterpolator(1.6f));indicator.setYOffset(UIUtil.dip2px(context, 39));indicator.setLineHeight(UIUtil.dip2px(context, 1));indicator.setColors(Color.parseColor("#f57c00"));return indicator;}@Overridepublic float getTitleWeight(Context context, int index) {if (index == 0) {return 1.0f;} else if (index == 1) {return 1.2f;} else {return 1.0f;}}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator3() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator3);magicIndicator.setBackgroundResource(R.drawable.round_indicator_bg);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList == null ? 0 : mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);clipPagerTitleView.setText(mDataList.get(index));clipPagerTitleView.setTextColor(Color.parseColor("#e94220"));clipPagerTitleView.setClipColor(Color.WHITE);clipPagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return clipPagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator indicator = new LinePagerIndicator(context);float navigatorHeight = getResources().getDimension(R.dimen.dp45);float borderWidth = UIUtil.dip2px(context, 1);float lineHeight = navigatorHeight - 2 * borderWidth;indicator.setLineHeight(lineHeight);indicator.setRoundRadius(lineHeight / 2);indicator.setYOffset(borderWidth);indicator.setColors(Color.parseColor("#bc2a2a"));return indicator;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}private void initMagicIndicator4() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator4);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);simplePagerTitleView.setNormalColor(Color.GRAY);simplePagerTitleView.setSelectedColor(Color.WHITE);simplePagerTitleView.setText(mDataList.get(index));simplePagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return simplePagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context);linePagerIndicator.setMode(LinePagerIndicator.MODE_EXACTLY);linePagerIndicator.setLineWidth(UIUtil.dip2px(context, 10));linePagerIndicator.setColors(Color.WHITE);return linePagerIndicator;}});magicIndicator.setNavigator(commonNavigator);LinearLayout titleContainer = commonNavigator.getTitleContainer(); // must after setNavigatortitleContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);titleContainer.setDividerDrawable(new ColorDrawable() {@Overridepublic int getIntrinsicWidth() {return UIUtil.dip2px(Main2Activity.this, 15);}});final FragmentContainerHelper fragmentContainerHelper = new FragmentContainerHelper(magicIndicator);fragmentContainerHelper.setInterpolator(new OvershootInterpolator(2.0f));fragmentContainerHelper.setDuration(300);mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {@Overridepublic void onPageSelected(int position) {fragmentContainerHelper.handlePageSelected(position);}});}


  private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR"};private List<String> mDataList = Arrays.asList(CHANNELS);private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);BlankFragment b1 = new BlankFragment();BlankFragment b2 = new BlankFragment();BlankFragment b3 = new BlankFragment();BlankFragment b4 = new BlankFragment();FmPagerAdapter fmPagerAdapter = new FmPagerAdapter(getSupportFragmentManager());ArrayList<Fragment> fragmentList = new ArrayList<>();fragmentList.add(b1);fragmentList.add(b2);fragmentList.add(b3);fmPagerAdapter.setmFragments(fragmentList);mViewPager = (ViewPager) findViewById(R.id.view_pager);mViewPager.setAdapter(fmPagerAdapter);initMagicIndicator1();}private void initMagicIndicator1() {MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator1);magicIndicator.setBackgroundColor(Color.BLACK);CommonNavigator commonNavigator = new CommonNavigator(this);commonNavigator.setAdjustMode(true);commonNavigator.setAdapter(new CommonNavigatorAdapter() {@Overridepublic int getCount() {return mDataList.size();}@Overridepublic IPagerTitleView getTitleView(Context context, final int index) {CommonPagerTitleView commonPagerTitleView = new CommonPagerTitleView(context);// load custom layoutView customLayout = LayoutInflater.from(context).inflate(R.layout.simple_pager_title_layout, null);final ImageView titleImg = (ImageView) customLayout.findViewById(R.id.title_img);final TextView titleText = (TextView) customLayout.findViewById(R.id.title_text);titleImg.setImageResource(R.mipmap.ic_launcher);titleText.setText(mDataList.get(index));commonPagerTitleView.setContentView(customLayout);commonPagerTitleView.setOnPagerTitleChangeListener(new CommonPagerTitleView.OnPagerTitleChangeListener() {@Overridepublic void onSelected(int index, int totalCount) {titleText.setTextColor(Color.WHITE);switch (index){case  0:titleImg.setImageResource(R.drawable.xxx2);break;case  1:titleImg.setImageResource(R.drawable.xxx3);break;case  2:titleImg.setImageResource(R.drawable.xxx4);break;default:break;}}@Overridepublic void onDeselected(int index, int totalCount) {titleText.setTextColor(Color.LTGRAY);titleImg.setImageResource(R.mipmap.ic_launcher);}@Overridepublic void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {titleImg.setScaleX(1.3f + (0.8f - 1.3f) * leavePercent);titleImg.setScaleY(1.3f + (0.8f - 1.3f) * leavePercent);}@Overridepublic void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {titleImg.setScaleX(0.8f + (1.3f - 0.8f) * enterPercent);titleImg.setScaleY(0.8f + (1.3f - 0.8f) * enterPercent);}});commonPagerTitleView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mViewPager.setCurrentItem(index);}});return commonPagerTitleView;}@Overridepublic IPagerIndicator getIndicator(Context context) {return null;}});magicIndicator.setNavigator(commonNavigator);ViewPagerHelper.bind(magicIndicator, mViewPager);}

Android MagicIndicator 指示器 导航相关推荐

  1. android博客导航总结,以及个人常用android免费学习干货(文章,视频,矢量图,字体等)资源分享?

    android博客导航总结与资源分享 1.博客总结 1.mob平台的使用 2.QMUI部分功能实现 3.XUI部分功能实现 4.其他功能 5.Flutter博客总结: 2.资源分享 1.文章类型资源分 ...

  2. android进度指示器_等待的痛苦—浏览进度指示器地狱的7个级别

    android进度指示器 by Mike Zetlow 由Mike Zetlow 等待的痛苦-浏览进度指示器地狱的7个级别 (The Pain of Waiting - Navigating the ...

  3. android MIPI屏 导航栏丢失

    /***************************************************************************** android MIPI屏 导航栏丢失* ...

  4. Android开发者网址导航

    随着Android开发越来越庞大,Android的开源项目.开发资源越来越多,作为需要不断学习的程序猿,每天浏览的技术文章也是不少,但目前为止没有看到一个比较满意的Android开发者网址导航,找资料 ...

  5. 【Android】底部导航栏【BottomNavigationView】+【ViewPage2】

    问题需求 实现底部导航栏切换 问题解决 最简单的实现方式就是使用系统自动生成的模板页面,但是有时候会有一些问题,特别是需要去除[ActionBar]的情况下,这种情况下使用系统的模板页面就不好用了,此 ...

  6. Android 打开 GPS 导航并获取位置信息

    原文地址为: Android 打开 GPS 导航并获取位置信息 最近在做一个 Android 项目,需要用到GPS获取位置信息,从 API 查了一下,发现获取位置信息仅需极其简单的一句即可: getL ...

  7. Android隐藏导航栏按键,Android如何控制导航栏单个按键的显隐状态

    我们都知道Android系统的导航栏通常有三个按键,分别是BACK, HOME, APP_SWITCH. 网上很多有关导航栏和状态栏显隐的文章,但几乎都是控制导航栏或状态栏所有按键同时显示或消失,如果 ...

  8. Android状态栏和导航栏透明和沉浸式模式

    最近在App上需要对状态栏进行相关的设置,在网上看了些文章,像郭神的沉浸式那篇博客对我启发蛮大,但是对状态栏的设置,包括隐藏,透明,颜色设置等,并没有比较系统的概念,实现方式不止一种,有操作Windo ...

  9. 关于Android系统隐藏导航栏的两种方法

    关于Android系统隐藏导航栏的两种方法 在NXP的imx6q和全志的A40I上试过 1.frameworks/base/core/res/res/values/dimens.xml中修改 < ...

最新文章

  1. 转:iPhone之后,思考下一个科技突破
  2. 实现windows的负载均衡
  3. svn Error:Wrong committed revision number: -1。
  4. 分布式系统事务一致性解决方案大对比,谁最好使?
  5. leetcode1039. 多边形三角剖分的最低得分(动态规划)
  6. 实战_02_Spring SpringMVC 整合Mybaits
  7. 11.15scrum会议
  8. [转载] Python3入门精通基础教程(合集)
  9. SQL2005备份如何在SQL2000上还原
  10. DP83848IVV硬件电路设计
  11. 手把手教你配置国内镜像源
  12. 漏洞挖掘 符号执行_漏洞挖掘综述
  13. 凸优化极简笔记(三):椭圆方程的矩阵形式
  14. 统信软件启用全新LOGO,迎接中国操作系统大时代
  15. 线性代数可以做些什么?(之一)
  16. 用于地址解析的协议是服务器,用于解析域名的协议是什么?
  17. 进销存仓库管理系统:规范数据、流程与管理
  18. Python turtle 绘制有趣的图形
  19. 问题 F: 小白鼠排队
  20. vue 实现扫条形码与二维码 H5 兼容 苹果IOS

热门文章

  1. 各地相继设立交易所,抢滩大数据交易市场
  2. 什么是反射 (Reflection)?可以用它做什么?
  3. 在Delphi中打印条码的方法步骤如下
  4. MG7780打印机喷嘴堵塞
  5. Bootstrap实现的响应式APP下载页面代码
  6. Kotlin SQLite URL转义字符(Escape)(一)
  7. 攻城狮应该明白的浏览器工作原理~
  8. 机器学习笔记七——特征工程之特征处理
  9. 什么是云HIS?为什么HIS系统要上云?云HIS系统有哪些特点?
  10. (27)STM32——光敏传感器实验笔记