所以我有自定义的colors.xml:
<color name="yellow">#FFFF00</color>
<color name="pink">#FF00FF</color>
<color name="red">#FF0000</color>
....................
如果我在对象(即视图)上使用颜色为其背景着色,我如何找回标记中的十六进制代码? 我的意思是我用黄色着色视图,我想知道十六进制代码有什么对象 - &gt; #FFFF00
我该怎么做?
答案 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。