码迷,mamicode.com
首页 > 其他好文 > 详细

ViewPager滑动监听的参数解释

时间:2015-04-23 23:29:31      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

viewpager.setOnPageChangeListener (new OnPageChangeListener() {
                  
                   @Override
                   public void onPageSelected(int select) {
                         // TODO Auto-generated method stub
                         Log. d( "dml", "onPageSelected:::::select ============ " + select) ;
                   }
                  
                   @Override
                   public void onPageScrolled(int positon, float arg1, int arg2 ) {
                         // TODO Auto-generated method stub
                         Log. d( "dml", "onPageScrolled:::::position = " + positon);
                   }
                  
                   @Override
                   public void onPageScrollStateChanged(int state) {
                         // TODO Auto-generated method stub
                         Log. d( "dml", "onPageScrollStateChanged:::::state = " + state) ;
                   }
             });



1. position永远是当前界面从左往右的第一个界面的index,不管你是否在滑动   所以一开始没有滑动onPageScrolled也会调用一次,并且position=0. 滑动其实分为两个过程:首先手指带动viewpager滑动,然后手指离开屏幕viewpager会自己处理(要么回弹 要么滑动到下一个界面),这整个过程onPageScrolled都会回调,当然position会一直变化

2. onPageScrollStateChanged会在一次滑动中回调三次,顺序是 1  >  2 > 0 其中2就是手指离开屏幕了,滑动事件成功了,onPageSelected肯定是在这个 2 后一步执行,而且只有当前界面有变化才回调,赋值位当前界面index,所以回弹了onPageSelected它就不会回调的

3. 要判断用户往哪边滑,就应该用两个条件一起判断:当前界面 int index,滑动的position. 比如: 当前在第二个界面,那么 int index = 1,此时position = 1,用户开始滑向第一个界面position立刻变为0(因为第一个界面已经漏出来了)   如果是往第三个界面滑动,position会保持为1(因为第二个界面还没完全隐藏呢),直到完全滑到第三个界面position=2       好,那现在继续左滑因为已经到最右了划不动 所以position此时一直保持2,同样的在第一个界面右滑 position会一直保持为0

ViewPager滑动监听的参数解释

标签:

原文地址:http://blog.csdn.net/dengliulin/article/details/45231317

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!