View的事件
1、现象1: OnTouchListener、OnClickListener、TouchEvent 三个都有的情况下,前提是OnTouchListener返回 false
OnTouchListener -DOWN --> TouchEvent -DOWN -->OnTouchListener -MOVE --> TouchEvent -MOVE -->OnTouchListener -UP -->TouchEvent -UP -->OnClickListener
2、现象2: OnTouchListener、OnClickListener、TouchEvent 三个都有的情况下,前提是OnTouchListener返回 true
OnTouchListener -DOWN -->OnTouchListener -MOVE -->OnTouchListener -UP
2、现象3: OnClickListener、TouchEvent 三个都有的情况下,前提是TouchEvent 返回 true
TouchEvent -DOWN -->TouchEvent -MOVE -->TouchEvent -UP 不会执行onClick
3、View与Touch相关的有两个非常重要的方法
3、1:dispatchTouchEvent() 事件分发
ListenerInfo li = mListenerInfo;
ListenerInfo 存放了view所有的 Listener信息,如OnTouchListener、OnClickListener
if (li != null && li.mOnTouchListener != null
&& (mViewFlags & ENABLED_MASK) == ENABLED
&& li.mOnTouchListener.onTouch(this, event)) {
result = true;
}
if (!result && onTouchEvent(event)) {
result = true;
}
3、2:onTouchEvent() 方法我们一般都会复写