非常好的一篇文章??
Android端MVVM從入門到實戰(zhàn)(第一篇) - MVVM和四大官方組件1哑子、MVVM簡介 MVVM是相對于MVC和MVP的一個概念洪橘,是一種架構(gòu)模式缩挑。 1.1 MVC 傳統(tǒng)的MVC中株婴,View改變通知Controller進(jìn)行處理,Controlle...
非常好的一篇文章??
Android端MVVM從入門到實戰(zhàn)(第一篇) - MVVM和四大官方組件1哑子、MVVM簡介 MVVM是相對于MVC和MVP的一個概念洪橘,是一種架構(gòu)模式缩挑。 1.1 MVC 傳統(tǒng)的MVC中株婴,View改變通知Controller進(jìn)行處理,Controlle...
總結(jié)一下流程:
事件分發(fā)從Action_Down開始,最初由Activity的dispatchTouchEvent()方法接收乔遮,不攔截不中斷的正常分發(fā)流程:Activity的disPatchTouchEvent()方法到PhoneWindow的superDispatchTouchEvent方法扮超,再到DecorView的superDispatchTouchEvent方法,再到ViewGroup的dispatchTouchEvent方法,在ViewGroup的dispatchTouchEvent方法中判斷是否攔截出刷,若攔截調(diào)用ViewGroup的onTouchEvent方法璧疗,該ViewGroup消費掉;若不攔截馁龟,該ViewGroup遍歷子View根據(jù)點擊的位置等條件判斷是否為接收事件的子View崩侠,是,則分發(fā)給該子View的dispatchTouchEvent()方法坷檩,然后會調(diào)用View的onTouchEvent方法却音,在onTouchEvent方法中會判斷該子View是否可點擊,是矢炼,則事件最終傳遞到View的onClick方法消費僧家;否則,事件返回向上傳遞裸删,直到消費或者終止八拱。
在dispatchTouchEvent()方法中返回true或者false,事件不向下傳遞涯塔,只用調(diào)用super.dispatchTouchEvent方法肌稻,事件才會向下傳遞。
在onTouchEvent()方法中返回true匕荸,事件在該方法中消費爹谭,不會向下或者向上傳遞;返回super.onTouchEvent方法榛搔,將會調(diào)用ViewonTouchEvent方法诺凡,判斷長按事件和點擊事件的執(zhí)行條件存不存在,存在則會在點擊事件中消費践惑。
在onInterceptTouchEvent()方法中返回true表示攔截事件腹泌,事件可能會在該ViewGroup中消費掉;返回false表示事件繼續(xù)往下傳遞
當(dāng)某個View的onTouchEvent()返回true尔觉,那么事件不會向下或者向上傳遞凉袱,而Action_MOVE和Action_UP事件將會在該View的onTouchEvent方法中處理
前言 Android事件分發(fā)機制是Android開發(fā)者必須了解的基礎(chǔ) 網(wǎng)上有大量關(guān)于Android事件分發(fā)機制的文章侦铜,但存在一些問題:內(nèi)容不全专甩、思路不清晰、無源碼分析钉稍、簡單問...
View的繪制和事件處理是兩個重要的主題涤躲,上一篇《圖解 Android事件分發(fā)機制》已經(jīng)把事件的分發(fā)機制講得比較詳細(xì)了,這一篇是針對View的繪制贡未,View的繪制如果你有所了...
Android 消息處理機制估計都被寫爛了,但是依然還是要寫一下缸托,因為Android應(yīng)用程序是通過消息來驅(qū)動的左敌,Android某種意義上也可以說成是一個以消息驅(qū)動的系統(tǒng)瘾蛋,UI...