Browse Source

setRoundCorner compat SDK 19.

zhpanvip 3 years ago
parent
commit
ac453dda2d

+ 1 - 1
README.md

@@ -1,7 +1,7 @@
 # BannerViewPager
 
 [![License](https://img.shields.io/github/license/zhpanvip/BannerViewPager)](https://github.com/zhpanvip/BannerViewPager/blob/master/LICENSE)
-![MinSdk](https://img.shields.io/badge/API-16%2B-brightgreen.svg?style=flat)
+![MinSdk](https://img.shields.io/badge/API-19%2B-brightgreen)
 [![JitPack](https://jitpack.io/v/zhpanvip/BannerViewPager.svg)](https://jitpack.io/#zhpanvip/BannerViewPager)
 [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BannerViewPager-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/7961)
 [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ViewPagerIndicator-brightgreen.svg?style=flat)](https://github.com/zhpanvip/viewpagerindicator)

+ 1 - 1
README_CN.md

@@ -1,7 +1,7 @@
 # BannerViewPager
 
 [![License](https://img.shields.io/github/license/zhpanvip/BannerViewPager)](https://github.com/zhpanvip/BannerViewPager/blob/master/LICENSE)
-![MinSdk](https://img.shields.io/badge/API-16%2B-brightgreen.svg?style=flat)
+![MinSdk](https://img.shields.io/badge/API-19%2B-brightgreen)
 [![JitPack](https://jitpack.io/v/zhpanvip/BannerViewPager.svg)](https://jitpack.io/#zhpanvip/BannerViewPager)
 [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BannerViewPager-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/7961)
 [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ViewPagerIndicator-brightgreen.svg?style=flat)](https://github.com/zhpanvip/viewpagerindicator)

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

@@ -99,7 +99,6 @@ public class OthersFragment extends BaseFragment implements View.OnClickListener
       } else if (checkedId == R.id.rb_vector_drawable) {
         setDrawableIndicator(getVectorDrawableIndicator());
       } else if (checkedId == R.id.rb_round_corner) {
-        mViewPager.setRoundCorner(1);
         setRoundCorner();
       }
     });

+ 1 - 0
app/src/main/java/com/example/zhpan/banner/view/CornerImageView.kt

@@ -5,6 +5,7 @@ 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,

+ 0 - 36
app/src/main/java/com/example/zhpan/banner/view/RoundViewOutlineProvider.java

@@ -1,36 +0,0 @@
-
-
-package com.example.zhpan.banner.view;
-
-import android.annotation.TargetApi;
-import android.graphics.Outline;
-import android.graphics.Rect;
-import android.os.Build;
-import android.view.View;
-import android.view.ViewOutlineProvider;
-
-/**
- * <pre>
- *   Created by zhangpan on 2018/12/26.
- *   Description:圆角效果
- * </pre>
- */
-
-@TargetApi(Build.VERSION_CODES.LOLLIPOP)
-public class RoundViewOutlineProvider extends ViewOutlineProvider {
-  /**
-   * 圆角弧度
-   */
-  private final float mRadius;
-
-  public RoundViewOutlineProvider(float radius) {
-    this.mRadius = radius;
-  }
-
-  @Override
-  public void getOutline(View view, Outline outline) {
-    // 绘制区域
-    Rect selfRect = new Rect(0, 0, view.getWidth(), view.getHeight());
-    outline.setRoundRect(selfRect, mRadius);
-  }
-}

+ 0 - 34
app/src/main/java/com/example/zhpan/banner/view/ViewStyleSetter.java

@@ -1,34 +0,0 @@
-
-
-package com.example.zhpan.banner.view;
-
-import android.os.Build;
-import androidx.annotation.RequiresApi;
-import android.view.View;
-
-/**
- * <pre>
- *   Created by zhangpan on 2018/12/26.
- *   Description:为View设置圆角/圆形效果,支持View及ViewGroup,适用Android 5.1及以上系统。
- * </pre>
- */
-
-public class ViewStyleSetter {
-
-  private ViewStyleSetter() {
-  }
-
-  /**
-   * 为View设置圆角效果
-   *
-   * @param radius 圆角半径
-   */
-  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-  public static void applyRoundCorner(View target, float radius) {
-    if (target == null) {
-      return;
-    }
-    target.setClipToOutline(true);// 用outline裁剪内容区域
-    target.setOutlineProvider(new RoundViewOutlineProvider(radius));
-  }
-}

+ 5 - 1
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -541,7 +541,11 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
    * @param radius round radius
    */
   public BannerViewPager<T> setRoundCorner(int radius) {
-    mBannerManager.getBannerOptions().setRoundRectRadius(radius);
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+      mBannerManager.getBannerOptions().setRoundRectRadius(radius);
+    } else {
+      setRoundCorner(radius, radius, radius, radius);
+    }
     return this;
   }
 

+ 15 - 12
bannerview/src/main/java/com/zhpan/bannerview/provider/RoundViewOutlineProvider.java

@@ -18,16 +18,19 @@ import android.view.ViewOutlineProvider;
 
 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
 public class RoundViewOutlineProvider extends ViewOutlineProvider {
-
-    private float mRadius;// 圆角弧度
-
-    public RoundViewOutlineProvider(float radius) {
-        this.mRadius = radius;
-    }
-
-    @Override
-    public void getOutline(View view, Outline outline) {
-        Rect selfRect = new Rect(0, 0, view.getWidth(), view.getHeight());// 绘制区域
-        outline.setRoundRect(selfRect, mRadius);
-    }
+  /**
+   * 圆角弧度
+   */
+  private final float mRadius;
+
+  public RoundViewOutlineProvider(float radius) {
+    this.mRadius = radius;
+  }
+
+  @Override
+  public void getOutline(View view, Outline outline) {
+    // 绘制区域
+    Rect selfRect = new Rect(0, 0, view.getWidth(), view.getHeight());
+    outline.setRoundRect(selfRect, mRadius);
+  }
 }

+ 16 - 38
bannerview/src/main/java/com/zhpan/bannerview/provider/ViewStyleSetter.java

@@ -3,8 +3,8 @@
 package com.zhpan.bannerview.provider;
 
 import android.os.Build;
-import android.view.View;
 import androidx.annotation.RequiresApi;
+import android.view.View;
 
 /**
  * <pre>
@@ -15,42 +15,20 @@ import androidx.annotation.RequiresApi;
 
 public class ViewStyleSetter {
 
-    private ViewStyleSetter() {}
-
-    /**
-     * 为View设置圆角效果
-     * 
-     * @param radius 圆角半径
-     */
-    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-    public static void applyRoundCorner(View target, float radius) {
-        if(target == null) {
-            return;
-        }
-        target.setClipToOutline(true);// 用outline裁剪内容区域
-        target.setOutlineProvider(new RoundViewOutlineProvider(radius));
-    }
-
-    /**
-     * 设置View为圆形
-     */
-    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-    public static void applyCircle(View target) {
-        if(target == null) {
-            return;
-        }
-        target.setClipToOutline(true);// 用outline裁剪内容区域
-        target.setOutlineProvider(new OvalViewOutlineProvider());
-    }
-
-    /**
-     * 清除View的圆角效果
-     */
-    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-    public static void clearShapeStyle(View target) {
-        if(target == null) {
-            return;
-        }
-        target.setClipToOutline(false);
+  private ViewStyleSetter() {
+  }
+
+  /**
+   * 为View设置圆角效果
+   *
+   * @param radius 圆角半径
+   */
+  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+  public static void applyRoundCorner(View target, float radius) {
+    if (target == null) {
+      return;
     }
+    target.setClipToOutline(true);// 用outline裁剪内容区域
+    target.setOutlineProvider(new RoundViewOutlineProvider(radius));
+  }
 }