viewpager的循环滑动和图片轮播

今天下午结束了,重新加载网络页面的优化。并完成了viewpager的循环滑动和图片轮播。感触颇深啊,刚开始提手的时候发现我连viewpager怎么用都忘记了。 图片的轮播和循环滑动两个功能结合在一起的话,我认为,还是用viewpager最为简单。有查资料,现在主流的方式主要是两种,一种是在list的头和尾个添加一个元素如:list-->1,2,3那么添加完了以后的结果是
摘要由CSDN通过智能技术生成

今天下午结束了,重新加载网络页面的优化。并完成了viewpager的循环滑动和图片轮播。感触颇深啊,刚开始提手的时候发现我连viewpager怎么都忘记了。

图片的轮播和循环滑动两个功能结合在一起的话,我认为,还是用viewpager最为简单。有查资料,现在主流的方式主要是两种, 一种是在list的头和尾个添加一个元素如:list–>1,2,3那么添加完了以后的结果是:list–>3,1,2,3,1。但是显示的是原来的三个元素。通过onPagerChangeListener中的onPageSelected方法设定:(以三个元素为例)在viewpager的位置小于1的时候,3,在大于3的时候则直接跳到1(这里的位置都是包括0的)。由此来实现循环滑动。

但是这种方法有一个缺陷,就是在一组数据滑完,进入另一组数据进行切换的时候,会有明显的不自然的感觉。

因此,基于良好的用户体验,我选择了第二种。而第二种方法是通过将循环的数目增到最大:

  @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

通过 return views.get(position % views.size());来确定viewpager的位置,但是这样也是有缺陷的。首先它不是真正意义上的无限循环,只不过是有很大的边界而已。其次,当页面的总数是2和3的时候,就不能销毁复用的页面,否者会出现错误,程序报错说是,在添加新的页面之前没有将之前的页面销毁掉。研究一下发现viewpager一般会缓存两个数据,而2和3刚好在这两个缓存的数据之间。要修改这个bug的话就要重写viewpager类,显然,这样做很麻烦,也费时费力所以我设置了一个判断来解决这个问题。接下来上整个pagerAdapter的代码和setadapter的代码。
ViewpagerAdapter 代码:

    public class ViewpagerAdapter extends PagerAdapter {
   
    private Context mContext;
    private List<View&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值