您的位置:首页 > 其它

自定义控件 - ViewPager页面指示器,轮播小圆点效果,具有三种风格

2018-01-10 19:56 302 查看
转载请标明出处:http://blog.csdn.net/u013254166/article/details/79026116

本文出自: rhino博客

分享一个控件,可用于ViewPager页面指示器,使用起来非常简单方便。支持横向、纵向两种布局,可以xml设置也可以动态设置。支持三种模式Mode:

INSIDE: 滚动的小圆点被遮住,在整个圆点视图的背后滚动。

OUTSIDE: 滚动的小圆点在整个圆点视图的上面滚动。

SOLO: 没有滚动动画效果,直接选中。



viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mCircleIndicator1.setPosition(position, positionOffset);
mCircleIndicator2.setPosition(position, positionOffset);
mCircleIndicator3.setPosition(position, positionOffset);
}

@Override
public void onPageSelected(int position) {
mCircleIndicator4.setPosition(position);
}

@Override
public void onPageScrollStateChanged(int state) {
}
});

Demo采用ViewPager演示,也适用于RecyclerView,移植性强,拷贝到工程里面就能用。只需要在对应的回调接口CircleIndicator的setPosition方法即可。
注意这里有两个setPosition方法:

/**
* This method will be invoked when the dest page is selected.
*
* @param position The position of current page selected.
*/
public void setPosition(int position)

这个接口调用后立即选中,并刷新视图。

/**
* This method will be invoked when the current page is scrolled, either as part
* of a programmatically initiated smooth scroll or a user initiated touch scroll.
*
* @param position The position of next page that will be show.
* @param positionOffset Value from [0, 1) indicating the offset from the page at position.
* @see Mode#INSIDE
* @see Mode#OUTSIDE
*/
public void setPosition(int position, float positionOffset)

这个接口用于显示动画效果,前提是Mode必须为INSIDE或OUTSIDE,这里的参数直接仿造ViewPager.OnPageChangeListener.onPageScrolled方法:
position: 接下来将选中的页面索引。

positionOffset: 滚动到下一个页面的百分比,取值为[0, 1)。如果页面向前滑动positionOffset
从1.0减至0,如果页面向后滑动positionOffset 从0加至1.0。

最后附上源码下载链接,点击下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息