精简版android事件分发解释
2016-03-21 17:49
309 查看
学习资料后,自己对于android事件分发的归纳总结,很精简,希望能帮助需要的同学。
首先认识三个方法:
1.dispatchTouchEvent(MotionEvent
ev) 负责事件分发 详见(1)
2.onInterceptTouchEvent(MotionEvent
ev) 详见(2)
3.onTouchEvent(MotionEvent
ev) 详见(3)
(1)事件分发顺序
由父控件一层一层向子控件分发,如果子控件有子view(即子控件为viewGroup),则继续往其子view分发,然后继续下一个子控件。分发流程参见下图:
事件顺序为:1、2、5、6、7、3、4
如果这个方法返回true,则事件不再往下分发。即:如果6返回true,则7、3、4接收不到事件的分发。
(2)在事件一层一层由父控件传往子控件时,调用onInterceptTouchEvent(MotionEvent
ev)方法,这个方法起拦截作用,一旦它返回true,则拦截此事件,将事件交由当前view的onTouchEvent处理,并且事件往回传。
(3)当事件传到最后一个子view过后开始往回传,onTouchEvent决定此事件是否被消费,如果返回true,则表示此事件被当前view消费,不再继续往回传,事件传递终止。且只有在此方法返回true时view才能执行action_move和action_up,否则只执行action_down。
首先认识三个方法:
1.dispatchTouchEvent(MotionEvent
ev) 负责事件分发 详见(1)
2.onInterceptTouchEvent(MotionEvent
ev) 详见(2)
3.onTouchEvent(MotionEvent
ev) 详见(3)
(1)事件分发顺序
由父控件一层一层向子控件分发,如果子控件有子view(即子控件为viewGroup),则继续往其子view分发,然后继续下一个子控件。分发流程参见下图:
事件顺序为:1、2、5、6、7、3、4
如果这个方法返回true,则事件不再往下分发。即:如果6返回true,则7、3、4接收不到事件的分发。
(2)在事件一层一层由父控件传往子控件时,调用onInterceptTouchEvent(MotionEvent
ev)方法,这个方法起拦截作用,一旦它返回true,则拦截此事件,将事件交由当前view的onTouchEvent处理,并且事件往回传。
(3)当事件传到最后一个子view过后开始往回传,onTouchEvent决定此事件是否被消费,如果返回true,则表示此事件被当前view消费,不再继续往回传,事件传递终止。且只有在此方法返回true时view才能执行action_move和action_up,否则只执行action_down。
相关文章推荐
- retrofit post请求
- 联动Listview(实现真正的联动效果)
- Android签名有什么作用-apk签名可以带来的好处
- android使用代码生成LayerDrawable的方法和注意事项
- 在元心操作系统实现对Android Camera HAL3.2的支持
- Android中的双向链表
- Android Studio 默认debug证书位置在哪里(Mac os)
- android原生控制web返回上一页--笔记
- Android:AsyncTaskUtil 异步简化操作工具类
- Android-图片的上传及加载
- android自己获取并保存错误日志(可以通过邮件发送到自己邮箱)
- android camera HAL v3.0概述
- Android NDK带来什么
- android中的回调-接口回调
- 使用native程序来守护android进程
- Android开发学习笔记:Intent的简介以及属性的详解
- Android 实现手势滑动界面(ViewPager)
- SuperNotCalledException
- Android Native开发显示HTML内容
- Android中循环的几种方式