美文网首页
有关view的事件分发

有关view的事件分发

作者: ccccccal | 来源:发表于2018-01-31 16:46 被阅读8次

事件分发:用户点击屏幕(view或者viewGroup)产生点击事件(touch事件),touch事件的(发生触摸的位置,事件,历史记录,手势动作等一系列)都是已经封装的MotionEvent对象

Touch事件一般有如下几种

//点击view
public static final int ACTION_DOWN             = 0;
 
//抬起view,与down对应
public static final int ACTION_UP               = 1;
    
//滑动事件
public static final int ACTION_MOVE             = 2;
    
//非人为原因结束本次事件
public static final int ACTION_CANCEL           = 3;
    
//用户触碰超出了正常的ui边界.
public static final int ACTION_OUTSIDE          = 4;

//多手势触摸,第二个点击
public static final int ACTION_POINTER_DOWN     = 5;
    
//多手势触摸,第二个抬起,对应 ACTION_POINTER_DOWN     
public static final int ACTION_POINTER_UP       = 6;

任何事件都是以DOWN时间开始,UP时间结束,中间有无数的MOVE事件

事件分发过程晋国的方法:

方法 作用 调用时间
dispatchTouchEvent() 分发(传递)点击事件 当点击事件能够传递给当前view时,去调用
onInterceptTouchEvent() 判断是否拦截了某个事件,只存在viewGroup dispatchTouchEvent()内部调用
onTouchEvent() 处理点击事件 dispatchTouchEvent

android中事件分发顺序是:activity-->viewGroup-->view

具体如下:进入页面开始调用activity的dispatchTouchEvent()事件,默认就是调用父控件的onInterceptTouchEvent()事件,如果dispatchTouchEvent()表示要处理事件(消费或者不消费时间都会结束),消费事件直接处理事件,不消费就返回给父层的onTouchEvent()来处理。

如果是默认调用了父层的onInterceptTouchEvent(),就判断是否要拦截事件,默认不拦截,最终还是调用自身的onTouchEvent()处理事件

相关文章

网友评论

      本文标题:有关view的事件分发

      本文链接:https://www.haomeiwen.com/subject/zgwxzxtx.html