-
Notifications
You must be signed in to change notification settings - Fork 23
androiddevelop edited this page May 10, 2016
·
4 revisions
CycleViewPager采用系统的ViewPager控件实现,原理如下图所示:
我们需要将n个View(记作1,2,3...n)进行循环播放,在添加n个View后,我们在n个View的最左边和最右边分别添加一个View,记作View A和View B,其中View A与View n相同,即为同一个View,View B与View 1相同。当我们出发滑动时,按照以下两条规则进行:
① 当向右滑动到View B时,将ViewPager的位置切换到View 1。
② 当向左滑动到View A时,将ViewPager的位置切换到View n。
按照规则执行后,首先在任一时刻,ViewPager不会固定在View A和View B上,所以可以进行双向滑动;其次对ViewPager的滑动进行监听,在滚动停止后进行切换,观察不到任何变化。
由于CycleViewPager支持ViewPager的默认行为,此时不需要View A和View B,而ViewPager中View的个数取决于是否需要循环滚动,故在设置数据之前必须设定是否循环滚动播放,即调用setData方法时必须调用setCycle方法设置是否循环滚动。
