Android Touch事件分发与消费机制
2016-01-06 15:04
447 查看
1.事件分发:dispatchTouchEvent(MotionEvent ev)
由父View向子View传递事件。return true,事件会分发给当前View,并由dispatchTouchEvent()进行消费,同时事件停止传递。
return false,将事件返回给Activity或者父View的onTouchEvent()进行消费。
super.dispatchTouchEvent(),事件会分发给当前View的onInterceptTouchEvent()方法。
2.事件拦截:onInterceptTouchEvent(MotionEvent ev)
事件由当前View的dispatchTouchEvent()进行分发。return true,拦截事件,并交由当前View的onTouchEvent处理。
return false,不拦截事件,当前View的事件会被传递到下层子View上,再由子View的dispatchTouchEvent()来进行事件分发。
super.onInterceptTouchEvent(),同return false。
3.事件响应:onTouchEvent(MotionEvent ev)
1)当前View dispatchTouchEvent()返回super.dispatchTouchEvent(),并且onInterceptTouchEvent()返回true时,当前View的onTouchEvent()会被掉用2)事件一直被放行到最上层View,则会调用当前View的onTouchEvent()事件
return false,事件会从当前View向上传递,并且由父View的onTouchEvent()来接收
return true,消费该事件
super.onTouchEvent() 默认处理事件的逻辑与return false相同
注意:View没有onInterceptTouchEvent()方法,因为事件已经分发到最后,不需要拦截了。
文中所述父View皆指ViewGroup
相关文章推荐
- android常用同步类
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
- Android开发中的屏幕适配问题
- Android应用开发中的风格和主题(style,themes)
- ubuntu 14.04 搭建Android 源码(AOSP)编译环境
- Android权限机制
- android学习日记(三):Fragment的实战上
- android按键事件和触屏事件(三)-带你从源码的角度彻底理解
- lambda 表达式
- Android KITKAT 以上实现沉浸式状态栏
- android按键事件和触屏事件(二)-带你从源码的角度彻底理解
- Android开发常用的adb命令整理
- Android开发学习之路-GSON使用心得(OCR图片识别)
- Android开发之简单文件管理器实现方法
- android开发-小技巧篇(集合)
- Android 获取加速传感器的值,并去除杂音
- Android应用正常启动流程分析
- Android内存优化杂谈
- 怎么理解Android版本兼容???
- Android中dip、dp、sp、pt和px的区别