对ViewGroup touch事件响应的理解
ViewGroup在接收到touch事件时,通过dispatchTouchEvent(MotionEvent event)把事件分发到子view里. touch事件的起始动作是ACTION_DOWN, viewgroup会调用onInterceptTouchEvent(MotionEvent ev)方法,若返回false才会正式分发事件到子view中,子view也调用dispatchTouchEvent方法,若返回true证明它消费了这个事件, viewgroup会把mMotionTarget设为该子view。
在后续事件分发中(通常为ACTION_MOVE), 若mMotionTarget为null, 则viewgroup会消费这个事件, 否则viewgroup会调用onInterceptTouchEvent方法,若返回true时表示viewgroup要消费这个事件, 它会把mMotionTarget设为null然后返回true. 若返回false表示继续由子view来消费该事件。
总的来说,就是若 onInterceptTouchEvent方法返回true或者 ACTION_DOWN时没有子view消费该事件,则由viewgroup来消费该事件,否则将事件分发到子view中处理。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/czh0766/archive/2010/08/18/5819265.aspx