如何从我在View对象上使用的自定义colors.xml中获取颜色十六进制代码?

时间:2015-03-28 17:51:26

标签: android xml colors

所以我有自定义的colors.xml:

<color name="yellow">#FFFF00</color>
<color name="pink">#FF00FF</color>
<color name="red">#FF0000</color>
....................

如果我在对象(即视图)上使用颜色为其背景着色,我如何找回标记中的十六进制代码? 我的意思是我用黄色着色视图,我想知道十六进制代码有什么对象 - &gt; #FFFF00

我该怎么做?

1 个答案:

答案 0 :(得分:0)

RelativeLayout re=(RelativeLayout)rootView.findViewById(R.id.idStack);
ColorDrawable colorDrawable=(ColorDrawable)re.getBackground();
String hexcolor=Integer.toHexString(colorDrawable.getColor());

hexcolor - &gt; FFFF00

<强>更新

为了获得颜色的名称(#ff0000-&gt; RED),假设您没有做任何太复杂的事情,因为您在问题中提供了color.xml示例,您应该这样做:< / p>

//Create a map of the colors you'll need
Map<Integer,String> mycolors=new HashMap<Integer, String>(){
 {
    //Color constants at http://developer.android.com/reference/android/graphics/Color.html#BLACK
    put(-16777216,"BLACK");
    put(-256,"YELLOW");
    ...and so on... 
 }
};

//Get the color name from your map
String colorname=mycolors.get(Color.parseColor("#"+hexcolor));
//colorname -> YELLOW    

否则,由于上面的代码段找到了完全匹配,您可以尝试使用最佳匹配算法来查找最接近的颜色,例如:Best algorithm for matching colours