我想使用一个颜色从一个六边形字符串,如“#FFFF0000”来(说)改变一个布局的背景颜色。 颜色。HSVToColor看起来像一个赢家,但它以float[]作为参数。
我离解决方案还有一步之遥吗?
我想使用一个颜色从一个六边形字符串,如“#FFFF0000”来(说)改变一个布局的背景颜色。 颜色。HSVToColor看起来像一个赢家,但它以float[]作为参数。
我离解决方案还有一步之遥吗?
当前回答
将该字符串转换为可用于setBackgroundColor和setTextColor的int颜色
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16表示它是十六进制,而不是常规的0-9。结果应该是一样的
int color = 0xFFFF0000;
其他回答
试试这个:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
我已经创建了一个完整的答案:
/**
* Input: Hex Value of ARGB, eg: "#FFFF00FF", "#FF00FF", "#F0F"
* Output: Float Color Array with with red, green,
* blue and alpha (opacity) values,
* eg: floatArrayOf(0.63671875f, 0.76953125f, 0.22265625f, 1.0f)
*/
private fun getFloatArrayFromARGB(argb: String): FloatArray {
val colorBase: Int = if (argb.length == 4) {
val red = if (argb[1] == '0') 0 else 255
val green = if (argb[2] == '0') 0 else 255
val blue = if (argb[3] == '0') 0 else 255
Color.rgb(red, green, blue)
} else {
Color.parseColor(argb)
}
val red = Color.red(colorBase)
val green = Color.green(colorBase)
val blue = Color.blue(colorBase)
val alpha = Color.alpha(colorBase)
return floatArrayOf(
red / 255f,
green / 255f,
blue / 255f,
alpha / 255f
)
}
用法:
private val colorValue = getFloatArrayFromARGB("#F0F")
希望它能帮助到别人
如果你在XML中定义了一个颜色,并想用它来改变背景颜色或其他东西,这个API就是你正在寻找的:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
在我的示例中,我将它用于TestView
缩短十六进制代码
int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);
没有预定义的类实现直接从十六进制代码的颜色名称,所以你要做的是尝试键值对概念简单,遵循这段代码。
String hexCode = "Any Hex code" //#0000FF HashMap<String, String> color_namme = new HashMap<String, String>(); color_namme.put("#000000", "Black"); color_namme.put("#000080", "Navy Blue"); color_namme.put("#0000C8", "Dark Blue"); color_namme.put("0000FF", "Blue"); color_namme.put("000741", "Stratos"); color_namme.put("001B1C", "Swamp"); color_namme.put("002387", "Resolution Blue"); color_namme.put("002900", "Deep Fir"); color_namme.put("002E20", "Burnham"); for (Map.Entry<String, String> entry : color_namme.entrySet()) { String key = (String) entry.getKey(); String thing = (String) entry.getValue(); if (hexCode.equals(key)) Color_namme.setText(thing); //Here i display using textview }