2

我想做一个 if 语句,我将在其中比较布局背景颜色的颜色,如下所示:

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

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

4

2 回答 2

3

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

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...
}

如果您经常这样做(例如在列表适配器中),我会对其进行一次解析并存储结果以供重用。

于 2012-11-02T12:25:28.617 回答
2

在您可以使用 API 级别 11+ 的情况下,您可以将screen.getBackground()转换为 aColorDrawable然后调用方法getColor()。不幸的是,此方法不适用于 API 级别 < 11。

希望这可以帮助!

于 2012-11-02T12:27:39.740 回答