Touch事件理解
来源:互联网 发布:天心软件集团 编辑:程序博客网 时间:2024/06/06 17:15
在自定义控件中,也需要对于Touch事件的传递要有一定的理解,所以就去看了看这部分的内容
dispatchTouchEvent是一个入口
一个完整的Touch事件是从Down->(Move)->Up,
当发生了Touch事件中的Down的时候
Touch事件从Activity中的dispatchTouchEvent向下传递,传递到当前View/ViewGroup.
如果当前View 的dispatchTouchEvent返回为True的时候,那么当前View的dispatchTouchEvent会自己消费掉,同时停止向下传递
如果当前View 的dispatchTouchEvent返回为false的时候,那么当前View就会将Touch事件返回给上一层的ViewGroup/Activity中的
OnTouchEvent()
(下面返回默认的情况就是有可能会向下分发的情况,以上均不可能,都死在了dispatchTouchEvent或者返回上一层)
如果当前View的dispatchTouchEvent返回为默认的super.dispatchTouchEvent()的时候,那么就会将Touch事件分发给当前View的
onIntercepterTouchEvent方法,
如果当前View的onIntercepterTouchEvent()方法返回true,那么将会对该Touch事件进行拦截,会响应当前View的 OnTouchEvent()
如果当前View的onIntercepterTouchEvent() 方法返回位false,那么就会将该Touch事件向下一级的View的dispatchTouchEvent()分发(终于分发了.....也就是执行了上一步的一样操作接收到了分发)
如果当前View的onIntercepterTouchEvent()返回为默认的super.onIntercepterTouchEvent,那么将会对该Touch事件进行拦截,会响应当前View的 OnTouchEvent() 方法
而对于onTouchEvent()的调用(注意是调用),主要总结为,
1、在dispatchTouchEvent返回为false,才有可能返回上一层去触发onTouchEvent的响应,
2、在dispatchTouchEvent返回默认的时候,分发给自己的onIntercepterTouchEvent()方法,而onIntercepterTouchEvent方法返回为true的时候,将Touch事件拦截并交于onTouchEvent,而onIntercepterTouchEvent为默认时候,的同理亦是如此
3、这条最重要,以上onTouchEvent()都会响应,那么响应之后,
如果onTouchEvent返回为true的时候,那么onTouchEvent就自己消费掉该Touch事件
如果onTouchEvent返回为false的时候,那么onTouchEvent就会将该Touch事件传递给上一层的onTouchEvent().如果,上一层的View同样返回位false,那么该次事件将销毁掉,并且无法接受下次事件
如果onTouchEvent返回为默认的情况下,同false
如有错误,欢迎大家指正,共同学习~,进步~
- Touch事件理解
- android Touch事件传递自己理解
- android Touch事件分发深入理解
- 对touch事件传递的简单理解
- 深入理解移动端touch事件
- Touch事件--对Scroller的理解
- Touch事件--对GestureDetector的理解
- Touch事件--对ViewDragHelper的理解
- TOUCH事件
- touch事件
- Touch事件
- touch事件
- touch事件
- touch事件
- Touch事件
- touch事件
- touch事件
- touch事件
- HTML form表单自动填写自动提交
- 【iOS】数据库Core Data的使用
- Android Studio编译大工程报错:java.exe'' finished with non-zero exit value 1
- 冒泡排序和插入排序(直接插入、折半插入、希尔排序)(殷人昆版)
- C中的结构体
- Touch事件理解
- 软件工程(四)
- android 两数相除取小数点后n位
- 量化派重磅推出"量化派开放平台"
- iframe中js创建dom,高度自适应
- 随笔(2015.12)
- 高精度运算
- 手机网络
- Windows Store App异步返回刷新页面