Android事件分发机制形象点的解释
形象一点的例子就是有一个公司,里面有老板,部门经理,组长,实习生。关系层层包含下去,则这里的老板,部门经理,组长都是有下属的(子view),所以他们都是viewGroup,而实习生没有下属,所以他是view。
目前这个公司的权力,有下属的viewGroup有三种选择,分发这个任务(dispatchTouchEvent),阻拦这个任务给自己做(InterceptTouchEvent),自己解决这个任务(onTouchEvent)。
没下属的实习生(view)接到任务只能做,所以就没有阻拦这个选项(interceptTouchEvent)。由于这个实习生(view)也是公司的一员,所以也有dispatchTouchEvent分发任务这个选项(由于谁知道有一天就升职了呢),但是实习生目前没有下属可以分发,所以一般开发的时候view不对dispatchTouchEvent进行操作,接收到事件直接重写onTouchEvent进行操作。
现在来任务了,老板接到任务,他现在有下属,调用dispatchTouchEvent进行任务分配。他现在有三种选择:
1.今天我想工作了,调用interceptTouchEvent阻拦这个事件,这样即可以调用自己的onTouchEvent对事件进行操作。
2.这个需求太SB了,不做,直接在dispatchTouchEvent里面返回true,消耗掉这个事件。
3.今天我不想做,把这个给手下搞吧,调用super.dispatchTouchEvent把这个事件分发下去。
那假如事件被分发下来了,接下来部门经理和组长接收到事件后同样会完成这些工作。
1.今天我想工作了,调用interceptTouchEvent阻拦这个事件,这样即可以调用自己的onTouchEvent对事件进行操作。
2.这个需求太SB了,不做,直接在dispatchTouchEvent里面返回true,消耗掉这个事件。
3.今天我不想做,把这个给手下搞吧,调用super.dispatchTouchEvent把这个事件分发下去。
4.任务太难了,我觉得我的手下也做不了,直接返回false让上一级去调用onTouchEvent去完成。
那任务一层层分发下去,最后给到实习生,实习生没有下属了,只能乖乖做事。
他现在有两种选择。
1.任务做完了,在onTouchEvent里面返回true。
2.任务搞不定,在onTouchEvent里面返回false,把这个任务还给上一级的onTouchEvent做。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Android事件分发机制形象点的解释