Android 中的触摸反馈的流程

触摸反馈的流程

Activity.dispatchTouchEvent()

-递归: ViewGroup(View).dispatchTouchEvent()

                      ViewGroup.onInterceptTouchEvent()

                       child.dispatchTouchEvent()

                      super.dispatchTouchEvent()

                               View.onTouchEvent()

-Activity.onTouchEvent()

View.dispatchTouchEvent()

         如果设置了 OnTouchListener,调⽤ OnTouchListener.onTouch()

         如果 OnTouchListener 消费了事件,返回 true

         如果 OnTouchListener 没有消费事件,继续调⽤⾃⼰的 onTouchEvent(),并返回和 onTouchEvent()相同的结果

         如果没有设置 OnTouchListener,同上


⾃定义 ViewGroup 的触摸反馈

除了重写 onTouchEvent() ,还需要重写 onInterceptTouchEvent()

onInterceptTouchEvent() 不⽤在第⼀时间返回 true,⽽是在任意⼀个事件⾥,需要拦截的时候返回 true 就⾏

在 onInterceptTouchEvent() 中除了判断拦截,还要做好拦截之后的⼯作的准备⼯作(主要和 onTouchEvent() 的代码逻辑⼀致)

你可能感兴趣的:(Android 中的触摸反馈的流程)