導航:首頁 > 操作系統 > android分發攔截

android分發攔截

發布時間:2025-09-24 13:41:25

android事件分發機制

Android中對視圖的Touch事件進行分發處理。
單手指操作:ACTION_DOWN -> ACTION_MOVE -> ACTION_UP
多手指操作:ACTION_DOWN -> ACTION_POINTER_DOWN -> ACTION_MOVE -> ACTION_POINTER_UP -> ACTION_UP.

(1) dispatchTouchEvent() :事件分發

(2) onInterceptTouchEvent() :事件攔截

(3) onTouchEvent() :事件處理

ViewGroup 的相關事件有三個:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。

View 的相關事件只有兩個:dispatchTouchEvent、onTouchEvent。

先分析ViewGroup的處理流程:首先得有個結構模型概念:ViewGroup和View組成了一棵樹形結構,最頂層為Activity的ViewGroup,下面有若乾的ViewGroup節點,每個節點之下又有若乾的ViewGroup節點或者View節點,依次類推。如圖:

點擊事件達到頂級 View(一般是一個 ViewGroup),會調用 ViewGroup 的 dispatchTouchEvent 方法,如果頂級 ViewGroup 攔截事件即 onInterceptTouchEvent 返回 true,則事件由 ViewGroup 處理,這時如果 ViewGroup 的 mOnTouchListener 被設置,則 onTouch 會被調用,否則 onTouchEvent 會被調用。也就是說如果都提供的話,onTouch 會屏蔽掉 onTouchEvent。在 onTouchEvent 中,如果設置了 mOnClickListenser,則 onClick 會被調用。如果頂級 ViewGroup 不攔截事件,則事件會傳遞給它所在的點擊事件鏈上的子 View,這時子 View 的 dispatchTouchEvent 會被調用。如此循環。

㈡ android事件分發機制 什麼意思

android事件分發機制 就是一個觸摸事件發生了,從一個窗口傳遞到一個視圖,再傳遞到另外一個視圖,最後被消費的過程,在android中還是比較復雜的傳遞流程如下:

(1) 事件從Activity.dispatchTouchEvent()開始傳遞,只要沒有被停止或攔截,從最上層的View(ViewGroup)開始一直往下(子View)傳遞。子View可以通過onTouchEvent()對事件進行處理。

(2) 事件由父View(ViewGroup)傳遞給子View,ViewGroup可以通過onInterceptTouchEvent()對事件做攔截,停止其往下傳遞。

(3) 如果事件從上往下傳遞過程中一直沒有被停止,且最底層子View沒有消費事件,事件會反嚮往上傳遞,這時父View(ViewGroup)可以進行消費,如果還是沒有被消費的話,最後會到Activity的onTouchEvent()函數。

(4) 如果View沒有對ACTION_DOWN進行消費,之後的其他事件不會傳遞過來。

(5) OnTouchListener優先於onTouchEvent()對事件進行消費。

上面的消費即表示相應函數返回值為true。

閱讀全文

與android分發攔截相關的資料

熱點內容
程序員被圍觀經典段子 瀏覽:350
安卓中怎麼建立聯系 瀏覽:169
抖音里的app怎麼做 瀏覽:827
安卓手機怎麼把電話轉移到蘋果手機 瀏覽:537
機械編程那個好用 瀏覽:400
雲伺服器提供商ip 瀏覽:890
不要小看程序員的戰鬥力 瀏覽:517
程序員要看的電影 瀏覽:916
筆記本連線到伺服器怎麼切換屏幕 瀏覽:642
android分發攔截 瀏覽:926
活碼系統源碼獨立版 瀏覽:99
androidx86vm 瀏覽:390
android監聽鍵盤高度 瀏覽:741
谷輪壓縮機是哪個國家的 瀏覽:841
網易伺服器怎麼開連點 瀏覽:623
計演算法則怎麼寫 瀏覽:199
編譯原理文法中的加號是終結符嗎 瀏覽:461
貓頭鷹小說APP怎麼樣 瀏覽:842
伺服器如何看埠 瀏覽:820
游戲程序員門檻 瀏覽:340