android viewpage 左右无限循环滑动效果实现!

前几天写过一个关于 viewpage的无限循环的东西 主要是根据viewpage的滑动状态来进行判断 来进行页面的跳转 整个切换的过程 并不是很流畅 是一种跳转的方式进行切换的 

今天要写的东西 在网上也有了很多的代码 和demo 整个过程和思维其实非常的简单

主要是 在adapter 里设置一个很大的数一般是 整数的最大值 然后在跟list的长度取余数来加载页面 这样的做法如果用户真的很无聊的向一个方向滑动了整数最大值那么多的次数 整个滑动就结束了 从这个方面来讲可以说这种方式并没有真正的解决无限循环滑动的问题 为了是在初始状态下也可以向左边滑动 可以将viewpage的当当前页设置的很大 这样在初始状态下 可以向左右两个方向滑动 这种方式的滑动解决方案 完全是基于工程的思维--解决问题至上。下面贴一下adapter的代码:

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

// TODO Auto-generated method stub

// container.removeView(viewList.get(position%viewList.size()));//delete view

// View view = viewList.get(position);

// container.removeView(viewList.get(position%viewList.size())); //这里注释掉是解决 当你view只有3个的时候的异常当你的view多于3个的时候 还要 需要 把划出屏幕的view给remove掉的!!

}


@Override

public Object instantiateItem(ViewGroup container, int position) {

// TODO Auto-generated method stub

try {

container.addView(viewList.get(position%viewList.size()),0);//通过取余数的方式加载view 异常还是要捕捉的 原因同上

return viewList.get(position%viewList.size());

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return viewList.get(position%viewList.size());

}


@Override

public int getCount() {

// TODO Auto-generated method stub

        return Integer.MAX_VALUE;//这里是关键 设置一个很大的值 假设用户不会滑动这多次 实际也是如此 用户没那么无聊

}


@Override

public boolean isViewFromObject(View arg0, Object arg1) {

// TODO Auto-generated method stub

return arg0==arg1;   //wroten in api 

}


viewPager.setCurrentItem(viewList.size()*50); 将当前页设置为较大的值 这样在初始情况下就可以左右滑动了 但是 这里如果 用户向左滑动了50次 将不会在滑动了 有时间的朋友可以 在这里设置个小点的值 自己滑动试试看

在OnpageChangeListener中

@Override

public void onPageSelected(int arg0) {

// TODO Auto-generated method stub

nowPage = arg0%viewList.size(); // 也是通过当前的位置和viewlist的长度取余数的方式来 切换导航 和做相关的处理!

。。。。}


至此整个功能就实现了 最主要的还是在adapter中 思路很简单的其实!!!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值