您好,登錄后才能下訂單哦!
1、touch事件從Activity開始向下逐層派發
一直派發到焦點控件進行處理
2、如果控件的事件處理方法返回true
則,該控件消費且持續關注此事件
否則,該事件向該控件的上一層容器傳遞
3、控件的touch監聽器的onTouch方法 先于
控件本身的onTouchEvent執行
Touch事件派發和處理的方法
dispatchTouchEvent
onInterceptTouchEvent(只有ViewGroup有該攔截方法)
onTouchListener.onTouch
onTouchEvent
假設一個Activity只包含一個Linearlayout,這個LinearLayout又包含一個TextView。從Log中可以看出
當用戶按下這個TextView時,所執行的函數順序是:
Activity.dispatchTouchEvent
Linearlayout.dispatchTouchEvent
LinearLayout.onInterceptTouchEvent(LinearLayout是ViewGroup)
TextView.dispatchTouchEvent
TextView.onTouchListener.onTouch
TextView.onTouchEvent
LinearLayout.onTouchListener.onTouch
LinearLayout.onTouchEvent
最后是Activity.onTouchEvent
以上是每一層都不消費這個touch事件的情況,即所有方法都return false的情況。
如果任意一個方法消費了這個事件,即返回了true,這種情況下事件只到此方法為止,后面的方法都不執行。而后續事件將也只執行到此方法,即此方法消費并持續關注此事件,如:移動和抬起等后續事件。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。