android事件传递(一)
来源:互联网 发布:windows发展历程 编辑:程序博客网 时间:2024/06/14 03:41
Android的view主要是两个方法
public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)
Android的ViewGroup的三个系统方法
<pre name="code" class="java">public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)public boolean onInterceptTouchEvent(MotionEvent ev)
方法中的参数说明
接下来就是这些方法的参数,都接受了一个MotionEvent类型的参数,MotionEvent继承于InputEvent,用于标记各种动作事件。之前提到的ACTION_DOWN、ACTION_MOVE、ACTION_UP都是MotinEvent中定义的常量。我们通过MotionEvent传进来的事件类型来判断接收的是哪一种类型的事件。到现在,这三个方法的返回值和参数你应该都明白了,接下来就解释一下这三个方法分别在什么时候处理事件。
dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。
onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。
onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。这是ViewGroup特有的方法,因为ViewGroup中可能还有子View,而在Android中View中是不能再包含子View的
在activity中只放置一个button之后测试view和activity中各各方法的执行顺序
首先执行了Activity的dispatchTouchEvent方法进行事件分发,
之后执行buttonde的dispatchTouchEvent方法
之后执行button的的ontouch方法
之后执行button的ontouchEvent方法
之后执行button的click方法
Android嵌套布局事件传递
嵌套了RTLayout以后,事件传递的顺序变成了Activity->RTLayout->RTButton,这也就回答了前面提出的问题,Android中事件传递是从ViewGroup传递到View的,而不是反过来传递的。
Android事件传递总结
以上我们对Android事件传递机制进行了分析,期间结合系统源码对事件传递过程中的处理情况进行了探究。通过单布局情况和嵌套布局情况下的事件传递和处理进行了分析,现总结如下:
Android中事件传递按照从上到下进行层级传递,事件处理从Activity开始到ViewGroup再到View。
事件传递方法包括dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent,其中前两个是View和ViewGroup都有的,最后一个是只有ViewGroup才有的方法。这三个方法的作用分别是负责事件分发、事件处理、事件拦截。
onTouch事件要先于onClick事件执行,onTouch在事件分发方法dispatchTouchEvent中调用,而onClick在事件处理方法onTouchEvent中被调用,onTouchEvent要后于dispatchTouchEvent方法的调用。
- android事件传递(一)
- Android事件传递机制(一)
- Android View事件传递机制(一)
- Android事件传递机制(一)
- Android事件传递机制(一)
- android 触摸事件传递(一)
- Android事件传递(一View事件的传递)
- Android Touch事件传递机制解析(一)
- 菜鸟进阶之Android Touch事件传递(一)
- Android事件传递机制(一)deprecated
- Android按键事件传递流程(一)
- Android中View点击事件传递(一)
- Android View触摸事件传递机制 一
- Android 的事件分发机制(一)---view的事件传递
- 浅谈Android事件分发机制(一)点击事件的传递规则
- Android UI事件传递(Touch事件)
- Android事件分发(事件传递机制)
- OSGI学习笔记一(事件传递)
- Ramanujan's House
- 自定义标签
- String、StringBuilder、StringBuffer 用法比较
- RFID与物联网关系
- 欢迎使用CSDN-markdown编辑器
- android事件传递(一)
- 英语总结系列(三):如何维持激情
- 黑马程序员————C语言——函数
- 侧滑第三方开源框架
- 《计算机网络 自顶向下方法》读书笔记(三)
- 【C语言学习笔记】结构体、枚举、预处理指令
- 从实际项目中总结出的20条数据库操作优化经验
- 编译原理学习笔记
- iOS 按frame截取部分图像