使用ViewFlow实现无限循环轮播图和滑动冲突解决

android中的轮播图很常见,最近发现了个很好用的轮播图控件ViewFlow,ViewFlow是一个开源的android UI库。它提供了三个组件ViewFlow、FlowIndicator和TitleFlowIndicator。

一、下面来说下ViewFlow的用法:

  • 首先需要下载ViewFlow的相关文件:ViewFlow、FlowIndicator和TitleFlowIndicator,下载链接就不说了,百度一下,有好多。
  • 然后和用viewpager一样需要自己写个Adapter,不过这个有些需要改动的地方,也是无线循环的关键所在。
public int getCount() {
        return isInfiniteLoop ? Integer.MAX_VALUE : bannerBeenList.size();
        //返回很大的值使得getView中的position不断增大来实现循环;
    }

代码里的注释写的已经很清楚了,就解释了。不过需要注意的是,在getView方法中的list取值需要注意下,要不然会报数组越界错误。

bannerBeenList.get(position % bannerBeenList.size())
  • 然后就是布局文件了。

    以上无限轮播基本就实现了。下面再说下滑动冲突的问题

    二 、在正常的项目中一个界面中不会只有一个轮播图模块,不过你要是就只需要一个轮播图我也不介意。现在来说一下滑动冲突问题的解决。
    只需要自己重新实现ViewFlow中的onInterceptTouchEvent方法就行,
    其实这就是个点击事件分发的问题。

 public boolean onInterceptTouchEvent(MotionEvent ev) {


        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
            case MotionEvent.ACTION_UP:
                getParent().requestDisallowInterceptTouchEvent(false);
                break;
            case MotionEvent.ACTION_CANCEL:
                getParent().requestDisallowInterceptTouchEvent(false);
                break;
            case MotionEvent.ACTION_MOVE:
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
        }
        return super.onInterceptTouchEvent(ev);
    }

最后大家可以去下载demo,有什么问题可以反馈给我
下载地址:http://download.csdn.net/detail/zqrdy10/9728560

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值