张攀 5 роки тому
батько
коміт
367d03f14b

+ 3 - 3
README.md

@@ -140,12 +140,12 @@ public class NetViewHolder implements ViewHolder<BannerData> {
     		mViewpager.stopLoop();
     }
 ```
-为了节省性能也可以在onPause中停止轮播,在onResume中开启轮播:
+为了节省性能也可以在onStop中停止轮播,在onResume中开启轮播:
 
 ```
     @Override
-    protected void onPause() {
-        super.onPause();
+    protected void onStop() {
+        super.onStop();
         if (mBannerViewPager != null)
             mBannerViewPager.stopLoop();
     }

+ 1 - 1
app/src/main/java/com/example/zhpan/circleviewpager/activity/IndicatorSlideModeActivity.java

@@ -33,7 +33,7 @@ public class IndicatorSlideModeActivity extends AppCompatActivity {
         mList = Arrays.asList(picUrls);
         mViewPager.setAutoPlay(false).setCanLoop(true)
                 .setRoundCorner(5f)
-                .setIndicatorRadius(3f,3.5f)
+                .setIndicatorRadius(13f,15f)
                 .setHolderCreator(SlideModeViewHolder::new)
                 .setIndicatorColor(Color.parseColor("#935656"), Color.parseColor("#FF4C39")).create(mList);
     }

+ 1 - 1
bannerview/build.gradle

@@ -37,7 +37,7 @@ dependencies {
     implementation 'androidx.appcompat:appcompat:1.0.2'
 }
 
-version = "2.2.3"
+version = "2.2.4"
 def siteUrl = 'https://github.com/zhpanvip/BannerViewPager'      // 项目的主页
 def gitUrl = 'https://github.com/zhpanvip/BannerViewPager.git'   // Git仓库的url
 group = "com.zhpan.library" // Maven Group ID for the artifact,一般填你唯一的包名

+ 27 - 11
bannerview/src/main/java/com/zhpan/bannerview/indicator/CircleIndicatorView.java

@@ -5,6 +5,7 @@ import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.View;
 
 import com.zhpan.bannerview.enums.IndicatorSlideMode;
@@ -80,17 +81,39 @@ public class CircleIndicatorView extends View implements IIndicator {
     @Override
     public void onPageSelected(int position) {
         if (mSlideStyle == IndicatorSlideMode.NORMAL) {
-            this.currentPosition = position;
+            currentPosition = position;
+            slideProgress = 0;
             invalidate();
+        } else if (mSlideStyle == IndicatorSlideMode.SMOOTH) {
+            if (position == 0 && slideToRight) {
+                currentPosition = 0;
+                slideProgress = 0;
+                invalidate();
+            } else if (position == mPageSize - 1 && !slideToRight) {
+                currentPosition = mPageSize - 1;
+                slideProgress = 0;
+                invalidate();
+            }
+
         }
     }
 
+    //  TODO 如何判断是左滑还是右滑,现在右滑没问题...
+    boolean slideToRight = true;
+
     @Override
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
         if (mSlideStyle == IndicatorSlideMode.SMOOTH) {
-            slideProgress = positionOffset;
-            currentPosition = position;
-            invalidate();
+//            if (!(position == mPageSize - 1 || position == 0)) {
+//                slideProgress = (currentPosition == mPageSize - 1) ? 0 : positionOffset;
+//                currentPosition = position;
+//                invalidate();
+//            }
+            if (!(position == mPageSize - 1 )) {
+                slideProgress = (currentPosition == mPageSize - 1) ? 0 : positionOffset;
+                currentPosition = position;
+                invalidate();
+            }
         }
     }
 
@@ -100,13 +123,6 @@ public class CircleIndicatorView extends View implements IIndicator {
     }
 
     private void drawSlideStyle(Canvas canvas) {
-        switch (mSlideStyle) {
-            case NORMAL:
-                slideProgress = 0;
-            case SMOOTH:
-                slideProgress = (currentPosition == mPageSize - 1) ? 0 : slideProgress;
-                break;
-        }
         mPaint.setColor(checkedColor);
         canvas.drawCircle(maxRadius + (2 * mNormalRadius + mMargin) * currentPosition + (2 * mNormalRadius + mMargin) * slideProgress,
                 height / 2f, mCheckedRadius, mPaint);