-
事件序列。查看全部
-
事件的類型。
查看全部 -
viewgroup事件處理
查看全部 -
事件分發的對象:MotionEvent。
查看全部 -
事件傳遞過程.
查看全部 -
PhoneWindow{
????
//?This?is?the?top-level?view?of?the?window,?containing?the?window?decor. private?DecorView?mDecor;
}
查看全部 -
事件通過Acticity的DispatchTocuhEvent走到DecorView的superDispatchTouchEvent,再走到ViewGroup再到View
查看全部 -
傳遞順序:activiyt window decorView viewGroup view
查看全部 -
Activity事件分發流程
查看全部 -
傳遞層級,最終傳到View,按子類繼承順序分發
首先在Activity上,傳遞給其所持有的Window,然后給window所持有的DecorView,接著按父子繼承關系,依次傳遞給ViewGroup和View
查看全部 -
ViewGroup時間分發
查看全部 -
每個Activity持有Window窗體,而Window是個抽象類,其唯一的實現類是PhoneWindow,所以Window的
superDispatchTouchEvent
方法就是調用PhoneWindow的DispatcherToucherEvent方法,,實現的調用DecorView的 SuperDispatcherToucherEvent方法(PhoneWindow持有DecorView)。DecorView繼承自FrameLayout(內部沒有實現SuperDispatcherToucherEvent方法),FrameLayout繼承自ViewGroup(實現SuperDispatcherToucherEvent方法)。
public?boolean?superDispatchTouchEvent(MotionEvent?event)?{ ????return?mDecor.superDispatchTouchEvent(event); }
,
查看全部 -
ViewGroup:dispatchTouchEvent主要做了3件事
1、去判斷是否需要攔截事件
2、在當前ViewGroup中找到用戶真正點擊的View
3、分發事件到View上
查看全部 -
onInterceptTouchEvent方法會在事件分發的過程中調用,如果返回true,說明當前的ViewGroup會攔截這個事件,事件不會再往子View傳遞;返回false,當前的ViewGroup不會攔截這個事件,事件繼續向子View傳遞。
ViewGroup是沒有onTouchEvent方法的實現的,它是在父類View中實現。如果想讓事件終止,不讓事件傳遞到子View中,并且用戶的觸摸事件,我們會自己進行處理,可以重寫onInterceptTouchEvent,讓它返回true,同時為了處理用戶的觸摸事件,我們可以重寫onTouchEvent方法,在其中編寫一些事件的處理邏輯。
查看全部 -
Activity的事件分發流程圖
查看全部
舉報