Просмотр исходного кода

优化  首页viewpager滑动问题

liujiangyao лет назад: 8
Родитель
Сommit
5ce14c3625

+ 2 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -77,6 +77,7 @@ import com.sheep.gamegroup.view.activity.NotificationsUtils;
 import com.sheep.gamegroup.view.adapter.AdpHomeListGrideview;
 import com.sheep.gamegroup.view.adapter.AdpHomeListListview;
 import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
+import com.sheep.gamegroup.view.customview.SheepViewPager;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTask1;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskList;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskRegistSuccess;
@@ -143,7 +144,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @BindView(R.id.card_layout)
     LinearLayout card_layout;
     @BindView(R.id.viewpager_banner)
-    ViewPager viewpager_banner;
+    SheepViewPager viewpager_banner;
     @BindView(R.id.group_banner)
     RadioGroup group_banner;
     @BindView(R.id.scrollView)

+ 55 - 0
app/src/main/java/com/sheep/gamegroup/view/customview/SheepViewPager.java

@@ -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);
+    }
+}

+ 1 - 1
app/src/main/res/layout/homepage_item_banner.xml

@@ -6,7 +6,7 @@
     android:visibility="gone">
 
 
-    <android.support.v4.view.ViewPager
+    <com.sheep.gamegroup.view.customview.SheepViewPager
         android:id="@+id/viewpager_banner"
         android:layout_width="match_parent"
         android:layout_height="@dimen/app_group_height_135"