Переглянути джерело

Fix #284 create 方法内部自动循环bug,Opt custom indicator view.

zhpanvip 2 роки тому
батько
коміт
4cb666d408

+ 2 - 2
app/src/main/java/com/example/zhpan/banner/fragment/OthersFragment.java

@@ -83,7 +83,7 @@ public class OthersFragment extends BaseFragment implements View.OnClickListener
         .setOnPageClickListener(
             (clickedView, position) -> ToastUtils.showShort("Position:" + position))
         .setIndicatorSliderColor(getColor(R.color.red_normal_color),
-            getColor(R.color.red_checked_color)).create();
+            getColor(R.color.red_checked_color)).create(getPicList(2));
     initRadioGroup();
   }
 
@@ -102,7 +102,7 @@ public class OthersFragment extends BaseFragment implements View.OnClickListener
         setRoundCorner();
       }
     });
-    radioButton.performClick();
+    mViewPager.post(() -> radioButton.performClick());
   }
 
   private void setRoundCorner() {

+ 6 - 4
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -317,7 +317,9 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
     BannerOptions bannerOptions = mBannerManager.getBannerOptions();
     mIndicatorLayout.setVisibility(bannerOptions.getIndicatorVisibility());
     bannerOptions.resetIndicatorOptions();
-    if (!isCustomIndicator || null == mIndicatorView) {
+    if (isCustomIndicator) {
+      mIndicatorLayout.removeAllViews();
+    } else if (mIndicatorView == null) {
       mIndicatorView = new IndicatorView(getContext());
     }
     initIndicator(bannerOptions.getIndicatorOptions(), list);
@@ -512,7 +514,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    */
   public void startLoop() {
     if (!isLooping && isAutoPlay() && mBannerPagerAdapter != null &&
-        mBannerPagerAdapter.getListSize() > 1) {
+        mBannerPagerAdapter.getListSize() > 1 && isAttachedToWindow()) {
       mHandler.postDelayed(mRunnable, getInterval());
       isLooping = true;
     }
@@ -844,7 +846,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * refresh.
    */
   public void create() {
-    create(new ArrayList<T>());
+    create(new ArrayList<>());
   }
 
   /**
@@ -1072,7 +1074,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
 
   @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
   public void onResume() {
-    if (isAttachedToWindow() || !isStopLoopWhenDetachedFromWindow()) {
+    if (!isStopLoopWhenDetachedFromWindow()) {
       startLoop();
     }
   }