Android GradientDrawable动态设置背景色、圆角

Android GradientDrawable动态设置背景色、圆角_第1张图片

有时候需要改变shape中部分属性,比如下面代码,只想改变颜色,圆角不变



    
    

不实用的方式是创建多个xml文件,里面填充solid的颜色不同,但是如果种类较多,创建起来比较麻烦。下面举例2种方法数

方法一:
获取view的background,改变其颜色。

GradientDrawable gd = (GradientDrawable)view.getBackground();
gd.setColor("#679432");
view.setBackground(gd);

方法二:
通过代码创建shape,可指定颜色、4个位置圆角。设置到view的background中
view.setBackground(setShapeColor(color, radii))

/**
     * 设置圆角背景
     *
     * @param
     * @param radii       new float[] { r0, r0, r1, r1, r2, r2, r3,r3 }
     *                    设置图片四个角圆形半径:1、2两个参数表示左上角,3、4表示右上角,5、6表示右下角,7、8表示左下角
     * @return
     */
    public static GradientDrawable setShapeColor(int color, float[] radii) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setShape(GradientDrawable.RECTANGLE);
        drawable.setGradientType(GradientDrawable.RECTANGLE);
        drawable.setCornerRadii(radii);
        drawable.setColor(color);
        return drawable;
    }

注意:
view.getBackground获取的类型是GradientDrawable,不要强制转为其他的类型,不然会报错。
java.lang.ClassCastException: android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.ShapeDrawable

你可能感兴趣的:(Android,UI,开发总结)