viewpager实现无限轮播的两种方式总结
2015-06-25 16:12
281 查看
viewpager实现无限轮播有两种方式,一是Integer.MAX_VALUE另一种是/article/5017079.html在原有数据基础上添加两个特别item,position=0的item指向原有数据的最后一个,最后一个itemview指向原有数据的第0个。第二种方式优于第一种,对比整理如下:
第一种方式:
1. 第一种方式容易影响性能,特别是加上自动轮播,在页面跳转的过程中极易出现anr甚至卡死的情况。
2. 第一种方式只能够由左向右单项滑动或者轮播,不能够双向轮播。
第二种方式:
1. 可以双向轮播。
2. 相对第一种方式仅仅添加两个特殊item,对性能影响不大。
3. 第二种原理是在适配器中设置position=0和position=length-1的数据,然后在监听滑动状态,滑动结束的时候后台无动画(一定注意是无动画,若有动画,还是有回退的效果,添加这两个item没有意义)的设置他们相对应的指向(类似于链表),巧妙的利用了viewpager的滑动和无动画setCurrentItem。
4. 上面仁兄是在onPageSelected中设置了重新指向,不太建议这样,由于onPageSelected不一定是在滑动结束以后在执行,还是建议在onPageScrollStateChanged监听状态等于0的时候重定义他的指向。
第一种方式:
1. 第一种方式容易影响性能,特别是加上自动轮播,在页面跳转的过程中极易出现anr甚至卡死的情况。
2. 第一种方式只能够由左向右单项滑动或者轮播,不能够双向轮播。
第二种方式:
1. 可以双向轮播。
2. 相对第一种方式仅仅添加两个特殊item,对性能影响不大。
3. 第二种原理是在适配器中设置position=0和position=length-1的数据,然后在监听滑动状态,滑动结束的时候后台无动画(一定注意是无动画,若有动画,还是有回退的效果,添加这两个item没有意义)的设置他们相对应的指向(类似于链表),巧妙的利用了viewpager的滑动和无动画setCurrentItem。
4. 上面仁兄是在onPageSelected中设置了重新指向,不太建议这样,由于onPageSelected不一定是在滑动结束以后在执行,还是建议在onPageScrollStateChanged监听状态等于0的时候重定义他的指向。
相关文章推荐
- EM算法
- 数据结构《21》----2014 WAP 第一个问题----Immutable queue
- hdu 4972 A simple dynamic programming problem(高效)
- Objective-C该Protocol
- Coreseek:部门查询和增量索引代替实时索引
- mac boot2docker certs not valid with 1.7
- 【LeetCode】LRU Cache 解决报告
- 使用Socket沟通
- [编译原理]文法的定义与文法产生的分类
- Internet Analytics互联网分析
- python函数参数带星号*
- iOS开发,事半功倍基本心得
- 设计模式—工厂模式
- MongoDB源码概述——内存管理和存储引擎
- iOS学习4_UITableView的使用
- iOS学习4_UITableView的使用
- (一)处理不存在的变量
- 使用监控宝监控CentOS主机
- Linux下php-cgi占内存100%电脑变的很卡的解决方法
- 关于aps.net进程内定时发送邮件的问题