如何从十六进制颜色字符串得到一个颜色

我想使用一个颜色从一个六边形字符串,如"#FFFF0000"来(说)改变一个布局的背景颜色。 Color.HSVToColor看起来像一个赢家,但它以float[]作为参数

我离解决方案还有一步之遥吗?

403019 次浏览

尝试Color类方法:

public static int parseColor (String colorString)

安卓系统文档:

支持的格式是:#RRGGBB #AARRGGBB '红色','蓝色','绿色','黑色','白色','灰色','青色','品红','黄色','浅灰色','深灰色'

AndroidX: String.toColorInt ()

将该字符串转换为int颜色,可在setBackgroundColorsetTextColor中使用

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16表示它是十六进制,而不是常规的0-9。结果应该是一样的

int color = 0xFFFF0000;

尝试使用0xFFF000代替,并将其传递到颜色。HSVToColor方法。

我用这个,它很适合我设置任何我想要的颜色。

public static final int MY_COLOR = Color.rgb(255, 102, 153);

为每个红色,绿色和蓝色设置颜色0-255,然后在任何你想要使用的颜色的地方放置MY_COLOR而不是color。蓝色或彩色。红色或Color类提供的任何其他静态颜色。

只要做一个谷歌搜索颜色图表,你就可以找到一个使用0-255的正确RGB代码的图表。

试一试:

myLayout.setBackgroundColor(Color.parseColor("#636161"));

如果你在XML中定义了一个颜色,并想用它来改变背景颜色或其他东西,这个API就是你正在寻找的:

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

在我的示例中,我将它用于TestView

试试这个:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));

这是

int color =  Color.parseColor("colorstring");

这个问题会出现在一些与十六进制颜色相关的搜索中,所以我将在这里添加一个摘要。

int的颜色

十六进制颜色的形式为RRGGBBAARRGGBB(阿尔法,红,绿,蓝)。根据我的经验,当直接使用int时,你需要使用完整的AARRGGBB形式。如果你只有RRGGBB形式,那么只需在它前面加上FF,使alpha(透明度)完全不透明。下面是如何在代码中设置它。在开头使用0x意味着它是十六进制,而不是以10为基数。

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

字符串颜色

正如其他人所指出的,你可以像这样使用Color.parseColor

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

注意,字符串必须以#开头。同时支持RRGGBBAARRGGBB格式。

来自XML的颜色

您应该尽可能地从XML中获取颜色。这是推荐的选项,因为它可以更容易地更改应用程序的颜色。如果你在整个代码中设置了大量的十六进制颜色,那么稍后尝试更改它们将是一个巨大的痛苦。

Android材质设计有色彩口味与十六进制值已经配置。

这些主题颜色在整个应用程序中使用,看起来像这样:

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>

如果需要额外的颜色,一个好的做法是在xml中分两步定义颜色。首先命名十六进制值颜色,然后命名应用程序中应该获得特定颜色的组件。这使得以后调整颜色变得很容易。同样,这是在colors.xml中。

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

然后当你想在代码中设置颜色时,执行以下操作:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);

Android预定义颜色

Color类带有许多预定义的颜色常量。你可以这样用。

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

其他颜色是

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

笔记

Xamarin的< p > 使用这个< / p >
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));

缩短十六进制代码

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




}

我已经创建了一个完整的答案:

    /**
* 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")

希望它能帮助到别人

试试这个

int colorInt = Color.parseColor("#FF00FFF0");
bg.setBackgroundColor(colorInt);

bg是你想要设置背景色的视图或布局。