android事件分发

来源:互联网 发布:c语言超市管理系统 编辑:程序博客网 时间:2024/06/07 05:00

概述:

其中Activity和View控件(TextView)拥有分派和处理事件方法,View容器(LinearLayout)具有分派,拦截,处理事件方法。这里也有个比喻:领导都会把任务向下分派,一旦下面的人把事情做不好,就不会再把后续的任务交给下面的人来做了,只能自己亲自做,如果自己也做不了,就只能告诉上级不能完成任务,上级又会重复他的过程。另外,领导都有权利拦截任务,对下级隐瞒该任务,而直接自己去做,如果做不成,也只能向上级报告不能完成任务。


跟touch相关的三个方法:

public boolean dispatchTouchEvent(MotionEvent ev);    //用来分派event
public boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截event
public boolean onTouchEvent(MotionEvent ev);          //用来处理event
传递:dispatchTouchEvent ---> onInterceptTouchEvent ---> onTouchEvent
返回true表示被消费(不继续传递),返回false表示继续传递。


拥有三个方法的类:


三个方法的用法:


创建一个demo验证:

MyActivity ---> 重写 dispatchTouchEvent()、onTouchEvent()

MyFrameLayout ---> 重写 dispatchTouchEvent()、onInterceptTouchEvent()、onTouchEvent()

MyTextView ---> 重写 dispatchTouchEvent()、onTouchEvent()

0 0
原创粉丝点击