筆記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
相關文章
相關標籤/搜索