android中的Touch事件都是从ACTION_DOWN开始的:

单手指操作:ACTION_DOWN---ACTION_MOVE----ACTION_UP

多手指操作:ACTION_DOWN---ACTION_POINTER_DOWN---ACTION_MOVE--ACTION_POINTER_UP---ACTION_UP.

解释:

dispatchTouchEvent是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行
super.dispatchTouchEvent(ev),事件向下分发。
onInterceptTouchEvent是ViewGroup提供的方法,默认返回false,返回true表示拦截。
onTouchEvent是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。

  


View里,有两个回调函数 :

[java] view plaincopy
  1. public boolean dispatchTouchEvent(MotionEvent ev);    
  2. public boolean onTouchEvent(MotionEvent ev);   

ViewGroup里,有三个回调函数 :

[java] view plaincopy
  1. public boolean dispatchTouchEvent(MotionEvent ev);    
  2. public boolean onInterceptTouchEvent(MotionEvent ev);    
  3. public boolean onTouchEvent(MotionEvent ev);  


在Activity里,有两个回调函数 :

[java] view plaincopy
  1. public boolean dispatchTouchEvent(MotionEvent ev);    
  2. public boolean onTouchEvent(MotionEvent ev);    

Android中默认情况下事件传递是由最终的view的接收到,传递过程是从父布局到子布局,也就是从Activity到ViewGroup到View的过程,默认情况,ViewGroup起到的是透传作用。Android中事件传递过程(按箭头方向)如下图,图片来自[qiushuiqifei],谢谢[qiushuiqifei]整理。




  

    触摸事件是一连串ACTION_DOWN,ACTION_MOVE..MOVE…MOVE、最后ACTION_UP,触摸事件还有ACTION_CANCEL事件。事件都是从ACTION_DOWN开始的,Activity的dispatchTouchEvent()首先接收到ACTION_DOWN,执行super.dispatchTouchEvent(ev),事件向下分发。

    dispatchTouchEvent()返回true,后续事件(ACTION_MOVE、ACTION_UP)会再传递,如果返回false,dispatchTouchEvent()就接收不到ACTION_UP、ACTION_MOVE。



下面的几张图参考自[eoe]





                                             图1.ACTION_DOWN都没被消费






                                

                                                                  图2-1.ACTION_DOWN被View消费了


                                     


                                                   图2-2.后续ACTION_MOVE和UP在不被拦截的情况下都会去找VIEW


                              

                                                                    图3.后续的被拦截了


                              

                                                                  

android中的Touch事件都是从ACTION_DOWN开始的:

单手指操作:ACTION_DOWN---ACTION_MOVE----ACTION_UP

多手指操作:ACTION_DOWN---ACTION_POINTER_DOWN---ACTION_MOVE--ACTION_POINTER_UP---ACTION_UP.

更多相关文章

  1. android之实现各个组件点击事件监听
  2. Android应用程序键盘(Keyboard)消息处理机制分析(21)
  3. Android监听来电和去电
  4. Android交互体验必知:功能按键事件
  5. android 触摸(Touch)事件、点击(Click)事件的区别(详细解析)
  6. 从零开始--系统深入学习android(理论-开发前准备-10.一个好的应用
  7. Android事件分发机制 详解攻略,您值得拥有
  8. Android调用相机程序和图片处理程序获得原图并且进行图片处理
  9. android WebView

随机推荐

  1. 【腾讯Bugly干货分享】Android动态布局入
  2. 第一个Android应用程序
  3. android系统架构图
  4. Animation
  5. Android(安卓)添加一个产品
  6. [004] 详解Windows平台搭建Androiod开发
  7. 我的android 第22天 - url介绍
  8. android 关于Location of the Android(安
  9. Android(安卓)自定义漂亮的Seekbar样式
  10. Android中的Menu功能菜单-OptionsMenu[选