Browse Source

change enum to annotation

zhangpan 5 years ago
parent
commit
af9adb626c
30 changed files with 265 additions and 83 deletions
  1. 9 5
      README.md
  2. 2 2
      app/src/main/java/com/example/zhpan/circleviewpager/activity/IndicatorStyleActivity.java
  3. 2 1
      app/src/main/java/com/example/zhpan/circleviewpager/activity/NetworkBannerActivity.java
  4. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/activity/PageStyleActivity.java
  5. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/activity/PageTransformerActivity.java
  6. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/activity/PhotoViewActivity.java
  7. 26 32
      bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java
  8. 26 0
      bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorGravity.java
  9. 23 0
      bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorSlideMode.java
  10. 23 0
      bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorStyle.java
  11. 24 0
      bannerview/src/main/java/com/zhpan/bannerview/annotation/APageStyle.java
  12. 26 0
      bannerview/src/main/java/com/zhpan/bannerview/annotation/ATransformerStyle.java
  13. 13 0
      bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorGravity.java
  14. 12 0
      bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorSlideMode.java
  15. 12 0
      bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorStyle.java
  16. 12 0
      bannerview/src/main/java/com/zhpan/bannerview/constants/PageStyle.java
  17. 9 0
      bannerview/src/main/java/com/zhpan/bannerview/constants/TransformerStyle.java
  18. 0 5
      bannerview/src/main/java/com/zhpan/bannerview/enums/IndicatorSlideMode.java
  19. 0 5
      bannerview/src/main/java/com/zhpan/bannerview/enums/IndicatorStyle.java
  20. 0 5
      bannerview/src/main/java/com/zhpan/bannerview/enums/PageStyle.java
  21. 0 5
      bannerview/src/main/java/com/zhpan/bannerview/enums/TransformerStyle.java
  22. 5 5
      bannerview/src/main/java/com/zhpan/bannerview/indicator/BaseIndicatorView.java
  23. 2 1
      bannerview/src/main/java/com/zhpan/bannerview/indicator/DashIndicatorView.java
  24. 1 2
      bannerview/src/main/java/com/zhpan/bannerview/indicator/IIndicator.java
  25. 4 2
      bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorFactory.java
  26. 8 4
      bannerview/src/main/java/com/zhpan/bannerview/transform/PageTransformerFactory.java
  27. 1 1
      bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/BasePageTransformer.java
  28. 1 1
      bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/NonPageTransformer.java
  29. 1 1
      bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/ScaleInTransformer.java
  30. 20 3
      bannerview/src/main/res/values/attrs.xml

+ 9 - 5
README.md

@@ -41,10 +41,10 @@
 | BannerViewPager<T, VH> setOnPageClickListener(OnPageClickListener onPageClickListener) | 设置页面点击事件 |  |
 | BannerViewPager<T, VH> setHolderCreator(HolderCreator\<VH> holderCreator) |设置HolderCreator  |必须设置HolderCreator,否则会抛出NullPointerException|
 | BannerViewPager<T, VH> showIndicator(boolean showIndicator) |  是否显示指示器|默认值true  |
-| BannerViewPager<T, VH> setIndicatorStyle(IndicatorStyle indicatorStyle) | 设置指示器样式 | 可选枚举(CIRCLE, DASH) 默认CIRCLE  |
+| BannerViewPager<T, VH> setIndicatorStyle(int indicatorStyle) | 设置指示器样式 | 可选枚举(CIRCLE, DASH) 默认CIRCLE  |
 | BannerViewPager<T, VH> setIndicatorGravity(int gravity) | 指示器位置 |可选值(CENTER、START、END)默认值CENTER |
 | BannerViewPager<T, VH> setIndicatorColor(int normalColor,int checkedColor) | 指示器圆点颜色 |normalColor:未选中时颜色默认"#8C6C6D72", checkedColor:选中时颜色 默认"#8C18171C" |
-| BannerViewPager<T, VH> setIndicatorSlideMode(IndicatorSlideMode slideMode)  | 设置Indicator滑动模式 | 可选(NORMAL、SMOOTH),默认值SMOOTH  |
+| BannerViewPager<T, VH> setIndicatorSlideMode(int slideMode)  | 设置Indicator滑动模式 | 可选(NORMAL、SMOOTH),默认值SMOOTH  |
 | BannerViewPager<T, VH> setIndicatorRadius(int radius) | 设置指示器圆点半径 | 默认值4dp|
 | BannerViewPager<T, VH> setIndicatorRadius(int normalRadius,int checkRadius)  |设置指示器圆点半径  |  normalRadius:未选中时半径  checkedRadius:选中时的半径,默认值4dp |
 | BannerViewPager<T, VH> setIndicatorWidth(int indicatorWidth) | 设置指示器宽度,如果是圆形指示器,则为直径 |  默认值8dp|
@@ -52,7 +52,11 @@
 | BannerViewPager<T, VH> setIndicatorHeight(int indicatorHeight) | 设置指示器高度,仅在Indicator样式为DASH时有效 | 默认值normalIndicatorWidth/2 |
 | BannerViewPager<T, VH> setIndicatorGap(int indicatorMargin) | 指示器圆点间距| 默认值为指示器宽度(或者是圆的直径)|
 | BannerViewPager<T, VH> setIndicatorView(IIndicator indicatorView) | 设置自定义指示器| 设置自定义指示器后以上关于IndicatorView的参数会部分失效|
-| BannerViewPager<T, VH> setPageTransformerStyle(TransformerStyle style) | 设置页面Transformer内置样式 |  |
+| BannerViewPager<T, VH> setPageTransformerStyle(int style) | 设置页面Transformer内置样式 |  |
+| BannerViewPager<T, VH> setCurrentItem(int item) | Set the currently selected page. | 2.3.5新增 |
+| void getCurrentItem() | 获取当前position | 2.3.5新增 |
+| BannerViewPager<T, VH> setPageStyle(@APageStyle int pageStyle) | 设置页面样式 | 2.4.0新增 可选(MULTI_PAGE)MULTI_PAGE:一屏多页样式 |
+| BannerViewPager<T, VH> setPageMargin(int pageMargin) | 设置页面间隔 | 2.4.0新增 |
 | void startLoop() |开启自动轮播 | 初始化BannerViewPager时不必调用该方法,设置setAutoPlay后会调用startLoop() |
 | void stopLoop() | 停止自动轮播 | 如果开启自动轮播,为避免内存泄漏需要在onStop()或onDestory中调用此方法 |
 | ViewPager getViewPager() | 获取BannerViewPager内部封装的ViewPager |  |
@@ -175,7 +179,7 @@ public class NetViewHolder implements ViewHolder<BannerData> {
                 .setAutoPlay(true)
                 .setRoundCorner(DpUtils.dp2px(7))
                 .setIndicatorColor(Color.parseColor("#935656"), Color.parseColor("#FF4C39"))
-                .setIndicatorGravity(BannerViewPager.END)
+                .setIndicatorGravity(IndicatorGravity.END)
                 .setScrollDuration(1000).setHolderCreator(NetViewHolder::new)
                 .setOnPageClickListener(position -> {
                     BannerData bannerData = mBannerViewPager.getList().get(position);
@@ -312,7 +316,7 @@ public class DashIndicatorView extends BaseIndicatorView {
  - [x] 增加IndicatorView的滑动样式(2.2.2)
 
  - [x] 增添更多Indicator样式(2.3.+)
- - [ ]  支持一屏显示多页 (2.3.6
+ - [ ]  支持一屏显示多页 (2.4.0
  - [ ]  ViewPager更换为ViewPager2 (3.0.0)
  - [ ] 目前Indicator部分代码比较乱,还有很大很大的优化空间,后续版本将持续优化
  

+ 2 - 2
app/src/main/java/com/example/zhpan/circleviewpager/activity/IndicatorStyleActivity.java

@@ -7,8 +7,8 @@ import android.os.Bundle;
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
 import com.zhpan.bannerview.BannerViewPager;
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
-import com.zhpan.bannerview.enums.IndicatorStyle;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
+import com.zhpan.bannerview.constants.IndicatorStyle;
 import com.zhpan.bannerview.utils.DpUtils;
 
 public class IndicatorStyleActivity extends BaseDataActivity {

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

@@ -22,6 +22,7 @@ import com.scwang.smartrefresh.header.MaterialHeader;
 import com.scwang.smartrefresh.layout.SmartRefreshLayout;
 import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
 import com.zhpan.bannerview.BannerViewPager;
+import com.zhpan.bannerview.constants.IndicatorGravity;
 import com.zhpan.bannerview.utils.DpUtils;
 import com.zhpan.idea.net.common.DefaultObserver;
 import com.zhpan.idea.utils.RxUtil;
@@ -103,7 +104,7 @@ public class NetworkBannerActivity extends RxAppCompatActivity {
                 .setAutoPlay(true)
                 .setRoundCorner(DpUtils.dp2px(7))
                 .setIndicatorColor(Color.parseColor("#935656"), Color.parseColor("#FF4C39"))
-                .setIndicatorGravity(BannerViewPager.END)
+                .setIndicatorGravity(IndicatorGravity.END)
                 .setScrollDuration(1000).setHolderCreator(NetViewHolder::new)
                 .setOnPageClickListener(position -> {
                     BannerData bannerData = mBannerViewPager.getList().get(position);

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

@@ -5,7 +5,7 @@ import android.os.Bundle;
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
 import com.zhpan.bannerview.BannerViewPager;
-import com.zhpan.bannerview.enums.PageStyle;
+import com.zhpan.bannerview.constants.PageStyle;
 import com.zhpan.bannerview.utils.DpUtils;
 
 public class PageStyleActivity extends BaseDataActivity {

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

@@ -10,7 +10,7 @@ import android.widget.Toast;
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.viewholder.TransformerViewHolder;
 import com.zhpan.bannerview.BannerViewPager;
-import com.zhpan.bannerview.enums.TransformerStyle;
+import com.zhpan.bannerview.constants.TransformerStyle;
 import com.zhpan.bannerview.transform.StackTransformer;
 
 import java.util.ArrayList;

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

@@ -6,7 +6,7 @@ import android.os.Bundle;
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.viewholder.PhotoViewHolder;
 import com.zhpan.bannerview.BannerViewPager;
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
 
 import java.util.ArrayList;
 import java.util.List;

+ 26 - 32
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -8,7 +8,6 @@ import android.os.Build;
 import android.os.Handler;
 
 import androidx.annotation.ColorInt;
-import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
 import androidx.viewpager.widget.ViewPager;
 
@@ -17,31 +16,35 @@ import android.view.MotionEvent;
 import android.view.View;
 import android.widget.RelativeLayout;
 
-import com.zhpan.bannerview.enums.IndicatorStyle;
-import com.zhpan.bannerview.enums.PageStyle;
+import com.zhpan.bannerview.annotation.AIndicatorGravity;
+import com.zhpan.bannerview.annotation.AIndicatorSlideMode;
+import com.zhpan.bannerview.annotation.AIndicatorStyle;
+import com.zhpan.bannerview.annotation.APageStyle;
+import com.zhpan.bannerview.annotation.ATransformerStyle;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
+import com.zhpan.bannerview.constants.IndicatorStyle;
 import com.zhpan.bannerview.indicator.BaseIndicatorView;
 import com.zhpan.bannerview.indicator.DashIndicatorView;
 import com.zhpan.bannerview.indicator.IIndicator;
 import com.zhpan.bannerview.indicator.IndicatorFactory;
-import com.zhpan.bannerview.transform.ScaleInTransformer;
+import com.zhpan.bannerview.transform.pagestyle.ScaleInTransformer;
 import com.zhpan.bannerview.utils.DpUtils;
 import com.zhpan.bannerview.adapter.BannerPagerAdapter;
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
 import com.zhpan.bannerview.holder.HolderCreator;
 import com.zhpan.bannerview.holder.ViewHolder;
 import com.zhpan.bannerview.provider.BannerScroller;
 import com.zhpan.bannerview.provider.ViewStyleSetter;
 import com.zhpan.bannerview.transform.PageTransformerFactory;
-import com.zhpan.bannerview.enums.TransformerStyle;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.zhpan.bannerview.constants.IndicatorGravity.CENTER;
+import static com.zhpan.bannerview.constants.IndicatorGravity.END;
+import static com.zhpan.bannerview.constants.IndicatorGravity.START;
+import static com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE;
+
 /**
  * Created by zhpan on 2017/3/28.
  */
@@ -63,10 +66,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
     private boolean isAutoPlay = false;
     // 是否显示指示器
     private boolean showIndicator = true;
-    // 指示器显示位置
-    public static final int START = 1;
-    public static final int END = 2;
-    public static final int CENTER = 0;
+
     private int gravity;
     // 未选中时指示器颜色
     private int indicatorNormalColor;
@@ -99,11 +99,11 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * @see IndicatorStyle#CIRCLE 圆形指示器
      * @see IndicatorStyle#DASH  虚线指示器
      */
-    private IndicatorStyle mIndicatorStyle;
+    private int mIndicatorStyle;
 
     private HolderCreator<VH> holderCreator;
     // IndicatorView的滑动模式
-    private IndicatorSlideMode mIndicatorSlideMode;
+    private int mIndicatorSlideMode;
 
     Handler mHandler = new Handler();
 
@@ -455,7 +455,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
     /**
      * 设置页面Transformer内置样式
      */
-    public BannerViewPager<T, VH> setPageTransformerStyle(TransformerStyle style) {
+    public BannerViewPager<T, VH> setPageTransformerStyle(@ATransformerStyle int style) {
         mViewPager.setPageTransformer(true, new PageTransformerFactory().createPageTransformer(style));
         return this;
     }
@@ -577,11 +577,11 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * 设置指示器位置
      *
      * @param gravity 指示器位置
-     *                {@link BannerViewPager#CENTER}
-     *                {@link BannerViewPager#START}
-     *                {@link BannerViewPager#END}
+     *                {@link com.zhpan.bannerview.constants.IndicatorGravity#CENTER}
+     *                {@link com.zhpan.bannerview.constants.IndicatorGravity#START}
+     *                {@link com.zhpan.bannerview.constants.IndicatorGravity#END}
      */
-    public BannerViewPager<T, VH> setIndicatorGravity(@IndicatorGravity int gravity) {
+    public BannerViewPager<T, VH> setIndicatorGravity(@AIndicatorGravity int gravity) {
         this.gravity = gravity;
         return this;
     }
@@ -590,10 +590,10 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * 设置IndicatorView滑动模式,默认值{@link IndicatorSlideMode#SMOOTH}
      *
      * @param slideMode Indicator滑动模式
-     * @see com.zhpan.bannerview.enums.IndicatorSlideMode#NORMAL
-     * @see com.zhpan.bannerview.enums.IndicatorSlideMode#SMOOTH
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#NORMAL
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#SMOOTH
      */
-    public BannerViewPager<T, VH> setIndicatorSlideMode(IndicatorSlideMode slideMode) {
+    public BannerViewPager<T, VH> setIndicatorSlideMode(@AIndicatorSlideMode int slideMode) {
         mIndicatorSlideMode = slideMode;
         return this;
     }
@@ -621,7 +621,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      *                       {@link IndicatorStyle#CIRCLE}
      *                       {@link IndicatorStyle#DASH}
      */
-    public BannerViewPager<T, VH> setIndicatorStyle(IndicatorStyle indicatorStyle) {
+    public BannerViewPager<T, VH> setIndicatorStyle(@AIndicatorStyle int indicatorStyle) {
         mIndicatorStyle = indicatorStyle;
         return this;
     }
@@ -676,7 +676,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      *
      * @return
      */
-    public BannerViewPager<T, VH> setPageStyle(PageStyle pageStyle) {
+    public BannerViewPager<T, VH> setPageStyle(@APageStyle int pageStyle) {
         switch (pageStyle) {
             case MULTI_PAGE:
                 setMultiPageStyle();
@@ -727,12 +727,6 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         return mViewPager;
     }
 
-    @IntDef({CENTER, START, END})
-    @Retention(RetentionPolicy.SOURCE)
-    @Target(ElementType.PARAMETER)
-    @interface IndicatorGravity {
-    }
-
     /**
      * 页面点击事件接口
      */

+ 26 - 0
bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorGravity.java

@@ -0,0 +1,26 @@
+package com.zhpan.bannerview.annotation;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.zhpan.bannerview.constants.IndicatorGravity.CENTER;
+import static com.zhpan.bannerview.constants.IndicatorGravity.END;
+import static com.zhpan.bannerview.constants.IndicatorGravity.START;
+
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:指示器显示位置
+ * </pre>
+ */
+@IntDef({CENTER, START, END})
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.PARAMETER)
+public @interface AIndicatorGravity {
+
+}

+ 23 - 0
bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorSlideMode.java

@@ -0,0 +1,23 @@
+package com.zhpan.bannerview.annotation;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.zhpan.bannerview.constants.IndicatorSlideMode.NORMAL;
+import static com.zhpan.bannerview.constants.IndicatorSlideMode.SMOOTH;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+@IntDef({NORMAL, SMOOTH})
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.PARAMETER)
+public @interface AIndicatorSlideMode {
+}

+ 23 - 0
bannerview/src/main/java/com/zhpan/bannerview/annotation/AIndicatorStyle.java

@@ -0,0 +1,23 @@
+package com.zhpan.bannerview.annotation;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.zhpan.bannerview.constants.IndicatorStyle.CIRCLE;
+import static com.zhpan.bannerview.constants.IndicatorStyle.DASH;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+@IntDef({CIRCLE, DASH})
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.PARAMETER)
+public @interface AIndicatorStyle {
+}

+ 24 - 0
bannerview/src/main/java/com/zhpan/bannerview/annotation/APageStyle.java

@@ -0,0 +1,24 @@
+package com.zhpan.bannerview.annotation;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE;
+import static com.zhpan.bannerview.constants.PageStyle.NORMAL;
+
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+@IntDef({NORMAL, MULTI_PAGE})
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.PARAMETER)
+public @interface APageStyle {
+}

+ 26 - 0
bannerview/src/main/java/com/zhpan/bannerview/annotation/ATransformerStyle.java

@@ -0,0 +1,26 @@
+package com.zhpan.bannerview.annotation;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.zhpan.bannerview.constants.TransformerStyle.ACCORDION;
+import static com.zhpan.bannerview.constants.TransformerStyle.DEPTH;
+import static com.zhpan.bannerview.constants.TransformerStyle.NONE;
+import static com.zhpan.bannerview.constants.TransformerStyle.ROTATE;
+import static com.zhpan.bannerview.constants.TransformerStyle.STACK;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+@IntDef({NONE, DEPTH, STACK, ACCORDION, ROTATE})
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.PARAMETER)
+public @interface ATransformerStyle {
+}

+ 13 - 0
bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorGravity.java

@@ -0,0 +1,13 @@
+package com.zhpan.bannerview.constants;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+public interface IndicatorGravity {
+    int CENTER = 0;
+    int START = 1;
+    int END = 2;
+}

+ 12 - 0
bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorSlideMode.java

@@ -0,0 +1,12 @@
+package com.zhpan.bannerview.constants;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+public interface IndicatorSlideMode {
+    int NORMAL = 0;
+    int SMOOTH = 1;
+}

+ 12 - 0
bannerview/src/main/java/com/zhpan/bannerview/constants/IndicatorStyle.java

@@ -0,0 +1,12 @@
+package com.zhpan.bannerview.constants;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+public interface IndicatorStyle {
+    int CIRCLE = 0;
+    int DASH = 1;
+}

+ 12 - 0
bannerview/src/main/java/com/zhpan/bannerview/constants/PageStyle.java

@@ -0,0 +1,12 @@
+package com.zhpan.bannerview.constants;
+
+/**
+ * <pre>
+ *   Created by zhangpan on 2019-10-18.
+ *   Description:
+ * </pre>
+ */
+public interface PageStyle {
+    int NORMAL = 0;
+    int MULTI_PAGE = 1;
+}

+ 9 - 0
bannerview/src/main/java/com/zhpan/bannerview/constants/TransformerStyle.java

@@ -0,0 +1,9 @@
+package com.zhpan.bannerview.constants;
+
+public interface TransformerStyle {
+    int NONE = 0;
+    int DEPTH = 1;
+    int STACK = 2;
+    int ACCORDION = 3;
+    int ROTATE = 4;
+}

+ 0 - 5
bannerview/src/main/java/com/zhpan/bannerview/enums/IndicatorSlideMode.java

@@ -1,5 +0,0 @@
-package com.zhpan.bannerview.enums;
-
-public enum IndicatorSlideMode {
-    NORMAL, SMOOTH
-}

+ 0 - 5
bannerview/src/main/java/com/zhpan/bannerview/enums/IndicatorStyle.java

@@ -1,5 +0,0 @@
-package com.zhpan.bannerview.enums;
-
-public enum IndicatorStyle {
-    CIRCLE, DASH
-}

+ 0 - 5
bannerview/src/main/java/com/zhpan/bannerview/enums/PageStyle.java

@@ -1,5 +0,0 @@
-package com.zhpan.bannerview.enums;
-
-public enum PageStyle {
-    MULTI_PAGE
-}

+ 0 - 5
bannerview/src/main/java/com/zhpan/bannerview/enums/TransformerStyle.java

@@ -1,5 +0,0 @@
-package com.zhpan.bannerview.enums;
-
-public enum TransformerStyle {
-    DEPTH, ROTATE, STACK, ACCORDION,
-}

+ 5 - 5
bannerview/src/main/java/com/zhpan/bannerview/indicator/BaseIndicatorView.java

@@ -7,7 +7,7 @@ import android.view.View;
 
 import androidx.annotation.Nullable;
 
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
 import com.zhpan.bannerview.utils.DpUtils;
 
 /**
@@ -55,7 +55,7 @@ public class BaseIndicatorView extends View implements IIndicator {
      * @see IndicatorSlideMode#NORMAL
      * @see IndicatorSlideMode#SMOOTH
      */
-    protected IndicatorSlideMode slideMode;
+    protected int slideMode;
 
     protected float normalIndicatorWidth;
     protected float checkedIndicatorWidth;
@@ -153,11 +153,11 @@ public class BaseIndicatorView extends View implements IIndicator {
 
     /**
      * @param slideMode Indicator滑动样式
-     * @see IndicatorSlideMode#NORMAL
-     * @see IndicatorSlideMode#SMOOTH
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#NORMAL
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#SMOOTH
      */
     @Override
-    public void setSlideMode(IndicatorSlideMode slideMode) {
+    public void setSlideMode(int slideMode) {
         this.slideMode = slideMode;
     }
 

+ 2 - 1
bannerview/src/main/java/com/zhpan/bannerview/indicator/DashIndicatorView.java

@@ -5,7 +5,8 @@ import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.util.AttributeSet;
 
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
+
 
 /**
  * Created by zhpan on 2017/12/6.

+ 1 - 2
bannerview/src/main/java/com/zhpan/bannerview/indicator/IIndicator.java

@@ -2,7 +2,6 @@ package com.zhpan.bannerview.indicator;
 
 import androidx.viewpager.widget.ViewPager;
 
-import com.zhpan.bannerview.enums.IndicatorSlideMode;
 
 /**
  * <pre>
@@ -17,7 +16,7 @@ public interface IIndicator extends ViewPager.OnPageChangeListener {
 
     void setCheckedColor(int checkedColor);
 
-    void setSlideMode(IndicatorSlideMode slideStyle);
+    void setSlideMode(int slideStyle);
 
     void setIndicatorGap(int gap);
 

+ 4 - 2
bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorFactory.java

@@ -2,10 +2,12 @@ package com.zhpan.bannerview.indicator;
 
 import android.content.Context;
 
-import com.zhpan.bannerview.enums.IndicatorStyle;
+import com.zhpan.bannerview.annotation.AIndicatorStyle;
+import com.zhpan.bannerview.constants.IndicatorStyle;
+
 
 public class IndicatorFactory {
-    public static BaseIndicatorView createIndicatorView(Context context, IndicatorStyle indicatorStyle) {
+    public static BaseIndicatorView createIndicatorView(Context context, @AIndicatorStyle int indicatorStyle) {
         BaseIndicatorView indicatorView;
         if (indicatorStyle == IndicatorStyle.DASH) {
             indicatorView = new DashIndicatorView(context);

+ 8 - 4
bannerview/src/main/java/com/zhpan/bannerview/transform/PageTransformerFactory.java

@@ -2,11 +2,15 @@ package com.zhpan.bannerview.transform;
 
 import androidx.viewpager.widget.ViewPager;
 
-import com.zhpan.bannerview.enums.TransformerStyle;
+import static com.zhpan.bannerview.constants.TransformerStyle.ACCORDION;
+import static com.zhpan.bannerview.constants.TransformerStyle.DEPTH;
+import static com.zhpan.bannerview.constants.TransformerStyle.ROTATE;
+import static com.zhpan.bannerview.constants.TransformerStyle.STACK;
+
 
 public class PageTransformerFactory {
 
-    public ViewPager.PageTransformer createPageTransformer(TransformerStyle transformerStyle) {
+    public ViewPager.PageTransformer createPageTransformer(int transformerStyle) {
         ViewPager.PageTransformer transformer = null;
         switch (transformerStyle) {
             case DEPTH:
@@ -16,10 +20,10 @@ public class PageTransformerFactory {
                 transformer=new RotateUpTransformer();
                 break;
             case STACK:
-                transformer=new StackTransformer();
+                transformer = new StackTransformer();
                 break;
             case ACCORDION:
-                transformer=new AccordionTransformer();
+                transformer = new AccordionTransformer();
                 break;
         }
         return transformer;

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/BasePageTransformer.java → bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/BasePageTransformer.java

@@ -1,4 +1,4 @@
-package com.zhpan.bannerview.transform;
+package com.zhpan.bannerview.transform.pagestyle;
 
 import android.annotation.TargetApi;
 import android.os.Build;

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/NonPageTransformer.java → bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/NonPageTransformer.java

@@ -1,4 +1,4 @@
-package com.zhpan.bannerview.transform;
+package com.zhpan.bannerview.transform.pagestyle;
 
 import android.view.View;
 

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/ScaleInTransformer.java → bannerview/src/main/java/com/zhpan/bannerview/transform/pagestyle/ScaleInTransformer.java

@@ -1,4 +1,4 @@
-package com.zhpan.bannerview.transform;
+package com.zhpan.bannerview.transform.pagestyle;
 
 import android.annotation.TargetApi;
 import android.os.Build;

+ 20 - 3
bannerview/src/main/res/values/attrs.xml

@@ -9,10 +9,27 @@
         <attr name="bvp_indicator_checked_color" format="color" />
         <attr name="bvp_indicator_normal_color" format="color" />
         <attr name="bvp_indicator_radius" format="dimension" />
+        <attr name="bvp_indicator_style" format="enum">
+            <enum name="circle" value="0" />
+            <enum name="dash" value="1" />
+        </attr>
+        <attr name="bvp_indicator_slide_mode" format="enum">
+            <enum name="circle" value="0" />
+            <enum name="dash" value="1" />
+        </attr>
         <attr name="bvp_indicator_gravity" format="enum">
-            <enum name="center" value="0" />
-            <enum name="start" value="1" />
-            <enum name="end" value="2" />
+            <enum name="normal" value="0" />
+            <enum name="smooth" value="1" />
+        </attr>
+        <attr name="bvp_page_style" format="enum">
+            <enum name="normal" value="0" />
+            <enum name="multi_page" value="1" />
+        </attr>
+        <attr name="bvp_transformer_style" format="enum">
+            <enum name="normal" value="0" />
+            <enum name="depth" value="1" />
+            <enum name="stack" value="2" />
+            <enum name="accordion" value="3" />
         </attr>
         <attr name="bvp_page_margin" format="dimension" />
         <attr name="bvp_reveal_width" format="dimension" />