Android代码处理视图圆角和色彩的工具类

Android代码处理视图圆角和色彩的工具类

一直都用的.XML文件处理圆角与色彩或色彩渐变,觉得很不方便,后来发现了GradientDrawable这个类,就整了个工具类,用起来觉得挺方便

效果图:

下面贴代码:

public class DrawCorner {

    /*
    * 默认绘制圆角函数,背景白色,半径20
    * */
    public static GradientDrawable drawCorner() {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(20);
        drawable.setColor(Color.WHITE);
        return drawable;
    }

    /*
     * 默认绘制圆角函数,背景白色
     * 参数:
     * radius:圆角半径
     * */
    public static GradientDrawable drawCorner(int radius) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(radius);
        drawable.setColor(Color.WHITE);
        return drawable;
    }

    /*
     * 默认绘制圆角函数,背景白色
     * 参数:
     * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
     * */
    public static GradientDrawable drawCorner(float[] radii) {
        if (radii == null || radii.length != 8) {
            radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
        }
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadii(radii);
        drawable.setColor(Color.WHITE);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radius:圆角半径
     * color:背景色
     * */
    public static GradientDrawable drawCorner(int radius, int color) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(radius);
        drawable.setColor(color);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
     * color:背景色
     * */
    public static GradientDrawable drawCorner(float[] radii, int color) {
        if (radii == null || radii.length != 8) {
            radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
        }
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadii(radii);
        drawable.setColor(color);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radius:圆角半径
     * colors:渐变背景色
     * */
    public static GradientDrawable drawCorner(int radius, int[] colors) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(radius);
        drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
        drawable.setColors(colors);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
     * colors:渐变背景色
     * */
    public static GradientDrawable drawCorner(float[] radii, int[] colors) {
        if (radii == null || radii.length != 8) {
            radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
        }
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadii(radii);
        drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
        drawable.setColors(colors);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radius:圆角半径
     * colors:渐变背景色
     * orientation:渐变类型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
     * */
    public static GradientDrawable drawCorner(int radius, int[] colors, int orientation) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(radius);
        drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
        switch (orientation) {
            case 0:
                drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
                break;
            case 1:
                drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
                break;
            case 2:
                drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
                break;
            case 3:
                drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
                break;
            case 4:
                drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
                break;
            case 5:
                drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
                break;
            case 6:
                drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
                break;
            case 7:
                drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
                break;
        }
        drawable.setColors(colors);
        return drawable;
    }

    /*
     * 默认绘制圆角函数
     * 参数:
     * radii:四个圆角半径,依次是左上、右上、右下、左下
     * colors:渐变背景色
     * orientation:渐变类型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
     * */
    public static GradientDrawable drawCorner(float[] radii, int[] colors, int orientation) {
        if (radii == null || radii.length != 8) {
            radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
        }
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadii(radii);
        drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
        switch (orientation) {
            case 0:
                drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
                break;
            case 1:
                drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
                break;
            case 2:
                drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
                break;
            case 3:
                drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
                break;
            case 4:
                drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
                break;
            case 5:
                drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
                break;
            case 6:
                drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
                break;
            case 7:
                drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
                break;
        }
        drawable.setColors(colors);
        return drawable;
    }

}

调用方式很简单,就是

View.setBackground(DrawCorner.drawCorner);

就行了

例如:

TextView textView = findViewById(R.id.test);
textView.setBackground(DrawCorner.drawCorner());

Github地址:https://github.com/imagine-star/ViewUtil

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值