Android 學習筆記(十二):安卓中的事件分發機制

一、事件分發的對象是誰

答:點擊事件(Touch事件)

  • 定義
    當用戶觸摸屏幕時(View或ViewGroup派生的控件),將產生點擊事件。Touch事件的相關細節(發生觸摸的位置。時間等)被封裝成MotionEvent對象

  • 事件類型(4種)

事件類型 具體動作
MotionEvent.ACTION_DOWN 按下View(所有事件的起點)
MotionEvent.ACTION_UP 擡起View(與Down相對應)
MotionEvent.ACTION_MOVE 滑動View
MotionEvent.ACTION_CANCEL 結束事件(非人爲結束)
  • 事件列
    從手指解除屏幕至手指離開屏幕,這個過程產生的一系列事件。
    在這裏插入圖片描述
    即當一個點擊事件(MotionEvent)產生後,系統需把這個事件傳遞一個具體的View去處理。

二、事件分發的本質

答:將點擊事件(MotionEvent)傳遞到某個具體的View並且處理整個過程。即事件傳遞的過程 = 分發過程。

三、事件在哪些對象之間進行傳遞

答:Activity、ViewGroup、View

四、事件分發的順序

答:Activity -> ViewGroup -> View。即一個點擊事件發生後,事件先傳到Activity、再傳到ViewGroup、最終傳到View。

五、事件分發過程由哪些方法協作完成?

答:

方法 作用 調用時刻
dispatchTouchEvent() 分發(傳遞)點擊事件 當點擊事件能夠傳遞給當前View時,該方法就會被調用
onTouchEvent() 處理點擊事件 在dispatchTouchEvent()方法內部調用
onInterceptTouchEvent() 判斷是否攔截了某個事件,只存在於ViewGroup中,普通的View沒有該方法 在ViewGroup的dispatchTouchEvent()內部調用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章