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 事件分发机制源码详解(View篇)

Android View事件分发机制源码解析
  • a553181867
  • a553181867
  • 2016年05月02日 14:31
  • 5272

Android6.0 ViewGroup/View 事件分发机制详解

以Android6.0的源码为基础,分析一下Android系统的ViewGroup/View Touch事件的分发机制...
  • meiliwanghan
  • meiliwanghan
  • 2016年06月03日 16:40
  • 4524

安卓面试必问一View的事件分发

真心面试要准备很多东西,其实我觉得程序员何必难为程序员,有可能面试官,自己都不知道..................但是为了证明你学过安卓,你得答出来不是,在加上面试也同时给你复习基础,如果你看了这...
  • Jack_King007
  • Jack_King007
  • 2014年12月13日 13:52
  • 4789

Android事件分发机制——View(一)

认真对待每一件自己想要坚持的事情。
  • dmk877
  • dmk877
  • 2015年09月29日 09:46
  • 2518

Android中的事件分发机制(上)——ViewGroup的事件分发

Android中的事件分发机制也就是View与ViewGroup的对事件的分发与处理。在ViewGroup的内部包含了许多View,而ViewGroup继承自View,所以ViewGroup本身也是一...
  • ljd2038
  • ljd2038
  • 2016年05月13日 13:31
  • 10784

【自定义View系列】View的事件分发机制

本部分介绍View的一个核心知识点:事件分发机制。事件分发机制不仅仅是核心知识点更是难点,不少初学者甚至中级开发者面对这个问题都会觉得困惑。另外,View的另一大难题滑动冲突,它的解决方法的理论基础就...
  • a910626
  • a910626
  • 2016年06月01日 09:41
  • 1146

Android View 事件分发机制源码详解(ViewGroup篇)

前言我们在学习View的时候,不可避免会遇到事件的分发,而往往遇到的很多滑动冲突的问题都是由于处理事件分发时不恰当所造成的。因此,深入了解View事件分发机制的原理,对于我们来说是很有必要的。由于Vi...
  • a553181867
  • a553181867
  • 2016年04月30日 21:05
  • 8676

Android技术之View的事件分发机制和滑动冲突解决方案

本文转载:http://mp.weixin.qq.com/s/fhr3u2iA-R8J4WdRtMqWGAReact-Native学习指南,汇集React-Native各类学习资源,给大家提供便利,并...
  • wanghonghuai
  • wanghonghuai
  • 2017年02月17日 10:57
  • 1006

Android View 事件分发机制 源码解析 (上)

一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~首先我们先写个简单的例子来测试View的事件转发的流程~1、案例为了更好的研究View的事件转发,我们自定以一个MyBut...
  • lmj623565791
  • lmj623565791
  • 2014年09月02日 09:32
  • 62695

Android View 事件分发机制 源码解析(ViewGroup篇)

本期三篇文章目录(可点击跳转)一. Android TouchEvent事件传递机制初识 二. android点击事件传递源码讲解(ViewGroup) 三.android点击事件传递源码讲解(...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2016年12月06日 20:11
  • 1127
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android View 事件分发处理流程
举报原因:
原因补充:

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