Android事件分发

public class MyLinearLayout extends LinearLayout {
    public MyLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        /**
         * dispatchTouchEvent分发事件返回值:
         * true:拦截此分发事件,由分发事件处理该动作,不向下传递
         * false:不进行分发,返回由它的来源的onTouchEvent进行处理
         * super.dispatchTouchEvent:分发到当前view的onInterceptTouchEvent事件进行处理。
         */
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        /**
         * onInterceptTouchEvent事件拦截返回值:
         * true:拦截该事件给当前view的onTouchEvent进行处理。
         * false:不拦截该事件,当前事件给子view的dispatchTouchEvent进行处理
         * super.onInterceptTouchEvent(ev):拦截,分配给onTouchEvent进行处理
         */
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        /**
         * onTouchEvent返回值:
         * true:接受并消费该事件
         * false:事件从当前view向上传递,由父view的onTouchEvent进行接受,如果还返回false,则该事件消失。
         * super.onTouchEvent(event):默认处理事件与返回false相同
         */
        return super.onTouchEvent(event);
    }
}

你可能感兴趣的:(Android)