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

さらに明確にするために、これらの2桁をユーザーが変更できるようにしたいのですが、それでも例を示します。

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」)を入力すると、数字が16進形式であることを意味します。これはあなたがこれを言うことができることを意味します:

int red = 0xff; // This is valid.

私が提供したロジックでは、16進数で色を指定し、色の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の整数の形式で入力を取得していることを前提としています。

編集:実際には、アルファ部分を変更したいだけの場合は、はるかに簡単です。ユーザーからの入力を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 に答える