#Viewpager無限循環(首頁與尾頁平滑過渡)
##double kill 在網上找了不少的viewpager無限輪播的例子,大部分都是Interger.MAX_VALUES。 滑到最后一頁的時候setCurrentItem(0),這樣雖然實現了無限輪播,但是當從最后一頁跳轉到第一頁的時候不夠優雅。。通過google終于找到了答案:
將你的圖片的list的前后各增加一張圖片,并將最后一張圖片放至圖片的第一張,第一張圖片 放至圖片的最后一張,例如:** List {ABCD} 改為{DABCDA}**這樣滑到最后一張圖片的時候會顯示一張圖片而不是突兀的跳過中間的幾張圖片。然后初始化viewpager的時候讓他從第一張圖片開始輪播:setCurrentItem(1)
核心代碼:
@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); } }
}
復制代碼
##至此就實現了無限輪播。 附上輪播代碼:
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);
復制代碼