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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM