弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述Android事件传递机制相关的知识,希望能为你提供帮助。
文章图片
事件传递要经的方法
public boolean dispatchTouchEvent(MotionEvent ev);
//分发事件
public boolean onInterceptTouchEvent(MotionEvent ev);
//拦截事件
public boolean onTouchEvent(MotionEvent ev);
//处理事件
事件传递的简介
ViewGroup接收事件后,进行分发:
- 如果不进行分发,则
dispatchTouchEvent
返回true
,事件消亡未处理。 - 如果进行分发该事件,则
dispatchTouchEvent
返回false
,处理或传递该事件:
- 如果想自己处理该事件,则
onInterceptTouchEvent
返回true
,拦截事件,给自己的onTouchEvent
进行处理; - 如果不想处理该事件,则
onInterceptTouchEvent
返回false
,把事件传递给子View进行处理。
- 对于最底层的子View,没有
onInterceptEvent
拦截事件,接收到事件后进行分发:
- 如果不进行分发,则
dispatchTouchEvent
返回false
,事件未处理,注意这里的最小子view返回false
代表未分发事件; - 如果进行分发该事件,则
dispatchTouchEvent
返回true
:
- 如果处理该事件,则
onTouchEvent
返回true
把该事件消费掉; - 如果不想处理该事件,则
onTouchEvent
返回false
,等待上级处理。
需要注意:【Android事件传递机制】viewGroup中包含的最小子view是不含拦截
onInterceptTouchEvent
事件的,最小的子view比如Button,TextView...因为他们已在树的最底层,已无法向下传递了。推荐阅读
- uni-app的scroll-view组件的使用体验
- Android DJI Mobile-SDK 开发
- Mapped Statements collection does not contain value for xxx.xxx 错误原因&解决方案
- Apple SIP简介及在Clover中如何控制
- java applet
- 7款最佳3D CAD软件下载推荐合集(适合初学者和高级用户)
- 前7名最佳免费编码游戏下载推荐合集(提高你的编码技能)
- Android和iPhone最佳免费GoPro视频编辑应用下载推荐合集
- 第一个Python程序例子