package com.zcy.ghost.vivideo.widget;
import android.content.Context;
import android.support.v4.view.ViewConfigurationCompat;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
/**
* Description:
* Creator: yxc
* date: $date $time
*/
public class SwipeViewPager extends ViewPager {
private int mTouchSlop;
public SwipeViewPager(Context context) {
super(context);
init();
}
public SwipeViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
final Context context = getContext();
final ViewConfiguration configuration = ViewConfiguration.get(context);
mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);
}
float mLastX;
float mLastY;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentItem() == 0) {
float x = ev.getX();
float y = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
float xDiff = Math.abs(x - mLastY);
float yDiff = Math.abs(y - mLastY);
//在第一页,判断到是向左边滑动,即想滑动第二页
if (xDiff > 0 && x - mLastX < 0 && xDiff * 0.5f > yDiff) {
//告诉父容器不要拦截事件
getParent().requestDisallowInterceptTouchEvent(true);
}else if (yDiff > mTouchSlop && xDiff < mTouchSlop) {
//竖直滑动时,告诉父容器拦截事件,用于在ScrollView中可以竖直滑动
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
mLastX = x;
mLastY = y;
} else {
getParent().requestDisallowInterceptTouchEvent(true);
}
return super.dispatchTouchEvent(ev);
}
}