将十六进制颜色值 (#ffffff) 转换为整数值

Posted

技术标签:

【中文标题】将十六进制颜色值 (#ffffff) 转换为整数值【英文标题】:Convert hex color value ( #ffffff ) to integer value 【发布时间】:2011-10-19 14:06:39 【问题描述】:

我正在从服务器接收十六进制颜色值(以这种形式,#xxxxxx,例如 #000000 用于黑色)

如何将其转换为整数值?

我尝试使用Integer.valueOf("0x" + passedColor.substring(1, passedColor.length())) 来获得更加六边形的0x000000 结果,但是这里没有将其解释为int,还有其他建议吗?

我收到一个错误:08-03 21:06:24.673: ERROR/androidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

我将 Android SDK 用于他们的 setBackgroundColor(int color) 函数,它采用 - 正如您可能已经猜到的 - 整数颜色值。

这是这个问题的对立面:How to convert a color integer to a hex String in Android?

【问题讨论】:

由于某种原因我无法发布...您快到了,但您需要两个参数 valueOf 方法,您可以在其中指定字符串输入(没有 #, of当然)和指定基数的基数。 Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) 这可以用任何整数基数来完成! download.oracle.com/javase/6/docs/api/java/lang/…, int) How to get a Color from hexadecimal Color String的可能重复 【参考方案1】:
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

【讨论】:

感谢您的建议,我刚才尝试了这个但没有成功,结果发现一个包含的 Android 函数是唯一有效的颜色结果,即使它们都返回 int。 Color.parseColor(myPassedColor)) 我不认为这是一个特定于 android 的问题,但事实证明它是 我不知道为什么人们赞成这个;它不起作用!这里的颜色以 32 位存储,因此打印它们会使它们显示为 long。 parseInt 寻找一个明确的“-”来表示一个负数,并且不尊重整数或长整数的符号位。因此它会给出错误的数字。 @enthdegree,引用 OP,“我正在从服务器接收十六进制颜色值(以这种形式,#xxxxxx”所以 OP 处理的颜色是 24 位而不是 32 位;有没有 Alpha 通道。 @AllDayAmazing,'#' 不是十六进制数字、符号或小数分隔符,因此如果在输入中找到 parseInt,它将失败。 我的错误,我对自己所做的事情如此根深蒂固,以至于我快速阅读并看到了parseColor()。你说的很对。【参考方案2】:

我有同样的问题,我在#AAAAAA 的形式中发现了一些颜色,我想将其转换为 android 可以使用的形式。 我发现你可以只使用0xFFAAAAAA,这样android就可以自动分辨颜色。注意第一个FF 告诉alpha 值。 希望对你有帮助

【讨论】:

【参考方案3】:

真正的答案是使用:

Color.parseColor(myPassedColor) 在 Android 中,myPassedColorhex 值,例如 #000#000000#00000000

但是这个函数does not support shorthand hex values比如#000

【讨论】:

不幸的是 in 不解析像 #000 这样的值。见documentation @CQM 如何解析速记十六进制颜色,如#ccc。有没有其他办法?【参考方案4】:

我也遇到了同样的问题。这样我就能够解决它。 正如 CQM 所说,使用 Color.parseColor() 可以很好地解决这个问题。

这是我使用的代码:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

在这种情况下,我的目标是在我从我的首选项 (color_prefs) 更改颜色选择时更改按钮的文本颜色 (Button_C)。

【讨论】:

【参考方案5】:

真正的答案是这个最简单最容易的......

String white = "#ffffff";
int whiteInt = Color.parseColor(white);

【讨论】:

【参考方案6】:

试试这个,在你的资源中创建drawable...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:
        android:/>
</shape>

然后使用...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

有颜色...“#FFFFFF”

如果颜色是透明的,使用... setAlpha

mView1.setAlpha(x); with x float 0-1 Ej (0.9f)

祝你好运

【讨论】:

【参考方案7】:

答案真的很简单,在android中如果你想将十六进制颜色转换为int,只需使用android Color类,示例如下所示

这是浅灰色的

Color.parseColor("#a8a8a8");

就是这样,你会得到你的结果。

【讨论】:

并明确说明如何使用: someText.setTextColor(Color.parseColor("#f9e6ff") )【参考方案8】:

基于CQM的answer和ovokerie-ogbeta的answer to another question我想出了这个解决方案:

if (colorAsString.length() == 4)  // #XXX
    colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");


int color = Color.parseColor(colorAsString);

【讨论】:

【参考方案9】:

在字符串中获取共享首选项颜色代码,然后转换为整数并添加布局背景颜色:

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

【讨论】:

【参考方案10】:

如果您可以将值作为静态 const 传递,则可以使用此在线转换器将十六进制值转换为 Android (android.graphics.Color),并将颜色参考放入 const,即:颜色转换器给我这个值对于这种颜色#EE5670 = 0xFFEE5670。

static const Color redColor = const Color(0xFFEE5670);

https://convertingcolors.com/hex-color-EE5670.html?search=#EE5670

【讨论】:

以上是关于将十六进制颜色值 (#ffffff) 转换为整数值的主要内容,如果未能解决你的问题,请参考以下文章

将布尔值转换为整数值php

将数组十六进制颜色转换为数组 rgb 颜色 [重复]

如何在读取 CSV 文件时将字符串值转换为整数值?

C++如何将使用16进制表达的颜色色彩RGB字符串转化为整型或者浮点型表达?(颜色转换色彩转换)

如何把RGB颜色对应成一个数值

在 PHP 中将十六进制颜色转换为 RGB 值