控件一:Gallery 之无限循环的问题

Gallery每次滑动到最后一个的时候,在向后就滑不动了,或者第一个向前的时候,也是不能实现滑动的。这主要是有Gallery的position来决定的。

Gallery的position的值在0到getCount()之间,不能超出这样的一个范围。

所以在第一个的时候,position=0,所以不能向前滑动。

当在最后一个的时候position=getCount(),所以不能继续向后滑动。

如果,非要实现这两种不能滑动的情况怎么办呢?

那么,可以这样实现:

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

public int getCount() { return Integer.MAX_VALUE;//返回一个Integer的最大值,远大于实际图片的数量 } 2、如果,光是这样,还是不行的,因为当position大于图片数组的话,会出现数组下标越界的异常,所以,在加载这个图片的时候,要实现对position进行处理。

Bitmap bitmap=BitmapFactory.decodeResource(context.getResources(), imagesId[position%imagesId.length]);对position取余就可以了。

3、这样,就实现了能在最后一张图片的时候,继续滑动。

在Activity里面定义gallery的时候在这样设置:

gallery.setSelection(adapter.getCount()/2);//改变最开始的position的数值就可以在最前面的时候,向前滑动。



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

真正的循环如何实现,还不知道,等以后知道了再说。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值