package com.tiger.quicknews.wedget.gesture;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.FrameLayout;
import com.tiger.quicknews.R;
public class EnableChildSlideFrameLayout extends FrameLayout {
private ViewPager vp;
public EnableChildSlideFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
private float lastX;
private float lastY;
private boolean isScrolling = false;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (vp == null) {
vp = (ViewPager) findViewById(R.id.vPager);
}
if (vp == null) {
return super.dispatchTouchEvent(ev);
}
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = ev.getX();
lastY = ev.getY();
isScrolling = false;
requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
float distanceX = ev.getX() - lastX;
float distanceY = ev.getY() - lastY;
if (vp.getCurrentItem() == 0) {
if (isScrolling) {
break;
}
if (distanceX > 10 && distanceX > Math.abs(distanceY)) {
requestDisallowInterceptTouchEvent(false);
return false;
} else if (Math.abs(distanceY) > Math.abs(distanceX)
&& Math.abs(distanceY) > 10) {
isScrolling = true;
requestDisallowInterceptTouchEvent(true);
} else if (distanceX < -10 && Math.abs(distanceX) > Math.abs(distanceY)) {
requestDisallowInterceptTouchEvent(true);
} else {
requestDisallowInterceptTouchEvent(true);
}
}
else {
requestDisallowInterceptTouchEvent(true);
}
break;
case MotionEvent.ACTION_UP:
isScrolling = false;
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
}