事件分發的基礎知識

什麼是事件分發

用戶通過屏幕與手機交互的時候,每一次點擊、長按、移動等都是一個事件。

事件分發機制:

某一個事件從屏幕傳遞到各個View,由View來使用這一事件(消費事件)或者忽略這一事件(不消費事件),這整個過程的控制。

事件分發的對象是誰

系統把事件封裝爲MotionEvent對象,事件分發的過程就是MotionEvent分發的過程。

事件的類型

按下(ACTION_DOWN)

移動(ACTION_MOVE)

擡起(ACTION_UP)

取消(ACTION_CANCEL)

事件取消的例子:屏幕上有個ScrollView,它可以進行上下的滾動,在ScrollView上有個Button,當我們把手指按在這個Button上的時候,Button是可以接收到按下(ACTION_DOWN)的這個事件的,這個時候我們的手指進行上下的移動,Button的父容器ScrollView就會去攔截這麼一個事件,同時Button上就會接收到取消(ACTION_CANCEL)這個事件,表示當前這個的點擊事件對於Button來說取消了。

事件序列

從手指按下屏幕開始,到手指離開屏幕所產生的一系列事件。

傳遞層級

Activity - > Window - > DecorView - > ViewGroup - > View

手指觸碰到Activity時,事件會有這麼一個過程:

事件最初會在Activity之上,然後通過Window傳遞到DecorView上(這裏的DecorView就是Window所持有的一個DecorView),而DecorView又繼承至ViewGroup,事件從這個ViewGroup進行分發,然後纔會分發到我們創建的一個個子的ViewGroup和View上。

主要傳遞對象及順序

Activity

ViewGroup

View

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