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