當一個觸控事件發生時，每個元件都會在第1時間被通知，從Activity層開始層層往上，通知到最頂層的View。
每個元件在這段被通知的過程中，都有機會來處理這個事件，Activity是第一個聆聽到事件的元件，但是它卻是在最後才被處理到的元件。
如果Activity或某些ViewGroup想要立即處理觸控事件(並且不給其它元件任何處理的機會)，那麼可以在該元件的onInterceptTouchEvent()中返回true。
如果一個View(或ViewGroup)想要擁有OnTouchListener事件，基本上該觸控事件是由OnTouchListener.onTouch()來處理，否則則由onTouchEvent()事件來處理。如果onTouchEvent()針對每個觸控事件皆返回true，那麼事件將被處理到該階層而停止，後面剩餘的元件將無法得到任何觸控的機會。
下面的圖例也許能把整件事變得稍微簡單些，舉例來說，在Activity與ViewGroup A(根佈局)之間還有Window與DecorView。我們把它們排除在上面，因為我們一般來說不會與這兩個階層互動。不過，我會在下面的範例中引入它們。下面的描述是觸控事件的程式碼，你可以點擊連結來看源始碼。
Activity的dispatchTouchEvent()被通知有一個觸控事件，這個觸控事件藉由MotionEvent傳入，過程中包含了x、y的坐標值、時間。事件類型與其它的信息。
觸發事件發到superDispatchTouchEvent()到Window階層，Window是一件抽象類別，實際實作的是PhoneWindow。
接下來我們取到的通知是DecorView的superDispatchTouchEvent()。DecorView是處理上方狀態列(status bar) 、下方導覽列(navigation bar)以及內容...等等的東西。它實際上只是一個FrameLayout的子類別，它本身就是ViewGroup的子類。
下一個得到通知(如果我錯了請糾正我)的是你的Activity裡的content view。這個就是你在Android Studio佈局編輯器裡編輯的、你設為根佈局的layout xml。因此，無論你選擇竹旳是RelativeLayout、LinearLayout、或是ConstraintLayout，它們都隸屬於ViewGroup的子類別。ViewGroup在dispatchTouchEvent()中獲得到觸控事件。這是我上圖裡的ViewGroup A。
ViewGroup將會開始通知觸控事件至底下的任何子元件項目，這也包含了ViewGroup的所有子項。在圖例中我以ViewGoup B來做舉例。
在任何情況下，隸屬於ViewGroup的元件皆可透過onInterceptTouchEvent()回傳true來讓流程"短路"。
假設沒有ViewGroup讓通知流程縮短，那麼通知事件自然結束的點就是在View的dispatchTouchEvent()事件被調用的時候。
通知事件的流程到此結束，是時候開始往上處理觸控事件了。如果在View層有一個OnTouchListner，那麼它會在onTouch()中得到第1次的觸控處理的機會。否則會由View的onTouchEvent()來處理觸控事件。
接下來所有的ViewGroups都像View層一樣，皆以遞迴的方式向上處理觸控事件。儘管我沒有在上圖指出ViewGroup是View的子類別，但我描述有關OnTouchListener.onTouch()和onTouchEvent()也皆適用於ViewGroups。
1最後，如果沒有任何的元件需要它，Acitivy也會在onTouchEvent()中得到最後一次的機會來處理觸控事件。
也許你不需要這樣做，除非你需要做一些額外的路由，否則默認狀況下這個情況是不會發生的。要監控觸控事件，你可以覆寫onInterceptTouchEvent()即可。
如果你只是想監控正在進入的觸控事件，你可以在此時處理並返回false。
但是，覆寫這個函式的主要目的是為了讓ViewGroup能處理特定類型的觸控事件，同時讓子元件處理其它類型的事件。舉例來說，ScrollView這樣子實作來處理滾動，同時它的子元件(像是Button)則是處理按鈕點擊事件。相反地，如果子視圖不想要讓父母竊取其觸控事件，則可以調用requestDisallowTouchIntercept()。
觸控類型有哪些？
ACTION_DOWN - 這是觸控事件的開始，在onTouchEvent()裡ACTION_DOWN的時候你也許永遠要返回true。否則，你不會再收到任何更多的事件。
ACTION_MOVE - 當你的手指在螢幕上不斷的滑動時，該事件會不斷的被觸發。
ACTION_UP - 這是觸控事件的最後一個事件。
第二類型的是ACTION_CANCEL，如果ViewGroup樹狀上決定攔截觸控事件，則會收到該事件。
你可以在這裡參考其它類型的MotionEvents，因為Android是多點觸控的，當其它手指("點擊")螢幕時，事件也會被觸發。