老生常談android中的事件傳遞和處理機(jī)制-創(chuàng)新互聯(lián)

一直以來,都被android中的事件傳遞和處理機(jī)制深深的困擾!今天特意來好好的探討一下。現(xiàn)在的感覺是,只要你理解到位,其實事件的

創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站開發(fā)、品牌網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷推廣。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗,以及在手機(jī)等移動端的優(yōu)質(zhì)呈現(xiàn)。網(wǎng)站制作、成都做網(wǎng)站、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運營、VI設(shè)計、云產(chǎn)品.運維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。

傳遞和處理機(jī)制并沒有想象中的那么難??傊?,不要自己打擊自己,要相信自己能掌握這塊知識。好了,下面是我今天的收獲,希望也

能對你有一點幫助。

一、擬人化來理解android中的事件機(jī)制

其實android中的事件傳遞與處理機(jī)制跟我們生活中的事件處理是一樣的。這里有一個生活中的例子,很能說明這個問題。闡述如下:

你是一個公司的員工,你的上頭有一個主管,主管上頭呢還有一個經(jīng)理。為了簡單,你們這個團(tuán)隊就有這三個人。那么如果上頭安排一件事下來要處理,流程是怎樣的呢?顯然應(yīng)該是由你的經(jīng)理將這件事安排給你的主管來處理,你的主管再將這件事安排給你來處理。等你把這件事辦好了,你就應(yīng)該給你的主管報告,再由你的主管來向你的經(jīng)理報告。顯然,你的主管和經(jīng)理也有處理這件事的權(quán)限,如果他們覺得事情很復(fù)雜,你辦不了,或者他們比較照顧下級,可能就自己把這件事給辦了,這個時候這件事就不會再傳遞給下一級來處理了。這個事件處理的過程,是不是太容易理解了!

其實android中的事件處理流程就是跟生活中的事件處理是一樣的。比如你在ViewGroupA中嵌套了一個VewiGroupB,然后又在ViewGroupB

中嵌套了一個MyView。那么一個觸摸事件傳遞過來,會發(fā)生什么情況呢?類比上面的公司員工的處理事件,顯然會發(fā)生下面的過程:

觸摸事件傳遞過來后,ViewGroupA一看自己里面還有一個員工可以利用,就是ViewGroupB,那不用白不用,就會把這個事件傳遞給ViewGroupB,告訴他,你給我把這個事件處理了!


ViewGroupB呢一看,我不怕,我里面也有一個員工就是MyView,它得給我干活,于是又會把這個事件傳遞給MyView,讓它來處理。MyView一看,沒辦法啊,我手底下沒有員工了,那怎么辦,我只能自己處理了(前提是它有處理這個事件的能力),所以就把這個觸摸事件給處理了。處理完成后呢?MyView就是給ViewGroupB報告,我已經(jīng)把事情辦好了,你來審核一下
,看看辦理的咋樣。ViewGroupB一審核,覺得不錯,就再將結(jié)果呈現(xiàn)給ViewGroupA。ViewGroupA再審核,通過了才算通過。在這個過程中,也可能出現(xiàn)幾種情況:

(1)MyView說,完蛋了,這事我的能力辦不好啊,于是就向VeiwGroupB報告,我沒有處理,請你來處理,你是我上司,能力比我強(qiáng)。于是ViewGroupB就會來幫忙處理。當(dāng)然了,


如果ViewGroupB也沒能力處理,那就只能反饋給VeiwGroupA,讓它來消化這個事件。


(2)也可能MyView處理非常完美,向ViewGroupB一報告,ViewGroupB一開心就說不用再交給ViewGroupA審核了,我擔(dān)保通過,于是事件到此直接終止。

上面用很形象的話來講adnroid中的事件傳遞和處理機(jī)制講解了一下。android用下面的幾個方法將上面的過程完美封裝了:

在ViewGroup中,有下面三個方法:
(1)dispatchTouchEvent   該方法用來分發(fā)事件,一般不會重寫這個方法
(2)onInterceptTouchEvent 用來攔截事件
(3)onTouchEvent      用來處理事件,這個方法應(yīng)該大家很常見了吧

而View中,只有兩個方法,即:(1)dispatchTouchEvent   該方法用來分發(fā)事件,一般不會重寫這個方法
(2)onTouchEvent      用來處理事件,這個方法應(yīng)該大家很常見了吧

分享題目:老生常談android中的事件傳遞和處理機(jī)制-創(chuàng)新互聯(lián)
本文URL:http://bm7419.com/article40/dpdjho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)定制開發(fā)、動態(tài)網(wǎng)站、商城網(wǎng)站、關(guān)鍵詞優(yōu)化、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司