/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import android.content.Context;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
*
* @author sihai
*
*/
public class PhotoViewPager extends ViewPager {
private float mActivatedX;
private float mActivatedY;
private int mActivePointerId;
private float mLastMotionX;
private OnInterceptTouchListener mListener;
public PhotoViewPager(Context context)
{
super(context);
}
public PhotoViewPager(Context context, AttributeSet attributeset)
{
super(context, attributeset);
}
public boolean onInterceptTouchEvent(MotionEvent motionevent)
{
boolean flag;
boolean flag1;
boolean flag2 = false;
InterceptType intercepttype;
int i;
if(mListener != null)
intercepttype = mListener.onTouchIntercept(mActivatedX, mActivatedY);
else
intercepttype = InterceptType.NONE;
if(intercepttype == InterceptType.BOTH || intercepttype == InterceptType.LEFT)
flag = true;
else
flag = false;
if(intercepttype == InterceptType.BOTH || intercepttype == InterceptType.RIGHT)
flag1 = true;
else
flag1 = false;
i = 0xff & motionevent.getAction();
if(i == 3 || i == 1)
mActivePointerId = -1;
if(0 == i) {
mLastMotionX = motionevent.getX();
mActivatedX = motionevent.getRawX();
mActivatedY = motionevent.getRawY();
mActivePointerId = MotionEventCompat.getPointerId(motionevent, 0);
} else if(2 == i) {
if(!flag && !flag1)
return flag2;
int l = mActivePointerId;
if(l == -1)
return flag2;
float f = MotionEventCompat.getX(motionevent, MotionEventCompat.findPointerIndex(motionevent, l));
if(flag && flag1)
{
mLastMotionX = f;
flag2 = false;
} else
if(flag && f > mLastMotionX)
{
mLastMotionX = f;
flag2 = false;
} else
{
if(!flag1 || f >= mLastMotionX)
return flag2;
mLastMotionX = f;
flag2 = false;
}
} else if(6 == i) {
int j = MotionEventCompat.getActionIndex(motionevent);
if(MotionEventCompat.getPointerId(motionevent, j) == mActivePointerId)
{
int k;
if(j == 0)
k = 1;
else
k = 0;
mLastMotionX = MotionEventCompat.getX(motionevent, k);
mActivePointerId = MotionEventCompat.getPointerId(motionevent, k);
}
flag2 = super.onInterceptTouchEvent(motionevent);
} else {
flag2 = super.onInterceptTouchEvent(motionevent);
}
return flag2;
}
public void setOnInterceptTouchListener(OnInterceptTouchListener onintercepttouchlistener)
{
mListener = onintercepttouchlistener;
}
public static enum InterceptType {
NONE,
LEFT,
RIGHT,
BOTH;
}
public static interface OnInterceptTouchListener {
public abstract InterceptType onTouchIntercept(float f, float f1);
}
}