Viewpager无限循环(首页与尾页平滑过渡)

#Viewpager无限循环(首页与尾页平滑过渡)

##double kill
在网上找了不少的viewpager无限轮播的例子,大部分都是Interger.MAX_VALUES
滑到最后一页的时候setCurrentItem(0),这样虽然实现了无限轮播,但是当从最后一页跳转到第一页的时候不够优雅。。通过google终于找到了答案:

将你的图片的list的前后各增加一张图片,并将最后一张图片放至图片的第一张,第一张图片
放至图片的最后一张,例如: List {ABCD} 改为{DABCDA}这样滑到最后一张图片的时候会显示一张图片而不是突兀的跳过中间的几张图片。然后初始化viewpager的时候让他从第一张图片开始轮播:setCurrentItem(1)

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Override
public void onPageScrolled(int i, float v, int i1) {
if (v == 0.0){
if (i == 0){
//当滑到第一张图时显示最后一张图并将postion跳至"D"位置
vp.setCurrentItem(mImageViews.length-2,false);
}
//当滑到最后一张图时显示第一张图并将position跳至"A"位置
else if (i == mImageViews.length-1)
{
vp.setCurrentItem(1,false);
}
}
}

##至此就实现了无限轮播。
附上轮播代码:

1
2
3
4
5
6
7
8
9
10
11
12
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run() {
currentItem++;
//当currentItem等于图片大小的时候记得将 currentItem重置为1
if (currentItem== mImageViews.length) {
currentItem= 1;
}
mHandler.sendEmptyMessage(REFRESH_VP_CODE);
}}, 3000, 3000);

Contents
  1. 1. #Viewpager无限循环(首页与尾页平滑过渡)
|