View的事件体系

2018-12-14  本文已影响5人  Yasin27878

View 的事件体系

1.View的基础知识

2. View的滑动

View滑动的常见实现方式

3.View分发机制

实质上就是MotionEvent的事件分发机制。即当MotionEvent产生一个事件以后,系统需要把事件传递给一个具体的View的这样一个过程。他主要包括三个方法:dispatchTouchEvent onInterceptTouchEvent onTouchEvent.

- public boolean dispatchTouchEvent(MotionEvent e)

用来进行事件 经过该View的事件,一定会调用这个方法。返回结果受onIntercepterTouchEvent 和onTouchEvent影响。返回值表示是否消费事件。

- public boolean onInterceptTouchEvent(MotionEvent e)

在上述方法内部,判断是否拦截事件 同一个事件只会运行一次 返回结果表示是否拦截事件

- public boolean onTouchEvent(MotionEvent e)

在diapatchTouchEvent方法内部 用来处理点击事件 表示是否消耗该事件 同一事件序列只会执行一次

ViewGroup事件分发过程:

对于一个Viewgroup来说,接收到事件以后首先会调用diapatchTouchEvent 如果返回值是true 也就是说onInterceptTouchEvent返回true则表示自己消费这个事件 那么就会调用onTouchEvent方法;如果onIntercepterTouchEvent返回值是false,表示自己不处理该事件通过child.dispatchTouchEvent发送事件给子布局,如此反复 知道最后被处理。

View的事件优先级

当一个View设置了OnTouchListener以后 事件会先执行OnTouchListener的onTouch方法,如果onTouch返回为true 表示OntouchListener消费了事件 就不会传递到OntouchEvent;如果返回为false,才会传递到OntouchEvent,如果OntouchEvent返回为true,这OntouchEvent消费事件,后续额onClicklister就不会接收到事件,click方法就不会被调用;如果OntouchEvent返回为false 才会执行到click方法。 所以view的监听优先级 OnTouchListener > OnTouchEvent > OnClickListener

事件分发方法的执行顺序 dispatchTouchEvent->onIntercepteTouchEvent->OnTouchListener(onTouch)->onTouchEvent->onClickListener(click)

上一篇下一篇

猜你喜欢

热点阅读