chenlijunfan / IndirectAmbition

间接性踌躇满志
0 stars 0 forks source link

2019-07-25 谈谈View(2) #10

Open chenlijunfan opened 5 years ago

chenlijunfan commented 5 years ago

1、view事件的传递;2、用了哪种设计模式

chenlijunfan commented 5 years ago

view的时间传递采用了责任链的模式 事件的传递从activity开始,Activity->PhoneWindow->DecorView->ViewGroup->View,时间的处理主要是在ViewGroup与View。 ViewGroup主要调用dispatchTouchEvent()->onInterceptTouchEvent()->dispatchTransformedTouchEvent()。ViewGroup不直接调用onTouchEvent() View主要调用了dispatchTouchEvent()->onTouchEvent()->performClick()。 事件的传递顺序: 1)down 从最外层的View往里层的子View传递;如果最里层的View不消费事件,在将事件往父View上抛; 2)把父View当做普通View看待(不在当做ViewGroup来看),如果当前的View也不消费该事件,继续往父View抛; 3)重复步骤2),整个View的传递和分发过程,呈现U型; image