比较android应用程序中布局的背景颜色

时间:2012-11-02 12:09:39

标签: android

我想制作一个if语句,我将比较布局背景颜色的颜色,如下所示:

 RelativeLayout screen = (RelativeLayout) findViewById (R.id.screen);
 if(screen.getBackgroundColor() == "#FFFFFFFF"){
    //do something...
 }
 else{
   //do something else...
 }

我无法找到如何获得背景颜色。我通过以下方式设置颜色:screen.setBackgroundColor(Color.parseColor("#000000"));

2 个答案:

答案 0 :(得分:3)

没有直接的getBackgroundColor(),但如果你真的需要知道颜色值,你应该检索视图的Paint object并从中获取颜色:

Paint viewPaint = ((PaintDrawable) view.getBackground()).getPaint();
int colorARGB = viewPaint.getColor();

注意这也包含alpha,所以要小心你的比较(或者如果你只需要比较RGB就摆脱alpha:

int colorRGB = colorARGB & 0x00ffffff;

这适用于所有API级别。

修改

至于比较 - 一旦你检索到颜色,你可以使用Color.parseColor()并比较结果通常的方式:

if( colorRGB == Color.parseColor("#ffffff") ) {
   // matches...
}

或与ARGB相同:

if( colorARGB == Color.parseColor("#ffffffff") ) {
   // matches...
}

如果你经常这样做(比如.list adapter),我会解析一次并存储结果以供重用。

答案 1 :(得分:2)

在使用API​​级别11+时,您可以将screen.getBackground()转换为ColorDrawable,然后调用方法getColor()。不幸的是,这种方法不适用于API级别< 11。

希望这有帮助!