Android 共同处理touch事件

来源:互联网 发布:黑客帝国3矩阵革命 mp4 编辑:程序博客网 时间:2024/06/05 01:05

初步了解touch事件分发和消费机制后,我们就已经清楚了,event传递是从外层容器往里传递,而消费则是由里到外判断是否消费。
有一种场景,我们希望有多个view来处理这个touch事件。可以重写View的dispatchTouchEvent。将传递中的touch事件回调出来

public class MyFramLayout extends FrameLayout {    public MyFramLayout(@NonNull Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    @Override    public boolean dispatchTouchEvent(MotionEvent ev) {        if (onFingerTouch != null) {            onFingerTouch.onFingerTouch(ev);        }        return super.dispatchTouchEvent(ev);    }    public OnFingerTouch onFingerTouch;    public void setOnFingerTouchListener(OnFingerTouch onFingerTouch){        this.onFingerTouch=onFingerTouch;    }    public  interface OnFingerTouch{         void onFingerTouch(MotionEvent ev);    }}

在进入外层容器的dispatchTouchEvent方法后,touch事件仍然继续传递,我们回调出来的event事件并不算被消费,事件还会继续传递被其他view去消费。

原创粉丝点击