Android事件分发,事件拦截,事件处理总结
来源:互联网 发布:少儿编程教育培训 编辑:程序博客网 时间:2024/05/22 10:22
对于安卓的事件分发,拦截及事件处理无论是面试还是在日常应用中都涉及的比较多,网上的帖子也很多,感觉都没说透,或者没直接点出来,我认为郭神这篇博客写的事件分发理解的挺好 http://blog.csdn.net/sinyu890807/article/details/9097463
1.对于事件的传递流程:安卓点击事件MotionEvent 传递流程 Activity - window(phoneWindow)-DecorView(顶级View,其实是个ViewGroup),由DecorView的dispatchTouchEvent向下分发事件,具体可看下里面的源码,如果ViewGroup中没有子元素,事件传递到此处,说明已经传到最底层了,它直接拦截掉这个事件交由其onTouchEvent处理,如果onTouchEvent不处理,则交由其上级处理,均不处理,则最后交由Activity 的onTouchEvent来处理这个事件。再比如:TextView 设置点击事件,这个传递过程是这样的,Activity(dispatchTouchEvent)-Window - DecorView,这个跟上面是一样的,因为TextView设置了onClickListener,当事件传递到TextView时,因为TextView 继承自View,View中没有拦截事件的方法,默认来说,到最底层View来说onTouchEvent 默认返回为true 来处理这个事件的,因为设置了onClickListener,最后会回调TextView的onClick方法,由此可见,onClickListener在事件传递的最末端!
2.对于事件的拦截(一般来说ViewGroup中拦截的方法onInterceptTouchEvent),事件在分发的过程中,该父类group不想让下面的子类收到这个事件,这个消息,则他会在onInterceptTouchEvent中返回true,表示我要拦截这个事件,不让子类知道;返回false,则不拦截,事件继续向下传递。
3.对于事件的处理 ,事件的处理在对应拦截的那个类的onTouchEvent方法中进行处理,onTouchEvent 有actionDown,move,up等方法,如果最后onTouchEvnet返回true,表示我要处理消费了这个事件,反之,则不处理这个事件,交给上层ViewGroup或View来处理这个事件。
总结:
事件分发:dispatchTouchEvent retrurn true 则向下分发事件,false,则不向下分发。
事件拦截:onInterceptTouchEvent return true 则表示我要拦截,事件流到自己的onTouchEvent中处理,false,则不拦截,继续的向下传递事件。
事件处理:onTouchEvent reture true 则表示我要处理,反之,我不处理,交给上层ViewGroup或View来处理这个事件。
- Android事件分发,事件拦截,事件处理总结
- Android事件分发,事件拦截,事件处理总结
- android事件分发,拦截,处理
- Android 事件拦截分发
- Android事件分发,拦截,处理机制
- android事件分发、拦截、处理(未完)
- Android触摸事件的分发、拦截、处理
- android 中的事件分发和事件拦截
- android View事件分发和事件拦截
- Android---事件分发与拦截
- Android事件分发总结
- Android 事件分发总结
- android事件分发总结
- Android事件分发总结
- android事件分发总结
- Android 事件分发 总结
- Android事件分发总结
- Android事件分发总结
- 单例模式
- 第一章:我的java学习之路
- ERROR 1366 (HY000): Incorrect string value: '\xC2\xEC\xD2\xCF\xD2\xB2...' for column 'title' at row
- Requestlayout,onlayout,onDraw,DrawChild区别与联系
- 关于人工智能的幻想---差不多有结果了
- Android事件分发,事件拦截,事件处理总结
- 深入block
- Android WebView 文本框获取焦点后自动放大有关问题
- Service学习笔记-as下配置aidl
- 215. Kth Largest Element in an Array
- CSS3动画(典型模板)
- android 对不同日期和时间的格式方法的封装
- 收藏的一些关于Android的知识点(持续更新ing)
- linux IPC--管道