2017-10-06 158 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

相关问题