你的手机屏幕,其实是个高度敏感的触摸感应器,每时每刻都在捕捉着你手指的每一个细微动作。
触摸事件基础:你的手指在屏幕上做了什么?
当你的手指接触屏幕,Android系统会创建一个MotionEvent对象,这个对象包含了关于这次触摸的所有信息——何时、何地、以及如何触摸的。
最基本的触摸事件有三种:
- ACTION_DOWN:手指初次接触到屏幕
- ACTION_MOVE:手指在屏幕上滑动
- ACTION_UP:手指离开屏幕
一个完整的触摸动作由一个ACTION_DOWN事件、若干个ACTION_MOVE事件和一个ACTION_UP事件组成。如果你只是简单地点击屏幕(按下然后抬起),是不会触发ACTION_MOVE事件的。
除了这三种基本事件,还有两个比较特殊的事件:
- ACTION_CANCEL:事件被上层拦截时触发
- ACTION_OUTSIDE:手指不在控件区域时触发
触摸事件的处理:谁来决定响应你的触摸?
Android中的触摸事件处理主要涉及三个关键方法,它们共同决定了一个触摸事件如何被处理:
1. dispatchTouchEvent(MotionEvent ev)
这个方法用来分发事件。如果当前事件能传递到该View,该方法一定会被调用。当Touch事件发生时,Activity的dispatchTouchEvent方法会以隧道方式将事件传递给最外层View的dispatchTouchEvent方法。
2. onInterceptTouchEvent(MotionEvent ev)
此方法用来拦截事件,只有ViewGroup才有这个方法。如果返回值为true,表示拦截,否则不拦截。
3. onTouchEvent(MotionEvent event)
此方法用于处理当前事件。如果返回值为true表示消耗该事件,否则无法再接收同一个序列的事件。
事件传递的两种方式:
Android系统中的事件传递采用了两种机制:<

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



