我需要知道如何以整数的形式添加字符串,例如,如果我需要使用setBackgroudColor(int)
,它可以是这样的:
String a = "15"; // Here I mean like its user changeable , so the user can change only this part of the int;
View.setBackgroundColor("0x" + a + "000000");
为了澄清更多,我希望这两个数字是用户可更改的,这里仍然是一个例子:
1 + 1 = 2 // which is I don't want
1 + 1 = 11 // which I want
请在这种情况下帮助我,如果您还有其他需要请告诉我......
答案 0 :(得分:1)
您可以直接在二进制数学中执行此操作。要设置ARGB,您可以使用以下逻辑:
int a = 0x10;
int r = 0x20;
int g = 0x30;
int b = 0x40;
int finalColor = (a << 24) + (r << 16) + (g << 8) + b;
键入0x(即数字零和字母“X”)表示数字为十六进制格式。这意味着你可以这样说:
int red = 0xff; // This is valid.
我给你的逻辑允许你用十六进制指定颜色,并获得颜色的int值。
操作“&lt;&lt;&lt;是一个“二进制移位”,它将您的位移到正确的位置。
例如:
int x = 1;
x = x << 1;
// Now x is equal to 2 (since 1 shifted to the left is 10, which is 2 in binary).
我上面给你的代码正确地移动了所有颜色。
在代码中尝试该逻辑:)
如果您有任何其他问题,我可以使用。
答案 1 :(得分:0)
虽然上述答案可以解决问题,但对于您的情况,您可以查看Color.argb()
方法。不确定你是如何获得用户输入的,但我们假设他们是EditText
个对象:
EditText a, r, g, b;
//initialize them
int aInt, rInt, gInt, bInt;
try {
aInt = Integer.valueOf(a.getText().toString());
bInt = Integer.valueOf(b.getText().toString());
cInt = Integer.valueOf(c.getText().toString());
dInt = Integer.valueOf(d.getText().toString());
} catch (NumberFormatException ex) {
//Throw a warning dialog that the user's input was invalid
}
view.setBackgroundColor(Color.argb(aInt, rInt, gInt, bInt));
这当然是假设您以整数0-255的形式获得输入。
编辑:实际上,如果你只是想改变它的alpha部分,那就容易多了。你可以从用户那里获得0-255的整数输入,验证它,并执行以下操作:
EditText alpha;
String alphaString;
try {
alphaString = Integer.toHexString(alpha.getText().toString());
} catch (NumberFormatException ex) {
//Throw warning
}
view.setBackgroundColor(Color.parseColor("#" + alphaString + "000000"));