Browse Source

2.5.0 Refactoring Indicator (#36)

* Convert part of java file to kotlin.

* Refactoring Indicator.

* Optimize Indicator.
zhpanvip 5 years ago
parent
commit
936d6fe884
46 changed files with 758 additions and 725 deletions
  1. 3 2
      README.md
  2. 2 4
      app/build.gradle
  3. 0 26
      app/src/main/java/com/example/zhpan/circleviewpager/activity/BaseDataActivity.java
  4. 24 0
      app/src/main/java/com/example/zhpan/circleviewpager/activity/BaseDataActivity.kt
  5. 0 92
      app/src/main/java/com/example/zhpan/circleviewpager/activity/MainActivity.java
  6. 75 0
      app/src/main/java/com/example/zhpan/circleviewpager/activity/MainActivity.kt
  7. 0 30
      app/src/main/java/com/example/zhpan/circleviewpager/activity/PhotoViewActivity.java
  8. 30 0
      app/src/main/java/com/example/zhpan/circleviewpager/activity/PhotoViewActivity.kt
  9. 2 5
      app/src/main/java/com/example/zhpan/circleviewpager/activity/WelcomeActivity.kt
  10. 0 62
      app/src/main/java/com/example/zhpan/circleviewpager/adapter/AdapterFragmentPager.java
  11. 55 0
      app/src/main/java/com/example/zhpan/circleviewpager/adapter/AdapterFragmentPager.kt
  12. 0 66
      app/src/main/java/com/example/zhpan/circleviewpager/adapter/ArticleAdapter.java
  13. 50 0
      app/src/main/java/com/example/zhpan/circleviewpager/adapter/ArticleAdapter.kt
  14. 0 60
      app/src/main/java/com/example/zhpan/circleviewpager/bean/ArticleWrapper.java
  15. 18 0
      app/src/main/java/com/example/zhpan/circleviewpager/bean/ArticleWrapper.kt
  16. 0 36
      app/src/main/java/com/example/zhpan/circleviewpager/bean/CustomBean.java
  17. 10 0
      app/src/main/java/com/example/zhpan/circleviewpager/bean/CustomBean.kt
  18. 0 21
      app/src/main/java/com/example/zhpan/circleviewpager/bean/DataBean.java
  19. 0 26
      app/src/main/java/com/example/zhpan/circleviewpager/bean/DataWrapper.java
  20. 5 0
      app/src/main/java/com/example/zhpan/circleviewpager/bean/DataWrapper.kt
  21. 0 90
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.java
  22. 65 0
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.kt
  23. 6 6
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/HomeFragment.java
  24. 14 15
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/IndicatorFragment.java
  25. 11 19
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/PageFragment.java
  26. 0 30
      app/src/main/java/com/example/zhpan/circleviewpager/view/CornerImageView.java
  27. 19 0
      app/src/main/java/com/example/zhpan/circleviewpager/view/CornerImageView.kt
  28. 1 1
      app/src/main/res/layout/activity_page_style.xml
  29. 1 1
      app/src/main/res/layout/fragment_find.xml
  30. 1 0
      app/src/main/res/layout/fragment_others.xml
  31. 4 3
      bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java
  32. 0 47
      bannerview/src/main/java/com/zhpan/bannerview/indicator/BaseIndicatorView.java
  33. 4 16
      bannerview/src/main/java/com/zhpan/bannerview/indicator/CircleIndicatorView.java
  34. 3 25
      bannerview/src/main/java/com/zhpan/bannerview/indicator/DashIndicatorView.java
  35. 1 12
      bannerview/src/main/java/com/zhpan/bannerview/indicator/IIndicator.java
  36. 0 19
      bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorFactory.java
  37. 54 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorView.java
  38. 53 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/BaseDrawer.java
  39. 61 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/CircleDrawer.java
  40. 98 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/DashDrawer.java
  41. 51 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/DrawerController.java
  42. 21 0
      bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/IDrawer.java
  43. 1 1
      bannerview/src/main/java/com/zhpan/bannerview/manager/AttributeController.java
  44. 3 5
      bannerview/src/main/java/com/zhpan/bannerview/manager/BannerOptions.java
  45. 12 2
      bannerview/src/main/java/com/zhpan/bannerview/manager/IndicatorOptions.java
  46. 0 3
      bannerview/src/main/java/com/zhpan/bannerview/provider/BannerScroller.java

+ 3 - 2
README.md

@@ -380,9 +380,10 @@ public class FigureIndicatorView extends BaseIndicatorView {
  - [x] 增添更多Indicator样式(2.3.+)
  - [x] 支持一屏显示多页 (2.4.0)
  - [x] v2.4.3版本着重优化提升性能
- - [ ] v2.5.0优化整理Indicator,尽量修复Indicator SMOOTH模式下滑动问题
+ - [x] 重构Indicator,~~尽量修复Indicator SMOOTH模式下滑动问题~~
+ - [x] 目前Indicator部分代码比较乱,还有很大很大的优化空间,后续版本将持续优化(2.5.0对Indicator再次进行了重构,重构后代码已经很整洁,但仍然有优化空间)
  - [ ] ViewPager更换为ViewPager2 (3.0.0)
- - [ ] 目前Indicator部分代码比较乱,还有很大很大的优化空间,后续版本将持续优化
+
  
 
 

+ 2 - 4
app/build.gradle

@@ -44,7 +44,7 @@ dependencies {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
     implementation 'androidx.appcompat:appcompat:1.1.0'
-    implementation 'androidx.recyclerview:recyclerview:1.0.0'
+    implementation 'androidx.recyclerview:recyclerview:1.1.0'
     testImplementation 'junit:junit:4.12'
     implementation 'com.github.bumptech.glide:glide:4.9.0'
     implementation 'com.github.chrisbanes:PhotoView:2.1.0'
@@ -54,7 +54,5 @@ dependencies {
     implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0'
     debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-2'
     implementation project(path: ':ideahttp')
-    api 'com.jakewharton:butterknife:10.2.0'
-    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
-    implementation 'androidx.core:core-ktx:1.0.2'
+    implementation 'androidx.core:core-ktx:1.1.0'
 }

+ 0 - 26
app/src/main/java/com/example/zhpan/circleviewpager/activity/BaseDataActivity.java

@@ -1,26 +0,0 @@
-package com.example.zhpan.circleviewpager.activity;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.os.Bundle;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class BaseDataActivity extends AppCompatActivity {
-
-    protected List<Integer> mDrawableList = new ArrayList<>();
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        initData();
-    }
-
-    private void initData() {
-        for (int i = 0; i <= 2; i++) {
-            int drawable = getResources().getIdentifier("guide" + i, "drawable", getPackageName());
-            mDrawableList.add(drawable);
-        }
-    }
-}

+ 24 - 0
app/src/main/java/com/example/zhpan/circleviewpager/activity/BaseDataActivity.kt

@@ -0,0 +1,24 @@
+package com.example.zhpan.circleviewpager.activity
+
+import androidx.appcompat.app.AppCompatActivity
+
+import android.os.Bundle
+
+import java.util.ArrayList
+
+abstract class BaseDataActivity : AppCompatActivity() {
+
+    protected var mDrawableList: MutableList<Int> = ArrayList()
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        initData()
+    }
+
+    private fun initData() {
+        for (i in 0..2) {
+            val drawable = resources.getIdentifier("guide$i", "drawable", packageName)
+            mDrawableList.add(drawable)
+        }
+    }
+}

+ 0 - 92
app/src/main/java/com/example/zhpan/circleviewpager/activity/MainActivity.java

@@ -1,92 +0,0 @@
-package com.example.zhpan.circleviewpager.activity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.viewpager.widget.ViewPager;
-
-import android.widget.RadioGroup;
-
-import com.example.zhpan.circleviewpager.R;
-import com.example.zhpan.circleviewpager.adapter.AdapterFragmentPager;
-import com.zhpan.bannerview.view.CatchViewPager;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-
-public class MainActivity extends AppCompatActivity {
-
-    @BindView(R.id.rg_tab)
-    RadioGroup rgTab;
-    @BindView(R.id.vp_fragment)
-    CatchViewPager mViewPager;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-        ButterKnife.bind(this);
-        initData();
-        setListener();
-    }
-
-    private void initData() {
-        AdapterFragmentPager mAdapter = new AdapterFragmentPager(getSupportFragmentManager());
-        mViewPager.setAdapter(mAdapter);
-        mViewPager.disableTouchScroll(true);
-        mViewPager.setOffscreenPageLimit(2);
-        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
-            @Override
-            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
-            }
-
-            @Override
-            public void onPageSelected(int position) {
-                rgTab.check(getCheckedId(position));
-            }
-
-            @Override
-            public void onPageScrollStateChanged(int state) {
-
-            }
-        });
-    }
-
-    private int getCheckedId(int position) {
-        int checkedId = R.id.rb_home;
-        switch (position) {
-            case 0:
-                checkedId = R.id.rb_home;
-                break;
-            case 1:
-                checkedId = R.id.rb_find;
-                break;
-            case 2:
-                checkedId = R.id.rb_add;
-                break;
-        }
-        return checkedId;
-    }
-
-    private void setListener() {
-        rgTab.setOnCheckedChangeListener((group, checkedId) -> {
-            if (checkedId == R.id.rb_home) {
-                mViewPager.setCurrentItem(AdapterFragmentPager.PAGE_HOME, false);
-
-            } else if (checkedId == R.id.rb_find) {
-                mViewPager.setCurrentItem(AdapterFragmentPager.PAGE_FIND, false);
-
-            } else if (checkedId == R.id.rb_add) {
-                mViewPager.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, false);
-            }
-        });
-    }
-
-    public static void start(Context context) {
-        context.startActivity(new Intent(context, MainActivity.class));
-    }
-}

+ 75 - 0
app/src/main/java/com/example/zhpan/circleviewpager/activity/MainActivity.kt

@@ -0,0 +1,75 @@
+package com.example.zhpan.circleviewpager.activity
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+
+import androidx.appcompat.app.AppCompatActivity
+import androidx.viewpager.widget.ViewPager
+
+
+import com.example.zhpan.circleviewpager.R
+import com.example.zhpan.circleviewpager.adapter.AdapterFragmentPager
+
+import kotlinx.android.synthetic.main.activity_main.*
+
+
+class MainActivity : AppCompatActivity() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_main)
+        initData()
+        setListener()
+    }
+
+    private fun initData() {
+        val mAdapter = AdapterFragmentPager(supportFragmentManager)
+        vp_fragment!!.adapter = mAdapter
+        vp_fragment!!.disableTouchScroll(true)
+        vp_fragment!!.offscreenPageLimit = 2
+        vp_fragment!!.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
+
+            }
+
+            override fun onPageSelected(position: Int) {
+                rg_tab!!.check(getCheckedId(position))
+            }
+
+            override fun onPageScrollStateChanged(state: Int) {
+
+            }
+        })
+    }
+
+    private fun getCheckedId(position: Int): Int {
+        var checkedId = R.id.rb_home
+        when (position) {
+            0 -> checkedId = R.id.rb_home
+            1 -> checkedId = R.id.rb_find
+            2 -> checkedId = R.id.rb_add
+        }
+        return checkedId
+    }
+
+    private fun setListener() {
+        rg_tab!!.setOnCheckedChangeListener { group, checkedId ->
+            if (checkedId == R.id.rb_home) {
+                vp_fragment!!.setCurrentItem(AdapterFragmentPager.PAGE_HOME, false)
+
+            } else if (checkedId == R.id.rb_find) {
+                vp_fragment!!.setCurrentItem(AdapterFragmentPager.PAGE_FIND, false)
+
+            } else if (checkedId == R.id.rb_add) {
+                vp_fragment!!.setCurrentItem(AdapterFragmentPager.PAGE_OTHERS, false)
+            }
+        }
+    }
+
+    companion object {
+        fun start(context: Context) {
+            context.startActivity(Intent(context, MainActivity::class.java))
+        }
+    }
+}

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

@@ -1,30 +0,0 @@
-package com.example.zhpan.circleviewpager.activity;
-
-
-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.constants.IndicatorSlideMode;
-
-public class PhotoViewActivity extends BaseDataActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_banner_photo_view);
-        setTitle(R.string.wrapper_photo_view);
-        initViewPager();
-    }
-
-    private void initViewPager() {
-        BannerViewPager<Integer, PhotoViewHolder> bannerViewPager = findViewById(R.id.viewpager);
-        bannerViewPager.setAutoPlay(false)
-                .setCanLoop(false)
-                .setHolderCreator(PhotoViewHolder::new)
-                .setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
-                .create(mDrawableList);
-        bannerViewPager.setCurrentItem(1);
-    }
-}

+ 30 - 0
app/src/main/java/com/example/zhpan/circleviewpager/activity/PhotoViewActivity.kt

@@ -0,0 +1,30 @@
+package com.example.zhpan.circleviewpager.activity
+
+
+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.constants.IndicatorSlideMode
+import com.zhpan.bannerview.holder.HolderCreator
+
+class PhotoViewActivity : BaseDataActivity() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_banner_photo_view)
+        setTitle(R.string.wrapper_photo_view)
+        initViewPager()
+    }
+
+    private fun initViewPager() {
+        val bannerViewPager = findViewById<BannerViewPager<Int, PhotoViewHolder>>(R.id.viewpager)
+        bannerViewPager.setAutoPlay(false)
+                .setCanLoop(false)
+                .setHolderCreator { PhotoViewHolder() }
+                .setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
+                .create(mDrawableList)
+        bannerViewPager.currentItem = 1
+    }
+}

+ 2 - 5
app/src/main/java/com/example/zhpan/circleviewpager/activity/WelcomeActivity.kt

@@ -15,6 +15,7 @@ import com.example.zhpan.circleviewpager.viewholder.CustomPageViewHolder
 import com.zhpan.bannerview.BannerViewPager
 import com.zhpan.bannerview.adapter.OnPageChangeListenerAdapter
 import com.zhpan.bannerview.constants.IndicatorSlideMode
+import com.zhpan.bannerview.constants.IndicatorStyle
 import com.zhpan.bannerview.constants.TransformerStyle
 import com.zhpan.bannerview.holder.HolderCreator
 import com.zhpan.bannerview.utils.BannerUtils
@@ -22,8 +23,6 @@ import com.zhpan.bannerview.utils.BannerUtils
 import java.util.ArrayList
 import java.util.Random
 
-import butterknife.ButterKnife
-import butterknife.OnClick
 import kotlinx.android.synthetic.main.activity_welcome.*
 
 class WelcomeActivity : BaseDataActivity(), HolderCreator<CustomPageViewHolder> {
@@ -49,7 +48,6 @@ class WelcomeActivity : BaseDataActivity(), HolderCreator<CustomPageViewHolder>
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_welcome)
-        ButterKnife.bind(this)
         setupViewPager()
         updateUI(0)
     }
@@ -75,7 +73,6 @@ class WelcomeActivity : BaseDataActivity(), HolderCreator<CustomPageViewHolder>
                 .create(data)
     }
 
-    @OnClick(R.id.btn_start)
     fun onClick(view: View) {
         MainActivity.start(this)
         finish()
@@ -92,7 +89,7 @@ class WelcomeActivity : BaseDataActivity(), HolderCreator<CustomPageViewHolder>
         animatorSet.playTogether(translationAnim, alphaAnimator1)
         animatorSet.start()
 
-        if (position == mViewPager!!.list.size - 1 && btn_start!!.visibility == View.GONE) {
+        if (position == mViewPager.list.size - 1 && btn_start!!.visibility == View.GONE) {
             btn_start!!.visibility = View.VISIBLE
             ObjectAnimator
                     .ofFloat(btn_start, "alpha", 0f, 1f)

+ 0 - 62
app/src/main/java/com/example/zhpan/circleviewpager/adapter/AdapterFragmentPager.java

@@ -1,62 +0,0 @@
-package com.example.zhpan.circleviewpager.adapter;
-
-import android.util.SparseArray;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
-
-
-import com.example.zhpan.circleviewpager.fragment.BaseFragment;
-import com.example.zhpan.circleviewpager.fragment.IndicatorFragment;
-import com.example.zhpan.circleviewpager.fragment.PageFragment;
-import com.example.zhpan.circleviewpager.fragment.HomeFragment;
-
-public class AdapterFragmentPager extends FragmentPagerAdapter {
-
-    public static final int PAGE_HOME = 0;
-
-    public static final int PAGE_FIND = 1;
-
-    public static final int PAGE_OTHERS = 2;
-
-    private SparseArray<BaseFragment> fragmentList;
-
-    public AdapterFragmentPager(FragmentManager fm) {
-        super(fm);
-        fragmentList = getFragments();
-    }
-
-    private SparseArray<BaseFragment> getFragments() {
-        SparseArray<BaseFragment> fragmentList = new SparseArray<>();
-        fragmentList.put(PAGE_HOME, HomeFragment.getInstance());
-        fragmentList.put(PAGE_FIND, PageFragment.getInstance());
-        fragmentList.put(PAGE_OTHERS, IndicatorFragment.getInstance());
-        return fragmentList;
-    }
-
-    @NonNull
-    @Override
-    public Object instantiateItem(@NonNull ViewGroup container, int position) {
-        Fragment fragment = (Fragment) super.instantiateItem(container, position);
-        fragmentList.put(position, (BaseFragment) fragment);
-        return fragment;
-    }
-
-    @Override
-    public Fragment getItem(int position) {
-        return fragmentList.get(position);
-    }
-
-    @Override
-    public int getCount() {
-        if (fragmentList != null) {
-            return fragmentList.size();
-        } else {
-            return 0;
-        }
-    }
-
-}

+ 55 - 0
app/src/main/java/com/example/zhpan/circleviewpager/adapter/AdapterFragmentPager.kt

@@ -0,0 +1,55 @@
+package com.example.zhpan.circleviewpager.adapter
+
+import android.util.SparseArray
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentPagerAdapter
+
+
+import com.example.zhpan.circleviewpager.fragment.BaseFragment
+import com.example.zhpan.circleviewpager.fragment.IndicatorFragment
+import com.example.zhpan.circleviewpager.fragment.PageFragment
+import com.example.zhpan.circleviewpager.fragment.HomeFragment
+
+class AdapterFragmentPager(fm: FragmentManager) : FragmentPagerAdapter(fm) {
+
+    private val fragmentList: SparseArray<BaseFragment>?
+
+    private val fragments: SparseArray<BaseFragment>
+        get() {
+            val fragmentList = SparseArray<BaseFragment>()
+            fragmentList.put(PAGE_HOME, HomeFragment.getInstance())
+            fragmentList.put(PAGE_FIND, PageFragment.getInstance())
+            fragmentList.put(PAGE_OTHERS, IndicatorFragment.getInstance())
+            return fragmentList
+        }
+
+    init {
+        fragmentList = fragments
+    }
+
+    override fun instantiateItem(container: ViewGroup, position: Int): Any {
+        val fragment = super.instantiateItem(container, position) as Fragment
+        fragmentList!!.put(position, fragment as BaseFragment)
+        return fragment
+    }
+
+    override fun getItem(position: Int): Fragment {
+        return fragmentList!!.get(position)
+    }
+
+    override fun getCount(): Int {
+        return fragmentList?.size() ?: 0
+    }
+
+    companion object {
+
+        const val PAGE_HOME = 0
+
+        const val PAGE_FIND = 1
+
+        const val PAGE_OTHERS = 2
+    }
+
+}

+ 0 - 66
app/src/main/java/com/example/zhpan/circleviewpager/adapter/ArticleAdapter.java

@@ -1,66 +0,0 @@
-package com.example.zhpan.circleviewpager.adapter;
-
-import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.example.zhpan.circleviewpager.R;
-import com.example.zhpan.circleviewpager.bean.ArticleWrapper;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.ArticleViewHolder> {
-    private List<ArticleWrapper.Article> mList = new ArrayList<>();
-    private LayoutInflater inflater;
-
-    public ArticleAdapter(Context context, List<ArticleWrapper.Article> data) {
-        this.mList.addAll(data);
-        this.inflater = LayoutInflater.from(context);
-    }
-
-    @NonNull
-    @Override
-    public ArticleViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-        return new ArticleViewHolder(inflater.inflate(R.layout.item_article, viewGroup, false));
-    }
-
-    @Override
-    public void onBindViewHolder(@NonNull ArticleViewHolder holder, int i) {
-        ArticleWrapper.Article article = mList.get(i);
-        holder.tvAuthor.setText(article.getAuthor());
-        holder.tvTitle.setText(article.getTitle());
-    }
-
-    public void setData(List<ArticleWrapper.Article> list) {
-        mList.clear();
-        mList.addAll(list);
-        notifyDataSetChanged();
-    }
-
-    public void addData(List<ArticleWrapper.Article> list) {
-        mList.addAll(list);
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public int getItemCount() {
-        return mList.size();
-    }
-
-    public class ArticleViewHolder extends RecyclerView.ViewHolder {
-        TextView tvTitle;
-        TextView tvAuthor;
-
-        public ArticleViewHolder(@NonNull View itemView) {
-            super(itemView);
-            tvTitle = itemView.findViewById(R.id.tv_title);
-            tvAuthor = itemView.findViewById(R.id.tv_auther);
-        }
-    }
-
-}

+ 50 - 0
app/src/main/java/com/example/zhpan/circleviewpager/adapter/ArticleAdapter.kt

@@ -0,0 +1,50 @@
+package com.example.zhpan.circleviewpager.adapter
+
+import android.content.Context
+import androidx.recyclerview.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+
+import com.example.zhpan.circleviewpager.R
+import com.example.zhpan.circleviewpager.bean.ArticleWrapper
+
+import java.util.ArrayList
+
+class ArticleAdapter(context: Context, data: List<ArticleWrapper.Article>) : RecyclerView.Adapter<ArticleAdapter.ArticleViewHolder>() {
+    private val mList = ArrayList<ArticleWrapper.Article>()
+    private val inflater: LayoutInflater
+
+    init {
+        this.mList.addAll(data)
+        this.inflater = LayoutInflater.from(context)
+    }
+
+    override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ArticleViewHolder {
+        return ArticleViewHolder(inflater.inflate(R.layout.item_article, viewGroup, false))
+    }
+
+    override fun onBindViewHolder(holder: ArticleViewHolder, i: Int) {
+        val article = mList[i]
+        holder.tvAuthor.text = article.author
+        holder.tvTitle.text = article.title
+    }
+
+    fun setData(list: List<ArticleWrapper.Article>) {
+        mList.clear()
+        mList.addAll(list)
+        notifyDataSetChanged()
+    }
+
+    override fun getItemCount(): Int {
+        return mList.size
+    }
+
+    inner class ArticleViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        internal var tvTitle: TextView = itemView.findViewById(R.id.tv_title)
+        internal var tvAuthor: TextView = itemView.findViewById(R.id.tv_auther)
+
+    }
+
+}

+ 0 - 60
app/src/main/java/com/example/zhpan/circleviewpager/bean/ArticleWrapper.java

@@ -1,60 +0,0 @@
-package com.example.zhpan.circleviewpager.bean;
-
-import java.util.List;
-
-public class ArticleWrapper {
-
-    private List<Article> datas;
-
-    public List<Article> getDatas() {
-        return datas;
-    }
-
-    public void setDatas(List<Article> datas) {
-        this.datas = datas;
-    }
-
-    public static class Article {
-        private String title;
-
-        private String link;
-
-        private String author;
-
-        private long publishTime;
-
-        public String getTitle() {
-            return title;
-        }
-
-        public void setTitle(String title) {
-            this.title = title;
-        }
-
-        public String getLink() {
-            return link;
-        }
-
-        public void setLink(String link) {
-            this.link = link;
-        }
-
-        public String getAuthor() {
-            return author;
-        }
-
-        public void setAuthor(String author) {
-            this.author = author;
-        }
-
-        public long getPublishTime() {
-            return publishTime;
-        }
-
-        public void setPublishTime(long publishTime) {
-            this.publishTime = publishTime;
-        }
-    }
-
-
-}

+ 18 - 0
app/src/main/java/com/example/zhpan/circleviewpager/bean/ArticleWrapper.kt

@@ -0,0 +1,18 @@
+package com.example.zhpan.circleviewpager.bean
+
+class ArticleWrapper {
+
+    var datas: List<Article>? = null
+
+    class Article {
+        var title: String? = null
+
+        var link: String? = null
+
+        var author: String? = null
+
+        var publishTime: Long = 0
+    }
+
+
+}

+ 0 - 36
app/src/main/java/com/example/zhpan/circleviewpager/bean/CustomBean.java

@@ -1,36 +0,0 @@
-package com.example.zhpan.circleviewpager.bean;
-
-import androidx.annotation.DrawableRes;
-
-public class CustomBean {
-
-    private int imageRes;
-
-    private String imageDescription;
-
-    private String imgUrl;
-
-    public String getImgUrl() {
-        return imgUrl;
-    }
-
-    public void setImgUrl(String imgUrl) {
-        this.imgUrl = imgUrl;
-    }
-
-    public int getImageRes() {
-        return imageRes;
-    }
-
-    public void setImageRes(@DrawableRes int imageRes) {
-        this.imageRes = imageRes;
-    }
-
-    public String getImageDescription() {
-        return imageDescription;
-    }
-
-    public void setImageDescription(String imageDescription) {
-        this.imageDescription = imageDescription;
-    }
-}

+ 10 - 0
app/src/main/java/com/example/zhpan/circleviewpager/bean/CustomBean.kt

@@ -0,0 +1,10 @@
+package com.example.zhpan.circleviewpager.bean
+
+class CustomBean {
+
+    var imageRes: Int = 0
+
+    var imageDescription: String? = null
+
+    var imgUrl: String? = null
+}

+ 0 - 21
app/src/main/java/com/example/zhpan/circleviewpager/bean/DataBean.java

@@ -1,21 +0,0 @@
-package com.example.zhpan.circleviewpager.bean;
-
-/**
- * Created by zhpan on 2017/11/1.
- * Description:
- */
-
-public class DataBean {
-    private String url;
-
-    public DataBean(String url) {
-        this.url = url;
-    }
-    public String getUrl() {
-        return url;
-    }
-
-    public void setUrl(String url) {
-        this.url = url;
-    }
-}

+ 0 - 26
app/src/main/java/com/example/zhpan/circleviewpager/bean/DataWrapper.java

@@ -1,26 +0,0 @@
-package com.example.zhpan.circleviewpager.bean;
-
-import com.example.zhpan.circleviewpager.net.BannerData;
-
-import java.util.List;
-
-public class DataWrapper {
-
-    private List<ArticleWrapper.Article> articleList;
-
-    private List<BannerData> dataBeanList;
-
-    public DataWrapper(List<ArticleWrapper.Article> articleList, List<BannerData> dataBeanList) {
-        this.articleList = articleList;
-        this.dataBeanList = dataBeanList;
-    }
-
-    public List<BannerData> getDataBeanList() {
-        return dataBeanList;
-    }
-
-    public List<ArticleWrapper.Article> getArticleList() {
-        return articleList;
-    }
-
-}

+ 5 - 0
app/src/main/java/com/example/zhpan/circleviewpager/bean/DataWrapper.kt

@@ -0,0 +1,5 @@
+package com.example.zhpan.circleviewpager.bean
+
+import com.example.zhpan.circleviewpager.net.BannerData
+
+class DataWrapper(val articleList: List<ArticleWrapper.Article>, val dataBeanList: List<BannerData>)

+ 0 - 90
app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.java

@@ -1,90 +0,0 @@
-package com.example.zhpan.circleviewpager.fragment;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.ColorRes;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.trello.rxlifecycle2.components.support.RxFragment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
-
-/**
- * MVC模式的Base fragment
- */
-public abstract class BaseFragment extends RxFragment {
-    protected List<Integer> mDrawableList = new ArrayList<>();
-    protected Context mContext;
-    private Unbinder mBind;
-
-    @Override
-    public void onAttach(@NonNull Context context) {
-        super.onAttach(context);
-        this.mContext = context.getApplicationContext();
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(getLayout(), container, false);
-        mBind = ButterKnife.bind(this, view);
-        initData();
-        initTitle();
-        initView(savedInstanceState, view);
-        return view;
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        if (mBind != null) {
-            mBind.unbind();
-        }
-    }
-
-    private void initData() {
-        for (int i = 0; i < 4; i++) {
-            int drawable = getResources().getIdentifier("t" + i, "drawable", mContext.getPackageName());
-            mDrawableList.add(drawable);
-        }
-    }
-
-    protected @ColorInt
-    int getColor(@ColorRes int colorRes) {
-        return getContext().getResources().getColor(colorRes);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-
-    /**
-     * 获取当前Activity的UI布局
-     *
-     * @return 布局id
-     */
-    protected abstract int getLayout();
-
-    /**
-     * 初始化标题
-     */
-    protected abstract void initTitle();
-
-    /**
-     * 初始化数据
-     */
-    protected abstract void initView(Bundle savedInstanceState, View view);
-
-}

+ 65 - 0
app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.kt

@@ -0,0 +1,65 @@
+package com.example.zhpan.circleviewpager.fragment
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+import androidx.annotation.ColorInt
+import androidx.annotation.ColorRes
+
+import com.trello.rxlifecycle2.components.support.RxFragment
+
+import java.util.ArrayList
+
+/**
+ * MVC模式的Base fragment
+ */
+abstract class BaseFragment : RxFragment() {
+    protected var mDrawableList: MutableList<Int> = ArrayList()
+    protected lateinit var mContext: Context
+
+    /**
+     * 获取当前Activity的UI布局
+     *
+     * @return 布局id
+     */
+    protected abstract val layout: Int
+
+    override fun onAttach(context: Context) {
+        super.onAttach(context)
+        this.mContext = context.applicationContext
+    }
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        val view = inflater.inflate(layout, container, false)
+        initData()
+        initTitle()
+        initView(savedInstanceState, view)
+        return view
+    }
+
+    private fun initData() {
+        for (i in 0..3) {
+            val drawable = resources.getIdentifier("t$i", "drawable", mContext.packageName)
+            mDrawableList.add(drawable)
+        }
+    }
+
+    @ColorInt
+    protected fun getColor(@ColorRes colorRes: Int): Int {
+        return context!!.resources.getColor(colorRes)
+    }
+
+    /**
+     * 初始化标题
+     */
+    protected abstract fun initTitle()
+
+    /**
+     * 初始化数据
+     */
+    protected abstract fun initView(savedInstanceState: Bundle?, view: View)
+
+}

+ 6 - 6
app/src/main/java/com/example/zhpan/circleviewpager/fragment/HomeFragment.java

@@ -64,17 +64,17 @@ public class HomeFragment extends BaseFragment {
 
     private void initRecyclerView(View view) {
         recyclerView = view.findViewById(R.id.recycler_view);
-        recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
+        recyclerView.setLayoutManager(new LinearLayoutManager(getMContext()));
         recyclerView.addHeadView(getHeaderView());
-        recyclerView.addItemDecoration(new DividerItemDecoration(mContext,
+        recyclerView.addItemDecoration(new DividerItemDecoration(getMContext(),
                 DividerItemDecoration.VERTICAL));
-        articleAdapter = new ArticleAdapter(mContext, new ArrayList<>());
+        articleAdapter = new ArticleAdapter(getMContext(), new ArrayList<>());
         recyclerView.setAdapter(articleAdapter);
     }
 
     private void initRefreshLayout(View view) {
         mSmartRefreshLayout = view.findViewById(R.id.refresh_layout);
-        mSmartRefreshLayout.setRefreshHeader(new MaterialHeader(mContext));
+        mSmartRefreshLayout.setRefreshHeader(new MaterialHeader(getMContext()));
         mSmartRefreshLayout.setOnRefreshListener(refreshLayout -> fetchData(false));
     }
 
@@ -117,14 +117,14 @@ public class HomeFragment extends BaseFragment {
                 .setIndicatorMargin(0,0,0, (int) getResources().getDimension(R.dimen.dp_18))
                 .setOnPageClickListener(position -> {
                     BannerData bannerData = mBannerViewPager.getList().get(position);
-                    Toast.makeText(mContext,
+                    Toast.makeText(getMContext(),
                             "点击了position:" + position + " " + bannerData.getTitle(), Toast.LENGTH_SHORT).show();
 
                 });
     }
 
     private View getHeaderView() {
-        View view = LayoutInflater.from(mContext).inflate(R.layout.item_header_view, recyclerView, false);
+        View view = LayoutInflater.from(getMContext()).inflate(R.layout.item_header_view, recyclerView, false);
         mBannerViewPager = view.findViewById(R.id.banner_view);
         return view;
     }

+ 14 - 15
app/src/main/java/com/example/zhpan/circleviewpager/fragment/IndicatorFragment.java

@@ -17,19 +17,14 @@ import com.zhpan.bannerview.constants.IndicatorStyle;
 import com.zhpan.bannerview.utils.BannerUtils;
 import com.zhpan.idea.utils.ToastUtils;
 
-import butterknife.BindView;
-import butterknife.OnClick;
-
 /**
  * Created by zhpan on 2018/7/24.
  */
-public class IndicatorFragment extends BaseFragment {
-    @BindView(R.id.banner_view)
-    BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
-    @BindView(R.id.rg_indicator_style)
-    RadioGroup radioGroupStyle;
-    @BindView(R.id.rb_circle)
-    RadioButton radioButton;
+public class IndicatorFragment extends BaseFragment implements View.OnClickListener {
+
+    private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
+    private RadioGroup radioGroupStyle;
+    private RadioButton radioButton;
 
     @Override
     protected int getLayout() {
@@ -43,6 +38,10 @@ public class IndicatorFragment extends BaseFragment {
 
     @Override
     protected void initView(Bundle savedInstanceState, View view) {
+        radioButton = view.findViewById(R.id.rb_circle);
+        radioGroupStyle = view.findViewById(R.id.rg_indicator_style);
+        mViewPager = view.findViewById(R.id.banner_view);
+        view.findViewById(R.id.tv_photo_view).setOnClickListener(this);
         mViewPager.setIndicatorGap(BannerUtils.dp2px(6))
                 .setRoundCorner(BannerUtils.dp2px(6))
                 .setHolderCreator(() -> new ImageResourceViewHolder(0));
@@ -81,7 +80,7 @@ public class IndicatorFragment extends BaseFragment {
                 .setPageMargin(0)
                 .setOnPageClickListener(position -> ToastUtils.show("position:" + position))
                 .setIndicatorColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
-                .setIndicatorRadius(BannerUtils.dp2px(4), BannerUtils.dp2px(5)).create(mDrawableList);
+                .setIndicatorRadius(BannerUtils.dp2px(4), BannerUtils.dp2px(5)).create(getMDrawableList());
     }
 
     private void setupDashIndicator() {
@@ -92,7 +91,7 @@ public class IndicatorFragment extends BaseFragment {
                 .setPageMargin(0)
                 .setIndicatorWidth(BannerUtils.dp2px(3), BannerUtils.dp2px(10))
                 .setIndicatorColor(Color.parseColor("#888888"),
-                        Color.parseColor("#118EEA")).create(mDrawableList);
+                        Color.parseColor("#118EEA")).create(getMDrawableList());
     }
 
     private void setupCustomIndicator() {
@@ -100,21 +99,21 @@ public class IndicatorFragment extends BaseFragment {
                 .setPageMargin(BannerUtils.dp2px(20))
                 .setIndicatorGravity(IndicatorGravity.END)
                 .setIndicatorView(setupIndicatorView())
-                .setHolderCreator(() -> new ImageResourceViewHolder(0)).create(mDrawableList);
+                .setHolderCreator(() -> new ImageResourceViewHolder(0)).create(getMDrawableList());
     }
 
     /**
      * 这里可以是自定义的Indicator,需要继承BaseIndicatorView或者实现IIndicator接口;
      */
     private FigureIndicatorView setupIndicatorView() {
-        FigureIndicatorView indicatorView = new FigureIndicatorView(mContext);
+        FigureIndicatorView indicatorView = new FigureIndicatorView(getMContext());
         indicatorView.setRadius(BannerUtils.dp2px(18));
         indicatorView.setTextSize(BannerUtils.dp2px(13));
         indicatorView.setBackgroundColor(Color.parseColor("#aa118EEA"));
         return indicatorView;
     }
 
-    @OnClick(R.id.tv_photo_view)
+    @Override
     public void onClick(View view) {
         startActivity(new Intent(getActivity(), PhotoViewActivity.class));
     }

+ 11 - 19
app/src/main/java/com/example/zhpan/circleviewpager/fragment/PageFragment.java

@@ -15,25 +15,19 @@ import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
 import com.zhpan.bannerview.BannerViewPager;
 import com.zhpan.bannerview.annotation.APageStyle;
 import com.zhpan.bannerview.constants.PageStyle;
-import com.zhpan.bannerview.indicator.CircleIndicatorView;
+import com.zhpan.bannerview.indicator.IndicatorView;
 import com.zhpan.bannerview.utils.BannerUtils;
 import com.zhpan.idea.utils.ToastUtils;
 
-import butterknife.BindView;
-
 /**
  * Created by zhpan on 2018/7/24.
  */
 public class PageFragment extends BaseFragment {
 
-    @BindView(R.id.banner_view)
-    BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
-    @BindView(R.id.rg_page_style)
-    RadioGroup mRadioGroupPageStyle;
-    @BindView(R.id.indicator_view)
-    CircleIndicatorView indicatorView;
-    @BindView(R.id.rb_multi_page)
-    RadioButton radioButton;
+    private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
+    private RadioGroup mRadioGroupPageStyle;
+    private IndicatorView indicatorView;
+    private RadioButton radioButton;
 
     @Override
     protected int getLayout() {
@@ -47,6 +41,10 @@ public class PageFragment extends BaseFragment {
 
     @Override
     protected void initView(Bundle savedInstanceState, View view) {
+        mViewPager = view.findViewById(R.id.banner_view);
+        mRadioGroupPageStyle = view.findViewById(R.id.rg_page_style);
+        indicatorView = view.findViewById(R.id.indicator_view);
+        radioButton = view.findViewById(R.id.rb_multi_page);
         mViewPager
                 .setPageMargin(BannerUtils.dp2px(10))
                 .setRevealWidth(BannerUtils.dp2px(10))
@@ -57,12 +55,6 @@ public class PageFragment extends BaseFragment {
         initRadioGroup();
     }
 
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        return super.onCreateView(inflater, container, savedInstanceState);
-    }
-
     public static PageFragment getInstance() {
         return new PageFragment();
     }
@@ -71,7 +63,7 @@ public class PageFragment extends BaseFragment {
         mViewPager
                 .setIndicatorVisibility(View.VISIBLE) // 在实际开发中这行代码不必添加,此处因为受到其它两种模式影响所以要隐藏掉内置指示器
                 .setPageStyle(pageStyle)
-                .create(mDrawableList);
+                .create(getMDrawableList());
     }
 
     private void initRadioGroup() {
@@ -102,6 +94,6 @@ public class PageFragment extends BaseFragment {
                 .setIndicatorVisibility(View.GONE) // 在实际开发中这行代码不必添加,此处因为受到其它两种模式影响所以要隐藏掉内置指示器
                 .setPageStyle(PageStyle.MULTI_PAGE_OVERLAP)
                 .setIndicatorView(indicatorView)
-                .create(mDrawableList);
+                .create(getMDrawableList());
     }
 }

+ 0 - 30
app/src/main/java/com/example/zhpan/circleviewpager/view/CornerImageView.java

@@ -1,30 +0,0 @@
-package com.example.zhpan.circleviewpager.view;
-
-import android.content.Context;
-import android.os.Build;
-import android.util.AttributeSet;
-
-import androidx.appcompat.widget.AppCompatImageView;
-
-import com.zhpan.bannerview.provider.ViewStyleSetter;
-
-public class CornerImageView extends AppCompatImageView {
-    public CornerImageView(Context context) {
-        this(context, null);
-    }
-
-    public CornerImageView(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public CornerImageView(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    public void setRoundCorner(int radius) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            ViewStyleSetter viewStyleSetter = new ViewStyleSetter(this);
-            viewStyleSetter.setRoundCorner(radius);
-        }
-    }
-}

+ 19 - 0
app/src/main/java/com/example/zhpan/circleviewpager/view/CornerImageView.kt

@@ -0,0 +1,19 @@
+package com.example.zhpan.circleviewpager.view
+
+import android.content.Context
+import android.os.Build
+import android.util.AttributeSet
+
+import androidx.appcompat.widget.AppCompatImageView
+
+import com.zhpan.bannerview.provider.ViewStyleSetter
+
+class CornerImageView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : AppCompatImageView(context, attrs, defStyleAttr) {
+
+    fun setRoundCorner(radius: Int) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            val viewStyleSetter = ViewStyleSetter(this)
+            viewStyleSetter.setRoundCorner(radius.toFloat())
+        }
+    }
+}

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

@@ -12,7 +12,7 @@
         android:layout_marginTop="20dp"
         app:bvp_page_style="multi_page" />
 
-    <com.zhpan.bannerview.indicator.CircleIndicatorView
+    <com.zhpan.bannerview.indicator.IndicatorView
         android:id="@+id/indicator_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"

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

@@ -11,7 +11,7 @@
         android:layout_marginTop="20dp"
         app:bvp_page_style="multi_page" />
 
-    <com.zhpan.bannerview.indicator.CircleIndicatorView
+    <com.zhpan.bannerview.indicator.IndicatorView
         android:id="@+id/indicator_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"

+ 1 - 0
app/src/main/res/layout/fragment_others.xml

@@ -62,6 +62,7 @@
         android:layout_marginTop="20dp"
         android:background="@color/white"
         android:gravity="center"
+        android:onClick="onClick"
         android:text="@string/wrapper_photo_view"
         android:textColor="#000000"
         android:textSize="16sp" />

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

@@ -25,8 +25,8 @@ import com.zhpan.bannerview.annotation.Visibility;
 import com.zhpan.bannerview.constants.IndicatorSlideMode;
 import com.zhpan.bannerview.constants.IndicatorStyle;
 import com.zhpan.bannerview.constants.PageStyle;
+import com.zhpan.bannerview.indicator.IndicatorView;
 import com.zhpan.bannerview.indicator.IIndicator;
-import com.zhpan.bannerview.indicator.IndicatorFactory;
 import com.zhpan.bannerview.manager.BannerManager;
 import com.zhpan.bannerview.manager.BannerOptions;
 import com.zhpan.bannerview.transform.pagestyle.ScaleInTransformer;
@@ -206,7 +206,8 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         if (bannerOptions.isCustomIndicator() && null != mIndicatorView) {
             initIndicator(mIndicatorView);
         } else {
-            initIndicator(IndicatorFactory.createIndicatorView(getContext(), bannerOptions.getIndicatorStyle()));
+//            initIndicator(IndicatorFactory.createIndicatorView(getContext(), bannerOptions.getIndicatorStyle()));
+            initIndicator(new IndicatorView(getContext()));
         }
         mIndicatorView.setIndicatorOptions(bannerOptions.getIndicatorOptions());
         mIndicatorView.setPageSize(mList.size());
@@ -474,7 +475,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * @param radius 指示器圆点半径
      */
     public BannerViewPager<T, VH> setIndicatorRadius(int radius) {
-        setIndicatorRadius(radius,radius);
+        setIndicatorRadius(radius, radius);
         return this;
     }
 

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

@@ -7,7 +7,6 @@ import android.view.View;
 
 import androidx.annotation.Nullable;
 
-import com.zhpan.bannerview.annotation.AIndicatorSlideMode;
 import com.zhpan.bannerview.constants.IndicatorSlideMode;
 import com.zhpan.bannerview.manager.IndicatorOptions;
 
@@ -92,47 +91,6 @@ public class BaseIndicatorView extends View implements IIndicator {
         requestLayout();
     }
 
-    @Override
-    public void setNormalColor(int normalColor) {
-        mIndicatorOptions.setNormalColor(normalColor);
-    }
-
-    @Override
-    public void setCheckedColor(int checkedColor) {
-        mIndicatorOptions.setCheckedColor(checkedColor);
-    }
-
-
-    /**
-     * @param indicatorGap Indicator间距
-     */
-    public void setIndicatorGap(float indicatorGap) {
-        if (indicatorGap >= 0) {
-            mIndicatorOptions.setIndicatorGap(indicatorGap);
-        }
-    }
-
-    /**
-     * @param slideMode Indicator滑动样式
-     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#NORMAL
-     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#SMOOTH
-     */
-    @Override
-    public void setSlideMode(@AIndicatorSlideMode int slideMode) {
-        mIndicatorOptions.setSlideMode(slideMode);
-    }
-
-    /**
-     * Indicator Slider width or the diameter of circle.
-     *
-     * @param normalIndicatorWidth  未选中Slider width
-     * @param checkedIndicatorWidth 选中Slider width
-     */
-    @Override
-    public void setIndicatorWidth(int normalIndicatorWidth, int checkedIndicatorWidth) {
-        mIndicatorOptions.setNormalIndicatorWidth(normalIndicatorWidth);
-        mIndicatorOptions.setCheckedIndicatorWidth(checkedIndicatorWidth);
-    }
 
     public int getPageSize() {
         return mIndicatorOptions.getPageSize();
@@ -198,11 +156,6 @@ public class BaseIndicatorView extends View implements IIndicator {
         return mIndicatorOptions;
     }
 
-    @Override
-    public void notifyDataChanged() {
-        invalidate();
-    }
-
     @Override
     public void onPageScrollStateChanged(int state) {
     }

+ 4 - 16
bannerview/src/main/java/com/zhpan/bannerview/indicator/CircleIndicatorView.java

@@ -6,7 +6,10 @@ import android.util.AttributeSet;
 
 /**
  * Created by zhpan on 2017/12/6.
+ *
+ * @deprecated Use {@link IndicatorView} instead.
  */
+@Deprecated
 public class CircleIndicatorView extends BaseIndicatorView {
 
     private float mNormalRadius;
@@ -27,7 +30,7 @@ public class CircleIndicatorView extends BaseIndicatorView {
         mPaint.setColor(getNormalColor());
         mNormalRadius = getNormalIndicatorWidth() / 2;
         mCheckedRadius = getCheckedIndicatorWidth() / 2;
-        setIndicatorGap(mNormalRadius * 2);
+        getIndicatorOptions().setIndicatorGap(mNormalRadius * 2);
     }
 
     @Override
@@ -58,21 +61,6 @@ public class CircleIndicatorView extends BaseIndicatorView {
         }
     }
 
-    @Override
-    public void onPageSelected(int position) {
-        super.onPageSelected(position);
-    }
-
-    @Override
-    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-        super.onPageScrolled(position, positionOffset, positionOffsetPixels);
-    }
-
-    @Override
-    public void onPageScrollStateChanged(int state) {
-        super.onPageScrollStateChanged(state);
-    }
-
     private void drawSliderStyle(Canvas canvas) {
         mPaint.setColor(getCheckedColor());
         canvas.drawCircle(maxRadius + (2 * mNormalRadius + getIndicatorGap()) * getCurrentPosition() + (2 * mNormalRadius + getIndicatorGap()) * getSlideProgress(),

+ 3 - 25
bannerview/src/main/java/com/zhpan/bannerview/indicator/DashIndicatorView.java

@@ -8,7 +8,10 @@ import com.zhpan.bannerview.constants.IndicatorSlideMode;
 
 /**
  * Created by zhpan on 2017/12/6.
+ *
+ * @deprecated Use {@link IndicatorView} instead.
  */
+@Deprecated
 public class DashIndicatorView extends BaseIndicatorView {
     private float sliderHeight;
     private float maxWidth;
@@ -28,11 +31,6 @@ public class DashIndicatorView extends BaseIndicatorView {
         sliderHeight = getNormalIndicatorWidth() / 2;
     }
 
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        super.onSizeChanged(w, h, oldw, oldh);
-    }
-
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -42,11 +40,6 @@ public class DashIndicatorView extends BaseIndicatorView {
                 (int) (getSliderHeight()));
     }
 
-    @Override
-    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        super.onLayout(changed, left, top, right, bottom);
-    }
-
     @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
@@ -92,21 +85,6 @@ public class DashIndicatorView extends BaseIndicatorView {
         drawSliderStyle(canvas);
     }
 
-    @Override
-    public void onPageSelected(int position) {
-        super.onPageSelected(position);
-    }
-
-    @Override
-    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-        super.onPageScrolled(position, positionOffset, positionOffsetPixels);
-    }
-
-    @Override
-    public void onPageScrollStateChanged(int state) {
-        super.onPageScrollStateChanged(state);
-    }
-
     private void drawSliderStyle(Canvas canvas) {
         mPaint.setColor(getCheckedColor());
         float left = getCurrentPosition() * (maxWidth) + getCurrentPosition() * +getIndicatorGap() + (maxWidth + getIndicatorGap()) * getSlideProgress();

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

@@ -13,19 +13,8 @@ import com.zhpan.bannerview.manager.IndicatorOptions;
  * </pre>
  */
 public interface IIndicator extends ViewPager.OnPageChangeListener {
-    void setPageSize(int pageSize);
-
-    void setNormalColor(int normalColor);
-
-    void setCheckedColor(int checkedColor);
-
-    void setSlideMode(@AIndicatorSlideMode int slideStyle);
 
-    void setIndicatorGap(float gap);
-
-    void setIndicatorWidth(int normalIndicatorWidth, int checkedIndicatorWidth);
+    void setPageSize(int pageSize);
 
     void setIndicatorOptions(IndicatorOptions options);
-
-    void notifyDataChanged();
 }

+ 0 - 19
bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorFactory.java

@@ -1,19 +0,0 @@
-package com.zhpan.bannerview.indicator;
-
-import android.content.Context;
-
-import com.zhpan.bannerview.annotation.AIndicatorStyle;
-import com.zhpan.bannerview.constants.IndicatorStyle;
-
-
-public class IndicatorFactory {
-    public static BaseIndicatorView createIndicatorView(Context context, @AIndicatorStyle int indicatorStyle) {
-        BaseIndicatorView indicatorView;
-        if (indicatorStyle == IndicatorStyle.DASH) {
-            indicatorView = new DashIndicatorView(context);
-        } else {
-            indicatorView = new CircleIndicatorView(context);
-        }
-        return indicatorView;
-    }
-}

+ 54 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/IndicatorView.java

@@ -0,0 +1,54 @@
+package com.zhpan.bannerview.indicator;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+
+import androidx.annotation.Nullable;
+
+import com.zhpan.bannerview.indicator.drawer.BaseDrawer;
+import com.zhpan.bannerview.indicator.drawer.DrawerController;
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description:The Indicator in BannerViewPager.
+ * </pre>
+ */
+public class IndicatorView extends BaseIndicatorView implements IIndicator {
+
+    private DrawerController mDrawerController;
+
+    public IndicatorView(Context context) {
+        this(context, null);
+    }
+
+    public IndicatorView(Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public IndicatorView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        mDrawerController = new DrawerController(getIndicatorOptions());
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        BaseDrawer.MeasureResult measureResult = mDrawerController.measure(widthMeasureSpec, heightMeasureSpec);
+        setMeasuredDimension(measureResult.getMeasureWidth(), measureResult.getMeasureHeight());
+    }
+
+    @Override
+    public void setIndicatorOptions(IndicatorOptions indicatorOptions) {
+        super.setIndicatorOptions(indicatorOptions);
+        mDrawerController.setIndicatorOptions(indicatorOptions);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        mDrawerController.draw(canvas);
+    }
+}

+ 53 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/BaseDrawer.java

@@ -0,0 +1,53 @@
+package com.zhpan.bannerview.indicator.drawer;
+
+import android.graphics.Paint;
+
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description:
+ * </pre>
+ */
+public abstract class BaseDrawer implements IDrawer {
+
+    IndicatorOptions mIndicatorOptions;
+
+    Paint mPaint;
+
+    MeasureResult mMeasureResult;
+
+    BaseDrawer(IndicatorOptions indicatorOptions) {
+        this.mIndicatorOptions = indicatorOptions;
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mMeasureResult = new MeasureResult();
+    }
+
+    @Override
+    public void setIndicatorOptions(IndicatorOptions indicatorOptions) {
+        this.mIndicatorOptions = indicatorOptions;
+    }
+
+    public class MeasureResult {
+
+        public int measureWidth;
+
+        public int measureHeight;
+
+        public void setMeasureResult(int measureWidth, int measureHeight) {
+            this.measureWidth = measureWidth;
+            this.measureHeight = measureHeight;
+        }
+
+        public int getMeasureWidth() {
+            return measureWidth;
+        }
+
+        public int getMeasureHeight() {
+            return measureHeight;
+        }
+
+    }
+}

+ 61 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/CircleDrawer.java

@@ -0,0 +1,61 @@
+package com.zhpan.bannerview.indicator.drawer;
+
+import android.graphics.Canvas;
+
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description: Circle Indicator drawer.
+ * </pre>
+ */
+public class CircleDrawer extends BaseDrawer {
+
+    private float maxWidth;
+
+    private float minWidth;
+
+    public CircleDrawer(IndicatorOptions indicatorOptions) {
+        super(indicatorOptions);
+    }
+
+    @Override
+    public MeasureResult onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        maxWidth = Math.max(mIndicatorOptions.getNormalIndicatorWidth(), mIndicatorOptions.getCheckedIndicatorWidth());
+        minWidth = Math.min(mIndicatorOptions.getNormalIndicatorWidth(), mIndicatorOptions.getCheckedIndicatorWidth());
+        mMeasureResult.setMeasureResult(getMeasureWidth(), (int)maxWidth);
+        return mMeasureResult;
+    }
+
+    private int getMeasureWidth() {
+        int pageSize = mIndicatorOptions.getPageSize();
+        float indicatorGap = mIndicatorOptions.getIndicatorGap();
+        return (int) ((pageSize - 1) * indicatorGap + maxWidth + (pageSize - 1) * minWidth);
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        drawIndicator(canvas);
+    }
+
+    private void drawIndicator(Canvas canvas) {
+        if (mIndicatorOptions.getPageSize() > 1) {
+            float normalIndicatorWidth = mIndicatorOptions.getNormalIndicatorWidth();
+            for (int i = 0; i < mIndicatorOptions.getPageSize(); i++) {
+                mPaint.setColor(mIndicatorOptions.getNormalColor());
+                canvas.drawCircle(maxWidth / 2 + (normalIndicatorWidth + mIndicatorOptions.getIndicatorGap()) * i,
+                        maxWidth / 2f, normalIndicatorWidth / 2, mPaint);
+            }
+            drawSliderStyle(canvas);
+        }
+    }
+
+    private void drawSliderStyle(Canvas canvas) {
+        mPaint.setColor(mIndicatorOptions.getCheckedColor());
+        float normalIndicatorWidth = mIndicatorOptions.getNormalIndicatorWidth();
+        float indicatorGap = mIndicatorOptions.getIndicatorGap();
+        canvas.drawCircle(maxWidth / 2 + (normalIndicatorWidth + indicatorGap) * mIndicatorOptions.getCurrentPosition() + (normalIndicatorWidth + indicatorGap) * mIndicatorOptions.getSlideProgress(),
+                maxWidth / 2f, mIndicatorOptions.getCheckedIndicatorWidth() / 2, mPaint);
+    }
+}

+ 98 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/DashDrawer.java

@@ -0,0 +1,98 @@
+package com.zhpan.bannerview.indicator.drawer;
+
+import android.graphics.Canvas;
+
+import com.zhpan.bannerview.constants.IndicatorSlideMode;
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description: Dash Indicator Drawer.
+ * </pre>
+ */
+public class DashDrawer extends BaseDrawer {
+
+    private float maxWidth;
+
+    private float minWidth;
+
+    public DashDrawer(IndicatorOptions indicatorOptions) {
+        super(indicatorOptions);
+    }
+
+    @Override
+    public MeasureResult onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        maxWidth = Math.max(mIndicatorOptions.getNormalIndicatorWidth(), mIndicatorOptions.getCheckedIndicatorWidth());
+        minWidth = Math.min(mIndicatorOptions.getNormalIndicatorWidth(), mIndicatorOptions.getCheckedIndicatorWidth());
+        mMeasureResult.setMeasureResult(getMeasureWidth(), (int)mIndicatorOptions.getSliderHeight());
+        return mMeasureResult;
+    }
+
+    private int getMeasureWidth() {
+        int pageSize = mIndicatorOptions.getPageSize();
+        float indicatorGap = mIndicatorOptions.getIndicatorGap();
+        return (int) ((pageSize - 1) * indicatorGap + maxWidth + (pageSize - 1) * minWidth);
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        drawIndicator(canvas);
+    }
+
+    private void drawIndicator(Canvas canvas) {
+        int pageSize = mIndicatorOptions.getPageSize();
+        if (pageSize > 1) {
+            for (int i = 0; i < pageSize; i++) {
+                if (mIndicatorOptions.getSlideMode() == IndicatorSlideMode.SMOOTH) {
+                    smoothSlide(canvas, i);
+                } else {
+                    normalSlide(canvas, i);
+                }
+            }
+        }
+    }
+
+    private void normalSlide(Canvas canvas, int i) {
+        float normalIndicatorWidth = mIndicatorOptions.getNormalIndicatorWidth();
+        int normalColor = mIndicatorOptions.getNormalColor();
+        float indicatorGap = mIndicatorOptions.getIndicatorGap();
+        float sliderHeight = mIndicatorOptions.getSliderHeight();
+        int currentPosition = mIndicatorOptions.getCurrentPosition();
+        if (normalIndicatorWidth == mIndicatorOptions.getCheckedIndicatorWidth()) {
+            mPaint.setColor(normalColor);
+            float left = i * (normalIndicatorWidth) + i * +indicatorGap;
+            canvas.drawRect(left, 0, left + normalIndicatorWidth, sliderHeight, mPaint);
+            drawSliderStyle(canvas);
+        } else {  //  仿支付宝首页轮播图的Indicator
+            if (i < currentPosition) {
+                mPaint.setColor(normalColor);
+                float left = i * minWidth + i * indicatorGap;
+                canvas.drawRect(left, 0, left + minWidth, sliderHeight, mPaint);
+            } else if (i == currentPosition) {
+                mPaint.setColor(mIndicatorOptions.getCheckedColor());
+                float left = i * minWidth + i * indicatorGap;
+                canvas.drawRect(left, 0, left + minWidth + (maxWidth - minWidth), sliderHeight, mPaint);
+            } else {
+                mPaint.setColor(normalColor);
+                float left = i * minWidth + i * indicatorGap + (maxWidth - minWidth);
+                canvas.drawRect(left, 0, left + minWidth, sliderHeight, mPaint);
+            }
+        }
+    }
+
+    private void smoothSlide(Canvas canvas, int i) {
+        mPaint.setColor(mIndicatorOptions.getNormalColor());
+        float left = i * (maxWidth) + i * +mIndicatorOptions.getIndicatorGap() + (maxWidth - minWidth);
+        canvas.drawRect(left, 0, left + minWidth, mIndicatorOptions.getSliderHeight(), mPaint);
+        drawSliderStyle(canvas);
+    }
+
+    private void drawSliderStyle(Canvas canvas) {
+        mPaint.setColor(mIndicatorOptions.getCheckedColor());
+        int currentPosition = mIndicatorOptions.getCurrentPosition();
+        float indicatorGap = mIndicatorOptions.getIndicatorGap();
+        float left = currentPosition * (maxWidth) + currentPosition * +indicatorGap + (maxWidth + indicatorGap) * mIndicatorOptions.getSlideProgress();
+        canvas.drawRect(left, 0, left + maxWidth, mIndicatorOptions.getSliderHeight(), mPaint);
+    }
+}

+ 51 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/DrawerController.java

@@ -0,0 +1,51 @@
+package com.zhpan.bannerview.indicator.drawer;
+
+import android.graphics.Canvas;
+
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+import static com.zhpan.bannerview.constants.IndicatorStyle.CIRCLE;
+import static com.zhpan.bannerview.constants.IndicatorStyle.DASH;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description: Indicator Drawer Controller.
+ * </pre>
+ */
+public class DrawerController {
+
+    private IndicatorOptions mIndicatorOptions;
+
+    private IDrawer mIDrawer;
+
+    public DrawerController(IndicatorOptions indicatorOptions) {
+        this.mIndicatorOptions = indicatorOptions;
+        init();
+    }
+
+    private void init() {
+        switch (mIndicatorOptions.getIndicatorStyle()) {
+            case CIRCLE:
+                mIDrawer = new CircleDrawer(mIndicatorOptions);
+                break;
+            case DASH:
+                mIDrawer = new DashDrawer(mIndicatorOptions);
+                break;
+        }
+    }
+
+    public void setIndicatorOptions(IndicatorOptions indicatorOptions) {
+        mIndicatorOptions = indicatorOptions;
+        mIDrawer.setIndicatorOptions(indicatorOptions);
+        init();
+    }
+
+    public BaseDrawer.MeasureResult measure(int widthMeasureSpec, int heightMeasureSpec) {
+        return mIDrawer.onMeasure(widthMeasureSpec, heightMeasureSpec);
+    }
+
+    public void draw(Canvas canvas) {
+        mIDrawer.onDraw(canvas);
+    }
+}

+ 21 - 0
bannerview/src/main/java/com/zhpan/bannerview/indicator/drawer/IDrawer.java

@@ -0,0 +1,21 @@
+package com.zhpan.bannerview.indicator.drawer;
+
+import android.graphics.Canvas;
+
+import com.zhpan.bannerview.manager.IndicatorOptions;
+
+/**
+ * <pre>
+ *   Created by zhpan on 2019/11/23.
+ *   Description:
+ * </pre>
+ */
+public interface IDrawer {
+
+    BaseDrawer.MeasureResult onMeasure(int widthMeasureSpec, int heightMeasureSpec);
+
+    void onDraw(Canvas canvas);
+
+    void setIndicatorOptions(IndicatorOptions indicatorOptions);
+
+}

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/manager/AttributeController.java

@@ -16,7 +16,7 @@ import static com.zhpan.bannerview.manager.BannerOptions.DEFAULT_SCROLL_DURATION
 /**
  * <pre>
  *   Created by zhpan on 2019/11/20.
- *   Description:
+ *   Description:初始化xml的自定义属性
  * </pre>
  */
 public class AttributeController {

+ 3 - 5
bannerview/src/main/java/com/zhpan/bannerview/manager/BannerOptions.java

@@ -6,7 +6,7 @@ import com.zhpan.bannerview.utils.BannerUtils;
 /**
  * <pre>
  *   Created by zhpan on 2019/11/20.
- *   Description:
+ *   Description:BannerViewPager的配置参数
  * </pre>
  */
 public class BannerOptions {
@@ -35,8 +35,6 @@ public class BannerOptions {
 
     private int mRevealWidth;
 
-    private int mIndicatorStyle;
-
     private boolean isCustomIndicator;
 
     private int mPageStyle = PageStyle.NORMAL;
@@ -154,11 +152,11 @@ public class BannerOptions {
     }
 
     public int getIndicatorStyle() {
-        return mIndicatorStyle;
+        return mIndicatorOptions.getIndicatorStyle();
     }
 
     public void setIndicatorStyle(int indicatorStyle) {
-        mIndicatorStyle = indicatorStyle;
+        mIndicatorOptions.setIndicatorStyle(indicatorStyle);
     }
 
     public int getIndicatorSlideMode() {

+ 12 - 2
bannerview/src/main/java/com/zhpan/bannerview/manager/IndicatorOptions.java

@@ -8,7 +8,7 @@ import com.zhpan.bannerview.utils.BannerUtils;
 /**
  * <pre>
  *   Created by zhpan on 2019/11/20.
- *   Description:
+ *   Description:Indicator的配置参数
  * </pre>
  */
 public class IndicatorOptions {
@@ -22,6 +22,8 @@ public class IndicatorOptions {
         slideMode = IndicatorSlideMode.NORMAL;
     }
 
+    private int mIndicatorStyle;
+
     /**
      * 页面size
      */
@@ -158,10 +160,18 @@ public class IndicatorOptions {
     }
 
     public float getSliderHeight() {
-        return sliderHeight;
+        return sliderHeight > 0 ? sliderHeight : normalIndicatorWidth / 2;
     }
 
     public void setSliderHeight(float sliderHeight) {
         this.sliderHeight = sliderHeight;
     }
+
+    public int getIndicatorStyle() {
+        return mIndicatorStyle;
+    }
+
+    public void setIndicatorStyle(int indicatorStyle) {
+        mIndicatorStyle = indicatorStyle;
+    }
 }

+ 0 - 3
bannerview/src/main/java/com/zhpan/bannerview/provider/BannerScroller.java

@@ -4,9 +4,6 @@ import android.content.Context;
 import android.view.animation.Interpolator;
 import android.widget.Scroller;
 
-/**
- * 代码来自https://github.com/youth5201314/banner
- */
 public class BannerScroller extends Scroller {
     private int mDuration = 1000;