android 事件傳遞機制

android 事件傳遞機制:
【觸摸事件】
1: onTouchEvent();觸摸事件
2: dispatchTouchEvent(MotionEvent)分發事件
3:onInterceptTouchEvent() 攔截事件
onTouchEvent()------->view-----------》 dispatchTouchEvent若是 dispatchTouchEvent返回true,那麼 view的 onTouchEvent()處理事件,若是返回false,那麼看 onInterceptTouchEvent(),若是 onInterceptTouchEvent()返回ture仍是 view的 onTouchEvent()處理事件,若是返回false則交給view的子view dispatchTouchEvent進行再次分發,依次類推;
注:
1:onInterceptTouchEvent()是rootiew向下傳遞, onTouchEvent()恰好相反;
按鍵事件
Android按鍵事件處理主要在View和Activity兩個級別。和 觸摸事件 相比,簡單不少。
按鍵事件的處理機制:
一、默認狀況下,若是沒有View得到焦點,事件將傳遞給Activity處理。
二、若是View得到焦點( View.SetFocusable(true) ),事件首先傳遞到View的回調方法中。view回調方法返回false,事件繼續傳遞到Activity處理。反之,事件不會繼續傳遞。
注:
一、按鍵的onKeyDown和onKeyUp是相互獨立的,不會相互影響。
二、不管是View仍是Activity中,建議重寫事件回調方法時,只對處理過的按鍵返回true,沒有處理的事件應該調用其父類方法。
不然,其餘未處理事件不會被傳遞到合適的目標組件中,例如:Back按鍵失效問題。
相關文章
相關標籤/搜索