android View事件体系结论总结

在了解android view事件体系前,先了解下android UI界面架构图。


android UI界面架构图

从上图可以简单总结出view触摸事件的传递顺序(假设点击到ViewGroup):
Activity--->PhoneWindow-->DecorView--->ContentView--->ViewGroup

View事件体系结论总结

  • 当所有事件方法按默认返回时,ACTION_DOWN其呈现U形分布,其余的ACTION_MOVE和ACTION_UP事件只会经过Activity.onTouchEvent,不会经过其他控件。

  • 当Activity.dispatchTouchEvent()返回true或false时,都表示事件被消费,不会向下传递了(只有默认返回super.dispatchTouchEvent()时,才会继续往下传递事件)。

  • ViewGroup.onInterceptTouchEvent()只有事件拦截作用,没有消费事件作用,即若有事件经过onInterceptTouchEvent()时,那么该事件肯定会继续进行传递,只是传递的方向受其返回值控制。

  • 当dispatchTouchEvent()和onTouchEvent()返回true时,表明消费了事件,则事件不再进行传递。其后的同一事件序列的ACTION_MOVE和ACTION_UP都会从上往下只传递到该控件上该方法(该控件下的子控件是无法再收到任何事件的),如果该控件对MOVE和UP事件返回false,则其父控件的onTouchEvent并不会被调用,最终这些消失的事件都交给Activity.onTouchEvent处理

  • 当dispatchEvent()和onTouchEvent()返回false时,都会立即回掉父控件的onTouchEvent()。

  • onTouchListener.onTouch()会优先于onTouchEvent被调用,且只有当onTouchListener.onTouch()返回false时,onTouchEvetn才会被调用,然后才能调用onClickListener.onClick()。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容