安卓开发Android开发程序员

自定义View滑动冲突处理

2017-08-05  本文已影响74人  yolo_cc
最近在做一个自定义View是用来滑动选取颜色的大致如下:

在普通情况下滑动没有问题,但是在和ViewPager嵌套使用时,发现不流畅,时常滑着滑着就变成ViewPager的滑动了,进过打点分析发现onTouchEvent方法经常走MotionEvent.ACTION_CANCEL事件导致的,原来是ViewPager会接入这个滑动事件导致的,后来发现系统的Seekbar不会出现这样的问题,仔细找了下原因发现SeekBar父类里面有如下代码:

/**
     * Tries to claim the user's drag motion, and requests disallowing any
     * ancestors from stealing events in the drag.
     */
    private void attemptClaimDrag() {
        if (mParent != null) {
            mParent.requestDisallowInterceptTouchEvent(true);
        }
    }

方法是用来子View告诉父容器不要拦截我们的事件的。原来问题出在这,所以我们只要在onTouchEvent方法的MotionEvent.ACTION_DOWN MotionEvent.ACTION_MOVE: 这两个事件中调用这个方法就可以啦。

上一篇下一篇

猜你喜欢

热点阅读