ViewPager循环
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循环相关推荐
- ViewPager循环滑动和靠按钮来控制循环滑动
ViewPager用按钮来控制,昨天说了一种方式是直接设置setcurrentItem(),但是今天发现如果我们要设置viewpager循环滑动的话这种方式似乎不可行,于是看源码发现了Viewpage ...
- android 首页广告位,Android 使用 ViewPager循环广告位的实现
如何实现循环播放 现在网上实现循环播放都是在adapter的getCount()方法返回一个较大的值并且instantiateItem(ViewGroup container,int position ...
- 利用Android属性动画实现Banner的原理与实践
事实上在Android刚推出属性动画的时候.就想利用它来设计一个Banner控件,一直没什么时间尝试. 在当时看我们应用中的Banner,使用计时器来控制自己主动播放,设置一个非常大的数,利用余数原理 ...
- android广告轮播无限
效果 : 一 :布局文件的布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- android自定义控件之滚动广告条
在一些电子商务网站上经常能够看到一些滚动的广告条,许多软件在首次使用时也有类似的广告条,如图: 其实在github上有实现这种效果的控件,不过这东西做起来也是很简单,我们今天就来看看该怎么做. 先来看 ...
- android+广告栏效果,Android自定义控件之广告条滚动效果
在一些电子商务网站上经常能够看到一些滚动的广告条,许多软件在首次使用时也有类似的广告条,如图: 其实在github上有实现这种效果的控件,不过这东西做起来也是很简单,我们今天就来看看该怎么做. 先来看 ...
- java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
文章目录 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again异常分析及解决 问题描述: 问题分析: ...
- 中兴面试总结,华为。技术,市场
1,软件测试,如何把这个测试做的更好. 进到一个新项目,作为测试人员应该都是想把测试做好,项目在符合客户质量要求的情况下按时交付的吧.但往往都事与愿违,造成这个结果的原因有很多很多.通过这段时间做自动 ...
- 【Android】ViewPager实现无限循环滚动
最近做的一个项目,客户要求在ViewPager实现的主页面中滑动到最后一页后继续滑动能返回到第一页,也就是实现无限循环滚动,效果如下: 看了下ViewPager没有滑到尽头的回调方法,因此想到的解决方 ...
最新文章
- 计算机应用基础作业北语,北语计算机应用基础作业.doc
- [Spark][Python]PageRank 程序
- 国外常用的jQuery响应式网页模板
- Pair Project:电梯控制程序 编写心得 最新版
- == 和 === 有什么区别
- Java注解原理解析 转载至:梅仁
- 真机调试 —— An unknown error occurred.
- 关于安装VS2008后SQL server 2005安装的问题
- linux重启配置文件,rEFInd启动管理器配置文件详解
- STM32 C++编程 004 Adc (数模转换)类
- Python 2.6 升级到 2.7
- 细述 wxWindows--精简版
- Oracle将CLOB字段类型转为Varchar2类型
- 2022年最新的西安Java培训机构十大排名榜单
- mysql批量导出_mysql批量导出导入
- java中乘法计算的三种方式 位运算中的另一种运算 — 左移运算
- 安装Android adb驱动
- 斩断***黑手:如何使用IceSword冰刃
- CCNP之IGP学习笔记(2022)
- python提取cad坐标_怎么提取cad中坐标?CAD批量提取坐标点的三种方法