1. 程式人生 > >ViewPage左右滑動和PullToRefreshListView上下滑動事件衝突

ViewPage左右滑動和PullToRefreshListView上下滑動事件衝突

這裡,相當於是PullToRefreshView嵌套了ViewPager,那麼每次優先接收到Touch事件的必然是PullToRefreshView。這樣就清楚了,看程式碼:

在PullToRefreshView中:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    int action = ev.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            // 記錄手指按下的位置
startY = ev.getY();
            startX 
= ev.getX(); // 初始化標記 mIsVpDragger = false; break; case MotionEvent.ACTION_MOVE: // 如果viewpager正在拖拽中,那麼不攔截它的事件,直接return false; if (mIsVpDragger) { return false; } // 獲取當前手指位置 float endY = ev.getY(); float endX = ev.getX(); float
distanceX = Math.abs(endX - startX); float distanceY = Math.abs(endY - startY); // 如果X軸位移大於Y軸位移,那麼將事件交給viewPager處理。 if (distanceX >= distanceY) { mIsVpDragger = true; return false; } break; case MotionEvent.ACTION_UP
: case MotionEvent.ACTION_CANCEL: // 初始化標記 mIsVpDragger = false; break; } // 如果是Y軸位移大於X軸,事件交給swipeRefreshLayout處理。 return super.onInterceptTouchEvent(ev);
}