view滑动冲突解决实战篇2(外部拦截法)

来源:互联网 发布:开源网络质量监控软件 编辑:程序博客网 时间:2024/05/21 13:16

继上篇内部拦截法

需求还是跟上篇一样。只不过这次用外部拦截法来解决;只要在父容器添加如下代码就可以解决了滑动冲突,很简单,套模板就行

 // 分别记录上次滑动的坐标(onInterceptTouchEvent)    private int mLastXIntercept = 0;    private int mLastYIntercept = 0; @Override    public boolean onInterceptTouchEvent(MotionEvent ev) {        boolean intercepted = false;        int x = (int) ev.getX();        int y = (int) ev.getY();        switch (ev.getAction()) {            case MotionEvent.ACTION_DOWN:                intercepted = false;                break;            case MotionEvent.ACTION_MOVE: {                int deltaX = x - mLastXIntercept;                int deltaY = y - mLastYIntercept;                if (Math.abs(deltaX) > Math.abs(deltaY)) {                    intercepted = true;                } else {                    intercepted = false;                }                break;            }            case MotionEvent.ACTION_UP: {                intercepted = false;                break;            }        }        mLastXIntercept = x;        mLastYIntercept = y;        return intercepted;    }

效果如下:

效果图



本文源码

0 0
原创粉丝点击