Android Activity 和 ViewGroup中事件觸發和傳遞機制,androidviewgroup

來源:互聯網
上載者:User

Android Activity 和 ViewGroup中事件觸發和傳遞機制,androidviewgroup

1.在只有Activity的情況:

1)Touch事件觸發流程:

首先觸發dispatchTouchEvent然後觸發onUserInteraction再次onTouchEvent如果是點擊的話,緊跟著下列事件(點擊分倆步,ACTION_DOWN,ACTION_up)觸發dispatchTouchEvent再次onTouchEvent當ACTION_up事件時不會觸發onUserInteraction(可查看原始碼)

2)鍵盤事件觸發流程

首先觸發dispatchKeyEvent然後觸發onUserInteraction再次onKeyDown如果按下緊接著鬆開,則是倆步緊跟著觸發dispatchKeyEvent然後觸發onUserInteraction再次onKeyUp注意與觸摸不同,當鬆開按鍵時onUserInteraction也會觸發。

總之:  Activity.dispatchTouchEvent(MotionEvent) - 這允許你的活動可以在分發給視窗之前捕獲所有的觸摸事件。(同理 dispatchKeyEvent)

 

2.Activity裡有一個Layout,在Layout裡有個按鈕情況:

如果在按鈕上觸發一個CLICK事件,那麼事件傳遞流程:

首先觸發ACTIVITY的dispatchTouchEvent然後觸發ACTIVITY的onUserInteraction然後觸發LAYOUT的dispatchTouchEvent然後觸發LAYOUT的onInterceptTouchEvent然後觸發BUTTON的onTouch(這是一個ACTION_DOWN事件)緊跟著是一個ACTION_UP事件觸發ACTIVITY的dispatchTouchEvent注意不再觸發ACTIVITY的onUserInteraction,因為他對ACTION_UP不起作用。然後觸發LAYOUT的dispatchTouchEvent然後觸發LAYOUT的onInterceptTouchEvent然後觸發BUTTON的onTouch最後觸發BUTTON的onClick.如果你在ONTOUCH事件裡返回true,消費了此事件,那麼ONCLICK將不會被響應但是如果你不寫ONCLICK事件,而ONTOUCH事件返回FLASE

3.總結:

Android事件觸發流程:

-------------------------------------------------------------------

首先觸發ACTIVITY的dispatchTouchEvent

然後觸發ACTIVITY的onUserInteraction

然後觸發LAYOUT的dispatchTouchEvent

然後觸發LAYOUT的onInterceptTouchEvent

-------------------------------------------------------------------

  

  

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.