0

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

在这种情况下请帮助我,如果您需要更多信息,请告诉我...

4

2 回答 2

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 值。

操作“<<”是“二进制移位”,它将您的位移动到正确的位置。

例如:

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

我在上面给你的代码正确地改变了所有的颜色。

在您的代码中尝试该逻辑:)

如果您还有任何问题,我随时待命。

于 2013-02-08T17:49:46.700 回答
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"));
于 2013-02-08T18:34:36.430 回答