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

Java 将十六进制颜色值(#ffffff)转换为整数值,java,android,colors,numberformatexception,Java,Android,Colors,Numberformatexception,我正在从服务器接收十六进制颜色值(在这种形式中,黑色为#xxxxxx,示例为#000000) 如何将其转换为整数值 我尝试执行Integer.valueOf(“0x”+passedColor.substring(1,passedColor.length())以获得更为十六进制的0x000000结果,但这里没有解释为int,还有其他建议吗 我收到一个错误:08-03 21:06:24.673:错误/AndroidRuntime(20231):java.lang.NumberFormatExcept

我正在从服务器接收十六进制颜色值(在这种形式中,黑色为
#xxxxxx
,示例为
#000000

如何将其转换为整数值

我尝试执行
Integer.valueOf(“0x”+passedColor.substring(1,passedColor.length())
以获得更为十六进制的
0x000000
结果,但这里没有解释为
int
,还有其他建议吗

我收到一个错误:
08-03 21:06:24.673:错误/AndroidRuntime(20231):java.lang.NumberFormatException:无法将“0x00C8FBFE”解析为整数

我正在使用Android SDK实现其
setBackgroundColor(int-color)
函数,正如您可能已经猜到的那样,该函数接受一个整数颜色值


这与这个问题正好相反:

我遇到了同样的问题,我在
#aaaaa
的形式中发现了一些颜色,我想把它转换成android可以利用的形式。 我发现你只需使用
0xffaaaaaaa
,android就可以自动识别颜色。注意第一个
FF
告诉我们
alpha
值。
希望有帮助

真正的答案是使用:

Color.parseColor(myPassedColor)
在Android中,
myPassedColor
hex
值,如
\000
\00000000


但是,像
#000

这样的函数我也面临同样的问题。这样我就解决了这个问题。 正如CQM所说,使用Color.parseColor()是解决这个问题的一个好方法

以下是我使用的代码:

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

在本例中,我的目标是在我从首选项(color_prefs)更改颜色选择时更改按钮的文本颜色(Button_C)

真正的答案是最简单、最容易

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

试试这个,在你的资源中创建可绘制的

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>
用颜色。。。“#FFFFFF”

如果颜色是透明的,请使用。。。塞塔法

mView1.setAlpha(x)带x浮动0-1 Ej(0.9f)


好运

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

这是浅灰色的

Color.parseColor("#a8a8a8");
就这样,您将得到您的结果。

基于一个又一个的,我提出了以下解决方案:

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);

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

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

如果可以将值作为静态常量传递,则可以使用此在线转换器将十六进制值转换为Android(Android.graphics.Color),并将颜色引用放入常量中,即:Color converter为此颜色提供此值#EE5670=0xFFEE5670

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

由于某种原因,我无法发布。。。就快到了,但是需要两个参数
valueOf
方法,在这里指定字符串输入(当然没有#)和基数,后者指定基数
Integer.valueOf(passedColor.substring(1,passedColor.length()),16)
这可以用任何整数基完成,int)可能是重复的谢谢你的建议,我刚才尝试了这个,但没有效果,结果是包含的Android函数是唯一有效的颜色结果,尽管它们都返回int.color.parseColor(myPassedColor)),我不认为这是Android特有的问题,但事实证明,我不知道为什么人们会投票支持这一点;它不起作用!!这里的颜色以32位存储,因此打印它们会使它们显示为长。parseInt寻找一个显式的“-”来表示负数,并且不考虑int或long的符号位。因此,它将给出错误的数字,引用OP,“我正在从服务器接收十六进制颜色值(在这种形式中为#xxxxxx)”所以OP处理的颜色是24位而不是32位;没有alpha通道。@AlldayAzing,“#”不是十六进制数字、符号或十进制分隔符,所以
parseInt
如果在输入中找到它就会失败。我的错误是,我在做的事情中根深蒂固,所以我很快就阅读了它并看到了
parseColor()
。你说得很对。不幸的是,in没有解析像
#000
这样的值。请参阅@CQM如何解析像
#ccc
这样的速记十六进制颜色。还有其他方法吗?请明确说明如何使用:someText.setTextColor(color.parseColor(#f9e6ff)))
    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));
static const Color redColor = const Color(0xFFEE5670);