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


88

我正在从服务器接收十六进制颜色值(以这种形式#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)功能,该功能需要-您可能已经猜到了-整数颜色值。

这是这个问题的对立面:如何在Android中将颜色整数转换为十六进制字符串?


由于某种原因,我无法发布...您快到了,但是您需要两个参数的valueOf方法,在该方法中您指定了字符串输入(当然没有#)和基数,该基数指定了基数。 Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) 可以使用任何整数基数来完成! download.oracle.com/javase/6/docs/api/java/lang/...,INT)
ty1824

是的,我也无法发布我的回复。Mike Samuel几乎说了我要说的话。
2011年

Answers:



30

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

这是浅灰色的

Color.parseColor("#a8a8a8");

就是这样,您将获得结果。


并且只需明确说明如何使用:someText.setTextColor(Color.parseColor(“#f9e6ff”))
Brian M

15
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

2
感谢您的建议,我现在尝试了一下,但没有结果,事实证明,包含的Android函数是唯一一种有效的颜色结果,即使它们都返回int。Color.parseColor(myPassedColor))我不认为这是特定于Android的问题,但事实证明是
CQM

4
我不知道为什么人们对此表示支持;它不起作用!此处的颜色以32位存储,因此打印它们会使它们显示为long。parseInt寻找一个明确的'-'来表示一个负数,并且不考虑整数或长整数的符号位。因此,它将给出错误的数字。
克里斯蒂安·查普曼

1
@enthdegree,引述OP,“我接收来自服务器的十六进制颜色值(在这种形式中,#XXXXXX”这样的颜色与OP交易是24位不是32位;没有alpha通道
麦克塞缪尔

1
@AllDayAmazing,“#”不是十六进制数字,符号或十进制分隔符,因此,parseInt如果在输入中找到它,它将失败。
Mike Samuel

我的错误是,我对所做的事情根深蒂固,以至于我迅速阅读并看到了parseColor()。你说得很对。
AllDayAmazing 2014年

7

我有一个同样的问题,我发现了某种形式的颜色#AAAAAA,我想将其转换为android可以利用的形式。我发现您可以使用0xFFAAAAAAandroid才能自动识别颜色。注意第一个FF是告诉alpha价值。希望能帮助到你


4

真正的答案是这个最简单,最简单的方法。

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

3

我面临着同样的问题。这样我就能解决它。正如CQM所说,使用Color.parseColor()是解决此问题的好方法。

这是我使用的代码:

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

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



1

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

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

0

试试这个,在您的资源中创建可绘制对象...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</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); 带x浮点0-1 Ej(0.9f)

祝好运

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.