如何从hex颜色string中获取颜色

我想使用一个像"#FFFF0000"这样的hexastring的颜色来(比如说)改变Layout的背景颜色。 Color.HSVToColor看起来像一个胜利者,但它需要一个float[]作为参数。

我有没有接近解决scheme呢?

尝试Color类的方法:

 public static int parseColor (String colorString) 

从Android文档:

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

尝试:

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

将该string转换为可在setBackgroundColorsetTextColor使用的int颜色

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

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

 int color = 0xFFFF0000; 

它的

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

尝试这个:

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

我使用这个,它对我设置任何颜色我很想。

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

使用0-255为每个红色,绿色和蓝色设置颜色,然后在希望使用该颜色的任何位置放置MY_COLOR而不是Color.BLUE或Color.RED或Color类提供的其他任何静态颜色。

只要做一个谷歌search颜色图表,它可以find一个正确的RGB代码使用0-255的图表。

这个问题出现了一些与hex颜色相关的search,所以我将在这里添加一个摘要。

来自int的颜色

hex颜色采取formsRRGGBBAARRGGBB (阿尔法,红色,绿色,蓝色)。 根据我的经验,直接使用int ,需要使用完整的AARRGGBB表单。 如果你只有RRGGBBforms,那么只需在FF前面加上alpha(透明)就完全不透明了。 这里是你如何设置代码。 在开头使用0x表示hex,而不是十进制。

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

string的颜色

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

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

请注意,string必须以#开头。 支持RRGGBBAARRGGBB格式。

来自XML的颜色

你应该尽可能地从XML中获取你的颜色。 这是推荐的选项,因为它使得更改颜色到您的应用程序更容易。 如果你在你的代码中设置了很多hex颜色,那么稍后尝试改变它们是一个很大的麻烦。

Android材质devise使用已configuration的hex值进行颜色调整。

  • 材料devise颜色造型
  • 材料devise调色板生成器

这些主题颜色在整个应用程序中使用,如下所示:

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中分两步定义你的颜色。 首先命名hex值的颜色,然后命名应该得到一定颜色的应用程序的组件。 这使得以后可以很容易地调整颜色。 再次,这是在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

笔记

  • findhex颜色的一个快速方法是打开Gimp(或其他一些照片编辑软件)中的颜色select器对话框。
  • 材料devise中的标准不透明度水平

保存在res / values / colors.xml中的XML文件:

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <color name="translucent_red">#80ff0000</color> </resources> 

这个应用程序代码检索颜色资源:

 Resources res = getResources(); int color = res.getColor(R.color.opaque_red); 

此布局XML将颜色应用于属性:

 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/> 

尝试使用0xFFF000,并将其传递到Color.HSVToColor方法。

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

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

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

在Xamarin中使用这个

 Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));