2013-06-19 7 views
16

サードパーティのソフトウェアを変更しようとしています。私は整数としていくつかのメソッド(私は変更できません)によって返される色を使いたいと思います。しかし、#FF00FFのようなRGB形式を使用したいと思います。どのように変換することができますか?整数色の値をRGBに変換

ここにHTMLの例がありますhttp://www.shodor.org/stella2java/rgbint.html AndroidのJavaで同じことをアーカイブしたいと思います。

答えて

31

この

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

を使用して私たちは、あなたがここに6を参照してくださいHEX内のカラー値のな長さが6である知っています。 %06Xは(0xFFFFFF & intColor)からの結果と一致し、lengthが6未満の場合は、結果の左側にゼロを付加して6を返します。そして#を見ると、この#charは結果に追加され、最後に16進数の色の値が得られます。私は私のための最も簡単かつ最善の解決策であることが判明何

+0

括弧内のコードを説明してください。 – Marek

+0

あなたは '(0xFFFFFF&intColor)'について質問していますか? yesの場合、int値が16進数に変換されます。 –

+0

私は "#%06X"にもっと興味があります。私は完全に理解していない正規表現です。説明していただけますか? – Marek

1

RGBはヘキサ10進数の形式を使用します。 整数値がある場合は、hexaに変換します。

46

は、次のように直接Colorクラスを使用していた:

int red = Color.red(intColor); 
int green = Color.green(intColor); 
int blue = Color.blue(intColor); 

私はすでに文字列を処理することなく、整数値を扱うことができ、この方法で。一方、rgbの色を表す文字列が必要なものであれば、Pankaj Kumarの答えは最高です。これが誰かにとって有益だと思う。

+0

それは素晴らしいです。 Thanks – cxphong

+1

構文が変更されている可能性があります。私が気付いていない静的なColorクラスがない限り、 'new Color(intColor).getRed();' –

+0

私は考えていません...私はかなり長い時間Androidで作業していません。あなたがこれについて確信しているのであれば、おそらくこの変更が起こったバージョンであっても、この情報で私の答えを編集することができます –

0

SDK 26 you can just useので、離れて、任意のARGBから色インスタンスを作成することはできていないようだということから

Color c = Color.valueOf(colorInt); 

。基礎となるコードでは、プライベートコンストラクタを使用しています。

/** 
* Creates a new <code>Color</code> instance from an ARGB color int. 
* The resulting color is in the {@link ColorSpace.Named#SRGB sRGB} 
* color space. 
* 
* @param color The ARGB color int to create a <code>Color</code> from 
* @return A non-null instance of {@link Color} 
*/ 
@NonNull 
public static Color valueOf(@ColorInt int color) { 
    float r = ((color >> 16) & 0xff)/255.0f; 
    float g = ((color >> 8) & 0xff)/255.0f; 
    float b = ((color  ) & 0xff)/255.0f; 
    float a = ((color >> 24) & 0xff)/255.0f; 
    return new Color(r, g, b, a, ColorSpace.get(ColorSpace.Named.SRGB)); 
} 
関連する問題