View,ViewGroup,Activity三者的OnTouchEvent事件分發
首先確定有三種,由內向外依次為:
1、View自己的onTouchEvent
2、ViewGroup的onTouchEvent,由於要管理它的子View的onTouchEvent,所以多了個onInterceptTouchEvent(鼓勵過載這個而不是dispatchTouchEvent,因為後者是對ViewGroup共性的提取,前者才是針對個例)
3、Activity的onTouchEvent
三者都是先處理setOnTouchEvent的onTouch事件,返回true表示不想下傳遞,就不進入到onTouchEvent中了
先說ViewGroup的onInterceptTouchEvent,兩種情況:
①、返回值為True,代表攔截這次事件,直接進入到ViewGroup的onTouchEvent中,就不會進入到View的onTouchEvent了
②、返回值為False,代表不攔截這次事件,不進入到ViewGroup的onTouchEvent中,直接進入到View的onTouchEvent中
再說三者的onTouchEvent:
①、View的onTouchEvent返回為false表示view處理完onTouchEvent後不消費這次事件,那麼這個事件就會繼續傳遞到他的上一層ViewGroup的onTouchEvent事件中,返回true的話就傳遞完畢,進入不到ViewGroup的onTouchEvent中了
②、ViewGrop的onTouchEvent返回為false表示這個ViewGroup處理完onTouchEvent後不消費這次事件,這個事件就會繼續傳遞到activity的onTouchEvent中,返回為true的話就傳遞完畢,進入不到activity的onTouchEvent中了
③、activity的onTouchEvent,同上
總之,如果最裡層的返回false就會交給他的上一層處理,否則就會消費這次事件,停止傳遞,over!
相關推薦
View,ViewGroup,Activity三者的OnTouchEvent事件分發
首先確定有三種,由內向外依次為: 1、View自己的onTouchEvent 2、ViewGroup的onTouchEvent,由於要管理它的子View的onTouchEvent,所以多了個onInterceptTouchEvent(鼓勵過載這個而不是dispatchTouchEvent,因為後者是對Vie
Android6.0原始碼解讀之Activity點選事件分發機制
本篇博文是Android點選事件分發機制系列博文的第四篇,主要是從解讀Activity類的原始碼入手,根據原始碼理清Activity點選事件分發原理,並掌握Activity點選事件分法機制。特別宣告的是,本原始碼解讀是基於最新的Android6.0版本。
事件分發系列—View中的dispatchTouchEvent和onTouchEvent分析
dispatchTouchEvent 話不多說直接上原始碼 /** * Pass the touch screen motion event down to the target view, or this * view if
Android中View和ViewGroup事件分發攔截機制完美分析
出自:http://www.cnblogs.com/linjzong/p/4191891.html Touch事件分發中只有兩個主角:ViewGroup和View。Activity的Touch事件事實上是呼叫它內部的ViewGroup的Touch事件,可以直接當成Vie
Android事件分發之子View駁回ViewGroup攔截原理分析
雖然網上關於這一塊的博文很多,但是找了很久都沒有找到比較全面的分析,所以想自己也開始寫一些部落格,一來讓自己加深印象,二來希望能夠給大家多多少少帶來一些幫助。好了廢話不多說,直接進入主題。 Android事件分發圖 如果用一張圖來描述事件的流程走向的話,
Android中ViewGroup、View事件分發機制原始碼分析總結(雷驚風)
1.概述 很長時間沒有回想Android中的事件分發機制了,開啟目前的原始碼發現與兩三年前的實現程式碼已經不一樣了,5.0以後發生了變化,更加複雜了,但是萬變不離其宗,實現原理還是一樣的,在這裡將5.0以前的時間分發機制做一下原始碼剖析及總結。會涉及到幾個方
Android View 事件分發機制原始碼詳解(ViewGroup篇)
前言 我們在學習View的時候,不可避免會遇到事件的分發,而往往遇到的很多滑動衝突的問題都是由於處理事件分發時不恰當所造成的。因此,深入瞭解View事件分發機制的原理,對於我們來說是很有必要的。由於View事件分發機制是一個比較複雜的機制,因此筆者將寫成兩篇文
Android View 事件分發機制 原始碼解析(ViewGroup篇)
1. 前言 android點選 事件一直以來都是很多安卓程式設計師的心病,之前通過demo模擬總結出一些經驗,但是不看原始碼的程式設計師不是好程式設計師,這段時間,系統的梳理了下整個事件傳遞的原始碼,希望可以幫助大家徹底理解andriod的點選
Android事件分發機制二:viewGroup與view對事件的處理
## 前言 很高興遇見你~ 在上一篇文章 [Android事件分發機制一:事件是如何到達activity的?](https://juejin.cn/post/6918272111152726024) 中,我們討論了觸控資訊從螢幕產生到傳送給具體 的view處理的整體流程,這裡先來簡單回顧一下: ![整體
談談我對Android View事件分發的理解
event 調用 ack 處理 group ans import ras 運行 寫這篇博客的緣由。近期因為項目中用到相似一個LinearLayout中水平布局中,有一個TextView和Button,然後對該LinearLayout布局設置點擊事件。點擊
談談-View的事件分發機制
探索 request 開始 owin allow 同時 ret 藝術 返回 所謂點擊事件的事件分發,其實就是對MotionEvent事件的分發過程,即當一個MotionEvent產生之後,系統需要把這個事件傳遞給一個具體的View,而這個傳遞的過程就是分發過程。
Android查缺補漏(View篇)--事件分發機制
touch事件 滑動沖突 今天 version schema ttr 步驟 isp win 事件分發機制是Android中非常重要的一個知識點,同時也是難點,相信到目前為止很多Android開發者對事件分發機制並沒有一個非常系統的認識,當然也包括博主個人在內。可能在平時的開
ViewGroup事件分發機制解析
節點 view 效果 含義 oat pat ria reset poi 最近在看View的事件分發機制,感覺比復雜的地方就是ViewGrop的dispatchTouchEvent函數,便對照著源碼研究了一下。故名思意這個函數起到的作用就是分發事件,在具體分析之前還要說明幾個
Android View 的事件分發原理解析
pri ping res 參考文獻 方法 處理 llb tst ancestor 作為一名 Android 開發者,每天接觸最多的就是 View 了。Android View 雖然不是四大組件,但其並不比四大組件的地位低。而 View 的核心知識點事件分發機制則是不少剛入門
【Android】原始碼分析 - View事件分發機制
事件分發物件 (1)所有 Touch 事件都被封裝成了 MotionEvent 物件,包括 Touch 的位置、時間、歷史記錄以及第幾個手指(多指觸控)等。 (2)事件型別分為 ACTION_DOWN, ACTION_UP,ACTION_MOVE,ACTION_POINTER_D
view事件分發原始碼理解
有些困難無法逃避,沒辦法,那就只有去解決它。view事件分發對我而言是一塊很難啃的骨頭,看了《安卓開發藝術探索》關於這個知識點的講解,看了好幾遍,始終不懂,最終通過除錯分析結果,看部落格,再回過頭看,總算能瞭解個大概。真的只能說大概,因為我在理解的過程中,還是會刻意忽略掉不少我不懂的又會誘導我深入分析的知
Andrid View事件分發機制原始碼分析
Android 的view樹結構大家都清楚,但是事件序列是經過一個怎樣的處理路徑那。今天就帶著疑問來看看原始碼,去尋找答案。 首先我們先看事件如何從Activity開始分發。 public class Activity extends ContextThemeWrapper
安卓自定義View進階-事件分發機制詳解
Android 事件分發機制詳解,在上一篇文章 事件分發機制原理 中簡要分析了一下事件分發機制的原理,原理是十分簡單的,一句話就能總結:責任鏈模式,事件層層傳遞,直到被消費。 雖然原理簡單,但是隨著 Android 不斷的發展,實際運用場景也越來越複雜,所以想要徹底玩轉事件分發機制還
13.View的事件分發機制——dispatchTouchEvent詳解
在前面的第二篇文章中,我們提過,View的事件分發是一種委託思想:上層委託下層,父容器委託子元素來處理這個流程。接下來,我們就將深入去學習View的事件分發機制。 1.事件的傳遞流程 事件,在A
事件分發理解:在整個介面的觸控事件中分別處理某些view
軟鍵盤: 1,showSoftInput(view, InputMethodManager.SHOW_FORCED); 可通過第二個引數flags設定SHOW_IMPLICIT效果就是觸控edittext外任何區域就隱藏軟鍵盤 設定flags為SHOW_FORCED觸控任何區域不隱藏