SuperButton

May 13, 2021 · View on GitHub

SuperButton可以实现shape大部分属性设置,从此实现边框之类的UI宝宝再也不用写很多shape文件了,想怎么玩就怎么玩!

效果图

效果图

SuperButton所有属性均提供代码动态设置

      /**
         * 所有属性均可用代码动态实现
         * 以下只是展示部分方法 可根据需求选择不同的方法
         */
        superButton.setShapeType(SuperButton.RECTANGLE)
                .setShapeCornersRadius(20)
                .setShapeSolidColor(getResources().getColor(R.color.colorAccent))
                .setShapeStrokeColor(getResources().getColor(R.color.colorPrimary))
                .setShapeStrokeWidth(1)
                .setShapeSrokeDashWidth(2)
                .setShapeStrokeDashGap(5)
                .setTextGravity(SuperButton.TEXT_GRAVITY_RIGHT)
                .setShapeUseSelector(true)
                .setShapeSelectorPressedColor(getResources().getColor(R.color.gray))
                .setShapeSelectorNormalColor(getResources().getColor(R.color.red_btn))
                .setShapeSelectorDisableColor(getResources().getColor(R.color.colorPrimary))
                .setUseShape();
        // TODO: 2017/8/12 动态设置切记需要在最后调用 setUseShape 才能对设置的参数生效

布局中如何使用(只是列出部分属性)

           <com.allen.library.SuperButton
                android:layout_width="70dp"
                android:layout_height="70dp"
                android:layout_margin="5dp"
                android:text="圆角边框"
                stv:sCornersRadius="5dp"
                stv:sStrokeColor="@color/colorAccent"
                stv:sStrokeWidth="0.2dp" />

属性说明(以下属性全部可以通过xml文件配置)

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>

以上shape对应下边的SuperButton属性

属性名字段描述默认值
sGravityenum设置文字对其方式
center
left
right
top
bottom
默认center
sShapeTypeenum设置Shape的类型
rectangle
oval
right
line
ring
默认rectangle
sSolidColorcolor填充颜色默认
sSelectorPressedColorcolor按下时颜色默认0x20000000
sSelectorDisableColorcolor不可点击颜色默认0x20000000
sSelectorNormalColorcolor正常显示的颜色默认0x20000000
sCornersRadiusdimensionshape的四个圆角半径默认0dp
sCornersTopLeftRadiusdimensionshape的左上圆角半径默认0dp
sCornersTopRightRadiusdimensionshape的右上圆角半径默认0dp
sCornersBottomLeftRadiusdimensionshape的左下圆角半径默认0dp
sCornersBottomRightRadiusdimensionshape的右下圆角半径默认0dp
sStrokeDashWidthdimensionshape的虚线宽度默认0dp
sStrokeDashGapdimensionshape的虚线间隙默认0dp
sStrokeWidthdimensionshape的边框宽度默认0dp
sStrokeColorcolorshape的边框颜色默认0x20000000
sSizeWidthdimensionshape的SizeWidth默认0dp
sSizeHeightdimensionshape的SizeHeight默认0dp
sGradientOrientationenum设置渐变类型
TOP_BOTTOM
TR_BL
RIGHT_LEFT
BR_TL
BOTTOM_TOP
BL_TR
LEFT_RIGHT
TL_BR
默认rectangle
sGradientTypeenum设置渐变类型
linear
radial
sweep
默认rectangle
sGradientCenterXfloatshape的CenterX默认0f
sGradientCenterYfloatshape的CenterY默认0f
sGradientGradientRadiusdimensionshape的GradientRadius默认0dp
sGradientStartColorcolorshape的StartColor
sGradientCenterColorcolorshape的CenterColor
sGradientEndColorcolorshape的EndColor
sGradientUseLevelbooleanshape的UseLevel默认flase
sUseSelectorboolean是否使用selector默认false