ViewPager滑动事件调用机制简单概述

By | 05月12日
Advertisement

ViewPager 从 position == 0 开始左划,向右切换时: onPageScrollStateChanged( 1 ) --------> onPageScrolled(初始position)----------> onPageScrolled(初始position)-----------> onPageScrollStateChanged( 2 ) --------------> onPageSelected(最终position) ------------> onPageScrolled(最终position)--------------> onPageScrollStateChanged( 0 ) ;

特殊的:当滑动至最后一页时,再左划,因为此时已无新页,事件的执行:onPageScrollStateChanged( 1 ) --------> onPageScrolled(初始position)----------> onPageScrolled(初始position)-----------> onPageScrollStateChanged( 0 ) ;

ViewPager 从 position == pager.size() 右划,向左切换时: onPageScrollStateChanged( 1 ) --------> onPageScrolled(初始position -1)----------> onPageScrolled(初始position -1)-----------> onPageScrollStateChanged( 2 ) --------------> onPageSelected(初始position -1) ------------> onPageScrolled(初始position -1)--------------> onPageScrollStateChanged( 0 ) ;

特殊的:ViewPager滑动事件调用机制简单概述
当滑动至第一页时,再右划,因为此时已无新页,事件的执行:onPageScrollStateChanged( 1 ) --------> onPageScrolled(初始position -1)----------> onPageScrolled(初始position - 1)-----------> onPageScrollStateChanged( 0 ) ;

Similar Posts:

  • Android ViewPager滑动事件讲解

    今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled ,onPageSelected) onPageScrollStateChanged(int arg0) ,此方法是在状态改变的时候调用,其中arg0这个参数 有三种状

  • 安卓智慧上海学习笔记系列——禁用ViewPager滑动事件

    (1)自定义一个类继承ViewPager 此时会报错(注意此时最好不要用如下的自动提示去修复错误,因为它只能默认去实现一个方法后就不报错了,其实需要两个方法的,要不然运行的时候程序还是会崩掉) (2)右键source->generate constructors from superclass去实现里面的两个方法 (3)重写onTouchEvent()让它返回true,表示什么也不做,如果返回的是父类就还会去实现父类的触摸事件的. (4)在布局文件中用这个自定义的ViewPager路径作标签.

  • ViewPager嵌套ViewPager,的事件分发机制!

    //外层ViewPager的xml,不用做处理.在里层的自定义viewpager,onTouchEvent中判断是否拦截,如果点到自定义viewpager上面,就不要拦截,如果没有点到自定义viewpager就请求拦截掉改事件. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and

  • Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突

    最近要实现一个长按录音,松开手指结束录音的功能,在项目中,弄来弄去绕晕了,写个demo来梳理下.顺便研究下android事件调用机制. 先上效果界面: 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="mat

  • 通俗理解Android中View的事件分发机制及滑动冲突处理

    说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与ListView的嵌套,要解决滑动冲突,不得不提及到View的事件分发机制. 一.Touch事件传递规则分析 首先,我们要知道Touch事件是包装在MotionEvent对象中的,在手指与屏幕接触过程中产生一系列事件,典型的事件有以下三种: ACTION_DOWN:手指刚接触屏幕的瞬间 ACTION_UP:手指刚离开屏幕的瞬间 ACTION_MOVE:手指在屏幕上滑动 那么,Android中Touch事件是一个怎样的传递

  • Android自定义View探索(三)—事件分发机制与滑动冲突处理

    View的事件分发机制,其实就是对MotionEvent事件的分发机制,即当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,这个传递的过程就是分发过程. 一.View的事件分发机制 整体流程: dispatchTouchEvent()->onTouch()->onTouchEvent()->onClick() dispatchTouchEvent():View事件分发的入口,返回值表示MotionEvent是否被消费. onTouch():View需要处

  • [置顶] 自定义View事件拦截机制(自定义viewGroup和外部法解决滑动冲突)

    3个方法: dispathcTouchEvent()   返回值决定是否消耗事件 返回值由下面两个方法共同决定. (这个方法通常不需要重写,只需要把下面两个方法处理正确,则会正确的分发) onInterceptTouchEvent()  返回值决定是否拦截事件 ,有时不会调用.(所以内部拦截法要处理事件前需要写在dispathcTouchEvent方法中) onTouchEvent(); 三个方法的关系: public Boolean dispatchTouchEvent (MotionEven

  • Android ViewPager和SlidingPaneLayout的滑动事件冲突处理方法(转载)

    最近在做一个项目需要用到ViewPager加载广告图,布局中需要侧滑,用了android V4包里的SlidingPaneLayout控件(该控件在旧的v4包里面没有,需要更新v4包),项目中使用的时候,发现在滑动中ViewPager和SlidingPaneLayout滑动冲突了,当手指从左向右滑动时,ViewPager的滑动事件被SlidingPaneLayout屏蔽了,只能执行SlidingPaneLayout的事件,而从右往左滑时,则正常. 国内找了一些资料,发现不是特别好,最后还是靠VP

  • Android View体系(五)从源码解析View的事件分发机制

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源码解析Scroller 前言 三年前写过事件分发机制的文章但是写的不是很好,所以重新再写一篇,关于事件分发机制的文章已经有很多,但是希望我这篇是最简洁.最易懂的一篇. 1.处理点击事件的方法 View的层级 我们知道View的结构是树形的结构,View可以放在ViewGroup中,这个ViewGro

  • android事件传递机制的浅谈

    想必大家有时会遇到需要自定义控件吧,这个时候就会遇到事件的传递和处理了,非常繁琐啊!百度上面一大票关于事件的传递机制,但是都千篇一律,都是dispatchTouchEvent 返回true,则事件被拦截,false则分发给子控件之类的,经过几天的研究发现这个事件传递并没有说的这么简单也没有想象中的难. 一般的点击事件.滑动事件都是用ACTION_DOWN.ACTION_MOVE.ACTION_UP组成的,android应用里面默认情况下,触摸事件是从activity开始传递,假设里面的view都

Tags: