笔记60--ViewPager循环滑动

来源:互联网 发布:后缀数组代码 编辑:程序博客网 时间:2024/05/29 09:15

实现方式1:给ViewPager的数量设为最大值,然后每次初始化时都求余。参考:http://blog.csdn.net/xiaanming/article/details/8966621

优点:效果好,最后一个和第一个之间的相互跳转与其他界面之间的跳转效果相同。

缺点:有bug。只有一个图片时不显示,两个图片时切换有空白。

实现方式2:通过判断onPageChangeListener()中方法onPageScrollStateChanged的状态来实现。

优点:无bug。

缺点:最后一个和第一个之间的相互跳转会有多个跳转过程(无法设置成只有一个跳转过程)。

实现方式3:尼玛,淘宝,你敢告诉我怎么做到的吗?京东是不会闹还是没闹出来?

我就说说实现方式2吧。

一、原理

除第一次外,ViewPager总是持有三个view实例。每次调用PagerAdapter的instantiateItem方法获取View实例时,传入的都是当前页面的位置的前一页。为了缓存一页,然后销毁掉后一项的后一页。ViewPager只保持当前页,前一页和后一页,超出就销毁。

二、代码

@Overridepublic void onPageScrollStateChanged(int arg0) {switch (arg0) {//手势滑动case 1:isScrolled=false;break;//界面切换case 2:isScrolled=true;break;//滑动结束case 0:// 当前为最后一张,此时从右向左滑,则切换到第一张if (viewPager.getCurrentItem() == viewPager.getAdapter().getCount() - 1 && !isScrolled){viewPager.setCurrentItem(0, false);}// 当前为第一张,此时从左向右滑,则切换到最后一张else if (viewPager.getCurrentItem() == 0 && !isScrolled){viewPager.setCurrentItem(viewPager.getAdapter().getCount() - 1, false);}<span style="white-space:pre"></span>break;default:break;}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {//设置选中的tip的背景for(int i=0; i<tips.length; i++){if(i==arg0 % mImageViews.length){tips[i].setBackgroundResource(R.drawable.a2);}else{tips[i].setBackgroundResource(R.drawable.a3);}}}

三、加入定时循环功能
// 开启线程无限自动移动Thread mThread = new Thread(new Runnable() {       @Override       public void run() {       while(!isStop) {        // 每隔3秒钟, 发送一条消息到主线程, 更新viewpager的界面        SystemClock.sleep(3000);                runOnUiThread(new Runnable() {        @Override        public void run() {        // 此方法是在主线程中执行        int count=new MyPagerAdapter().getCount();        viewPager.setCurrentItem((viewPager.getCurrentItem() + 1)%count, false);        }        });       }       }});mThread.start();
四、几个函数

setCurrentItem(int):设置当前显示第几页(默认带跳转过程的动画)。

setCurrentItem(int, boolean)设置当前显示第几页,指定是否带跳转过程的动画。

getCurrentItem():获取当前显示第几页。

五、源码
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 东方航空联程机票航班延误怎么办 别别人伸请更换手机绑定qq怎么办 绑定手机号的扣扣忘记密码怎么办 微信公众号个人主体变更公司怎么办 微信号注册成订阅号了怎么办 微信开通了企鹅影院会员怎么办 注销公众号对公账号填写错误怎么办 国外邮的东西在北京扣了手续怎么办 微信购物商城买的东西不发货怎么办 魅族手机电话图标没有了怎么办 新商盟网页新商盟网页打不开怎么办 京东商城购物车装满了怎么办 商家想入住美团没有营业执照怎么办 旅行团定好的人数临时加人该怎么办 淘宝上发货后12天未收到款怎么办 京东购买的东西烂了怎么办 苹果4s手机激活密码忘了怎么办 小米4c返回键失灵了怎么办 小米4c下面三个键失灵怎么办 谷歌浏览器打不开指定的网址怎么办 电脑上我的电脑图标没了怎么办 手机上的短信图标没了怎么办 qq密保手机被别人换了怎么办 苹果六手机很卡网络不给力怎么办 堡垒之夜卡在载入界面怎么办 登录新福建一直说网络不给力怎么办 开发游戏平台给了钱不给东西怎么办 代号英雄与服务器断开连接了怎么办 千牛聊天页面买家信息不显示怎么办 秒拍存草稿箱的视频没了怎么办? 登录山东掌厅出现服务器错误怎么办 微信号被多人投诉被限制登录怎么办 联想平板电脑开机密码忘记了怎么办 申请的qq没登录忘了账号怎么办 炫舞时代由于网络原因登不上怎么办 qq申请太多进不了热聊怎么办 手机号申请的微信号被盗了怎么办 买菜别人少找了钱不还怎么办 在掌上英雄联盟买皮肤买错区怎么办 win8我的电脑图标没了怎么办 英雄联盟老是卡在安全扫描怎么办