我刚尝试过这样做
System.out.println("color == " + Color.parseColor("#F5F5F5"));
Run Code Online (Sandbox Code Playgroud)
然后它返回就像
color == -657931
Run Code Online (Sandbox Code Playgroud)
谁知道为什么,拜托?
首先,parseColor方法将返回十六进制 的整数表示,F5F5F5实际上是FFF5F5F5+颜色的不透明度.
的十进制值FFF5F5F5就是4294309365然后将其转化为整数,将溢出从而使你那负数.
这是溢出的一个例子
int i = (int)4294309365L; //4294309365L the decimal representation of FFF5F5F5
System.out.println(i); //result: -657931
Run Code Online (Sandbox Code Playgroud)
它做了它应该做的事情,它是 #F5F5F5 的 int 表示。API 中的此描述说明了为什么颜色在表示为 int 时可以为负数。
http://developer.android.com/reference/android/graphics/Color.html#parseColor(java.lang.String)
简短说明:
32bit integer in hex:AARRGGBB
Transparent: Constant Value: 0 (0x00000000)
Black: Constant Value: -16777216 (0xff000000)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3716 次 |
| 最近记录: |