作者原文章链接
MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器
MagicIndicator系列之二 —— MagicIndicator使用指南
MagicIndicator系列之三 —— MagicIndicator原理浅析及扩展MagicIndicator的4种方式
github地址:https://github.com/hackware1993/MagicIndicator
效果图:
项目实现效果:
重新封装了一个工具类:MagicIndicatorUtil
参数我不一一说明了,基本都能看懂
package com.jky.mobilebzt.util; import android.content.Context; import android.graphics.Color; import android.support.v4.view.ViewPager; import android.view.View; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import com.jky.mobilebzt.R; import net.lucode.hackware.magicindicator.MagicIndicator; import net.lucode.hackware.magicindicator.ViewPagerHelper; import net.lucode.hackware.magicindicator.buildins.UIUtil; import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator; import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter; import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator; import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView; import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator; import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView; public class MagicIndicatorUtil { public static void initMagicIndicator(View view, Context context, String[] titleArray, ViewPager mPager,MagicIndicator magicIndicator) { magicIndicator.setBackgroundColor(Color.parseColor("#fafafa")); CommonNavigator commonNavigator7 = new CommonNavigator(context); commonNavigator7.setScrollPivotX(0.65f); commonNavigator7.setAdjustMode(true); commonNavigator7.setAdapter(new CommonNavigatorAdapter() { @Override public int getCount() { return titleArray == null ? 0 : titleArray.length; } @Override public IPagerTitleView getTitleView(Context context, final int index) { SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context); simplePagerTitleView.setText(titleArray[index]); simplePagerTitleView.setNormalColor(Color.parseColor("#9e9e9e")); simplePagerTitleView.setSelectedColor(context.getResources().getColor(R.color.color_green)); simplePagerTitleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mPager.setCurrentItem(index); } }); return simplePagerTitleView; } @Override public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_EXACTLY); indicator.setLineHeight(UIUtil.dip2px(context, 3)); indicator.setLineWidth(UIUtil.dip2px(context, 40)); indicator.setRoundRadius(UIUtil.dip2px(context, 2)); indicator.setStartInterpolator(new AccelerateInterpolator()); indicator.setEndInterpolator(new DecelerateInterpolator(2.0f)); indicator.setColors(context.getResources().getColor(R.color.color_green)); return indicator; } }); magicIndicator.setNavigator(commonNavigator7); ViewPagerHelper.bind(magicIndicator, mPager); } }
用法:
build.gradle
implementation 'com.github.hackware1993:MagicIndicator:1.6.0'
xml
<net.lucode.hackware.magicindicator.MagicIndicator android:id="@+id/book_indicator" android:layout_width="match_parent" android:layout_height="@dimen/margin_45" android:layout_marginTop="@dimen/margin_5" />
activity中
MagicIndicator magicIndicator = view.findViewById(R.id.book_indicator); MagicIndicatorUtil.initMagicIndicator(view,getActivity(),mBookArray,mSlidePager,magicIndicator);