Android 事件分發(fā)

在Android開(kāi)發(fā)中脚仔,事件分發(fā)機(jī)制是Android比較重要的知識(shí)悔醋,熟練應(yīng)用分發(fā)機(jī)制有助于更好的解決滑動(dòng)沖突點(diǎn)擊失效等問(wèn)題救崔,更容易的去開(kāi)發(fā)自定義控件扶供。當(dāng)然Android面試時(shí)事件分發(fā)機(jī)制是一個(gè)躲不掉的問(wèn)題筛圆,能搞清事件分發(fā)的來(lái)龍去脈,好工作就不遠(yuǎn)了椿浓。

Android事件分發(fā)機(jī)制的發(fā)生在View與View之間或者ViewGroup與View之間太援,當(dāng)一個(gè)點(diǎn)擊事件產(chǎn)生后,它的傳遞過(guò)程遵循如下順序:Activity->Window(PhoneWindow)->View ??

(如圖1)


圖1


Android事件分發(fā)機(jī)制主要由三個(gè)重要的方法共同完成的

dispatchTouchEvent:用于進(jìn)行點(diǎn)擊事件的分發(fā)

onInterceptTouchEvent:用于進(jìn)行點(diǎn)擊事件的攔截

onTouchEvent:用于處理點(diǎn)擊事件

只有在ViewGroup中才有onInterceptTouchEvent()方法的


下面我們通過(guò)例子介紹一下 用重寫(xiě)了三個(gè)重要方法的兩個(gè)ViewGroup 和重寫(xiě)了兩個(gè)方法的View

兩個(gè)ViewGroup是同樣的 (如圖2)

圖2

下面是重寫(xiě)的View(如圖3)

圖3

我們的界面效果圖(如圖4)

圖4

在我們不做任何處理的情況下點(diǎn)擊我們的View1 也就是紅色區(qū)域? 我們的log輸出為(如圖5)

圖5

從我們的日志中可以看出我們事件的分發(fā)有兩個(gè)過(guò)程 分發(fā)過(guò)程和處理過(guò)dispatchTouchEvent和onInterceptTouchEvent是分發(fā)過(guò)程onTouchEvent是處理過(guò)程扳碍。事件分發(fā)是由我們的父控件向子控件進(jìn)行分發(fā)提岔,子控件向控件反饋處理。


下面我們進(jìn)行對(duì)dispatchTouchEvent方法進(jìn)行處理 分發(fā)事件?

我們把ViewGroup2的dispatchTouchEvent返回值變?yōu)閠rue 表示該控件消費(fèi)掉該事件不再分發(fā)也不會(huì)再處理該事件(如圖6)

圖6


我們把ViewGroup2的dispatchTouchEvent返回值變?yōu)閒alse 表示在該控件這里不再分發(fā)繼續(xù)分發(fā)并把事件交由父控件處理(如圖7)

圖7

下面我們進(jìn)行對(duì)onInterceptTouchEvent方法進(jìn)行處理 事件的攔截

我們把ViewGroup2的onInterceptTouchEvent返回值變?yōu)閒alse 表示該控件不會(huì)攔截該事件 繼續(xù)分發(fā) log輸出信息(如圖5)與我們不做處理時(shí)是一樣的?

我們把ViewGroup2的onInterceptTouchEvent返回值變?yōu)閠rue 表示該控件攔截該事件 不再往子空間進(jìn)行分發(fā)笋敞,然后進(jìn)行層級(jí)的處理過(guò)程 ?(如圖8)

圖8

下面我們進(jìn)行對(duì)onTouchEvent方法進(jìn)行處理 事件的處理

我們把View1的onTouchEvent返回值變?yōu)閠rue 表示該控件處理該事件碱蒙,不再往父控件反饋 ?(如圖9)

圖9


簡(jiǎn)單總結(jié) ? 事件分發(fā)的過(guò)程是由父控件向子控件進(jìn)行分發(fā) ?子控件可以選擇處理該事件也可以繼續(xù)分發(fā)也可以反饋給上級(jí)處理。就是這樣的一個(gè)層級(jí)過(guò)程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赛惩,一起剝皮案震驚了整個(gè)濱河市哀墓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喷兼,老刑警劉巖篮绰,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異季惯,居然都是意外死亡吠各,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)勉抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贾漏,“玉大人,你說(shuō)我怎么就攤上這事藕筋∽萆ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵念逞,是天一觀的道長(zhǎng)困食。 經(jīng)常有香客問(wèn)我,道長(zhǎng)翎承,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任符匾,我火速辦了婚禮叨咖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啊胶。我一直安慰自己甸各,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布焰坪。 她就那樣靜靜地躺著趣倾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪某饰。 梳的紋絲不亂的頭發(fā)上儒恋,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音黔漂,去河邊找鬼诫尽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炬守,可吹牛的內(nèi)容都是我干的牧嫉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼酣藻!你這毒婦竟也來(lái)了曹洽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辽剧,失蹤者是張志新(化名)和其女友劉穎衣洁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抖仅,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坊夫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撤卢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片环凿。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖放吩,靈堂內(nèi)的尸體忽然破棺而出智听,到底是詐尸還是另有隱情,我是刑警寧澤渡紫,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布到推,位于F島的核電站,受9級(jí)特大地震影響惕澎,放射性物質(zhì)發(fā)生泄漏莉测。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一唧喉、第九天 我趴在偏房一處隱蔽的房頂上張望捣卤。 院中可真熱鬧,春花似錦八孝、人聲如沸董朝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)子姜。三九已至,卻和暖如春楼入,著一層夾襖步出監(jiān)牢的瞬間哥捕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工浅辙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扭弧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓记舆,卻偏偏與公主長(zhǎng)得像鸽捻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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