详细分析Android viewpager 无限循环滚动图片
由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下。最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了,但是讲的都不清楚,我查了很多资料,我就知道position/list.size().但是怎么用,我还是不明白。我后来看了百度工程师任玉刚的循环广告位组件的实现突然明白了无限滚动的原理。总结如下:
1.要在int getCount() 方法里 写 return BANNER_SIZE。 这个 BANNER_SIZE 是一个定义好的常量,最好定义大一点,比如1000、10000。我以前对这个方法的返回值到底表示什么意思我不太明白。如果写成 return list.size()那就好懂。我觉得这个返回列表的可能性比较大,因为这个viewpager的图片是从服务器端返回的,数量和地址随时会发生变化的。返回大一点的值如1000是viewpager表示这个viewpager你可以在上面滑动1000下。如果你只有3张图片,你不停的滑动,让这3张图片来回显示,也就是让position 0 1 2 0 1 2 0 1 2..... 不就是你想要的无限循环滑动吗? 那么这个怎么让它循环滑动呢。那么就要在实现Object instantiateItem(ViewGroup container, int position) 方法。
2. Object instantiateItem(ViewGroup container, int position)
如果是viewpager显示服务端返回的图片,要把下载网络的图片代码放在这里写,比如用imagerloader 下载图片(顺便赞下这个框架,使用起来非常方便,我真想发一份邮件感谢这个框架的作者,写的太棒了,造福全世界的coder啊,不用不知道,用了吓一跳)。好了,要想position是 0 1 2 0 1 2循环,那么就得写成position=position % list.size()(我觉得不是position %BANNER_SIZE, 不然就出现数组下标越界了,任玉刚的好像也写错了) 右边的 postion是上面的getCount()返回值的position。比如设置1000,那么position就是 0 1 2 3 4 .......1000, 这样左边的position的值就是在 0 1..list.size()循环了。图片集合的大小为3,那么就是 0 1 2 0 1 2..... 而是显示图片的下表是就是始终在0 1 2循环了。这样到你滑动到第四屏的时候,就显示第一张,滑动第五屏就是第二张图片,滑动第六屏就是第三张图片,这样以此类推。这样就可以实现循环滑动了,但是真的是“无限”循环吗? 如果你真的闲的没事,不停的滑啊,滑啊,滑啊,肯定会在某个时候无法滑动了。这样做的目的就是让你觉得是无限滑动了。还有我的体会是instantiateItem像baseadpter的里getview()方法 控制listview的每一个item的。viewpager显示图片实际上用imageview来显示每一张图片的,这个跟listview显示图片列表是一样的道理。
详细分析Android viewpager 无限循环滚动图片的更多相关文章
- Android实现ViewPager无限循环滚动回绕
Android实现ViewPager无限循环滚动回绕 Android系统提供的ViewPager标准方式是左右可以自由滑动,但是滑动到最左边的极限位置是第一个page,滑动到最右边的位置是最后一 ...
- 一行代码引入 ViewPager 无限循环 + 页码显示
(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...
- iOS开发系列--无限循环的图片浏览器
--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...
- android中无限循环滑动的gallery实例
android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...
- unity 背景无限循环滚动效果
背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...
- 封装一个ViewPager真正的实现图片无限循环滚动带导航点
效果图: 大家在写项目的过程中常常会碰到须要实现Viewpager里面载入几张图片来循环自己主动轮播的效果,假设不封装一下的话代码分散在activity里面会显得非常乱.并且也不利于我们下次复用,所以 ...
- android 自定义无限循环播放的viewPager。轮播ViewPager。实现循环播放 广告,主题内容,活动,新闻内容时。
前言 实际项目需要一个 播放广告的控件,可能有多个广告图片.每个一段时间更换该图片.简单来说,就是一个 “循环播放图片”的控件. 间隔时间更换图片 一般来说,图片切换时需要有动画效果 需要支持手势,用 ...
- ViewPager 无限循环
Overview 我们在使用ViewPager来制作图片轮播的时候,常常为ViewPager不能一直无限循环的问题所苦恼.对于这个问题,目前从网上找到了两个思路来解决: 将 ViewPager 的Co ...
- iOS无限循环滚动scrollview
经常有园友会问"博主,有没有图片无限滚动的Demo呀?", 正儿八经的图片滚动的Demo我这儿还真没有,今天呢就封装一个可以在项目中直接使用的图片轮播.没看过其他iOS图片无限轮播 ...
随机推荐
- javascript动画系列第三篇——碰撞检测
前面的话 前面分别介绍了拖拽模拟和磁性吸附,当可视区域内存在多个可拖拽元素,就出现碰撞检测的问题,这也是javascript动画的一个经典问题.本篇将详细介绍碰撞检测 原理介绍 碰撞检测的方法有很多, ...
- 【资源】.Net 入门@提高 - 逆天的高薪之路!
入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~ 官方学习计划 http://www.cnblogs.com/dunitian/p/5667901.html ----- ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- C#中如何在Excel工作表创建混合型图表
在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...
- Oracle 数据库语句大全
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...
- 代码的坏味道(15)——冗余类(Lazy Class)
坏味道--冗余类(Lazy Class) 特征 理解和维护类总是费时费力的.如果一个类不值得你花费精力,它就应该被删除. 问题原因 也许一个类的初始设计是一个功能完全的类,然而随着代码的变迁,变得没什 ...
- .NET设计模式访问者模式
一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...
- javascript高性能编程-算法和流程控制
代码整体结构是执行速度的决定因素之一. 代码量少不一定运行速度快, 代码量多也不一定运行速度慢. 性能损失与代码组织方式和具体问题解决办法直接相关. 倒序循环可以提高性能,如: ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- maven的pom.xml关系依赖书写顺序
今天遇到了一个情况,以前代码编译没有问题,升级了hbase客户端phoenix驱动,又调整了thrift的关系依赖的位置,放到了这个驱动后面. 如下: 导致了一个thrift接口类编译报错: 检查这个 ...