2012-11-02 48 views
2

我想,如果聲明,其中我將比較我的佈局的背景顏色的顏色,像這樣做的:比較佈局的背景顏色在Android應用程序

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

我無法找出如何獲取背景顏色。我通過設置顏色:screen.setBackgroundColor(Color.parseColor("#000000"));

回答

2

有沒有直接getBackgroundColor(),但如果你真的需要知道的顏色值,你應該檢索視圖的Paint object,並從它那裏得到的顏色:

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

注意這個包含alpha還有,就這樣與你比較小心(或擺脫阿爾法如果你只是需要比較RGB:

int colorRGB = colorARGB & 0x00ffffff; 

這將在所有API層面開展工作

編輯

至於對比 - 一旦你得到的顏色檢索您可以使用Color.parseColor()和比較的結果通常的方式:

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

或相同與ARGB:

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

如果你經常這樣做(比如在.list適配器中),我會解析它並存儲結果以供重用。

+0

你能給我一個比較的例子嗎?我不明白我在colorARGB中會有什麼(「#000000」或「000000」或完全不同的東西)。謝謝 – vlio20

+0

請參閱編輯答案 –

+0

如何將ColorDrawable轉換爲PaintDrawable? –

2

您可以使用API​​級別11+,您可以將screen.getBackground()轉換爲ColorDrawable,然後調用方法getColor()。不幸的是,這種方法不適用於API級別< 11.

希望這有助於!