精簡版android事件分發解釋

2021-07-10 15:51:06 字數 1032 閱讀 6867

學習資料後,自己對於android事件分發的歸納總結,很精簡,希望能幫助需要的同學。

首先認識三個方法:

1.

dispatchtouchevent(motionevent ev)  負責事件分發 詳見(1)

2.onintercepttouchevent(motionevent ev) 詳見(2) 3.

ontouchevent(motionevent ev) 詳見(3)

(1)事件分發順序

由父控制項一層一層向子控制項分發,如果子控制項有子view(即子控制項為viewgroup),則繼續往其子view分發,然後繼續下乙個子控制項。分發流程參見下圖:

事件順序為:1、2、5、6、7、3、4

如果這個方法返回true,則事件不再往下分發。即:如果6返回true,則7、3、4接收不到事件的分發。

(2)在事件一層一層由父控制項傳往子控制項時,呼叫onintercepttouchevent(motionevent ev)方法,這個方法起攔截作用,一旦它返回true,則攔截此事件,將事件交由當前view的ontouchevent處理,並且事件往回傳。

(3)當事件傳到最後乙個子view過後開始往回傳,ontouchevent決定此事件是否被消費,如果返回true,則表示此事件被當前view消費,不再繼續回傳,事件傳遞終止。且只有在此方法返回true時view才能執行action_move和action_up,否則只執行action_down。

AsyncTask原理精簡版

asynctask有三個主要的方法 onpreexecute doinbackground string.params onpostexecute 建立asynctask物件需要重寫乙個類繼承asynctask,因為asynctask本身是抽象類 new asynctask execute para...

Sql優化精簡版

1.select語句中避免使用 盡量應該根據業務需求按欄位進行查詢 2.刪除重覆記錄 delete from tble tb where tb.id select min id from tble ble where tb.name ble.name 3.用 替換 4.盡量多使用commit 如對大...

github 使用精簡版

使用git bash上傳時,必須進入需要上傳的檔案的目錄,例如我要上傳的檔案在c 1 1 1 upload 那麼我就要進入到c 1 1 1,然後用以下命令上傳檔案 刪除 git rm cached r useless git commit m remove directory from remote...