Gallery循环滑动

        Gallery每次滑动到最后一个的时候,在向后就滑不动了,或者第一个向前的时候,也是不能实现滑动的。这主要是有Gallery的position来决定的。
Gallery的position的值在0到getCount()之间,不能超出这样的一个范围。
       所以在第一个的时候,position=0,所以不能向前滑动。当在最后一个的时候position=getCount(),所以不能继续向后滑动。

        可以这样实现循环滑动:
1、在自定义的Adapter中getCount()方法里面,返回一个远大于实际图片数量的值,那么position就会增大,当滑动到最后一个图片的,还可以接着往下面滑动。

   <span style="color:#000000"> public int getCount() {
          return <span style="color:#ff0000">Integer.MAX_VALUE</span>;//返回一个Integer的最大值,远大于实际图片的数量
    }
</span>

 

2、如果,光是这样,还是不行的,因为当position大于图片数组的话,会出现数组下标越界的异常,所以,在加载这个图片的时候,要实现对position进行处理。 
   Bitmap bitmap=BitmapFactory.decodeResource(context.getResources(), <span style="color:#ff0000">imagesId[position%imagesId.length</span>]);
      对position取余就可以了。
3、这样,就实现了能在最后一张图片的时候,继续滑动。
在Activity里面定义gallery的时候在这样设置: 
    gallery.setSelection(<span style="color:#ff0000">adapter.getCount()/2</span>);//改变最开始的position的数值

    就可以在最前面的时候,向前滑动。

这样做,可能对性能有影响,而且是一种伪循环的效果,只是让position无限大,永远达不到而已。当然你也可以不用设置这么大,根据需要设置稍微大几倍就行了。

posted @ 2012-07-27 10:53  安卓吧  阅读(1887)  评论(0)    收藏  举报