android 事件分發

記錄下對Android事件分發的理解:spa

若是a做爲viewgroup,b做爲view,b包含在a中。事件會先傳遞到viewgroup中,既a。而後a會進行事件分發給子view。事件分發的方法中,會有個判斷,是否要分發給子view,disallowintercept(是否禁用攔截事件) 和!onInterceptTouchEvent(ev)(是否攔截對子view的事件,取反),任何一個判斷爲true,則將事件分發給子view--b。子view中會有dispatchTouchEvent(),這個方法中,若是返回爲true,表明消費這次事件。dispatchTouchEvent()中,有判斷是否有ontouchlistener,是否可點擊,ontouch()方法中是否返回了true,若是返回的是true,會不執行onTouchevent,click事件也在此方法中,設置的click事件也將不會執行。在ontouchevent中,也有判斷是否返回true,表明消費事件。viewgroup若是沒有分發事件給子view,或者子view沒有消費事件,則會向本身的父級一層一層的找,既找到view中dispatchToiuchEvent,而後進行事件的判斷。事件

主要是經過down事件,分發給子view,肯定誰消費這次事件,而後後面的move和up事件都有那個view負責。event

相關文章
相關標籤/搜索