Android開發的朋友經常處理各種觸控事件,然而在觸控事件的傳遞過程中主要用到三個方法:dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()。相信這困擾了很多朋友,下面通過圖文給大家介紹一下它們之間的傳遞過程。
工具/原料
android
android studio
方法/步驟
事件的起源:
我們都知道觸控事件是從Activity的dispatchTouchEvent方法開始的。再呼叫父類的super.dispatchTouchEvent(ev),事件向派發。
ViewGroup與View關係:View是android控制元件的最簡單的一個類,所有的控制元件都直接或間接繼承View,即ViewGroup繼承View。View有兩個回撥函式dispatchTouchEvent和onTouchEvent;ViewGroup有三個回撥函式dispatchTouchEvent、onTouchEvent和onInterceptTouchEvent。
dispatchTouchEvent事件說明:
dispatchTouchEvent只負責處理觸控事件的派發,事件由Activity的dispatchTouchEvent開始的。再執行父類的
super.dispatchTouchEvent(ev)事件向下派發。
onInterceptTouchEvent事件說明:
onInterceptTouchEvent是ViewGroup提供的方法,它的預設返回false表示不攔截事件,當返回true時表示攔截了事件,即自己處理消費。
onTouchEvent事件說明:
ViewGroup和View都有這個方法,onTouchEvent這個方法主要處理觸控事件的按下移動和彈起的操作,當返回為true時表示消費了這個事件,false則不消費,即返回上一層處理。
事件的傳遞過程:
Android中事件的傳遞過程都是從父佈局傳遞到子佈局,父佈局可以有很多個,即ViewGroup-->ViewGroup-->View的過程,ViewGroup起到的是透傳作用。
注意事項
如果幫到你了 請在下面投一票 感謝~