【視圖】【事件分發(fā)】

事件分發(fā)機(jī)制

圖解 Android 事件分發(fā)機(jī)制

image.png

簡略版:

  1. 在dispatchTouchEvent 和 onTouchEvent返回true則消費(fèi)事件嚷掠,停止傳遞
  2. 維持super則走全流程(1)->(5)吗坚,6舷胜、7在view不消費(fèi)事件時才會返回到
  3. dispatchTouchEvent和onTouchEvent 若return false則跳到上一層的onTouchEvent
  4. viewGroup的onInterceptTouchEvent若return true則跳過下層至自己的onTouchEvent
  5. View的dispatchTouchEvent默認(rèn)實現(xiàn)(super)就是把事件分發(fā)給自己的onTouchEvent

Activity:dispatchTouchEvent(1)莫瞬、onTouchEvent(7)
ViewGroup:dispatchTouchEvent(2)帅韧、onInterceptTouchEvent(3)、onTouchEvent(6)
View:dispatchTouchEvent(4)炫掐、onTouchEvent(5)

對于在onTouchEvent消費(fèi)事件的情況:在哪個View的onTouchEvent 返回true仓蛆,那么ACTION_MOVE和ACTION_UP的事件從上往下傳到這個View后就不再往下傳遞了,而直接傳給自己的onTouchEvent 并結(jié)束本次事件傳遞過程谅摄。
對于ACTION_MOVE徒河、ACTION_UP總結(jié):ACTION_DOWN事件在哪個控件消費(fèi)了(return true), 那么ACTION_MOVE和ACTION_UP就會從上往下(通過dispatchTouchEvent)做事件分發(fā)往下傳送漠,就只會傳到這個控件顽照,不會繼續(xù)往下傳,如果ACTION_DOWN事件是在dispatchTouchEvent消費(fèi),那么事件到此為止停止傳遞代兵,如果ACTION_DOWN事件是在onTouchEvent消費(fèi)的尼酿,那么會把ACTION_MOVE或ACTION_UP事件傳給該控件的onTouchEvent處理并結(jié)束傳遞。

太長版:

  1. 如果我們沒有對控件里面的方法進(jìn)行重寫或更改返回值植影,而直接用super調(diào)用父類的默認(rèn)實現(xiàn)裳擎,那么整個事件流向應(yīng)該是從Activity---->ViewGroup--->View 從上往下調(diào)用dispatchTouchEvent方法,一直到葉子節(jié)點(diǎn)(View)的時候思币,再由View--->ViewGroup--->Activity從下往上調(diào)用onTouchEvent方法鹿响。
  2. dispatchTouchEvent 和 onTouchEvent 一旦return true,事件就停止傳遞了(到達(dá)終點(diǎn))(沒有誰能再收到這個事件)」榷觯看下圖中只要return true事件就沒再繼續(xù)傳下去了惶我,對于return true我們經(jīng)常說事件被消費(fèi)了,消費(fèi)了的意思就是事件走到這里就是終點(diǎn)博投,不會往下傳绸贡,沒有誰能再收到這個事件了。
  3. dispatchTouchEvent 和 onTouchEvent return false的時候事件都回傳給父控件的onTouchEvent處理
  4. dispatchTouchEvent毅哗、onTouchEvent听怕、onInterceptTouchEvent
    ViewGroup 和View的這些方法的默認(rèn)實現(xiàn)就是會讓整個事件安裝U型完整走完,所以 return super.xxxxxx() 就會讓事件依照U型的方向的完整走完整個事件流動路徑)虑绵,中間不做任何改動尿瞭,不回溯、不終止蒸殿,每個環(huán)節(jié)都走到筷厘。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸣峭,一起剝皮案震驚了整個濱河市宏所,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊溶,老刑警劉巖爬骤,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異莫换,居然都是意外死亡霞玄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門拉岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坷剧,“玉大人,你說我怎么就攤上這事喊暖”蛊螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狞尔。 經(jīng)常有香客問我丛版,道長,這世上最難降的妖魔是什么偏序? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任页畦,我火速辦了婚禮,結(jié)果婚禮上研儒,老公的妹妹穿的比我還像新娘豫缨。我一直安慰自己,他們只是感情好端朵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布州胳。 她就那樣靜靜地躺著,像睡著了一般逸月。 火紅的嫁衣襯著肌膚如雪栓撞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天碗硬,我揣著相機(jī)與錄音瓤湘,去河邊找鬼。 笑死恩尾,一個胖子當(dāng)著我的面吹牛弛说,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翰意,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼木人,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冀偶?” 一聲冷哼從身側(cè)響起醒第,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎进鸠,沒想到半個月后稠曼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡客年,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年霞幅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片量瓜。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡司恳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绍傲,到底是詐尸還是另有隱情扔傅,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站铅鲤,受9級特大地震影響划提,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邢享,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一鹏往、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骇塘,春花似錦伊履、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至插爹,卻和暖如春哄辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠尾。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工力穗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人气嫁。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓当窗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寸宵。 傳聞我的和親對象是個殘疾皇子崖面,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容