ViewPager滑动监听的参数解释

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

时间: 2024-10-11 22:45:58

ViewPager滑动监听的参数解释的相关文章

自定义ScrollView,实现ScrollView滑动监听并记录滑动位置。

Android自带的ScrollView对于滑动监听接口没有开放,然而在许多时候记录ScrollView的滑动位置,实现这个功能比较简单,自己实现一个ObserveScrollView类来继承ScrollView,然后重写里面的onScrollChanged(int l, int t, int oldl, int oldt)方法,本方法就是ScrollView的滑动监听,接着声明一个接口,在重写的方法里利用接口回调,将滑动的数据传出去. onScrollChanged(int l, int t,

ScrollView的滑动监听(以HorizontalScrollView为例)

ScrollView不能像其他组件一样使用onScrollChanged()方法是因为它用protected封装了 protected void onScrollChanged(int x, int y, int oldx, int oldy); 想要实现监听需要简单自定义组件. 1:自定义组件 public class ObservableScrollView extends HorizontalScrollView { private ScrollViewListener scrollVie

使用swipecard实现卡片视图左右滑动监听以及点击监听

前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一个人随便写着玩儿搞出来了,我看了他的代码介绍已经很清晰了,但是对于刚入门学安卓的同学们来说理解还是得需要一定的时间,于是在这里我就给大家把他的代码给精简一下步骤,希望能给大家一些帮助. (图片无法上传所以导致图片不可见,大家可以点击我的有道链接查看 http://note.youdao.com/noteshare?id=ef7292c53d507cd0e1f3

Android 小问题整理1 ViewPagerIndicator和ViewPager的滑动监听

2015-10-30 今天使用ViewPagerIndicator时遇到个小问题,使用ViewPagerIndicator和ViewPager关联之后,再对ViewPager的滑动事件进行监听viewpager.setOnPageChangeListener(),然后监听失效了. 1 mViewPager.setAdapter(new MyAdapter()); 2 mIndicator.setViewPager(mViewPager);//关联ViewpagerIndicator和ViewPa

vue中监听路由参数的变化

在vue项目中,假使我们在同一个路由下,只是改变路由后面的参数值,期望达到数据的更新. mounted: () =>{ this.id = this.$route.query.id; this.getdetail() } getDetail()方法中会用到this.id这个参数,在同一页面切换id的值,并不会触发vue的声明周期函数. 可以添加路由监听: watch: { $route: { handler() { this.id = this.$route.query.id; this.get

ListView滑动监听和设置点击事件

viewholder_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_pa

自己写的SeekBarPreference,可以实现seekbar滑动监听和设置默认进度和最大进度

我通过参考android源码,把这个烂尾的类写完了.具体实现了seekbar的数据自动存储,seekbar拖动时触发监听器,可以设置默认的进度和最大进度.先说使用的方式: 1.在xml文件中使用preference <com.kale.floatbar.preference.MySeekBarPreference android:key="alpha" android:layout="@layout/prefs_list_item" android:title

html学习 - jquery事件监听详解

html学习 - jquery事件监听详解 html学习 - jquery事件监听详解 监听方法 监听方法参数解释 click参数 事件自动执行问题解决 bind方法 live方法 监听方法 在jquery里,监听的方法比较多,用的最多的就是简单的.click() .onchange() .pressdown() 所以这样很简单啊,直接使用就好了,只要符合参数规范就可以了.除了这个还有bind() live() 方法. 而addEventListener()同bind()方法是没有很大功能上的区

Android开发--------------WebView(二)之WebView的滑动底部顶部监听,加载进度条等设置

整理一下WebView的一些常用设置,滑动监听,让跳转的页面也在WebView里显示,加载进度,获得标题等等 一,滑动监听 滑动监听的话是需要在WebView基础之上在加强一下,因为在WebView没有直接监听滑动的方法,看WebView的源码则会发现有一个 protected void onScrollChanged(int l, int t, int oldl, int oldt) : 这个方法.是受到保护的所以我们无法直接使用,所以我们写一个加强的WebView,利用接口回调. Scrol