由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下。最近在项目中要做一个在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 无限循环滚动图片的更多相关文章

  1. Android实现ViewPager无限循环滚动回绕

     Android实现ViewPager无限循环滚动回绕 Android系统提供的ViewPager标准方式是左右可以自由滑动,但是滑动到最左边的极限位置是第一个page,滑动到最右边的位置是最后一 ...

  2. 一行代码引入 ViewPager 无限循环 + 页码显示

    (出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...

  3. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  4. android中无限循环滑动的gallery实例

    android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...

  5. unity 背景无限循环滚动效果

    背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...

  6. 封装一个ViewPager真正的实现图片无限循环滚动带导航点

    效果图: 大家在写项目的过程中常常会碰到须要实现Viewpager里面载入几张图片来循环自己主动轮播的效果,假设不封装一下的话代码分散在activity里面会显得非常乱.并且也不利于我们下次复用,所以 ...

  7. android 自定义无限循环播放的viewPager。轮播ViewPager。实现循环播放 广告,主题内容,活动,新闻内容时。

    前言 实际项目需要一个 播放广告的控件,可能有多个广告图片.每个一段时间更换该图片.简单来说,就是一个 “循环播放图片”的控件. 间隔时间更换图片 一般来说,图片切换时需要有动画效果 需要支持手势,用 ...

  8. ViewPager 无限循环

    Overview 我们在使用ViewPager来制作图片轮播的时候,常常为ViewPager不能一直无限循环的问题所苦恼.对于这个问题,目前从网上找到了两个思路来解决: 将 ViewPager 的Co ...

  9. iOS无限循环滚动scrollview

    经常有园友会问"博主,有没有图片无限滚动的Demo呀?", 正儿八经的图片滚动的Demo我这儿还真没有,今天呢就封装一个可以在项目中直接使用的图片轮播.没看过其他iOS图片无限轮播 ...

随机推荐

  1. mobx @computed的解读

    写在前面:我一开始看不懂官网的@computed的作用,因为即使我把@computed去掉,依然能正确的report,然后我百度谷歌都找不到答案,下面都是我自己的理解,如果是有问题的,不对的,请务必留 ...

  2. 移动站应该尝试百度MIP的五个原因

    MIP是什么?MIP是百度在2016年提出的移动网页加速器项目. MIP能做什么?MIP能帮助站长和网站开发者快速搭建移动端页面. MIP怎么加速?MIP从前端渲染和页面网络传输两方面进行优化,杜绝页 ...

  3. 【趣事】用 JavaScript 对抗 DDOS 攻击 (下)

    上一篇:http://www.cnblogs.com/index-html/p/js-network-firewall.html 对抗 v2 之前的那些奇技淫巧,纯属娱乐而已,并不能撑多久. 但简单. ...

  4. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  5. POCO Controller 你这么厉害,ASP.NET vNext 知道吗?

    写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...

  6. 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新3)附高效动态压缩Bitmap

    一.写在前面 爱吖校推如同它的名字一样,是一款校园类信息推送交流平台,这么多的家校互动类软件,你选择了我,这是我的幸运.从第一次在博客园上写博客到现在,我一次一次地提高博文的质量和代码的可读性,都是为 ...

  7. 缓存工具类CacheHelper

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  8. 关于BAPI_PATIENT_CREATE(病患主数据创建)

    第一次使用BAPI,遇到几个问题.现总结如下. CALL FUNCTION 'BAPI_PATIENT_CREATE' EXPORTING client = * INSTITUTION = '*' * ...

  9. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...

  10. A/B Testing的简要知识

    A/B testing主要用来检测网站或者APP的两个版本中哪一个更好,它的中心思想是把流量一分为二,一份用作experiment group,访问新的版本,另一份用作control group,访问 ...