将字符串添加到int /以String形式添加整数

时间:2013-02-08 17:46:35

标签: android string colors int addition

我需要知道如何以整数的形式添加字符串,例如,如果我需要使用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 

请在这种情况下帮助我,如果您还有其他需要请告诉我......

2 个答案:

答案 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"));