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