在项目和产品的开发过程中难免会遇到使用viewpager+指示器的UI实现,之前都是自己写来实现,麻烦不说代码量也比较多,之前也想过自己抽出来封装一个框架来处理,但是在后来发现MagicIndicator这个框架挺好用的,方法简单效果比较全面,然后就用了这个,下面大概介绍一下MagicIndicator的基本用法
第一步首先就是引用这个框架,在build.gradle中添加引用
compile'com.github.hackware1993:MagicIndicator:1.5.0'
第二步在使用的页面布局文件中添加代码
<net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="match_parent"
android:layout_height="45dp" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp">
</android.support.v4.view.ViewPager>
在通过在view页面初始化控件并设置控件属性
@BindView(R.id.magic_indicator)
MagicIndicator magicIndicator;
@BindView(R.id.viewpager)
ViewPager viewPager;
设置标题的指示器样式
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
@Override
public int getCount() {
return titles.length;
}
@Override
public IPagerTitleView getTitleView(Context context, final int index) {
SimplePagerTitleView simplePagerTitleView = new ScaleTransitionPagerTitleView(context);
simplePagerTitleView.setText(titles[index]);
simplePagerTitleView.setTextSize(20);//设置导航的文字大小
simplePagerTitleView.setNormalColor(Color.GRAY);//正常状态下的标题颜色
simplePagerTitleView.setSelectedColor(getResources().getColor(R.color.title_bar_bg));//选中的标题字体颜色
simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(index);
}
});
return simplePagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
return null;
}
});
magicIndicator.setNavigator(commonNavigator);
最后需要将viewpager与MagicIndicator 绑定到一起
ViewPagerHelper.bind(magicIndicator, viewPager);
这样基础的用法就搞定了效果如下图
Screenshot_20180427-150202.jpg