android的:viewpage如何实现左右循环

在用到:viewpage时,发现这个:viewpage在左右滑动的时候,无法进行循环,在:viewpage处于第一个或最后的一页面时,无法再次进行滑动,只能逆向滑动。但看其它很多优秀的应用,在:viewpage处理时,是可以进行无限循环滑动,于是便研究了一下,发现其实这个效果是很容易做到的。

首先,在用到:viewpage时,对于PagerAdapter我们肯定都很熟悉,这个类主要是处理:viewpage中的视图的加载和销毁,一般我们都需要复写四个方法,分别是:

getCount ();

isViewFromObject(视图arg0,对象__arg1);

destroyItem(视图容器,int位置、对象对象),

对象instantiateItem(视图容器,int位置);

第一个方法:getCount()是为了获得:viewpage的视图组中的个数,方法:isViewFromObject是为了判断要显示的页面是否为我们设置的视图组中视图的

使:viewpage进行循环滑动的思路如下:首先我们肯定保定在getCount方法返回的数字为无限大,这样它才可以知道组中有无限多个,因此在设置getCount的时候,我返回的是固定的Integer.MAXVALUE。

其次,我们要保证这些个页面是我们设置的固定的几个页面,所以我们在初始化页面及销毁页面时,保证一直我们设置的这些个页面,故此处就是用到的求余的算法,也就是%。

PagerAdapter VPagerAdapter=new PagerAdapter () {


@Override

公共int getCount () {


返回Integer.MAX_VALUE;

}


@Override

公共布尔isViewFromObject(视图arg0,对象__arg1) {


int pos=(整数)__arg1 %数;

布尔f=arg0==groupview.get (pos);

返回f;

}


@Override

公共空间destroyItem(视图容器,int位置、对象对象){

int pos=%计算位置;

=groupview.get视图视图(pos);

((: viewpage)容器).removeView(视图);}


@Override

公共对象instantiateItem(视图容器,int位置){


,,,,,,,int pos=位置% viewlist.size ();
,,,,视图,视图=viewlist.get (pos);
,,,,父母,ViewGroup=(ViewGroup) view.getParent ();
,,,,,如果(父!=null) {
,,,,,,,parent.removeView(视图),
,,,,,}
,,,,((:viewpage)容器).addView(视图),
,,,,,返回位置;

}

};

主要代码如上,计数是我们的视图组中视图的个数。

附演示的下载地址:https://github.com/maliankun/viewpagertest/archive/master.zip

android的:viewpage如何实现左右循环