[TOC]
原文地址
Reffer Methods
ViewGroup子类的touch事件相关方法:
No. | Name | Detail |
---|---|---|
1 | dispatchTouchEvent | 分发点击事件。true表示自己处理事件。 |
2 | onInterceptTouchEvent | 拦截点击事件。true表示拦截事件,并不再往子view传播。 |
3 | onTouchEvent | 处理点击事件。true表示已处理事件。 |
Page Image
Code
MainActivity.java
1 | package com.qefee.pj.testtouchevent; |
MyLinearLayout.java
1 | package com.qefee.pj.testtouchevent; |
activity_main.xml
1 | "1.0" encoding="utf-8" xml version= |
Touch Event Dispatch
下面几个demo使用可以看出事件的传递方法。
自己也可以动手修改下试试。
No.1 使用原始事件1
action
点击view2。就是最上面那个框。
log
从日志可以看出,在没有打断的情况下,点击事件是一层层往下传递的,然后一层层往上传回。
1 | 06-08 14:30:10.285 9506-9506/com.qefee.pj.testtouchevent I/MainActivity: dispatchTouchEvent: action = 0 |
image
No.2 使用原始事件2
action
点击view1,就是中间那个框。
log
点击view2也是同样情况。
1 | 06-12 17:45:48.553 11255-11255/com.qefee.pj.testtouchevent I/MainActivity: dispatchTouchEvent: action = 0 |
image
No.3
这里的流程图和No.2一样。区别是, 3是由于onInterceptTouchEvent
打断才不再继续传递事件,而2是只点击了view1.
由于onInterceptTouchEvent
的打断,事件在view1中不再往下传递,而是view1自己处理。
action
1,(原始代码基础上)修改onInterceptTouchEvent
的代码
1 |
|
2,点击view2
log
1 | 06-12 18:59:57.198 23353-23353/com.qefee.pj.testtouchevent I/MainActivity: dispatchTouchEvent: action = 0 |
image
No.4
view1的onTouchEvent
返回true
表示处理了该事件。
action
1,(原始代码基础上)修改onTouchEvent
的代码
1 |
|
2,点击view2
log
1 | 06-12 19:07:57.783 28831-28831/com.qefee.pj.testtouchevent I/MainActivity: dispatchTouchEvent: action = 0 |
image
略。同No.1