ViewPager无限循环
来源:互联网 发布:哥伦比亚羽绒服 知乎 编辑:程序博客网 时间:2024/04/28 20:19
网上搜了很多文章,思路是假设要显示三张图片A B C,在list中按索引从小到大存放为C A B C A,初始化时viewPager.setCurrentItem(1),显示实际需要播放图片的第一张A,以后滑动时,如果从1滑动到0,就setCurrentItem(3),因为第0张存放的是C,滑动到0就跳转到3也是C,所以看不出变化OnPageChangeListener中。
起初我是按照网上搜到的其他文章中,写到OnPageChangeListener的onPageScrolled()中,内容如下
pageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { int count = imageViewList.size(); if (position == 0) { viewPager.setCurrentItem(count - 2, false); } else if (position == count - 1) { viewPager.setCurrentItem(1, false); } } @Override public void onPageSelected(final int position) { } @Override public void onPageScrollStateChanged(int state) { }};
这样手指向左滑动时,从3->4,运行onPageScrolled中的逻辑,跳转到1确实没问题,但是从1->0时按onPageScrolled中的逻辑本应该跳转到3就结束,不知道为什么又触发了一次onPageChangeListener,跳转到3之后又向前跳转了一页,跳转到2了。后来修改了逻辑,把这部分跳转的逻辑写到onPageSelected中,如下所示
pageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(final int position) { final int count = imageViewList.size(); if (position == 0 || position == count - 1) { new Handler().postDelayed(new Runnable() { @Override public void run() { viewPager.setCurrentItem(Math.abs(count - position - 2), false); } }, 200); } } @Override public void onPageScrollStateChanged(int state) { }};当position=0或4时,如果立刻setCurrentItem跳转,会变成明显的一闪而过,而不是滑动效果,这里通过handler.postDelayed延迟跳转,肉眼已经看不出有不一样的滑动效果了。
http://blog.csdn.net/lmj623565791/article/details/40411921这里还有ViewPager的页面切换效果,试了一下挺有意思的,基本就是自己写一个Transform类实现PageTransformer接口,然后viewPager.setPageTransformer(new Transform())就好了
0 0
- viewpager无限循环
- 无限循环的ViewPager
- viewpager无限循环
- ViewPager无限循环
- ViewPager无限循环
- Android无限循环ViewPager
- ViewPager无限循环
- ViewPager实现无限循环
- ViewPager无限循环
- ViewPager实现无限循环
- [Android]无限循环ViewPager
- 无限循环的Viewpager
- viewpager无限循环
- 实现无限循环ViewPager
- ViewPager 无限循环
- ViewPager 无限循环。
- viewpager的无限循环方法
- 打造无限自动循环viewpager
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- JAVA-数字左移右移
- spring4.0 websocket
- ngx_worker_process_cycle子进程执行
- java---表、栈和队列
- ViewPager无限循环
- Linux管理员必须知道的sudo命令
- 【转】Java基础:Java成员变量初始化
- 异常问题
- Windows下通过Wampserver2.5+Composer搭建Laravel5.1环境并导入PhpStorm
- Odoo8查询产品时提示"maximum recursion depth exceeded while calling a Python object"
- android开发多国语言对照表
- uiCoder界面代码生成工具 part1 概述+图片制作
- avoid duplicate submission 结合spring-mvc的防重复提交