GradientDrawable 动态设置背景的使用

我们经常会为控件按钮等设置背景图,一般的效果都是,圆角,颜色,渐变色,阴影,或者是选中效果等。正常情况下都是通过,xml文件来静态的配置。当我们在代码中需要动态配置的时候,我们可以选用GradientDrawable这个类来实现我们的效果。支持的形状有4种:

 /**
     * Shape is a rectangle, possibly with rounded corners
     */矩形
    public static final int RECTANGLE = 0;

    /**
     * Shape is an ellipse
     */圆形
    public static final int OVAL = 1;

    /**
     * Shape is a line
     */线
    public static final int LINE = 2;

    /**
     * Shape is a ring.
     */环形
    public static final int RING = 3;

通过setShape属性来设置。
其中构造方法有两种:

public GradientDrawable() {
        this(new GradientState(Orientation.TOP_BOTTOM, null), null);
    }

    /**
     * Create a new gradient drawable given an orientation and an array
     * of colors for the gradient.
     */
    public GradientDrawable(Orientation orientation, @ColorInt int[] colors) {
        this(new GradientState(orientation, colors), null);
    }

第二种就是我们需要设置渐变色的效果,构造方法。2个参数,第一个是渐变色的方向其中是个枚举类型。可选如下:

/**
     * Controls how the gradient is oriented relative to the drawable's bounds
     */
    public enum Orientation {
        /** draw the gradient from the top to the bottom */
        TOP_BOTTOM,
        /** draw the gradient from the top-right to the bottom-left */
        TR_BL,
        /** draw the gradient from the right to the left */
        RIGHT_LEFT,
        /** draw the gradient from the bottom-right to the top-left */
        BR_TL,
        /** draw the gradient from the bottom to the top */
        BOTTOM_TOP,
        /** draw the gradient from the bottom-left to the top-right */
        BL_TR,
        /** draw the gradient from the left to the right */
        LEFT_RIGHT,
        /** draw the gradient from the top-left to the bottom-right */
        TL_BR,
    }

有8种渐变方向可选,当然还有三种的渐变模式:

 /**
     * Gradient is linear (default.)
     */
    public static final int LINEAR_GRADIENT = 0;

    /**
     * Gradient is circular.
     */
    public static final int RADIAL_GRADIENT = 1;

    /**
     * Gradient is a sweep.
     */
    public static final int SWEEP_GRADIENT  = 2;

通过setGradientType方法设置属性。
第二各参数就是渐变色数组,从头到尾的颜色有哪些。当然对于矩形,我们还可以设置圆角,通过setCornerRadii这个属性来设置,第一个是drawable对象,后面便是4个角圆角的半径了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值