|
|
@@ -0,0 +1,55 @@
|
|
|
+package com.sheep.gamegroup.view.customview;
|
|
|
+
|
|
|
+import android.content.Context;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
+import android.support.annotation.Nullable;
|
|
|
+import android.support.v4.view.ViewPager;
|
|
|
+import android.util.AttributeSet;
|
|
|
+import android.view.MotionEvent;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by ljy on 2018/5/16.
|
|
|
+ */
|
|
|
+
|
|
|
+public class SheepViewPager extends ViewPager {
|
|
|
+
|
|
|
+ int lastX = -1;
|
|
|
+ int lastY = -1;
|
|
|
+
|
|
|
+ public SheepViewPager(@NonNull Context context) {
|
|
|
+ super(context);
|
|
|
+ }
|
|
|
+
|
|
|
+ public SheepViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
|
|
|
+ super(context, attrs);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
|
+ int x = (int) ev.getRawX();
|
|
|
+ int y = (int) ev.getRawY();
|
|
|
+ int dealtX = 0;
|
|
|
+ int dealtY = 0;
|
|
|
+
|
|
|
+ switch (ev.getAction()){
|
|
|
+ case MotionEvent.ACTION_DOWN:
|
|
|
+ dealtX = 0;
|
|
|
+ dealtY = 0;
|
|
|
+ //保证 view能够得到 Action_move 事件
|
|
|
+ getParent().requestDisallowInterceptTouchEvent(true);
|
|
|
+ break;
|
|
|
+ case MotionEvent.ACTION_MOVE:
|
|
|
+ dealtX += Math.abs(x - lastX);
|
|
|
+ dealtY += Math.abs(y - lastY);
|
|
|
+ if(dealtX >= dealtY){
|
|
|
+ getParent().requestDisallowInterceptTouchEvent(true);
|
|
|
+ }else {
|
|
|
+ getParent().requestDisallowInterceptTouchEvent(false);
|
|
|
+ }
|
|
|
+ lastX = x;
|
|
|
+ lastY = y;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return super.dispatchTouchEvent(ev);
|
|
|
+ }
|
|
|
+}
|