android 中可以相应事件的类有 Activity ViewGroup View这三类。
事件的分发顺序为由上到下 会依次调用 。中间可被打断 即 ViewGroup的
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { Log.e(TAG,"onInterceptTouchEvent"); //return false; return super.onInterceptTouchEvent(ev); }方法返回true。该ViewGroup 下面的view将不会收到这个事件。
如果viewGroup的
@Override public boolean dispatchTouchEvent(MotionEvent ev) { Log.e(TAG,"dispatchTouchEvent"); //return super.dispatchTouchEvent(ev); return false; }这个函数返回false,这包括它本身也无法响应该事件,事件交由上层处理
二:事件的消费由下往上传递:当最底层的view消费了事件后,上层无法再接收到该事件。OnEvent()返回true 表示消费该事件。
疑问:
@Override public boolean onTouchEvent(MotionEvent event) { Log.e(TAG,"onTouchEvent"); //return false; return super.onTouchEvent(event); }这个方法返回true时该控件的onclick事件无法相应?但是return super.onTouchEvent(event ) 可以相应?明天再看。
本文详细解析了Android中事件分发的流程,包括Activity、ViewGroup及View三个层面的事件响应机制。阐述了事件从顶层到底层传递的过程中如何被拦截,并讨论了事件消费后的向上回传机制。
515

被折叠的 条评论
为什么被折叠?



