android 的事件傳遞

android 的事件傳遞,一直是我比較頭疼的問題,今天好好理一下
先看圖片


未命名.png

基本結(jié)構(gòu),可以看Activity 下面的那個(gè)圖,Activity中ViewGroup包含有View。
第一個(gè)先來看Activity:如果在Activity中返回的dispatchEvent(MotionEvent ev) 的方法中,返回true 和 false ,
事件都是不會(huì)往下繼續(xù)傳遞的了,也就是自己消費(fèi)了該事件。
如果返回super.dispatchEvent(MotionEvent ev),則會(huì)繼續(xù)傳遞給ViewGroup,一般情況下,如果要自定義View包括ViewGroup,都不會(huì)在Activity層重寫dispatchEvent(MotionEvent ev)方法,使用默認(rèn)的即可

第二是ViewGroup :當(dāng)事件傳遞到ViewGroup時(shí),會(huì)先走事件攔截方法也就是onInterceptTouch(MotionEvent ev),也是重寫步驟中很關(guān)鍵的方法。如果返回true ,則自己消費(fèi)了該事件,不會(huì)繼續(xù)傳遞,則其他的子View 不會(huì)再接收到事件消息,如果返回false 或是默認(rèn)的super.onInterceptTouch(MotionEvent ev)則是會(huì)繼續(xù)傳遞給子view的。

接下來就是View ,view 主要看的onTouchEvent(MotionEvent ev),如果返回true ,則會(huì)自己消費(fèi)該事件,不會(huì)向上繼續(xù)傳遞了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,138評(píng)論 25 708
  • 在Android尤其是手機(jī)端的開發(fā)中,很多情況下涉及到點(diǎn)擊事件,或者說是觸摸事件的特殊處理。比如滑動(dòng)沖突等,因此熟...
    老衲法號(hào)能吃閱讀 756評(píng)論 0 4
  • 在Android中,事件主要包括點(diǎn)按、長(zhǎng)按、拖拽、滑動(dòng)等,點(diǎn)按又包含單擊和雙擊,另外還包括單指操作和多指操作。所有...
    MengkZhang閱讀 204評(píng)論 0 1
  • 第三章:結(jié)構(gòu)與背景 一切陳詞濫調(diào)的根源都可以追溯到唯一的原因:作者不了解他故事中的世界。這種作者選好背景便開始寫劇...
    廢柴點(diǎn)不著閱讀 2,254評(píng)論 0 7
  • ℃嘻嘻*^_^*都是私藏啦 ℃內(nèi)容方方面面,學(xué)習(xí),生活,成長(zhǎng) &玩手機(jī)和一些不需要集中注意力的時(shí)候聽聽會(huì)很有收獲。...
    俶噷啊閱讀 468評(píng)論 0 1

友情鏈接更多精彩內(nèi)容