问题描述
作者这里使用的是第三方Banner,当使用图中Transformer
的时候,当滑动到最后一个会出现一段空白,如图:
问题原因
先看一下这个Banner
的内容:
count + 1
个数据,
count
就是真实数据的
size
,也就是说要比真实数据多创建两个数据,实现
Banner
的无限循环:
if (currentItem == count + 1) {
viewPager.setCurrentItem(1, false);
} else if (currentItem == 0) {
viewPager.setCurrentItem(count, false);
}
复制代码
通过代码可以看出:当滑动到最后一个的时候,由于使用了这种Transformer
右边没有item
了所以会有空白,又由于viewPager.setCurrentItem(1, false)
滑动回下标为1
的item
,这里的flase
表示立即过渡,不做动画处理,这也是为什么多创建两个相同数据的原因—让用户觉得处于无限循环状态,但是这个第三方库的作者却忽略了设置这种Transformer
的情况。
解决方案
- 当
viewpager
即将滑动到最后一个的时候,无感知的滑到第一个item
,通过阅读源码和搜索无果,水平有限请见谅; - 可以再多加一个
item
冬至,这时的item
个数为count+2
,当滑动到count+1
时滑动回下标为1
的item
,这时下标为count+2
的item
只是展示(我太机智了,嘿嘿)。