當前位置:首頁 » 安卓系統 » ontoucheventandroid

ontoucheventandroid

發布時間: 2025-02-07 17:45:50

Ⅰ 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 會被調用。如此循環。

熱點內容
編譯器用英語 發布:2025-05-08 20:49:53 瀏覽:79
linux嵌入式培訓視頻 發布:2025-05-08 20:49:42 瀏覽:220
電影類平台如何選擇伺服器 發布:2025-05-08 20:48:15 瀏覽:715
加密狗故障 發布:2025-05-08 20:48:01 瀏覽:591
我的世界伺服器天堂隕落 發布:2025-05-08 20:47:21 瀏覽:340
怎麼查主網伺服器 發布:2025-05-08 20:37:04 瀏覽:213
linuxpython多版本 發布:2025-05-08 20:35:41 瀏覽:406
機器學習怎麼編譯代碼 發布:2025-05-08 20:03:51 瀏覽:64
華碩電腦音頻伺服器未響應 發布:2025-05-08 20:01:39 瀏覽:761
小米4清空緩存 發布:2025-05-08 19:56:36 瀏覽:776