Android 事件分发简易总结

xiaoxiao2021-02-28  67

事件分发总结

  在Android事件分发中,主要是对这三个方法的返回值的不同状态处理进行各种业务的实现。

Activity dispatchTouchEvent 方法 onTouchEvent 方法 ViewGroup dispatchTouchEvent 方法 onInterceptTouchEvent 方法 onTouchEvent 方法 View dispatchTouchEvent 方法 onTouchEvent 方法 所有方法的返回值的三种状态 true/false/super

Activity自身处理事件(就近ACTION_DOWN事件)

dispatchTouchEvent //返回值:true/false dispatchTouchEvent(Activity) onTouchEvent //返回值:super dispatchTouchEvent(Activity) //返回值:false dispatchTouchEvent(ViewGroup) //返回值:true onTouchEvent(Activity)

ViewGroup自身处理事件(就近ACTION_DOWN事件)

dispatchTouchEvent //返回值:super dispatchTouchEvent(Activity) //返回值:true dispatchTouchEvent(ViewGroup) onTouchEvent //返回值:super dispatchTouchEvent(Activity) //返回值:super dispatchTouchEvent(ViewGroup) //返回值:true OnInterceptTouchEvent(ViewGroup) //返回值:true onTouchEvent(ViewGroup)

View自身处理事件(就近ACTION_DOWN事件)

dispatchTouchEvent //返回值:super dispatchTouchEvent(Activity) //返回值:super OnInterceptTouchEvent(ViewGroup) //返回值:false/super OnInterceptTouchEvent(ViewGroup) //返回值:true dispatchTouchEvent(View) onTouchEvent //返回值:super dispatchTouchEvent(Activity) //返回值:super OnInterceptTouchEvent(ViewGroup) //返回值:false/super OnInterceptTouchEvent(ViewGroup) //返回值:super dispatchTouchEvent(View) //返回值:true onTouchEvent(View) 对于ACTION_MOVE、ACTION_UP总结 ACTION_DOWN事件在哪个控件消费了(return true),那么ACTION_MOVE和ACTION_UP就会从上往下(通过dispatchTouchEvent)做事件分发往下传,就只会传到这个控件,不会继续往下传, 如果ACTION_DOWN事件是在dispatchTouchEvent消费,那么事件到此为止停止传递, 如果ACTION_DOWN事件是在onTouchEvent消费的,那么会把ACTION_MOVE或ACTION_UP事件传给该控件的onTouchEvent处理并结束传递。 以上都是参考该文章:http://www.jianshu.com/p/e99b5e8bd67b
转载请注明原文地址: https://www.6miu.com/read-73002.html

最新回复(0)