liujiangyao пре 8 година
родитељ
комит
c2adc4110a

+ 45 - 9
app/src/main/java/com/sheep/gamegroup/util/ImageGlarryDrawable.java

@@ -7,6 +7,7 @@ import android.support.v4.view.PagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.text.TextUtils;
 import android.view.Gravity;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
@@ -120,7 +121,8 @@ public class ImageGlarryDrawable {
         if (mList.size() > 1) {//有两张或以上图片,开始轮播
             if (!mIsMoved) {
                 mIsMoved = true;
-                handler.sendEmptyMessageDelayed(0, mIntDelayTime);
+                handler.removeMessages(1);
+                handler.sendEmptyMessageDelayed(1, mIntDelayTime);
             }
             //handler.sendEmptyMessageDelayed(1, mIntDelayTime);
         } else if (mList.size() == 1) {//如果只有一个或没有,就隐藏Group
@@ -133,6 +135,7 @@ public class ImageGlarryDrawable {
         mViewPager.setAdapter(pagerAdapter);
         mViewPager.setCurrentItem(0);
         mViewPager.addOnPageChangeListener(onPageChangeListener);
+        mViewPager.setOnTouchListener(onTouchListener);
         return this;
     }
 
@@ -155,15 +158,22 @@ public class ImageGlarryDrawable {
         @Override
         public void handleMessage(Message msg) {
             super.handleMessage(msg);
-            if (mActivity.isFinishing() || mList.size() < 2) {
-                return;
+            switch (msg.what){
+                case 1:
+                    pagerAdapter.notifyDataSetChanged();
+                    if (mActivity.isFinishing() || mList.size() < 2) {
+                        return;
+                    }
+                    if (mViewPager.getCurrentItem() >= mList.size() - 1) {
+                        mViewPager.setCurrentItem(0, true);
+                    } else {
+                        mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true);
+                    }
+                    handler.removeMessages(1);
+                    sendEmptyMessageDelayed(1, mIntDelayTime);
+                    break;
             }
-            if (mViewPager.getCurrentItem() >= mList.size() - 1) {
-                mViewPager.setCurrentItem(0, true);
-            } else {
-                mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true);
-            }
-            sendEmptyMessageDelayed(0, mIntDelayTime);
+
         }
     };
 
@@ -198,6 +208,32 @@ public class ImageGlarryDrawable {
         }
     };
 
+    /**
+     * touch
+     */
+    private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            switch (event.getAction()){
+                case MotionEvent.ACTION_DOWN:
+                    if(handler != null){
+                        handler.removeMessages(1);
+                    }
+
+                    break;
+                case MotionEvent.ACTION_CANCEL:
+                case MotionEvent.ACTION_MOVE:
+                    if (mList.size() > 1) {//有两张或以上图片,开始轮播
+                        mIsMoved = false;
+                        mIsMoved = true;
+                        handler.removeMessages(1);
+                        handler.sendEmptyMessageDelayed(1, mIntDelayTime);
+                    }
+                    break;
+            }
+            return false;
+        }
+    };
 
     /**
      * ViewPager

+ 70 - 0
app/src/main/java/com/sheep/gamegroup/view/customview/SheepmSwipeRefreshLayout.java

@@ -0,0 +1,70 @@
+package com.sheep.gamegroup.view.customview;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+
+/**
+ * Created by ljy on 2018/5/24.
+ */
+
+public class SheepmSwipeRefreshLayout extends SwipeRefreshLayout {
+
+    private float startY;
+    private float startX;
+    // 记录viewPager是否拖拽的标记
+    private boolean mIsVpDragger;
+    private int mTouchSlop;
+
+    public SheepmSwipeRefreshLayout(@NonNull Context context) {
+        super(context);
+    }
+
+    public SheepmSwipeRefreshLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        int action = ev.getAction();
+        switch (action) {
+            case MotionEvent.ACTION_DOWN:
+                // 记录手指按下的位置
+                startY = ev.getY();
+                startX = ev.getX();
+                // 初始化标记
+                mIsVpDragger = false;
+                break;
+            case MotionEvent.ACTION_MOVE:
+                // 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false;
+                if(mIsVpDragger) {
+                    return false;
+                }
+
+                // 获取当前手指位置
+                float endY = ev.getY();
+                float endX = ev.getX();
+                float distanceX = Math.abs(endX - startX);
+                float distanceY = Math.abs(endY - startY);
+                // 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。
+//                if(distanceX > mTouchSlop && distanceX > distanceY) {
+                if(distanceX > 10) {
+                    mIsVpDragger = true;
+                    return false;
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+            case MotionEvent.ACTION_CANCEL:
+                // 初始化标记
+                mIsVpDragger = false;
+                break;
+        }
+        // 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。
+        return super.onInterceptTouchEvent(ev);
+    }
+}

+ 2 - 2
app/src/main/res/layout/fgt_try_makemoney_layout.xml

@@ -9,7 +9,7 @@
         layout="@layout/empty_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
-    <android.support.v4.widget.SwipeRefreshLayout
+    <com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout
         android:id="@+id/refresh"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -20,5 +20,5 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical" />
-    </android.support.v4.widget.SwipeRefreshLayout>
+    </com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout>
 </RelativeLayout>