關(guān)于touch事件的傳遞:在Activity中接觸屏幕后會產(chǎn)生MotionEvent,傳遞順序:
創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、中國電信云錦天府解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球千余家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。首先觸發(fā)Activity的dispatchTouchEvent
然后觸發(fā)Activity的onUserInteraction
然后觸發(fā)Layou的dispatchTouchEvent
然后觸發(fā)Layout的onInterceptTouchEvent(onTouchevent)
然后觸發(fā)View的dispatchTouchEvent
然后觸發(fā)View的onTouchEvent
其中需要注意的是Layout的onInterceptTouchEvent和onTouchEvent以及View的dispatchTouchEvent和onTouchEvent的使用方法
對于onInterceptTouchEvent而言,其源代碼僅一個“return false”,如果需要攔截該層MontionEvent應(yīng)覆蓋并返回true,此時將觸發(fā)該Layout的onTouchEvent,并且不再向下傳遞,記住無論是View還是ViewGroup一旦觸發(fā)onTouchEvent,則本次MontionEvent都不可能向下傳遞,
對于onTouchEvent,這個函數(shù)是觸發(fā)其他Listener的關(guān)鍵(如click等,但不含onTouchListener),一般來說不應(yīng)全部覆蓋,應(yīng)該在適時調(diào)用Super.onTouchEvent,其返回值意義是若返回true,則后續(xù)MontionEvent(down與up間的action)都傳遞到此onTouchEvent,若返回false則以后的MontionEvent傳遞到上層onTouchEvent(如Layout的onTouchEvent),
對于View的dispatchTouchEvent,其源代碼說明了先調(diào)用onTouchListener,若其返回為true,則不再調(diào)用onTouchEvent,并dispatchTouchEvent直接返回true,若其返回為false,則調(diào)用onTouchEvent,并以onTouchEvent的返回值為最終返回值,
注:View(viewGroup)的dispatch函數(shù)由系統(tǒng)上層直接調(diào)用,而其他的onTouchEvent,onTouchListener等是由dispatch來調(diào)用,其返回值也是先返回給dispatch,再由dispatch返回,故核心應(yīng)在dispatch函數(shù),故最好不要直接重寫該函數(shù),
綜上,個人認(rèn)為對于dispatchTouchEvent與onTouchEvent不應(yīng)直接覆蓋,應(yīng)適時調(diào)用super的代碼;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。