完全解析Android事件傳遞和處理機(jī)制

基礎(chǔ)Demo程序結(jié)構(gòu)示意圖

image.png

最基本的布局

  • MainActivity是最外層布局

  • OutView繼承ViewGroup

  • InnerView繼承View

系統(tǒng)默認(rèn)的事件流向(點(diǎn)擊InnerView)

image.png

針對(duì)這三個(gè)方法,職責(zé)和造成的影響如下

image.jpeg

下面分幾種情況介紹一下

1. 當(dāng)覆寫MainActivity中的dispatchTouchEvent方法的時(shí)候

  • true和false,都會(huì)導(dǎo)致事件直接結(jié)束傳遞辛慰,因?yàn)闆]有父節(jié)點(diǎn)了音诈,所以事件無法向上傳遞
image.png

2. 當(dāng)覆寫OuterView中的dispatchTouchEvent方法的時(shí)候

  • 當(dāng)返回值為 true 的時(shí)候伐憾,直接結(jié)束在此方法中結(jié)束事件傳遞
image.png
  • 當(dāng)返回值為 false 的時(shí)候巢掺,事件會(huì)回傳到父節(jié)點(diǎn)(MainActivity)的onTouchEvent方法中
image.png

3. 當(dāng)覆寫OuterView中的onInterceptTouchEvent方法的時(shí)候

  • 當(dāng)返回值為 true 的時(shí)候利朵,阻止事件向下傳遞篮撑,轉(zhuǎn)到自己的onTouchEvent中
image.png
  • 當(dāng)返回值為 false 的時(shí)候,對(duì)本次事件傳遞不會(huì)有影響
image.png

4. 關(guān)于覆寫各個(gè)節(jié)點(diǎn)中的onTouchEvent方法的時(shí)候

  • 這個(gè)方法有個(gè)特點(diǎn)就是在岂,如果默認(rèn)不做任何處理奔则,各個(gè)節(jié)點(diǎn)的onTouchEvent方法執(zhí)行的順序一定是從里到外的(這里默認(rèn)點(diǎn)擊的是最里層View);當(dāng)有節(jié)點(diǎn)對(duì)事件進(jìn)行處理后蔽午,后續(xù)事件也會(huì)發(fā)送過來處理
4.1. MainActivity中返回true易茬、false或者super都沒什么區(qū)別,最后還是會(huì)回到MainActivity中

Down事件

image.png

MOVE及老、UP等后續(xù)事件

image.png
4.2. OuterView中返回true

Down事件

image.png

MOVE抽莱、UP等后續(xù)事件

image.png
4.3. OuterView中返回false

Down事件

image.png

MOVE、UP等后續(xù)事件

image.png
4.4. InnerView中返回true

Down事件

image.png

MOVE骄恶、UP等后續(xù)事件

image.png
4.5. InnerView中返回false

Down事件

image.png

MOVE食铐、UP等后續(xù)事件

image.png

這樣,所有的方法的影響基本就列舉完整了僧鲁,但是大多數(shù)情況下都是需要組合起來使用虐呻。基本就是系統(tǒng)事件傳遞主線中可以隨時(shí)進(jìn)行介入寞秃,根據(jù)每個(gè)方法的特性斟叼,去合理安排介入時(shí)機(jī)來完成事件的合理分發(fā)處理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末春寿,一起剝皮案震驚了整個(gè)濱河市犁柜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堂淡,老刑警劉巖馋缅,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绢淀,居然都是意外死亡萤悴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門皆的,熙熙樓的掌柜王于貴愁眉苦臉地迎上來覆履,“玉大人,你說我怎么就攤上這事费薄∠跞” “怎么了楞抡?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵伟众,是天一觀的道長。 經(jīng)常有香客問我召廷,道長凳厢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任竞慢,我火速辦了婚禮先紫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筹煮。我一直安慰自己遮精,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布败潦。 她就那樣靜靜地躺著本冲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪变屁。 梳的紋絲不亂的頭發(fā)上眼俊,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音粟关,去河邊找鬼疮胖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闷板,可吹牛的內(nèi)容都是我干的澎灸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼遮晚,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼性昭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起县遣,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤糜颠,失蹤者是張志新(化名)和其女友劉穎汹族,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體其兴,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顶瞒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了元旬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榴徐。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匀归,靈堂內(nèi)的尸體忽然破棺而出坑资,到底是詐尸還是另有隱情,我是刑警寧澤穆端,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布袱贮,位于F島的核電站,受9級(jí)特大地震影響徙赢,放射性物質(zhì)發(fā)生泄漏字柠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一狡赐、第九天 我趴在偏房一處隱蔽的房頂上張望窑业。 院中可真熱鬧,春花似錦枕屉、人聲如沸常柄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽西潘。三九已至,卻和暖如春哨颂,著一層夾襖步出監(jiān)牢的瞬間喷市,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工威恼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留品姓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓箫措,卻偏偏與公主長得像腹备,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斤蔓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349