非常好的一篇文章??
Android端MVVM從入門到實戰(zhàn)(第一篇) - MVVM和四大官方組件1、MVVM簡介 MVVM是相對于MVC和MVP的一個概念,是一種架構(gòu)模式。 1.1 MVC 傳統(tǒng)的MVC中,View改變通知Controller進行處理,Controlle...
非常好的一篇文章??
Android端MVVM從入門到實戰(zhàn)(第一篇) - MVVM和四大官方組件1、MVVM簡介 MVVM是相對于MVC和MVP的一個概念,是一種架構(gòu)模式。 1.1 MVC 傳統(tǒng)的MVC中,View改變通知Controller進行處理,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ù)往下傳遞
當某個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ā)機制講得比較詳細了,這一篇是針對View的繪制,View的繪制如果你有所了...
Android 消息處理機制估計都被寫爛了,但是依然還是要寫一下,因為Android應用程序是通過消息來驅(qū)動的,Android某種意義上也可以說成是一個以消息驅(qū)動的系統(tǒng),UI...