準備☞Android view事件分發機制

事件分發主要由三個重要方法完成:dispatchTouchEvent , onInterceptTouchEvent, onTouchEvent
● 1.當一個點擊事件產生以後,它的傳遞順序是:Activity->Window->View
事件總是先傳遞給Activity, Activity 在傳給Window, 最後Window在傳給 頂級的View
● 2.點擊事件到達頂級View(一般是ViewGroup),調用ViewGroup的dispatchTouchEvent方法,如果ViewGroup 的 onInterceptTouchEvent 方法返回是true,該事件由ViewGroup攔截處理。如果ViewGroup的mOnTouchListener被設置,則onTouch方法會被回調,事件如何處理還要看 onTouch的返回值,如果onTouch的返回值是true,onTouchEvent方法不會被調用,如果返回是FALSE, 會調用onTouchEvent方法。在onTouchEvent方法中,如果設置了mOnClickListener,則onClick會被調用。
優先級:OnTouchListener > onTouch > OnTouchEvent > OnClickListener >onClick
● 反之,如果onInerceptTouchEvent方法返回是FALSE,說明頂級ViewGroup不攔截該事件,則事件會被給它點擊事件鏈的子View,然後子View的dispatchTouchEvent方法會被調用。如此循環直到,完成整個事件分發。
● 3.如果所有元素都不處理這個事件,那麼這個事件最終會傳遞給Activity處理,即調用Activity的onTouchEvent()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章