Android 事件分發機制自我認知

Android 事件分發機制

1、前言

    Android事件分發機制其實分爲兩個部分,一個分發,一個回傳。分發的方法主要是dispatchTouchEvent(),分發順序是Activity->ViewGroup->View。回傳的方法是onTouchEvent(),順序和分發的相反。不同的是,ViewGroup裏面還有一個onInterceptTouchEvent(),用來判斷是否進行事件攔截。具體細節看下面一張圖。
在這裏插入圖片描述
如果還不清晰,那再來一張圖
在這裏插入圖片描述

2、需要注意

    學習過程中需要注意的地方有以下幾點;1、只要事件在分發的時候沒有打斷,即在dispatchTouchEvent裏面有調用super同名方法,不管patchTouchEvent、onTouchEvent方法返回的是什麼,down事件都能收到,但是其後續事件在那個控件裏面執行就需要看他們onTouchEvent返回的是true還是false了。2、如果在ViewGroup裏面攔截了事件,那麼事件就不會在往下分發,而是直接執行本身的onTouch Event事件。這樣的話view就執行分發不到down事件,跟談不上down的後續事件了。3、dispatchTouchEvent和onTouchEvent是有優先級的,比如你在View裏面的dispatchTouchEvent設置返回爲false,而後在onTouchEvent裏面設置爲消費即返回true。你猜down的後續事件會在哪裏執行?如果View Group裏面的onTouchEvent事件返回true就在ViewGroup裏面執行。如果返回的是false那麼就在activity裏面執行。同理想一想,在ViewGroup的dispatchTouchEvent裏面返回false,在onTouchEvent裏面返回true。down的後續事件在哪裏執行呢?對,在activity裏面。最後給個例子自己體會一下

3、感謝

本文出自門心叼龍的博客,轉載請註明出處: https://blog.csdn.net/geduo_83/article/details/86560896

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