日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]當(dāng)用戶(hù)觸摸屏幕時(shí),系統(tǒng)會(huì)對(duì)觸摸事件做出相應(yīng)的相應(yīng),這個(gè)事件會(huì)產(chǎn)生一個(gè)MotionEvent,系統(tǒng)根據(jù)一定的規(guī)則將其傳遞給View進(jìn)行處理,這個(gè)過(guò)程就是事件分發(fā)機(jī)制了。事件的傳遞分為兩個(gè)階段,即捕獲階段

當(dāng)用戶(hù)觸摸屏幕時(shí),系統(tǒng)會(huì)對(duì)觸摸事件做出相應(yīng)的相應(yīng),這個(gè)事件會(huì)產(chǎn)生一個(gè)MotionEvent,系統(tǒng)根據(jù)一定的規(guī)則將其傳遞給View進(jìn)行處理,這個(gè)過(guò)程就是事件分發(fā)機(jī)制了。

事件的傳遞分為兩個(gè)階段,即捕獲階段和冒泡階段。捕獲階段:事件最先由最外層的View接收,然后依次向內(nèi)層傳遞,直到傳遞到最小的View,捕獲階段完成;冒泡階段:也就是捕獲階段的逆過(guò)程,先由最小的View開(kāi)始向外冒泡,直到將事件傳遞到最外層View。

在捕獲和冒泡的過(guò)程中,可以控制事件是否被攔截,是否繼續(xù)分發(fā),還是做出響應(yīng)后消費(fèi)掉,這里是通過(guò)三個(gè)方法來(lái)控制事件的傳遞和消費(fèi)機(jī)制的,系統(tǒng)又根據(jù)方法的返回值來(lái)進(jìn)行相應(yīng)的控制:

事件分發(fā)方法:publicbooleandispatchTouchEvent(MotionEventev)

當(dāng)系統(tǒng)監(jiān)聽(tīng)到事件時(shí),首先由Activity捕獲到,如果該方法中返回true,表示事件將不進(jìn)行分發(fā)了,并且事件自身被消費(fèi)掉了,此時(shí)事件分發(fā)過(guò)程結(jié)束;如果該方法返回為false,表示事件還是不會(huì)向下分發(fā),而是由上層的onTouchEvent方法進(jìn)行消費(fèi);如果該方法返回為 super.dispatchTouchEvent(ev),事件將分發(fā)給本層的事件攔截onInterceptTouchEvent 方法進(jìn)行處理。

事件攔截方法:publicbooleanonInterceptTouchEvent(MotionEventev)

如果該方法返回 true,表示將事件進(jìn)行攔截,并將攔截到的事件交由本層控件的onTouchEvent進(jìn)行處理;如果該方法返回是false或super.onInterceptTouchEvent(ev),則表示不對(duì)事件進(jìn)行攔截,并將事件分發(fā)到子View,由子View的dispatchTouchEvent進(jìn)行處理。

事件響應(yīng)方法:public booleanonTouchEvent(MotionEventev)

如果該方法返回true,表示onTouchEvent處理完事件后消費(fèi)了此次事件,此時(shí)事件終結(jié),將不會(huì)進(jìn)行后續(xù)的冒泡;如果onTouchEvent返回false或super.onTouchEvent(ev),事件在onTouchEvent中處理后繼續(xù)向上層View冒泡,且由上層View的onTouchEvent進(jìn)行處理。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉