在用到viewpager時(shí),發(fā)現(xiàn)這個(gè)viewpager在左右滑動(dòng)的時(shí)候,無(wú)法進(jìn)行循環(huán),在viewpager處于第一個(gè)或最后的一頁(yè)面時(shí),無(wú)法再次進(jìn)行滑動(dòng),只能逆向滑動(dòng)。但看其它很多優(yōu)秀的應(yīng)用,在viewpager處理時(shí),是可以進(jìn)行無(wú)限循環(huán)滑動(dòng),于是便研究了一下,發(fā)現(xiàn)其實(shí)這個(gè)效果是很容易做到的。
城關(guān)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
首先,在用到viewpager時(shí),對(duì)于PagerAdapter 我們肯定都很熟悉,這個(gè)類主要是處理viewpager中的view的加載和銷毀,一般我們都需要復(fù)寫四個(gè)方法,分別是:
getCount();
isViewFromObject(View arg0, Object arg1);
destroyItem(View container, int position, Object object);
Object instantiateItem(View container, int position);
第一個(gè)方法:getCount() 是為了獲得viewpager的view組中的個(gè)數(shù),方法:isViewFromObject是為了判斷要顯示的頁(yè)面是否為我們?cè)O(shè)置的view組中的view(個(gè)人理解),其它的兩個(gè)方法分別是用來(lái)銷毀和初始化view的。
使viewpager進(jìn)行循環(huán)滑動(dòng)的思路如下:首先我們肯定保定在getCount方法返回的數(shù)字為無(wú)限大,這樣它才可以知道group中有無(wú)限多個(gè),因此在設(shè)置getcount的時(shí)候,我返回的是固定的Integer.MAXVALUE。
其次,我們要保證這些個(gè)頁(yè)面是我們?cè)O(shè)置的固定的幾個(gè)頁(yè)面,所以我們?cè)诔跏蓟?yè)面及銷毀頁(yè)面時(shí),保證一直我們?cè)O(shè)置的這些個(gè)頁(yè)面,故此處就是用到的求余的算法,也就是%.
PagerAdapter VPagerAdapter = new PagerAdapter() {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
int pos = (Integer)arg1 % count;
boolean f = arg0 == groupview.get(pos);
return f;
}
@Override
public void destroyItem(View container, int position, Object object) {
int pos = position % count;
View view = groupview.get(pos);
((ViewPager) container).removeView(view);
}
@Override
public Object instantiateItem(View container, int position) {
int pos = position % viewlist.size();
View view = viewlist.get(pos);
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
((ViewPager) container).addView(view);
return position;
}
};
主要代碼如上,count是我們的view組中view的個(gè)數(shù)。
附demo的下載地址:https://github.com/maliankun/viewpagertest/archive/master.zip