Android-onInterceptTouchEvent()和onTouchEvent()總結

來源:互聯網
上載者:User

標籤:

老實說,這兩個小東東實在是太麻煩了,很不好懂,我自己那api文檔都頭暈,在網上找到很多資料,才知道是怎麼回事,這裡總結一下,記住這個原則就會很清楚了:

1、onInterceptTouchEvent()是用於處理事件(類似於預先處理,當然也可以不處理)並改變事件的傳遞方向,也就是決定是否允許Touch事件繼續向下(子控制項)傳遞,一但返回True(代表事件在當前的viewGroup中會被處理),則向下傳遞之路被截斷(所有子控制項將沒有機會參與Touch事件),同時把事件傳遞給當前的控制項的onTouchEvent()處理;返回false,則把事件交給子控制項的onInterceptTouchEvent()

 

2、onTouchEvent()用於處理事件,傳回值決定當前控制項是否消費(consume)了這個事件,也就是說在當前控制項在處理完Touch事件後,是否還允許Touch事件繼續向上(父控制項)傳遞,一但返回True,則父控制項不用操心自己來處理Touch事件。返回true,則向上傳遞給父控制項(註:可能你會覺得是否消費了有關係嗎,反正我已經針對事件編寫了處理代碼?答案是有區別!比如ACTION_MOVE或者ACTION_UP發生的前提是一定曾經發生了ACTION_DOWN,如果你沒有消費ACTION_DOWN,那麼系統會認為ACTION_DOWN沒有發生過,所以ACTION_MOVE或者ACTION_UP就不能被捕獲。)

原文:

http://blog.csdn.net/lvxiangan/article/details/9309927

Android-onInterceptTouchEvent()和onTouchEvent()總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.