最近在学习安卓的事件分发机制,实际上到目前为止还没有写过自定义View,在自定义View中如果需要能够响应手指的点击或者滑动事件就需要处理事件的分发,否则很容易出现冲突。写这篇博客是为了让自己能够更好的消化吸收,同时以后忘了能够很快的捡回来。此篇主要参考《图解Android事件分发机制》。
1. Android事件分类
我们知道Android中的触摸事件可以分为:
ACTION_DOWN: 也就是手指按压屏幕
ACTION_MOVE: 手指按压屏幕后未松开,在屏幕上移动
ACTION_UP: 手机从屏幕上离开
2. Android事件分发流程图
图1
首先引入参考文章中的Android事件分发图即图1,该图主要讲的是ACTION_DOWN的分发流程。从图中可以看出事件分发设计的方法主要有三个:
dispatchTouchEvent: 从名字可以看出是分发触摸事件
onInterceptTouchEvent: 拦截触摸事件
onTouchEvent: 处理触摸事件
图中的true和false表示方法的返回值,super表示返回父类的super方法。