真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android編程下Touch事件的分發(fā)和消費(fèi)機(jī)制理解是怎樣的-創(chuàng)新互聯(lián)

Android編程下Touch事件的分發(fā)和消費(fèi)機(jī)制理解是怎樣的,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)頁設(shè)計(jì)、成都小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、成都app軟件開發(fā)公司是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!

Android 中與 Touch 事件相關(guān)的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能夠響應(yīng)這些方法的控件包括:ViewGroup 及其子類、Activity。方法與控件的對(duì)應(yīng)關(guān)系如下表所示:


Touch 事件相關(guān)方法 方法功能  
 ViewGroup   
   Activity    
 public boolean dispatchTouchEvent(MotionEvent ev)事件分發(fā) 
 Yes Yes
 public boolean onInterceptTouchEvent(MotionEvent ev)  
事件攔截 
 Yes No
 public boolean onTouchEvent(MotionEvent ev)事件響應(yīng) 
 Yes Yes

從這張表中我們可以看到 ViewGroup 及其子類對(duì)與 Touch 事件相關(guān)的三個(gè)方法均能響應(yīng),而 Activity 對(duì) onInterceptTouchEvent(MotionEvent ev) 也就是事件攔截不進(jìn)行響應(yīng)。另外需要注意的是 View 對(duì) dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev) 的響應(yīng)的前提是可以向該 View 中添加子 View,如果當(dāng)前的 View 已經(jīng)是一個(gè)最小的單元 View(比如 TextView),那么就無法向這個(gè)最小 View 中添加子 View,也就無法向子 View 進(jìn)行事件的分發(fā)和攔截,所以它沒有dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev),只有 onTouchEvent(MotionEvent ev)。

一、Touch 事件分析

 事件分發(fā):public boolean dispatchTouchEvent(MotionEvent ev)

Touch 事件發(fā)生時(shí) Activity 的 dispatchTouchEvent(MotionEvent ev) 方法會(huì)以隧道方式(從根元素依次往下傳遞直到最內(nèi)層子元素或在中間某一元素中由于某一條件停止傳遞)將事件傳遞給最外層 View 的 dispatchTouchEvent(MotionEvent ev) 方法,并由該 View 的 dispatchTouchEvent(MotionEvent ev) 方法對(duì)事件進(jìn)行分發(fā)。dispatchTouchEvent 的事件分發(fā)邏輯如下:

  • 如果 return true,事件會(huì)分發(fā)給當(dāng)前 View 并由 dispatchTouchEvent 方法進(jìn)行消費(fèi),同時(shí)事件會(huì)停止向下傳遞;

  • 如果 return false,事件分發(fā)分為兩種情況:

  1. 如果當(dāng)前 View 獲取的事件直接來自 Activity,則會(huì)將事件返回給 Activity 的 onTouchEvent 進(jìn)行消費(fèi);

  2. 如果當(dāng)前 View 獲取的事件來自外層父控件,則會(huì)將事件返回給父 View 的 onTouchEvent 進(jìn)行消費(fèi)。

  • 如果返回系統(tǒng)默認(rèn)的 super.dispatchTouchEvent(ev),事件會(huì)自動(dòng)的分發(fā)給當(dāng)前 View 的 onInterceptTouchEvent 方法。

 事件攔截:public boolean onInterceptTouchEvent(MotionEvent ev) 

在外層 View 的 dispatchTouchEvent(MotionEvent ev) 方法返回系統(tǒng)默認(rèn)的 super.dispatchTouchEvent(ev) 情況下,事件會(huì)自動(dòng)的分發(fā)給當(dāng)前 View 的 onInterceptTouchEvent 方法。onInterceptTouchEvent 的事件攔截邏輯如下:

  • 如果 onInterceptTouchEvent 返回 true,則表示將事件進(jìn)行攔截,并將攔截到的事件交由當(dāng)前 View 的 onTouchEvent 進(jìn)行處理;

  • 如果 onInterceptTouchEvent 返回 false,則表示將事件放行,當(dāng)前 View 上的事件會(huì)被傳遞到子 View 上,再由子 View 的 dispatchTouchEvent 來開始這個(gè)事件的分發(fā);

  • 如果 onInterceptTouchEvent 返回 super.onInterceptTouchEvent(ev),事件默認(rèn)會(huì)被攔截,并將攔截到的事件交由當(dāng)前 View 的 onTouchEvent 進(jìn)行處理。


 事件響應(yīng):public boolean onTouchEvent(MotionEvent ev)

在 dispatchTouchEvent 返回 super.dispatchTouchEvent(ev) 并且 onInterceptTouchEvent 返回 true 或返回 super.onInterceptTouchEvent(ev) 的情況下 onTouchEvent 會(huì)被調(diào)用。onTouchEvent 的事件響應(yīng)邏輯如下:

  • 如果事件傳遞到當(dāng)前 View 的 onTouchEvent 方法,而該方法返回了 false,那么這個(gè)事件會(huì)從當(dāng)前 View 向上傳遞,并且都是由上層 View 的 onTouchEvent 來接收,如果傳遞到上面的 onTouchEvent 也返回 false,這個(gè)事件就會(huì)“消失”,而且接收不到下一次事件。

  • 如果返回了 true 則會(huì)接收并消費(fèi)該事件。

  • 如果返回 super.onTouchEvent(ev) 默認(rèn)處理事件的邏輯和返回 false 時(shí)相同。

看完上述內(nèi)容,你們掌握Android編程下Touch事件的分發(fā)和消費(fèi)機(jī)制理解是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站標(biāo)題:Android編程下Touch事件的分發(fā)和消費(fèi)機(jī)制理解是怎樣的-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/icsjo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部