setBackground()

一、给View设置背景图片:

(1)setBackground(Drawable background)

button.setBackground(getResources().getDrawable(R.drawable.ic_launcher));

(2)setBackgroundDrawable(Drawable background)

button.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));

(3)setBackgroundResource(int resid)

button.setBackgroundResource(R.drawable.ic_launcher);

需要注意的是:

  • setBackground()和setBackgroundDrawable()的使用是一样的,传入的参数均为Drawable对象,需要使用getResources().getDrawable(int id)来从图片的id获得Drawable对象
  • setBackgroundResource()传入的参数正是图片的id,不需要转换为Drawable对象,因此使用起来更简单
  • setBackgroundDrawable()已经被弃用,我们可以使用另外两种方法来替代。事实上,被弃用的原因只是因为命名的决策变化,从setBackground()函数的源码我们可以看出,只是简单地调用了setBackgroundDrawable()函数,所以二者并没有实质的区别。
public void setBackground(Drawable background) {
        //noinspection deprecation
        setBackgroundDrawable(background);
    }

二、给View设置背景颜色:

(1)setBackgroundColor(int color)

button1.setBackgroundColor(0xFFFF00FF);
或
button1.setBackgroundColor(Color.parseColor("#FFFCCC"));

该函数参数为int类型的颜色,我们可以直接传入int类型的颜色,也可以将string类型的颜色字符串转换为int类型,这需要用到Color.parseColor(String colorString)函数来解析颜色字符串,如果该颜色字符串的格式不不支持,会抛出IllegalArgumentException异常。支持的颜色字符串格式有:

     * #RRGGBB
     * #AARRGGBB
     * 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta',
     * 'yellow', 'lightgray', 'darkgray', 'grey', 'lightgrey', 'darkgrey',
     * 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple',
     * 'silver', 'teal'

Color.class中常见int型颜色:

    public static final int BLACK       = 0xFF000000;  //黑色
    public static final int DKGRAY      = 0xFF444444;  //暗灰
    public static final int GRAY        = 0xFF888888;  //灰色
    public static final int LTGRAY      = 0xFFCCCCCC;  //亮灰
    public static final int WHITE       = 0xFFFFFFFF;  //白色
    public static final int RED         = 0xFFFF0000;  //红色
    public static final int GREEN       = 0xFF00FF00;  //绿色
    public static final int BLUE        = 0xFF0000FF;  //蓝色
    public static final int YELLOW      = 0xFFFFFF00;  //黄色
    public static final int CYAN        = 0xFF00FFFF;  //青色
    public static final int MAGENTA     = 0xFFFF00FF;  //品红
    public static final int TRANSPARENT = 0;          //透明色

你可能感兴趣的:(setBackground())