Android View 事件分发处理流程

原创 2015年11月19日 21:23:54

Android事件处理流程几个比较重要的函数

1.public boolean dispatchTouchEvent(MotionEvent ev)

用户touch屏幕的时候,如果事件传递到了当前View了,进入事件分发流程了之后,这个方法是一定会调用。返回结果与当前的View的onInterceptTouchEvent()、onTouchEvent()和下级的dispatchTouchEvent(ev)有关。类似触摸事件是一连串ACTION_DOWN,ACTION_MOVE..MOVE…MOVE、最后ACTION_UP,触摸事件还有ACTION_CANCEL事件。事件都是从ACTION_DOWN开始的,
dispatchTouchEvent()返回true,后续事件(ACTION_MOVE、ACTION_UP)会再传递,如果返回false,dispatchTouchEvent()就接收不到ACTION_UP、ACTION_MOVE。

2.public boolean onInterceptTouchEvent(MotionEvent ev)

次函数返回true表示就在本View拦截该事件不往下级View分发了,返回false表示就分发到下级view

3.onTouchEvent(MotionEvent ev)

用来处理点击事件,如果本View设置了OnClickListener则会在次函数中调用onClick()方法。如果返回true则消耗掉当前时间,也就是消耗掉你未松开手指响应ACTION_UP之前的所有事件,当然也包括最后一个ACTION_UP事件。

利用模拟代码表示View时间分发流程:

	public boolean dispatchTouchEvent(MotionEvent ev)
	{
		boolean consume = false;
		if(onInterceptTouchEvent(ev))
		{
			consume = onTouchEvent(ev);
		}
		else 
		{
			consume = child.dispatchTouchEvent(ev);
		}
		return consume;
	}

流程图:


PS:这个一个MotionEvent对象的传递流程,不是某个事件的传递流程,事件是触摸事件、双击事件等类似事件。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android View系统源码分析(一)——概述&触摸事件总体处理流程

Android View系统源码分析(一)——概述&触摸事件总体处理流程

Android按键事件处理流程 -- 从事件被派发到View层次结构的根节点DecorView开始分析

刚接触Android开发的时候,对touch、key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View 中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把...

Android中事件的分发与处理流程

基本原则:分发由上往下,消费由下往上 由上往下分别为 Activity -> PhoneWindow -> DecorView (contentview的父容器) -> ContentView(一般为...
  • GY_Rain
  • GY_Rain
  • 2017年11月29日 16:50
  • 31

Android 事件捕捉和处理流程

1.    InputManagerService(IMS) 1.1     IMS初始化           在系统启动的时候,SystemServer会启动窗口管理服务WindowManage...

Android按键事件处理流程 -- KeyEvent

刚接触Android开发的时候,对touch、key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View 中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的...

Android 事件捕捉和处理流程分析

在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的;在上一篇文章《Andr...

Android触屏事件处理流程浅析

在android触屏事件中,我们经常会碰到onclick(),onTouch(),onTouchEven()等方法,那谁会先执行,执行顺序又是怎么样呢?View的触屏事件处理为弄清除上面那些,首先从源...

android的frameworks层键盘事件处理流程分析

android的frameworks层键盘事件处理流程分析 事件处理流程 1)InputManager负责读取事件并把事件送到frameworks的java层 2)WindowManager...
  • fancsxx
  • fancsxx
  • 2011年11月03日 20:42
  • 3395

Android按键事件处理流程 -- KeyEvent

是各种View中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把握。每次写这部分代码的时候都有些心虚,因为我不是很清楚什么时候、以什么样的顺序被调用,大都是打下log看看,没问题...

Android的frameworks层键盘事件处理流程分析

原文地址:http://www.linuxidc.com/Linux/2011-11/47125.htm 事件处理流程 1)InputManager负责读取事件并把事件送到frameworks的j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android View 事件分发处理流程
举报原因:
原因补充:

(最多只允许输入30个字)