笔记KeyEvent 和 TouchEvent在 Activity和View中传递的顺序

因为一个电视机 Key事件传递出现了部分问题,可是五位方向键有时候出现问题 java

因此使用Activity彻底接管了key事件的传递, 本身来控制焦点的变化和五位方向键的按下处理逻辑 spa

在此温习一下key事件的传递, 日志以下 日志

Key事件, 是从Activity分配下去, 而后View先处理, 最后Activity处理 orm



Touch 事件 继承




View.java 只有  dispatchTouchEvent   和onTouchEvent

VG 只有dispatchTouchEvent 和 onInterceptTouchEvent  多一个 dispatchTransformedTouchEvent VG.java没有ouTouchEvent, VG的onTouchEvent其实是VG继承的View的, touch的处理和View也是同样的. 事件


完整流程: 

1.VG.dispatchTouchEvent ->  it


2.VG.onInterceptTouchEvent -> 若是被拦截了, 那就直接执行我本身的onTouch便可(也就是 super.dispatchTouchEvent) event


3.VG.dispatchTransformedTouchEvent ->   form

若是onInterceptTouchEvent 返回的不是true, 也就是没有被拦截, 那么就开始进行向孩子分发, 若是没有孩子, 就执行我本身View的Touch
List

两种状况以下:
 
4. 遍历这个VG中全部的孩子:

A 若是这个VG中没有孩子, 调用这个VG的View的dispatchTouchEvent也就是super.dispatchTouchEvent

B 不然, 执行孩子们的onTouch.

5.super.dispatchTouchEvent最后会执行到: 

mOnTouchListener.onTouch

6. onTouchEvent(event)




最最后, WMS会调用Activity的onTouchEvent
相关文章
相关标签/搜索