android.support.v4.view.ViewPager

ViewPager的使用跟AbsListView,AbsSpinner类似,需要用一个adapter填充数据,同时实现了onPagerChangeListener接口。

ViewPager需要的adapter继承自android.support.v4.view.PageAdapter,getCount返回adapter的长度,destroyItem滑出屏幕做remove操作,instantiateItem返回填充的视图对象。

要想让ViewPager显示循环的效果网上大多采用给adapter的getCount返回一个很长的数字,然后在返回视图对象的时候用长度getCount%真实数据集合的长度去求余数,求的的余数就是数据集合中拿出来要给instantiateitem返回的视图对象。

然后还可以根据这个余数去设置indicator(小圆点索引)的状态

如图:

代码:

初始化一个装这ImageView的List

List<ImageView> mViewPagerBannerList = new ArrayList<ImageView>();
for (int i = 0; i < 7; i++) {ImageView mImageView = (ImageView) LayoutInflater.from(getActivity()).inflate(  R.layout.fragment_market_featured_item0_imageview, null);mViewPagerBannerList.add(mImageView);
}

重写PageAdapter

class MyBannerPageAdapter extends PagerAdapter {List<ImageView> mImageViews;public MyBannerPageAdapter(List<ImageView> mImageViews) {this.mImageViews = mImageViews;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mImageViews.size() * 100;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stubcontainer.removeView(mImageViews.get(position % mImageViews.size()));}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {ImageView mView = mImageViews.get(position % mImageViews.size());ImageLoader loader = new ImageLoader(mQueue,//以下这一部分代码是Vollay动态给加载图片的VolleyBitmapCache.getCache());ImageListener imageListener = ImageLoader.getImageListener(mView,0, 0);loader.get(mBannerApps.get(position % mImageViews.size()).getBanner_link(), imageListener);try {container.addView(mImageViews.get(position % mImageViews.size()), 0);} catch (Exception e) {// handler something}return mImageViews.get(position % mImageViews.size());//根据余数返回要填充的ImageView}RequestQueue mQueue = Volley.newRequestQueue(getActivity());}

如果你的ViewPager位于ListView的头部,你就会发现对内容的单击事件没法监听了,如果监听了ViewPager的onClickListener之后,ViewPager的滑动会受到影响,我的做法是重写ViewPager,重写onTouch事件,在down和up事件上作文章,可见ViewPager嵌套使用的文章:http://blog.csdn.net/u013045971/article/details/41512055

大家有更好的方式的话,可以告诉我一下,谢谢。

转载于:https://www.cnblogs.com/gmm283029/p/4498961.html

ViewPager循环相关推荐

  1. ViewPager循环滑动和靠按钮来控制循环滑动

    ViewPager用按钮来控制,昨天说了一种方式是直接设置setcurrentItem(),但是今天发现如果我们要设置viewpager循环滑动的话这种方式似乎不可行,于是看源码发现了Viewpage ...

  2. android 首页广告位,Android 使用 ViewPager循环广告位的实现

    如何实现循环播放 现在网上实现循环播放都是在adapter的getCount()方法返回一个较大的值并且instantiateItem(ViewGroup container,int position ...

  3. 利用Android属性动画实现Banner的原理与实践

    事实上在Android刚推出属性动画的时候.就想利用它来设计一个Banner控件,一直没什么时间尝试. 在当时看我们应用中的Banner,使用计时器来控制自己主动播放,设置一个非常大的数,利用余数原理 ...

  4. android广告轮播无限

    效果 : 一 :布局文件的布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  5. android自定义控件之滚动广告条

    在一些电子商务网站上经常能够看到一些滚动的广告条,许多软件在首次使用时也有类似的广告条,如图: 其实在github上有实现这种效果的控件,不过这东西做起来也是很简单,我们今天就来看看该怎么做. 先来看 ...

  6. android+广告栏效果,Android自定义控件之广告条滚动效果

    在一些电子商务网站上经常能够看到一些滚动的广告条,许多软件在首次使用时也有类似的广告条,如图: 其实在github上有实现这种效果的控件,不过这东西做起来也是很简单,我们今天就来看看该怎么做. 先来看 ...

  7. java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again

    文章目录 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again异常分析及解决 问题描述: 问题分析: ...

  8. 中兴面试总结,华为。技术,市场

    1,软件测试,如何把这个测试做的更好. 进到一个新项目,作为测试人员应该都是想把测试做好,项目在符合客户质量要求的情况下按时交付的吧.但往往都事与愿违,造成这个结果的原因有很多很多.通过这段时间做自动 ...

  9. 【Android】ViewPager实现无限循环滚动

    最近做的一个项目,客户要求在ViewPager实现的主页面中滑动到最后一页后继续滑动能返回到第一页,也就是实现无限循环滚动,效果如下: 看了下ViewPager没有滑到尽头的回调方法,因此想到的解决方 ...

最新文章

  1. 计算机应用基础作业北语,北语计算机应用基础作业.doc
  2. [Spark][Python]PageRank 程序
  3. 国外常用的jQuery响应式网页模板
  4. Pair Project:电梯控制程序 编写心得 最新版
  5. == 和 === 有什么区别
  6. Java注解原理解析 转载至:梅仁
  7. 真机调试 —— An unknown error occurred.
  8. 关于安装VS2008后SQL server 2005安装的问题
  9. linux重启配置文件,rEFInd启动管理器配置文件详解
  10. STM32 C++编程 004 Adc (数模转换)类
  11. Python 2.6 升级到 2.7
  12. 细述 wxWindows--精简版
  13. Oracle将CLOB字段类型转为Varchar2类型
  14. 2022年最新的西安Java培训机构十大排名榜单
  15. mysql批量导出_mysql批量导出导入
  16. java中乘法计算的三种方式 位运算中的另一种运算 — 左移运算
  17. 安装Android adb驱动
  18. 斩断***黑手:如何使用IceSword冰刃
  19. CCNP之IGP学习笔记(2022)
  20. python提取cad坐标_怎么提取cad中坐标?CAD批量提取坐标点的三种方法

热门文章

  1. c# 口口乱码_c# 乱码解决方法
  2. java none怎么用tomcat_使用tomcat做java中间件
  3. ice库c语言例子,很不多的ICE架构入门学习例子
  4. Oracle 事务的开始与结束
  5. 在给定总和K的二叉树中找到级别
  6. c+ +三角函数_C ++中的三角函数
  7. web安全---浏览器解析提交数据的过程
  8. 237. 删除链表中的节点 golang
  9. 浅拷贝+引用计数--写时拷贝---模拟实现string容器
  10. 编译faac错误分析