android原始碼---ViewGroup的dispatchTouchEvent()的原始碼分析
阿新 • • 發佈:2018-12-09
貌似在LinearLayout RelativeLayout的dispatchTouchEvent()方法都在ViewGroup中。對於TextView的也是在View中。 ①當呼叫方法的時候,如果是ACTION_DOWN時,要清除原有的觸控的事件。 ②對於cancelAndClearTouchTargets()方法,引數event不可能為null,因此重要的是for迴圈。然後呼叫dispatchTransformedTouchEvent()方法,並且傳遞的cancle為true.這個方法是處理觸控後view的平移的方法。 ③對於平移的方法,因為傳遞過來的引數cancle是true。因此會呼叫下面劃橫線的方法。如果沒有子view,那麼就會呼叫父類的dispatchTouchEvent(),這樣就形成了遞迴。否則就會呼叫子類的dispatchTouchEvent()的方法。這樣進行判斷在子view中是否進行攔截。
④清除所有的觸控物件,也就是呼叫recycle()置空。 ⑤接著還是看dispatchTouchEvent()方法。intercepted預設為false.呼叫onIntercepTouchEvent()方法進行判斷是否進行攔截。如果攔截就為true. ⑥如果cancled為false並且intercepted為false.也就是不是取消操作,也不是攔截操作,那麼就開始執行下面的程式碼。