事件的傳輸機制:
事件:手機觸摸屏幕的一切操作均稱為事件符糊。事件的傳輸機制指的是手指在屏幕觸摸之后扒袖,這個事件的傳輸與消費的方向
為什么要使用事件的傳輸機制?
解決沖突
事件傳輸機制中重寫的三個方法:
- dispathTouchEvent:事件分發(fā) return false;//不分發(fā)
- onInterceptTouchEvent:事件攔截
如果攔截(return true)了违霞,事件就不會再繼續(xù)想下傳遞,就從攔截的這個容器里面開始消費這個事件瞬场,一直往上消費买鸽。除非某一個容器消費了這個事件返回了true,事件就不會再被消費了贯被。
- onTouchEvent:事件消費
當前事件開始消費眼五,會繼續(xù)向下進行傳輸。return true:事件被消費刃榨,事件不再向下傳輸弹砚,如果是返回默認值,根據(jù)這個容器是否可以獲取焦點來判斷這個事件是否被消費枢希。
結(jié)論:
事件在傳輸時會按照從上到下的順序進行傳輸-->管道式傳輸
事件在進行消費是會進行從下到上的順序進行消費-->冒泡式消費
注意:
- 返回值的super--表示將事件繼續(xù)向下傳輸桌吃。要讓click執(zhí)行的話,必須調(diào)用super.onTouchEvent(event)苞轿。只要任何一個地方的onTouchEvent返回了true,其他所有的事件都不會再執(zhí)行了茅诱。
- 在事件的傳輸過程中,如果是disPathTouchEvent返回了true,那么整個鏈路都是沒有辦法來消費這個事件的搬卒。如果onInterceptTouchEvent返回了true,那么當前容器的元素是沒有辦法來獲取這個事件的瑟俭,事件從攔截的那個開始一直向上傳輸,途中如果遇到onTouchEvent返回來true,那么他消費這個事件其他的就不能消費這個事件了契邀。如果onTouch沒有調(diào)用super.onTouchEvent的話摆寄,那么這個事件是沒有辦法傳輸執(zhí)行的。
- 從上到下傳輸坯门,從下到上消費微饥,途中一個消費,其余的都沒法消費古戴。
- 當前的容器是否能消費這個事件是根據(jù)容器本身是否具有消費這些事件的屬性決定的