浅谈android事件分发机制
2015-10-30 09:02
651 查看
一.基础知识1. 所有的touch事件都会被封装到MotionEvent的对象里面 ,包括时间 ,按下的点.
2.事件的类型分为,按下的事件 ,滑动的事件 ,抬起的事件 ,当然 android已经把这几个事件标记为了常量,分别为 MotionEvent.ACTION_DOWN: MotionEvent.ACTION_MOVE MotionEvent.ACTION_UP 三个事件3.对事件的处理包括3类 分为3类, 负责分发的函数 dispatchTouchEvent(MotionEvent ev) 负责拦截的事件,onInterceptTouchEvent()函数 负责处理的事件,onTouchEvent()函数和OnTouchListener 函数
二. 事件的传递,
1 首先事件从Activity的dispatchTouchEvent()开始分发,只要没有被拦截或者停止 从最上层的View(ViewGroup)通过ViewGrop的dispatchTouchEvent()再次向子View分发 事件 ,子View接受到事件以后,再通过子View的dispatchTouchEvent()分发到子View的onTouchEvent()函数进行处理 .
2.事件由父View(ViewGroup)向子View传递的过程中,父View可以通过onInterceptTouchEvent()函数返回true对事件进行拦截.
3.如果事件 从上向下传递的过程中,一直到子View并且子View也并没有消费到事件(通过onTouchEvent()方法返回true来消费掉此次事件)会再次回传到父View(ViewGroup)的OnTouchEvent()方法来处理 ,如果父类也没有消费到事件的话 ,会一直回传到Activity的OnTouchEvent()方法来处理事件
4 如果子View没有对MotionEvent.ACTION_DOWN 消费的话 ,就相当于把控制权交出去了 之后的Move和Up事件不会回传回来的,而是直接在Activity中或者父类中处理
5 OnTouchListener优先于onTouchEvent()对事件进行消费。
6 .下面有一个Demo可以下载看看
相关文章推荐
- Android性能调优工具TraceView介绍
- Android框架集合
- Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
- android 将View界面保存成图片bitmap
- android studio 使用gradle compile' xxxx' 没有成功加载的程序解决方法
- Android library projects cannot be launched解决方案
- adb使用大全
- 使用androidstudio自带的git插件进行版本控制图文详解
- 范例解析:学习Android的IPC主板模式
- 范例解析:学习Android的IPC主板模式
- Android对Bitmap的内存优化
- Android笔记(四十五) Android中的数据存储——XML(一)DOM解析器
- Android ViewStub
- Universal-Image-Loader(android图片缓存)
- Android Radio Interface Layer
- Android 设置EditText光标Curso颜色及粗细
- windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- 日结小细节
- Android获取View位置
- 【Android成长之路】全局大喇叭——广播机制的浅谈(使用本地广播)