GestureViewBinder
GestureViewBinder copied to clipboard
解决View 需要自己处理事件的问题,就不提pr了
public class OutLayout extends RelativeLayout { private boolean mScrolling; private float StartX, EndX; private float StartY, EndY;
public OutLayout(Context context) {
this(context, null);
}
public OutLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public OutLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
StartX = event.getX();
StartY = event.getY();
mScrolling = false;
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(StartX - event.getX()) >= ViewConfiguration.get(getContext()).getScaledTouchSlop() || Math.abs(StartY - event.getY()) >= ViewConfiguration.get(getContext()).getScaledTouchSlop()) {
mScrolling = true;
} else {
mScrolling = false;
}
break;
case MotionEvent.ACTION_UP:
mScrolling = false;
break;
}
return mScrolling;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
return true;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
EndX = event.getX();
EndY = event.getY();
if (StartX != EndX || StartY != EndY) {
view.isReturn = false;
} else {
view.isReturn = true;
}
break;
}
return super.onTouchEvent(event);
}
} ///////////------------------------------view 自己的事件 根据上面动态改变返回值 static boolean isReturn;
@Override
public boolean onTouchEvent(MotionEvent pMotionEvent) {
return isReturn;
}