Android事件分发<二>
来源:互联网 发布:装修网络平台有哪些 编辑:程序博客网 时间:2024/05/16 04:11
上一节简单的介绍了Androd事件分发的流程,这一小节介绍一下之前的那三个方法的作用。
dispatchTouchEvent:
这个方法作用它的命名一样disspathTouchEvent,事件分发。
onInterceptTouchEvent:
Intercept,”拦截”的意思,即事件拦截,当我们操作该方法可以决定是否将事件继续往下传递,当它的返回值为true时,就可以将事件拦截,不再将事件传递给本view的onTouchEvent方法,该方法也不会再被调用。
onTouchEvent:
该view的事件处理方法。返回值为true表明,该view消费掉了该事件。不再往回传,去传递给上一级view的onTouchEvent。
下面我将LinearOutThree的onInterceptTouchEvent的返回值为true:
MainActivity-----dispatchTouchEvent LinearoutOne-----dispatchTouchEvent LinearoutOne-----onInterceptTouchEvent LinearoutTwo-----dispatchTouchEvent LinearoutTwo-----onInterceptTouchEvent LinearoutThree-----dispatchTouchEvent LinearoutThree-----onInterceptTouchEvent LinearoutThree-----dispatchTouchEvent LinearoutTwo-----onTouchEvent LinearoutOne-----onTouchEvent MainActivity-----onTouchEvent MainActivity-----dispatchTouchEvent MainActivity-----onTouchEvent
事件继续往上回传,但是LinearOutThree的onTouchEvent并没有执行。
下面我将LinearOutThree的onTouchEvent的返回值为true:
MainActivity-----dispatchTouchEventLinearoutOne-----dispatchTouchEventLinearoutOne-----onInterceptTouchEventLinearoutTwo-----dispatchTouchEventLinearoutTwo-----onInterceptTouchEventLinearoutThree-----dispatchTouchEventLinearoutThree-----onInterceptTouchEventLinearoutThree-----dispatchTouchEventMainActivity-----dispatchTouchEvent
没有出现LinaroutOutOne和LinearOutTwo的 onTouchEvent方法,表明该事件在这儿被消费了,不再往上级回传。
我们再给LinearOutThree中的TextView设置setOnTouchListener返回值为false的结果:
MainActivity-----dispatchTouchEvent LinearoutOne-----dispatchTouchEvent LinearoutOne-----onInterceptTouchEvent LinearoutTwo-----dispatchTouchEvent LinearoutTwo-----onInterceptTouchEvent LinearoutThree-----dispatchTouchEvent LinearoutThree-----onInterceptTouchEvent textView.setOnTouchListener-----onTouch LinearoutThree-----dispatchTouchEvent LinearoutTwo-----onTouchEvent LinearoutOne-----onTouchEvent MainActivity-----onTouchEvent MainActivity-----dispatchTouchEvent MainActivity-----onTouchEvent
我们再给LinearOutThree中的TextView设置setOnTouchListener返回值为true的结果:
MainActivity-----dispatchTouchEventLinearoutOne-----dispatchTouchEventLinearoutOne-----onInterceptTouchEventLinearoutTwo-----dispatchTouchEventLinearoutTwo-----onInterceptTouchEventLinearoutThree-----dispatchTouchEventLinearoutThree-----onInterceptTouchEventtextView.setOnTouchListener-----onTouch
不再将事件分发给LinearoutOne,LinearoutTwo,LinearoutThree的onTouchevent。
在时间的开发当中我们使用最多的情况是自定义view出现手指滑动的一些事件的的处理,以及像一些滑动控件的相互套用,之后出现的滑事件冲突的处理都需要。前两天在ScrollView中嵌套viewflow,出现ViewFlow滑动不灵敏;ViewFlow全屏,手指屏幕上下滑动弹出子菜单,等等都遇到滑动事件的冲突。
下面是一些比较好的分析事件分发的博客:
http://blog.csdn.net/lvxiangan/article/details/9309927
http://blog.csdn.net/lmj623565791/article/details/38960443
- 二、Android事件分发
- Android事件分发二
- Android事件分发<二>
- Android的事件分发(二)
- android事件分发(二)
- Android事件的分发(二)
- Android事件分发(二)
- Android事件分发(二)
- Android事件分发机制二
- Android触屏事件(二、事件分发)
- Android View、ViewGroup 事件分发机制(二)
- Android事件分发机制--ViewGroup(二)
- Android事件分发机制--ViewGroup(二)
- Android事件分发机制完全解析(二)
- Android的事件分发机制(二)
- android事件分发教程(二):ViewGroup
- android事件分发(二)源码源码
- android-----事件分发机制测试系列(二)
- JavaWeb初级学习 之 JQuery-简介、选择器
- Sum of Two Integers
- mysql desc asc基本命令总结
- 做一个有自我要求的读者
- LeetCode 46. Permutations 解题报告
- Android事件分发<二>
- 学习C语言的一点感受
- win32主程序入口设置
- 剑指offer-包含min函数的栈
- python实现多进程_multiprocessing
- 高数个人资料整理
- Eclipse使用Maven创建Web时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webap
- Android 实现Viewpager指示器
- Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : Unsupported major.minor version 52.0