Android事務分發機制一向都是一個麻煩點,很我開辟者對此都一頭霧水,下面用圖文來解決下我的理解,但愿這篇文章可以或許給你點紛歧樣的看法。
一、分發機制別離:Activity事務分發機制、ViewGroup事務分發機制、View事務分發機制,事務分發是dispatchTouchEvent,事務阻擋是onInterceptTouchEvent,事務的響應是onTouchEvent。
二、編寫ViewGroup的控件 擔當LinearLayout 然后重寫 dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent。在每個方式中都打印一下執行代碼。如下圖。
三、編寫View的控件 擔當Button 然后重寫 dispatchTouchEvent,onTouchEvent。注重View是沒有onInterceptTouchEvent阻擋事務的。如下圖。
四、起首看一下Activity的dispatchTouchEvent源碼:上面這段代碼,關頭的就是:getWindow().superDispatchTouchEvent(ev)。如下圖。
五、點擊按鈕打印信息,我們看的挨次:activity-->viewGroup-->view,dispatchTouchEvent 和 onTouchEvent 一旦return true,終結事務傳遞,return false,事務都回傳給父控件的onTouchEvent處置。
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!