非常好的一篇文章??
Android端MVVM從入門(mén)到實(shí)戰(zhàn)(第一篇) - MVVM和四大官方組件1合呐、MVVM簡(jiǎn)介 MVVM是相對(duì)于MVC和MVP的一個(gè)概念坛掠,是一種架構(gòu)模式。 1.1 MVC 傳統(tǒng)的MVC中栋操,View改變通知Controller進(jìn)行處理,Controlle...
非常好的一篇文章??
Android端MVVM從入門(mén)到實(shí)戰(zhàn)(第一篇) - MVVM和四大官方組件1合呐、MVVM簡(jiǎn)介 MVVM是相對(duì)于MVC和MVP的一個(gè)概念坛掠,是一種架構(gòu)模式。 1.1 MVC 傳統(tǒng)的MVC中栋操,View改變通知Controller進(jìn)行處理,Controlle...
總結(jié)一下流程:
事件分發(fā)從Action_Down開(kāi)始,最初由Activity的dispatchTouchEvent()方法接收,不攔截不中斷的正常分發(fā)流程:Activity的disPatchTouchEvent()方法到PhoneWindow的superDispatchTouchEvent方法衣迷,再到DecorView的superDispatchTouchEvent方法畏鼓,再到ViewGroup的dispatchTouchEvent方法,在ViewGroup的dispatchTouchEvent方法中判斷是否攔截壶谒,若攔截調(diào)用ViewGroup的onTouchEvent方法云矫,該ViewGroup消費(fèi)掉;若不攔截汗菜,該ViewGroup遍歷子View根據(jù)點(diǎn)擊的位置等條件判斷是否為接收事件的子View让禀,是,則分發(fā)給該子View的dispatchTouchEvent()方法呵俏,然后會(huì)調(diào)用View的onTouchEvent方法堆缘,在onTouchEvent方法中會(huì)判斷該子View是否可點(diǎn)擊,是普碎,則事件最終傳遞到View的onClick方法消費(fèi)吼肥;否則,事件返回向上傳遞麻车,直到消費(fèi)或者終止缀皱。
在dispatchTouchEvent()方法中返回true或者false,事件不向下傳遞动猬,只用調(diào)用super.dispatchTouchEvent方法啤斗,事件才會(huì)向下傳遞。
在onTouchEvent()方法中返回true赁咙,事件在該方法中消費(fèi)钮莲,不會(huì)向下或者向上傳遞;返回super.onTouchEvent方法彼水,將會(huì)調(diào)用ViewonTouchEvent方法崔拥,判斷長(zhǎng)按事件和點(diǎn)擊事件的執(zhí)行條件存不存在,存在則會(huì)在點(diǎn)擊事件中消費(fèi)凤覆。
在onInterceptTouchEvent()方法中返回true表示攔截事件链瓦,事件可能會(huì)在該ViewGroup中消費(fèi)掉;返回false表示事件繼續(xù)往下傳遞
當(dāng)某個(gè)View的onTouchEvent()返回true盯桦,那么事件不會(huì)向下或者向上傳遞慈俯,而Action_MOVE和Action_UP事件將會(huì)在該View的onTouchEvent方法中處理
編程的貓 評(píng)論自圖解 Android 事件分發(fā)機(jī)制
前言 Android事件分發(fā)機(jī)制是Android開(kāi)發(fā)者必須了解的基礎(chǔ) 網(wǎng)上有大量關(guān)于Android事件分發(fā)機(jī)制的文章拥峦,但存在一些問(wèn)題:內(nèi)容不全贴膘、思路不清晰、無(wú)源碼分析事镣、簡(jiǎn)單問(wèn)...
View的繪制和事件處理是兩個(gè)重要的主題步鉴,上一篇《圖解 Android事件分發(fā)機(jī)制》已經(jīng)把事件的分發(fā)機(jī)制講得比較詳細(xì)了揪胃,這一篇是針對(duì)View的繪制璃哟,View的繪制如果你有所了...
Android 消息處理機(jī)制估計(jì)都被寫(xiě)爛了随闪,但是依然還是要寫(xiě)一下阳似,因?yàn)锳ndroid應(yīng)用程序是通過(guò)消息來(lái)驅(qū)動(dòng)的,Android某種意義上也可以說(shuō)成是一個(gè)以消息驅(qū)動(dòng)的系統(tǒng)铐伴,UI...