原来计划就到被大家带来
MagicIndicator
的原理性文章(虽说不难,都是一个套路,但要时有发生必不可少论一下),可立刻半上加班为
MagicIndicator
增加了片新特性,使得她的可定制能力再强了,这吗便直接导致使用时如果关注之部署参数还多了,所以自己以为有必不可少对这些参数进行逐项讲解,方便大家快入手。

本篇是 MagicIndicator 系列博文的亚首,如果你还无扣罢
MagicIndicator系列有 ——
使用MagicIndicator打造千变万化的ViewPager指示器
,建议事先看罢还过来看这篇。

开篇


额,我要事先贴图吧,从图备受就可以看出
MagicIndicator
支持之有些特色:

magicindicator.gif

自我多少小介绍一下,在代码层面,每一个指示器就是一个 **IPagerNavigator
** ,
MagicIndicator
中时放开了简单单 IPagerNavigator (后续不断充实),分别是:

  • CommonNavigator
  • CircleNavigator

顾名思义, CommonNavigator
是一个通用的指示器,也即是乘我们普遍的横向的、带有很多子元素的之指示器。子元素中唯独带文本、图标与若想使的外View。效果图中除去最后一个指示器是
CircleNavigator 外,其余皆是本着 CommonNavigator
进行参数配置的结果,怎么样,是免是觉得好有力!

CircleNavigator 功能则比较简单,我管其作为内置的指示器只是为凸显
MagicIndicator
的扩张能力,具体用法请参考我之
demo
吧,今天莫举行过多介绍。

CommonNavigator


立才是今底中坚。

设想到多方用中之指示器都接近上面的效用,因此我用她抽象出来。同时为使大家通过简单布置(自定义
IPagerNavigator
显得麻烦)即可满足一般需要,我搜寻了广大带指示器的行使,诸如小飞读报、讯飞输入法、一点讯息、今日头漫长、网易新闻、微信、豌豆荚等,挨个研究它们的指示器效果,总结发生了片共有的风味。这些特色在代码层面,表现也
CommonNavigator 的7单成员变量,分别是:

/**
 * 提供给外部的参数配置
 */
/****************************************************/
private boolean mAdjustMode;   // 自适应模式,为true表示title均分宽度,适用于数目固定的、少量的title
private boolean mEnablePivotScroll; // 启动中心点滚动
private float mScrollPivotX = 0.5f; // 滚动中心点 0.0f - 1.0f
private boolean mSmoothScroll = true;   // 是否平滑滚动,适用于 !mAdjustMode && !mFollowTouch
private boolean mFollowTouch = true;    // 是否手指跟随滚动
private int mRightPadding;
private int mLeftPadding;
/****************************************************/

目注释我怀念你不怕已于明了呀,不过自己要想念对当时几只属性进行说明:

  • mAdjustMode
    于适应模式,默认为
    false,适用于数固定的、子元素较少之指示器,比如讯飞输入法的皮肤界面:
shurufa.gif



自适应模式下,每个子元素的宽度默认是均分的。如果你不想均分,重写
CommonNavigatorAdapter 的 getTitleWeight
方法吧。同时,其余6个属性都不生效了,因为都没意义啦。
  • mFollowTouch
    指从滚动,默认为true,此模式下,只要 ViewPager
    滚动,子元素也会随之滚动,否则一经等手指跷起后(onPageSelected)才起来滚动,看看小飞读报的效用吧:
xiaofeidubao.gif
  • mScrollPivotX
    滚动的中心点,默认为0.5f,也就算是居中,就像刚有些意外读报的效能,如果您设置为0.15f,就是网易新闻之功力啊:
wangyixinwen.gif



gif略卡,大家不要怪我,都是网易新闻的错,该优化优化下界面卡顿啦。
  • mEnablePivotScroll
    是不是开启中心点滚动,默认为
    false,开启后,选中某一个子元素时,将会依据 mScrollPivotX
    滚动到相当的位置,否则,只有当子元素不完全可见时,才会硌滚动,使得子元素完全可见。

  • mSmoothScroll
    是否平整滚动,默认为 true,在 !mAdjustMode && !mFollowTouch
    下生效。也不怕是当子元素不净可见时,触发滚动使之了可见时是不是平整滚动。

  • mLeftPadding,mRightPadding
    CommonNavigator 内部的 HorizontalScrollView 的
    左右padding,默认为0。至于它们产生啊用,看看今日头长达的力量吧:

    toutiao.gif

可以看到,添加频道按钮和搜索按钮是悬在指示器上边的,但是指示器中的最后一个元素却可以滚出来,在
[MagicIndicator](https://link.jianshu.com?t=https://github.com/hackware1993/MagicIndicator)
中,设置一下 mRightPadding 就可以搞定啦。

好了,这几个属性都介绍完了,相信大家还理解了吧。关于效果图被的法力是什么完成的,后面会发出特别的博客来讲学如何扩大
MagicIndicator
打造任意的切换效果。

结语


假设大家觉得
MagicIndicator
很好,对你发出拉,欢迎多多 star +
fork,关注!关注!,也要帮推广一下哈。感激不尽。

MagicIndicator
是本人计划长期保护的花色,由于才刚刚起,现在底指示器效果还免是过剩,后续会频频进入更多炫酷的意义,如果你想加入我,打造更好之用户体验,私信我吧。

MagicIndicator
疑难解答,交流请加QQ群:373360748。

今即到是结束吧。周末喜!

网站地图xml地图