【问题标题】:Add string to int / Add ints in form of String将字符串添加到 int / 以 String 的形式添加 int
【发布时间】:2013-02-08 17:46:35
【问题描述】:

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

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

【问题讨论】:

  • 所以你想要连接,对吗?

标签: android string colors int addition


【解决方案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).

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

在你的代码中试试这个逻辑 :)

如果您还有其他问题,我随时待命。

【讨论】:

  • 你说什么我都没听说过,反正不是 0x10 = 0 , 0x20 = 0 吗?你能解释一下或者给我链接吗?
  • 当然。扩展我的答案。
  • 谢谢你的解释,但是我还是不太明白移位,我现在可以工作了,但我仍然不明白移位和二进制的东西......
【解决方案2】:

虽然上述答案应该可以解决问题,但对于您的情况,您可能会研究 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"));

【讨论】:

  • 谢谢!到目前为止的最佳答案!正是我需要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 2012-10-06
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
相关资源
最近更新 更多