Browse Source

optimize sliding conflict (#99)

* optimize sliding conflict.

* proguard config

* remove setPageTransformerStyle method
zhpanvip 5 years ago
parent
commit
85df0692f4
47 changed files with 193 additions and 152 deletions
  1. 1 0
      .gitignore
  2. 9 0
      README.md
  3. 3 0
      app/proguard-rules.pro
  4. BIN
      app/release/app-release.apk
  5. 3 2
      app/src/main/java/com/example/zhpan/circleviewpager/activity/WelcomeActivity.kt
  6. 12 1
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.kt
  7. 43 13
      app/src/main/java/com/example/zhpan/circleviewpager/fragment/HomeFragment.java
  8. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/transform/AccordionTransformer.java
  9. 3 3
      app/src/main/java/com/example/zhpan/circleviewpager/transform/BaseTransformer.java
  10. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/transform/DepthPageTransformer.java
  11. 8 7
      app/src/main/java/com/example/zhpan/circleviewpager/transform/PageTransformerFactory.java
  12. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/transform/RotateUpTransformer.java
  13. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/transform/StackTransformer.java
  14. 1 1
      app/src/main/java/com/example/zhpan/circleviewpager/transform/TransformerStyle.java
  15. BIN
      app/src/main/res/drawable-xxxhdpi/advertise0.jpg
  16. BIN
      app/src/main/res/drawable-xxxhdpi/advertise1.jpg
  17. BIN
      app/src/main/res/drawable-xxxhdpi/advertise2.jpg
  18. BIN
      app/src/main/res/drawable-xxxhdpi/advertise3.jpg
  19. BIN
      app/src/main/res/drawable-xxxhdpi/advertise4.jpg
  20. 47 28
      app/src/main/res/layout/item_header_view.xml
  21. 1 0
      app/src/main/res/values-sw1024dp/dimens.xml
  22. 1 0
      app/src/main/res/values-sw1280dp/dimens.xml
  23. 1 0
      app/src/main/res/values-sw1365dp/dimens.xml
  24. 1 0
      app/src/main/res/values-sw384dp/dimens.xml
  25. 1 0
      app/src/main/res/values-sw392dp/dimens.xml
  26. 1 0
      app/src/main/res/values-sw400dp/dimens.xml
  27. 1 0
      app/src/main/res/values-sw410dp/dimens.xml
  28. 1 0
      app/src/main/res/values-sw411dp/dimens.xml
  29. 1 0
      app/src/main/res/values-sw432dp/dimens.xml
  30. 1 0
      app/src/main/res/values-sw480dp/dimens.xml
  31. 1 0
      app/src/main/res/values-sw533dp/dimens.xml
  32. 1 0
      app/src/main/res/values-sw592dp/dimens.xml
  33. 1 0
      app/src/main/res/values-sw600dp/dimens.xml
  34. 1 0
      app/src/main/res/values-sw640dp/dimens.xml
  35. 1 0
      app/src/main/res/values-sw662dp/dimens.xml
  36. 1 0
      app/src/main/res/values-sw720dp/dimens.xml
  37. 1 0
      app/src/main/res/values-sw768dp/dimens.xml
  38. 1 0
      app/src/main/res/values-sw800dp/dimens.xml
  39. 1 0
      app/src/main/res/values-sw811dp/dimens.xml
  40. 1 0
      app/src/main/res/values-sw820dp/dimens.xml
  41. 1 0
      app/src/main/res/values-sw960dp/dimens.xml
  42. 1 0
      app/src/main/res/values-sw961dp/dimens.xml
  43. 1 0
      app/src/main/res/values/dimens.xml
  44. 33 59
      bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java
  45. 0 27
      bannerview/src/main/java/com/zhpan/bannerview/annotation/ATransformerStyle.java
  46. 3 5
      bannerview/src/main/java/com/zhpan/bannerview/manager/AttributeController.java
  47. 0 2
      bannerview/src/main/java/com/zhpan/bannerview/manager/BannerOptions.java

+ 1 - 0
.gitignore

@@ -6,3 +6,4 @@
 /build
 /captures
 .externalNativeBuild
+/app/release/output.json

+ 9 - 0
README.md

@@ -371,6 +371,15 @@ public class FigureIndicatorView extends BaseIndicatorView {
               .create(mDrawableList);
 ```
 
+## 8. Proguard config
+
+If you called setScrollDuration in your project,you must add proguard config as following:
+
+```
+    -keep class androidx.recyclerview.widget.**{*;}
+    -keep class androidx.viewpager2.widget.**{*;}
+```
+
 ## TODO 
 
  - [x] Optimization and Refactoring IndicatorView(2.0.1)

+ 3 - 0
app/proguard-rules.pro

@@ -26,3 +26,6 @@
 -keep class com.example.zhpan.circleviewpager.bean.** { *; }
 -keep class com.example.zhpan.circleviewpager.net.** { *; }
 -keep class com.zhpan.idea.** { *; }
+
+-keep class androidx.recyclerview.widget.**{*;}
+-keep class androidx.viewpager2.widget.**{*;}

BIN
app/release/app-release.apk


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

@@ -10,9 +10,10 @@ import androidx.viewpager2.widget.ViewPager2
 import com.example.zhpan.circleviewpager.R
 import com.example.zhpan.circleviewpager.adapter.WelcomeAdapter
 import com.example.zhpan.circleviewpager.bean.CustomBean
+import com.example.zhpan.circleviewpager.transform.PageTransformerFactory
 import com.example.zhpan.circleviewpager.viewholder.CustomPageViewHolder
 import com.zhpan.bannerview.BannerViewPager
-import com.zhpan.bannerview.constants.TransformerStyle
+import com.example.zhpan.circleviewpager.transform.TransformerStyle
 import com.zhpan.bannerview.utils.BannerUtils
 import com.zhpan.idea.utils.ToastUtils
 import com.zhpan.indicator.enums.IndicatorSlideMode
@@ -52,7 +53,7 @@ class WelcomeActivity : BaseDataActivity() {
         welcomeAdapter.mOnSubViewClickListener = CustomPageViewHolder.OnSubViewClickListener { _, position -> ToastUtils.show("Logo Clicked,position:$position") }
         mViewPager.setAutoPlay(false)
                 .setCanLoop(false)
-                .setPageTransformerStyle(transforms[Random().nextInt(6)])
+                .setPageTransformer(PageTransformerFactory.createPageTransformer(Random().nextInt(6)))
                 .setScrollDuration(ANIMATION_DURATION)
                 .setIndicatorMargin(0, 0, 0, resources.getDimension(R.dimen.dp_100).toInt())
                 .setIndicatorSliderGap(resources.getDimension(R.dimen.dp_10).toInt())

+ 12 - 1
app/src/main/java/com/example/zhpan/circleviewpager/fragment/BaseFragment.kt

@@ -21,6 +21,8 @@ abstract class BaseFragment : RxFragment() {
     protected var mDrawableList: MutableList<Int> = ArrayList()
     protected lateinit var mContext: Context
 
+    protected var mPictureList: MutableList<Int> = ArrayList()
+
     /**
      * 获取当前Activity的UI布局
      *
@@ -41,6 +43,15 @@ abstract class BaseFragment : RxFragment() {
         return view
     }
 
+    protected fun getPicList(count:Int): MutableList<Int> {
+        mPictureList.clear()
+        for (i in 0..count) {
+            val drawable = resources.getIdentifier("advertise$i", "drawable", mContext.packageName)
+            mPictureList.add(drawable)
+        }
+        return mPictureList;
+    }
+
     protected fun initData(j: Int) {
         mDrawableList.clear()
         for (i in 0..j) {
@@ -51,7 +62,7 @@ abstract class BaseFragment : RxFragment() {
 
     @ColorInt
     protected fun getColor(@ColorRes colorRes: Int): Int {
-        return ContextCompat.getColor(context!!,colorRes)
+        return ContextCompat.getColor(context!!, colorRes)
     }
 
     /**

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

@@ -14,20 +14,24 @@ import androidx.viewpager2.widget.ViewPager2;
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.adapter.ArticleAdapter;
 import com.example.zhpan.circleviewpager.adapter.HomeAdapter;
+import com.example.zhpan.circleviewpager.adapter.ImageResourceAdapter;
 import com.example.zhpan.circleviewpager.bean.ArticleWrapper;
 import com.example.zhpan.circleviewpager.bean.DataWrapper;
 import com.example.zhpan.circleviewpager.net.BannerData;
 import com.example.zhpan.circleviewpager.net.RetrofitGnerator;
 import com.example.zhpan.circleviewpager.recyclerview.ui.CustomRecyclerView;
+import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
 import com.example.zhpan.circleviewpager.viewholder.NetViewHolder;
 import com.scwang.smartrefresh.header.MaterialHeader;
 import com.scwang.smartrefresh.layout.SmartRefreshLayout;
 import com.zhpan.bannerview.BannerViewPager;
+import com.zhpan.bannerview.constants.IndicatorGravity;
 import com.zhpan.idea.net.common.ResponseObserver;
 import com.zhpan.idea.utils.LogUtils;
 import com.zhpan.idea.utils.RxUtil;
 import com.zhpan.indicator.IndicatorView;
 import com.zhpan.indicator.enums.IndicatorSlideMode;
+import com.zhpan.indicator.enums.IndicatorStyle;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -41,7 +45,9 @@ import io.reactivex.schedulers.Schedulers;
 public class HomeFragment extends BaseFragment {
 
 
-    private BannerViewPager<BannerData, NetViewHolder> mViewPager;
+    private BannerViewPager<BannerData, NetViewHolder> mViewPagerHorizontal;
+    private BannerViewPager<Integer, ImageResourceViewHolder> mViewPagerVertical;
+    private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
     private CustomRecyclerView recyclerView;
     private ArticleAdapter articleAdapter;
     private SmartRefreshLayout mSmartRefreshLayout;
@@ -63,8 +69,8 @@ public class HomeFragment extends BaseFragment {
     public void onPause() {
         super.onPause();
         LogUtils.e("HomeFragment", "onPause");
-        if (mViewPager != null) {
-            mViewPager.stopLoop();
+        if (mViewPagerHorizontal != null) {
+            mViewPagerHorizontal.stopLoop();
         }
     }
 
@@ -72,8 +78,8 @@ public class HomeFragment extends BaseFragment {
     public void onResume() {
         super.onResume();
         LogUtils.e("HomeFragment", "onResume");
-        if (mViewPager != null) {
-            mViewPager.startLoop();
+        if (mViewPagerHorizontal != null) {
+            mViewPagerHorizontal.startLoop();
         }
     }
 
@@ -112,7 +118,7 @@ public class HomeFragment extends BaseFragment {
                 .subscribe(new ResponseObserver<DataWrapper>() {
                     @Override
                     public void onSuccess(DataWrapper response) {
-                        mViewPager.setData(response.getDataBeanList());
+                        mViewPagerHorizontal.setData(response.getDataBeanList());
                         articleAdapter.setData(response.getArticleList());
                         if (response.getDataBeanList().size() > 0) {
                             mTvTitle.setText(response.getDataBeanList().get(0).getTitle());
@@ -137,10 +143,11 @@ public class HomeFragment extends BaseFragment {
     }
 
     private void initBanner() {
-        mViewPager
+        mViewPagerHorizontal
                 .setIndicatorSlideMode(IndicatorSlideMode.WORM)
-                .setInterval(5000)
-                .setScrollDuration(1200)
+                .setInterval(3000)
+                .setScrollDuration(1000)
+                .setIndicatorGravity(IndicatorGravity.END)
                 .setIndicatorSliderRadius(getResources().getDimensionPixelSize(R.dimen.dp_3))
                 .setIndicatorView(mIndicatorView)// 这里为了设置标题故用了自定义Indicator,如果无需标题则没必要添加此行代码
                 .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
@@ -149,22 +156,45 @@ public class HomeFragment extends BaseFragment {
                     @Override
                     public void onPageSelected(int position) {
                         super.onPageSelected(position);
-                        BannerData bannerData = mViewPager.getData().get(position);
+                        BannerData bannerData = mViewPagerHorizontal.getData().get(position);
                         mTvTitle.setText(bannerData.getTitle());
                     }
                 })
                 .setOnPageClickListener(this::onPageClicked);
+
+        mViewPagerVertical
+                .setAutoPlay(true)
+                .setIndicatorStyle(IndicatorStyle.ROUND_RECT)
+                .setIndicatorSliderGap(getResources().getDimensionPixelOffset(R.dimen.dp_4))
+                .setIndicatorSliderWidth(getResources().getDimensionPixelOffset(R.dimen.dp_4), getResources().getDimensionPixelOffset(R.dimen.dp_10))
+                .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
+                .setOrientation(ViewPager2.ORIENTATION_VERTICAL)
+                .setInterval(2000)
+                .setScrollDuration(500)
+                .setAdapter(new ImageResourceAdapter(0)).create(getPicList(4));
+        mViewPager
+                .setCanLoop(false)
+                .setIndicatorStyle(IndicatorStyle.ROUND_RECT)
+                .setIndicatorSliderGap(getResources().getDimensionPixelOffset(R.dimen.dp_4))
+                .setIndicatorSliderWidth(getResources().getDimensionPixelOffset(R.dimen.dp_4), getResources().getDimensionPixelOffset(R.dimen.dp_10))
+                .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
+                .setOrientation(ViewPager2.ORIENTATION_VERTICAL)
+                .setInterval(2000)
+                .setScrollDuration(500)
+                .setAdapter(new ImageResourceAdapter(0)).create(getPicList(3));
     }
 
     private void onPageClicked(int position) {
-        BannerData bannerData = mViewPager.getData().get(position);
-        Toast.makeText(getMContext(), "position:" + position + " " + bannerData.getTitle() + "currentItem:" + mViewPager.getCurrentItem(), Toast.LENGTH_SHORT).show();
+        BannerData bannerData = mViewPagerHorizontal.getData().get(position);
+        Toast.makeText(getMContext(), "position:" + position + " " + bannerData.getTitle() + "currentItem:" + mViewPagerHorizontal.getCurrentItem(), Toast.LENGTH_SHORT).show();
     }
 
     private View getHeaderView() {
         View view = LayoutInflater.from(getMContext()).inflate(R.layout.item_header_view, recyclerView, false);
         mRlIndicator = view.findViewById(R.id.layout_indicator);
-        mViewPager = view.findViewById(R.id.banner_view);
+        mViewPagerHorizontal = view.findViewById(R.id.banner_view);
+        mViewPagerVertical = view.findViewById(R.id.banner_view2);
+        mViewPager = view.findViewById(R.id.banner_view3);
         mTvTitle = view.findViewById(R.id.tv_title);
         mIndicatorView = view.findViewById(R.id.indicator_view);
         return view;

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/AccordionTransformer.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/AccordionTransformer.java

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.zhpan.bannerview.transform;
+package com.example.zhpan.circleviewpager.transform;
 
 import android.view.View;
 

+ 3 - 3
bannerview/src/main/java/com/zhpan/bannerview/transform/BaseTransformer.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/BaseTransformer.java

@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.zhpan.bannerview.transform;
-
-import androidx.viewpager2.widget.ViewPager2;
+package com.example.zhpan.circleviewpager.transform;
 
 import android.view.View;
 
+import androidx.viewpager2.widget.ViewPager2;
+
 public abstract class BaseTransformer implements ViewPager2.PageTransformer {
 
     /**

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/DepthPageTransformer.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/DepthPageTransformer.java

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.zhpan.bannerview.transform;
+package com.example.zhpan.circleviewpager.transform;
 
 import android.view.View;
 

+ 8 - 7
bannerview/src/main/java/com/zhpan/bannerview/transform/PageTransformerFactory.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/PageTransformerFactory.java

@@ -1,17 +1,18 @@
-package com.zhpan.bannerview.transform;
+package com.example.zhpan.circleviewpager.transform;
 
 import androidx.viewpager2.widget.ViewPager2;
 
-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.SCALE_IN;
-import static com.zhpan.bannerview.constants.TransformerStyle.STACK;
+import com.zhpan.bannerview.transform.ScaleInTransformer;
 
+import static com.example.zhpan.circleviewpager.transform.TransformerStyle.ACCORDION;
+import static com.example.zhpan.circleviewpager.transform.TransformerStyle.DEPTH;
+import static com.example.zhpan.circleviewpager.transform.TransformerStyle.ROTATE;
+import static com.example.zhpan.circleviewpager.transform.TransformerStyle.SCALE_IN;
+import static com.example.zhpan.circleviewpager.transform.TransformerStyle.STACK;
 
 public class PageTransformerFactory {
 
-    public ViewPager2.PageTransformer createPageTransformer(int transformerStyle) {
+    public static ViewPager2.PageTransformer createPageTransformer(int transformerStyle) {
         ViewPager2.PageTransformer transformer = null;
         switch (transformerStyle) {
             case DEPTH:

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/RotateUpTransformer.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/RotateUpTransformer.java

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.zhpan.bannerview.transform;
+package com.example.zhpan.circleviewpager.transform;
 
 import android.view.View;
 

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/StackTransformer.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/StackTransformer.java

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.zhpan.bannerview.transform;
+package com.example.zhpan.circleviewpager.transform;
 
 import android.view.View;
 

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/constants/TransformerStyle.java → app/src/main/java/com/example/zhpan/circleviewpager/transform/TransformerStyle.java

@@ -1,4 +1,4 @@
-package com.zhpan.bannerview.constants;
+package com.example.zhpan.circleviewpager.transform;
 
 public interface TransformerStyle {
     int NONE = 0;

BIN
app/src/main/res/drawable-xxxhdpi/advertise0.jpg


BIN
app/src/main/res/drawable-xxxhdpi/advertise1.jpg


BIN
app/src/main/res/drawable-xxxhdpi/advertise2.jpg


BIN
app/src/main/res/drawable-xxxhdpi/advertise3.jpg


BIN
app/src/main/res/drawable-xxxhdpi/advertise4.jpg


+ 47 - 28
app/src/main/res/layout/item_header_view.xml

@@ -2,40 +2,59 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/dp_200"
+    android:layout_height="@dimen/dp_435"
     android:orientation="vertical">
 
-    <com.zhpan.bannerview.BannerViewPager
-        android:id="@+id/banner_view"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/dp_200" />
-
-    <!--这里为了设置标题故用了自定义Indicator,如果无需标题则没必要将Indicator定义在此处-->
     <RelativeLayout
-        android:id="@+id/layout_indicator"
+        android:id="@+id/rl_banner1"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/dp_35"
-        android:visibility="gone"
-        android:layout_alignParentBottom="true"
-        android:background="#77000000">
+        android:layout_height="@dimen/dp_180">
+
+        <com.zhpan.bannerview.BannerViewPager
+            android:id="@+id/banner_view"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_180" />
+
+        <!--这里为了设置标题故用了自定义Indicator,如果无需标题则没必要将Indicator定义在此处-->
+        <RelativeLayout
+            android:id="@+id/layout_indicator"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_35"
+            android:layout_alignParentBottom="true"
+            android:background="#77000000"
+            android:visibility="gone">
 
-        <TextView
-            android:id="@+id/tv_title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_marginStart="@dimen/dp_15"
-            android:textColor="@color/white"
-            android:textSize="@dimen/sp_14"
-            tools:text="This is Title" />
+            <TextView
+                android:id="@+id/tv_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginStart="@dimen/dp_15"
+                android:textColor="@color/white"
+                android:textSize="@dimen/sp_14"
+                tools:text="This is Title" />
 
-        <com.zhpan.indicator.IndicatorView
-            android:id="@+id/indicator_view"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentEnd="true"
-            android:layout_centerVertical="true"
-            android:layout_marginEnd="@dimen/dp_15" />
+            <com.zhpan.indicator.IndicatorView
+                android:id="@+id/indicator_view"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentEnd="true"
+                android:layout_centerVertical="true"
+                android:layout_marginEnd="@dimen/dp_15" />
+        </RelativeLayout>
     </RelativeLayout>
 
+    <com.zhpan.bannerview.BannerViewPager
+        android:id="@+id/banner_view2"
+        android:layout_width="match_parent"
+        android:layout_below="@id/rl_banner1"
+        android:layout_marginTop="@dimen/dp_5"
+        android:layout_height="@dimen/dp_120" />
+
+    <com.zhpan.bannerview.BannerViewPager
+        android:id="@+id/banner_view3"
+        android:layout_width="match_parent"
+        android:layout_below="@id/banner_view2"
+        android:layout_marginTop="@dimen/dp_5"
+        android:layout_height="@dimen/dp_120" />
 </RelativeLayout>

+ 1 - 0
app/src/main/res/values-sw1024dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">1137.7778dp</dimen>
 	<dimen name="dp_410">1166.2222dp</dimen>
 	<dimen name="dp_422">1200.3556dp</dimen>
+	<dimen name="dp_435">1237.3333dp</dimen>
 	<dimen name="dp_472">1342.5778dp</dimen>
 	<dimen name="dp_500">1422.2222dp</dimen>
 	<dimen name="dp_600">1706.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw1280dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">1422.2222dp</dimen>
 	<dimen name="dp_410">1457.7778dp</dimen>
 	<dimen name="dp_422">1500.4444dp</dimen>
+	<dimen name="dp_435">1546.6667dp</dimen>
 	<dimen name="dp_472">1678.2222dp</dimen>
 	<dimen name="dp_500">1777.7778dp</dimen>
 	<dimen name="dp_600">2133.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw1365dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">1516.6667dp</dimen>
 	<dimen name="dp_410">1554.5833dp</dimen>
 	<dimen name="dp_422">1600.0833dp</dimen>
+	<dimen name="dp_435">1649.3750dp</dimen>
 	<dimen name="dp_472">1789.6667dp</dimen>
 	<dimen name="dp_500">1895.8333dp</dimen>
 	<dimen name="dp_600">2275.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw384dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">426.6667dp</dimen>
 	<dimen name="dp_410">437.3333dp</dimen>
 	<dimen name="dp_422">450.1333dp</dimen>
+	<dimen name="dp_435">464.0000dp</dimen>
 	<dimen name="dp_472">503.4667dp</dimen>
 	<dimen name="dp_500">533.3333dp</dimen>
 	<dimen name="dp_600">640.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw392dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">435.5556dp</dimen>
 	<dimen name="dp_410">446.4444dp</dimen>
 	<dimen name="dp_422">459.5111dp</dimen>
+	<dimen name="dp_435">473.6667dp</dimen>
 	<dimen name="dp_472">513.9556dp</dimen>
 	<dimen name="dp_500">544.4444dp</dimen>
 	<dimen name="dp_600">653.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw400dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">444.4444dp</dimen>
 	<dimen name="dp_410">455.5556dp</dimen>
 	<dimen name="dp_422">468.8889dp</dimen>
+	<dimen name="dp_435">483.3333dp</dimen>
 	<dimen name="dp_472">524.4444dp</dimen>
 	<dimen name="dp_500">555.5556dp</dimen>
 	<dimen name="dp_600">666.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw410dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">455.5556dp</dimen>
 	<dimen name="dp_410">466.9444dp</dimen>
 	<dimen name="dp_422">480.6111dp</dimen>
+	<dimen name="dp_435">495.4167dp</dimen>
 	<dimen name="dp_472">537.5556dp</dimen>
 	<dimen name="dp_500">569.4444dp</dimen>
 	<dimen name="dp_600">683.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw411dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">456.6667dp</dimen>
 	<dimen name="dp_410">468.0833dp</dimen>
 	<dimen name="dp_422">481.7833dp</dimen>
+	<dimen name="dp_435">496.6250dp</dimen>
 	<dimen name="dp_472">538.8667dp</dimen>
 	<dimen name="dp_500">570.8333dp</dimen>
 	<dimen name="dp_600">685.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw432dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">480.0000dp</dimen>
 	<dimen name="dp_410">492.0000dp</dimen>
 	<dimen name="dp_422">506.4000dp</dimen>
+	<dimen name="dp_435">522.0000dp</dimen>
 	<dimen name="dp_472">566.4000dp</dimen>
 	<dimen name="dp_500">600.0000dp</dimen>
 	<dimen name="dp_600">720.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw480dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">533.3333dp</dimen>
 	<dimen name="dp_410">546.6667dp</dimen>
 	<dimen name="dp_422">562.6667dp</dimen>
+	<dimen name="dp_435">580.0000dp</dimen>
 	<dimen name="dp_472">629.3333dp</dimen>
 	<dimen name="dp_500">666.6667dp</dimen>
 	<dimen name="dp_600">800.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw533dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">592.2222dp</dimen>
 	<dimen name="dp_410">607.0278dp</dimen>
 	<dimen name="dp_422">624.7944dp</dimen>
+	<dimen name="dp_435">644.0417dp</dimen>
 	<dimen name="dp_472">698.8222dp</dimen>
 	<dimen name="dp_500">740.2778dp</dimen>
 	<dimen name="dp_600">888.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw592dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">657.7778dp</dimen>
 	<dimen name="dp_410">674.2222dp</dimen>
 	<dimen name="dp_422">693.9556dp</dimen>
+	<dimen name="dp_435">715.3333dp</dimen>
 	<dimen name="dp_472">776.1778dp</dimen>
 	<dimen name="dp_500">822.2222dp</dimen>
 	<dimen name="dp_600">986.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw600dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">666.6667dp</dimen>
 	<dimen name="dp_410">683.3333dp</dimen>
 	<dimen name="dp_422">703.3333dp</dimen>
+	<dimen name="dp_435">725.0000dp</dimen>
 	<dimen name="dp_472">786.6667dp</dimen>
 	<dimen name="dp_500">833.3333dp</dimen>
 	<dimen name="dp_600">1000.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw640dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">711.1111dp</dimen>
 	<dimen name="dp_410">728.8889dp</dimen>
 	<dimen name="dp_422">750.2222dp</dimen>
+	<dimen name="dp_435">773.3333dp</dimen>
 	<dimen name="dp_472">839.1111dp</dimen>
 	<dimen name="dp_500">888.8889dp</dimen>
 	<dimen name="dp_600">1066.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw662dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">735.5556dp</dimen>
 	<dimen name="dp_410">753.9444dp</dimen>
 	<dimen name="dp_422">776.0111dp</dimen>
+	<dimen name="dp_435">799.9167dp</dimen>
 	<dimen name="dp_472">867.9556dp</dimen>
 	<dimen name="dp_500">919.4444dp</dimen>
 	<dimen name="dp_600">1103.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw720dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">800.0000dp</dimen>
 	<dimen name="dp_410">820.0000dp</dimen>
 	<dimen name="dp_422">844.0000dp</dimen>
+	<dimen name="dp_435">870.0000dp</dimen>
 	<dimen name="dp_472">944.0000dp</dimen>
 	<dimen name="dp_500">1000.0000dp</dimen>
 	<dimen name="dp_600">1200.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw768dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">853.3333dp</dimen>
 	<dimen name="dp_410">874.6667dp</dimen>
 	<dimen name="dp_422">900.2667dp</dimen>
+	<dimen name="dp_435">928.0000dp</dimen>
 	<dimen name="dp_472">1006.9333dp</dimen>
 	<dimen name="dp_500">1066.6667dp</dimen>
 	<dimen name="dp_600">1280.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw800dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">888.8889dp</dimen>
 	<dimen name="dp_410">911.1111dp</dimen>
 	<dimen name="dp_422">937.7778dp</dimen>
+	<dimen name="dp_435">966.6667dp</dimen>
 	<dimen name="dp_472">1048.8889dp</dimen>
 	<dimen name="dp_500">1111.1111dp</dimen>
 	<dimen name="dp_600">1333.3333dp</dimen>

+ 1 - 0
app/src/main/res/values-sw811dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">901.1111dp</dimen>
 	<dimen name="dp_410">923.6389dp</dimen>
 	<dimen name="dp_422">950.6722dp</dimen>
+	<dimen name="dp_435">979.9583dp</dimen>
 	<dimen name="dp_472">1063.3111dp</dimen>
 	<dimen name="dp_500">1126.3889dp</dimen>
 	<dimen name="dp_600">1351.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw820dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">911.1111dp</dimen>
 	<dimen name="dp_410">933.8889dp</dimen>
 	<dimen name="dp_422">961.2222dp</dimen>
+	<dimen name="dp_435">990.8333dp</dimen>
 	<dimen name="dp_472">1075.1111dp</dimen>
 	<dimen name="dp_500">1138.8889dp</dimen>
 	<dimen name="dp_600">1366.6667dp</dimen>

+ 1 - 0
app/src/main/res/values-sw960dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">1066.6667dp</dimen>
 	<dimen name="dp_410">1093.3333dp</dimen>
 	<dimen name="dp_422">1125.3333dp</dimen>
+	<dimen name="dp_435">1160.0000dp</dimen>
 	<dimen name="dp_472">1258.6667dp</dimen>
 	<dimen name="dp_500">1333.3333dp</dimen>
 	<dimen name="dp_600">1600.0000dp</dimen>

+ 1 - 0
app/src/main/res/values-sw961dp/dimens.xml

@@ -409,6 +409,7 @@
 	<dimen name="dp_400">1067.7778dp</dimen>
 	<dimen name="dp_410">1094.4722dp</dimen>
 	<dimen name="dp_422">1126.5056dp</dimen>
+	<dimen name="dp_435">1161.2083dp</dimen>
 	<dimen name="dp_472">1259.9778dp</dimen>
 	<dimen name="dp_500">1334.7222dp</dimen>
 	<dimen name="dp_600">1601.6667dp</dimen>

+ 1 - 0
app/src/main/res/values/dimens.xml

@@ -409,6 +409,7 @@
     <dimen name="dp_400">400dp</dimen>
     <dimen name="dp_410">410dp</dimen>
     <dimen name="dp_422">422dp</dimen>
+    <dimen name="dp_435">435dp</dimen>
     <dimen name="dp_472">472dp</dimen>
     <dimen name="dp_500">500dp</dimen>
     <dimen name="dp_600">600dp</dimen>

+ 33 - 59
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -19,14 +19,12 @@ import android.widget.RelativeLayout;
 
 import com.zhpan.bannerview.annotation.AIndicatorGravity;
 import com.zhpan.bannerview.annotation.APageStyle;
-import com.zhpan.bannerview.annotation.ATransformerStyle;
 import com.zhpan.bannerview.annotation.Visibility;
 import com.zhpan.bannerview.constants.PageStyle;
 import com.zhpan.bannerview.manager.BannerManager;
 import com.zhpan.bannerview.manager.BannerOptions;
 import com.zhpan.bannerview.provider.ProxyLayoutManger;
 import com.zhpan.bannerview.transform.OverlapPageTransformer;
-import com.zhpan.bannerview.transform.PageTransformerFactory;
 import com.zhpan.bannerview.transform.ScaleInTransformer;
 import com.zhpan.bannerview.utils.BannerUtils;
 import com.zhpan.bannerview.provider.ViewStyleSetter;
@@ -172,37 +170,36 @@ public class BannerViewPager<T, VH extends BaseViewHolder> extends RelativeLayou
             case MotionEvent.ACTION_DOWN:
                 setLooping(true);
                 stopLoop();
-                startX = (int) ev.getX();
-                startY = (int) ev.getY();
-                getParent().requestDisallowInterceptTouchEvent(true);
                 break;
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
-                setLooping(false);
-                startLoop();
-                getParent().requestDisallowInterceptTouchEvent(false);
-                break;
             case MotionEvent.ACTION_OUTSIDE:
                 setLooping(false);
                 startLoop();
                 break;
         }
-        int orientation = mBannerManager.bannerOptions().getOrientation();
-        if (orientation == ViewPager2.ORIENTATION_VERTICAL) {
-            dispatchVerticalTouchEvent(ev);
-        } else if (orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
-            dispatchHorizontalTouchEvent(ev);
-        }
         return super.dispatchTouchEvent(ev);
     }
 
-    private void dispatchHorizontalTouchEvent(MotionEvent ev) {
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
         switch (ev.getAction()) {
             case MotionEvent.ACTION_DOWN:
+                startX = (int) ev.getX();
+                startY = (int) ev.getY();
                 getParent().requestDisallowInterceptTouchEvent(true);
                 break;
             case MotionEvent.ACTION_MOVE:
-                onActionMove(ev);
+                int endX = (int) ev.getX();
+                int endY = (int) ev.getY();
+                int disX = Math.abs(endX - startX);
+                int disY = Math.abs(endY - startY);
+                int orientation = mBannerManager.bannerOptions().getOrientation();
+                if (orientation == ViewPager2.ORIENTATION_VERTICAL) {
+                    onVerticalActionMove(endY, disX, disY);
+                } else if (orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
+                    onHorizontalActionMove(endX, disX, disY);
+                }
                 break;
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
@@ -211,38 +208,28 @@ public class BannerViewPager<T, VH extends BaseViewHolder> extends RelativeLayou
             case MotionEvent.ACTION_OUTSIDE:
                 break;
         }
+        return super.onInterceptTouchEvent(ev);
     }
 
-    private void dispatchVerticalTouchEvent(MotionEvent ev) {
-        switch (ev.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                getParent().requestDisallowInterceptTouchEvent(false);
-                break;
-            case MotionEvent.ACTION_MOVE:
-                int endX = (int) ev.getX();
-                int endY = (int) ev.getY();
-                int disX = Math.abs(endX - startX);
-                int disY = Math.abs(endY - startY);
-                if (disX > disY) {
+    private void onVerticalActionMove(int endY, int disX, int disY) {
+        if (disY > disX) {
+            if (!isCanLoop()) {
+                if (currentPosition == 0 && endY - startY > 0) {
+                    getParent().requestDisallowInterceptTouchEvent(false);
+                } else if (currentPosition == getData().size() - 1 && endY - startY < 0) {
                     getParent().requestDisallowInterceptTouchEvent(false);
                 } else {
                     getParent().requestDisallowInterceptTouchEvent(true);
                 }
-                break;
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
+            } else {
                 getParent().requestDisallowInterceptTouchEvent(true);
-                break;
-            case MotionEvent.ACTION_OUTSIDE:
-                break;
+            }
+        } else if (disX > disY) {
+            getParent().requestDisallowInterceptTouchEvent(false);
         }
     }
 
-    private void onActionMove(MotionEvent ev) {
-        int endX = (int) ev.getX();
-        int endY = (int) ev.getY();
-        int disX = Math.abs(endX - startX);
-        int disY = Math.abs(endY - startY);
+    private void onHorizontalActionMove(int endX, int disX, int disY) {
         if (disX > disY) {
             if (!isCanLoop()) {
                 if (currentPosition == 0 && endX - startX > 0) {
@@ -255,7 +242,7 @@ public class BannerViewPager<T, VH extends BaseViewHolder> extends RelativeLayou
             } else {
                 getParent().requestDisallowInterceptTouchEvent(true);
             }
-        } else if (2 * disX < disY) {
+        } else if (disY > disX) {
             getParent().requestDisallowInterceptTouchEvent(false);
         }
     }
@@ -342,7 +329,8 @@ public class BannerViewPager<T, VH extends BaseViewHolder> extends RelativeLayou
             throw new NullPointerException("You must set adapter for BannerViewPager");
         }
         BannerOptions bannerOptions = mBannerManager.bannerOptions();
-        ProxyLayoutManger.setScrollProxy(mViewPager, bannerOptions.getScrollDuration());
+        if (bannerOptions.getScrollDuration() != 0)
+            ProxyLayoutManger.setScrollProxy(mViewPager, bannerOptions.getScrollDuration());
         currentPosition = 0;
         mBannerPagerAdapter.setCanLoop(isCanLoop());
         mBannerPagerAdapter.setPageClickListener(mOnPageClickListener);
@@ -512,37 +500,23 @@ public class BannerViewPager<T, VH extends BaseViewHolder> extends RelativeLayou
         return this;
     }
 
-    /**
-     * PageTransformer Style.
-     *
-     * @param style PageTransformerStyle
-     * @see com.zhpan.bannerview.constants.TransformerStyle#NONE
-     * @see com.zhpan.bannerview.constants.TransformerStyle#DEPTH
-     * @see com.zhpan.bannerview.constants.TransformerStyle#SCALE_IN
-     * @see com.zhpan.bannerview.constants.TransformerStyle#STACK
-     * @see com.zhpan.bannerview.constants.TransformerStyle#ROTATE
-     * @see com.zhpan.bannerview.constants.TransformerStyle#ACCORDION
-     */
-    public BannerViewPager<T, VH> setPageTransformerStyle(@ATransformerStyle int style) {
-        mViewPager.setPageTransformer(new PageTransformerFactory().createPageTransformer(style));
-        return this;
-    }
-
     /**
      * @param transformer PageTransformer that will modify each page's animation properties
      */
-    public void setPageTransformer(@Nullable ViewPager2.PageTransformer transformer) {
+    public BannerViewPager<T, VH> setPageTransformer(@Nullable ViewPager2.PageTransformer transformer) {
         if (transformer != null)
             mViewPager.setPageTransformer(transformer);
+        return this;
     }
 
     /**
      * @param transformer PageTransformer that will modify each page's animation properties
      */
-    public void addPageTransformer(@Nullable ViewPager2.PageTransformer transformer) {
+    public BannerViewPager<T, VH> addPageTransformer(@Nullable ViewPager2.PageTransformer transformer) {
         if (transformer != null) {
             mCompositePageTransformer.addTransformer(transformer);
         }
+        return this;
     }
 
     public void removeTransformer(@Nullable ViewPager2.PageTransformer transformer) {

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

@@ -1,27 +0,0 @@
-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.SCALE_IN;
-import static com.zhpan.bannerview.constants.TransformerStyle.STACK;
-
-/**
- * <pre>
- *   Created by zhangpan on 2019-10-18.
- *   Description:
- * </pre>
- */
-@IntDef({NONE, DEPTH, STACK, ACCORDION, ROTATE,SCALE_IN})
-@Retention(RetentionPolicy.SOURCE)
-@Target(ElementType.PARAMETER)
-public @interface ATransformerStyle {
-}

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

@@ -11,8 +11,6 @@ import androidx.annotation.Nullable;
 import com.zhpan.bannerview.R;
 import com.zhpan.bannerview.utils.BannerUtils;
 
-import static com.zhpan.bannerview.manager.BannerOptions.DEFAULT_SCROLL_DURATION;
-
 /**
  * <pre>
  *   Created by zhpan on 2019/11/20.
@@ -44,8 +42,8 @@ public class AttributeController {
         int indicatorStyle = typedArray.getInt(R.styleable.BannerViewPager_bvp_indicator_style, 0);
         int indicatorSlideMode = typedArray.getInt(R.styleable.BannerViewPager_bvp_indicator_slide_mode, 0);
         int indicatorVisibility = typedArray.getInt(R.styleable.BannerViewPager_bvp_indicator_visibility, 0);
-        mBannerOptions.setIndicatorSliderColor(indicatorNormalColor,indicatorCheckedColor);
-        mBannerOptions.setIndicatorSliderWidth(normalIndicatorWidth,normalIndicatorWidth);
+        mBannerOptions.setIndicatorSliderColor(indicatorNormalColor, indicatorCheckedColor);
+        mBannerOptions.setIndicatorSliderWidth(normalIndicatorWidth, normalIndicatorWidth);
         mBannerOptions.setIndicatorGravity(indicatorGravity);
         mBannerOptions.setIndicatorStyle(indicatorStyle);
         mBannerOptions.setIndicatorSlideMode(indicatorSlideMode);
@@ -62,7 +60,7 @@ public class AttributeController {
         int roundCorner = (int) typedArray.getDimension(R.styleable.BannerViewPager_bvp_round_corner, 0);
         int revealWidth = (int) typedArray.getDimension(R.styleable.BannerViewPager_bvp_reveal_width, 0);
         int pageStyle = typedArray.getInt(R.styleable.BannerViewPager_bvp_page_style, 0);
-        int scrollDuration = typedArray.getInt(R.styleable.BannerViewPager_bvp_scroll_duration, DEFAULT_SCROLL_DURATION);
+        int scrollDuration = typedArray.getInt(R.styleable.BannerViewPager_bvp_scroll_duration, 0);
         mBannerOptions.setInterval(interval);
         mBannerOptions.setAutoPlay(isAutoPlay);
         mBannerOptions.setCanLoop(isCanLoop);

+ 0 - 2
bannerview/src/main/java/com/zhpan/bannerview/manager/BannerOptions.java

@@ -20,8 +20,6 @@ public class BannerOptions {
         revealWidth = BannerUtils.dp2px(20);
     }
 
-    static final int DEFAULT_SCROLL_DURATION = 800;
-
     private int offScreenPageLimit = ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT;
 
     private int interval;