Android事件分派機制

最近一直在學習Android裏面的事件分派機制,感覺很奇妙,看了很多博客和分析,纔在腦子裏形成了一個模糊的概念,對事件分派有了一定的認識。

於是,我畫了一個圖來簡單明瞭的表述Android中事件的分派機制:

看了這個圖,說起來就簡單了。

假設一個視圖結構如左上角所示,最外面的父控件是一個ViewGroup A,內一層是ViewGroup B,最最裏面的控件是View C。

 

當用戶去點擊View C的時候,最先觸發的是ViewGroup A的onInterceptTouchEvent()方法。這個方法是用來阻斷事件的。

如果返回false(默認返回false),事件就會繼續向內層傳遞。

  內層如果是ViewGroup的話,事件就先傳遞到ViewGroup的onInterceptTouchEvent()方法上,作用也是一樣的,用來阻斷事件。

  內層如果是View的話,就直接傳遞到View的onTouchEvent()上面了

如果返回true,就不向內層傳遞了,就把事件發給自己的onTouchEvent()方法。

 

當事件傳遞到onTouchEvent()方法的時候,這個方法主要用來處理事件。

如果返回true,就代表自己來處理這個事件,那麼事件就不會繼續向下傳遞了。事件被消費了。

如果返回false的話,就會向上一層父控件傳遞。

 

突然發現就是這麼回事,一開始看別人的文章也看了好久沒看明白。

瞭解事件分派機制是比較有用的,比如,下拉刷新,當前顯示了一個ListView展示數據,假設當前ListView是顯示最頂部的內容,用戶手向上滑動的時候,操控的是ListView,用戶手向下滑動的時候就要把上面隱藏的視圖拉出來,這個時候操控的就是整個ViewGroup。大概就是這麼個意思吧……下拉刷新我還沒自己實現出來。T.T

 

轉載請註明出處,哈哈哈哈:http://www.cnblogs.com/kross/p/3467285.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章