ViewPagerIndicator设置指示点的间距

ViewPagerIndicator在github项目地址:https://github.com/JakeWharton/ViewPagerIndicator

CirclePageIndicator的一部分代码,其实CirclePageIndicator的指示点并不居中,将点的大小设置很大就可以看出来,我们可以参照radius属性,添加一个属性dotpadding,用于在布局中使用该属性设置两点之间的间距

ViewPagerIndicator设置指示点的间距_第1张图片
添加一个属性dotpadding

然后需要在CirclePageIndicator类中,声明成员变量获取该属性

ViewPagerIndicator设置指示点的间距_第2张图片
声明成员变量mDotPadding
ViewPagerIndicator设置指示点的间距_第3张图片
从布局中获取dotPadding属性值

在onDraw方法中注销掉原来的设置间距的六行代码,换上自己的绘制间距代码:


if (mDotPadding == 0) {

          mDotPadding = mRadius;

}

final float threeRadius = mRadius * 2 + mDotPadding;

final float shortOffset = shortPaddingBefore + mRadius;

float longOffset = longPaddingBefore + mRadius;

if (mCentered) {

      if (count > 1) {

                longOffset += (longSize - longPaddingBefore - longPaddingAfter) / 2.0f - (count * 2 * mRadius + (count - 1) * mDotPadding) / 2.0f;

      } else {

             longOffset += (longSize - longPaddingBefore - longPaddingAfter) / 2.0f - mRadius;

      }

}


ViewPagerIndicator设置指示点的间距_第4张图片
注销掉原来的设置间距的六行代码,换上自己的绘制间距代码

最后添加get和set方法,方便在代码中调用:


ViewPagerIndicator设置指示点的间距_第5张图片
添加get和set方法

然后就可以在布局和代码中直接使用了:


ViewPagerIndicator设置指示点的间距_第6张图片
在布局使用

你可能感兴趣的:(ViewPagerIndicator设置指示点的间距)