2017-10-06 89 views
0

我的佈局中有一個ImageView。我使用setColorFilter()爲該圖像設置了顏色。現在我正在嘗試使用getColorFilter()來獲得相同的顏色。但它返回一個ColorFilter對象。我如何從中提取十六進制顏色。如何從android中的getColorFilter獲取顏色的十六進制值或rgb值

這是我想設置顏色到圖像的方式:

image.setColorFilter(Color.parseColor("#ECECEC"), PorterDuff.Mode.MULTIPLY); 

現在,我使用下面的代碼,返回一個ColorFilter對象:

image.getColorFilter() 

但如何從它得到十六進制值或顏色的RGB值?

回答

4

它似乎對顏色的方法是隱藏最佳Google已知的原因:

/** 
* Returns the ARGB color used to tint the source pixels when this filter 
* is applied. 
* 
* @see Color 
* @see #setColor(int) 
* 
* @hide 
*/ 
public int getColor() { 
    return mColor; 
} 

您可以使用一個變量來存儲:

int colorFilterColor ; 

,並在設置colorFilter:

int color = Color.parseColor("#ECECEC"); 
image.setColorFilter(color , PorterDuff.Mode.MULTIPLY); 
colorFilterColor = color ; 

獲取顏色:

public int getFilterColor(){ 
return colorFilterColor ; 
} 
+0

這是一個好主意。但爲什麼'getColorFilter()'不返回顏色值?只是想知道。 – XoXo

+0

@Hiren我檢查了PorterDuffColorFilter的來源,它似乎獲取顏色的方法是隱藏的 –

+0

這真的很糟糕:(@Coldfire – XoXo

相關問題