web-dev-qa-db-ja.com

Androidで色整数を16進文字列に変換する方法は?

Android.graphics.Colorから生成された整数があります

整数の値は-16776961です

この値を#RRGGBB形式の16進文字列に変換するにはどうすればよいですか

簡単に言えば、-16776961から#0000FFを出力したい

注:出力にアルファを含めたくないので、 この例 も成功しませんでした

176
Bosah Chude

マスクは、RRGGBBのみを取得し、%06Xはゼロが埋め込まれた16進数(常に6文字)を提供します。

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
430
Josh
51
ming_codes

私は答えを見つけたと信じています、このコードは整数を16進文字列に変換し、アルファを削除します。

Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);

このコードを使用するのは、アルファを削除しても影響がないことが確実な場合のみです。

21
Bosah Chude

これが私がしたことです

 int color=//your color
 Integer.toHexString(color).toUpperCase();//upercase with alpha
 Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha

答えてくれた皆さんありがとう

9
Diljeet

ARGBカラーの16進文字列への整数値:

String hex = Integer.toHexString(color); // example for green color FF00FF00

16進数文字列からARGBカラーの整数値:

int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
5
Style-7

このメソッドInteger.toHexStringを使用すると、Color.parseColorを使用するときに、一部の色について不明な色の例外を設定できます。

このメソッドString.format( "#%06X"、(0xFFFFFF&intColor))を使用すると、アルファ値が失われます。

だから私はこの方法をお勧めします:

public static String ColorToHex(int color) {
        int alpha = Android.graphics.Color.alpha(color);
        int blue = Android.graphics.Color.blue(color);
        int green = Android.graphics.Color.green(color);
        int red = Android.graphics.Color.red(color);

        String alphaHex = To00Hex(alpha);
        String blueHex = To00Hex(blue);
        String greenHex = To00Hex(green);
        String redHex = To00Hex(red);

        // hexBinary value: aabbggrr
        StringBuilder str = new StringBuilder("#");
        str.append(alphaHex);
        str.append(blueHex);
        str.append(greenHex);
        str.append(redHex );

        return str.toString();
    }

    private static String To00Hex(int value) {
        String hex = "00".concat(Integer.toHexString(value));
        return hex.substring(hex.length()-2, hex.length());
    }
4
Simon
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
0
chundk