2013-06-19 2 views
16

타사 소프트웨어를 수정하려고합니다. 나는 정수로 어떤 방법으로 (나는 modifiy 할 수없는) 반환되는 색상을 사용하고 싶다. 그러나 # FF00FF와 같은 RGB 형식을 사용하고 싶습니다. 전환을하려면 어떻게해야합니까?정수 색상 값을 RGB로 변환

다음은 HTML 예제입니다. http://www.shodor.org/stella2java/rgbint.html Android에서 Java와 동일한 내용을 보관하고 싶습니다.

답변

31

를 사용하여 우리는 HEX 색상 값의 아이폰에 알이

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

6. 그래서 당신이 여기 6 참조입니다. % 06X는 (0xFFFFFF & intColor)에서 오는 결과와 일치하며 길이가 6보다 작은 경우 결과의 왼쪽에 ZERO를 추가하여 결과를 6으로 만듭니다. 그리고 #가 보이므로이 # char은 결과에 추가되고 마지막으로 16 진수 값을 얻습니다. 나는 다음과 같이 내가 직접 Color 클래스를 사용하는 것이었다위한 가장 간단하고 가장 좋은 솔루션이 될 것으로 무엇

+0

괄호 안의 코드를 설명해 주시겠습니까? – Marek

+0

'(0xFFFFFF & intColor)'에 대해 묻고 있습니까? 예이면 int 값을 16 진수로 변환합니다. –

+0

"# % 06X"에 더 흥미가 있습니다. 그것은 완전히 이해할 수없는 정규 표현식입니다. 설명해 주시겠습니까? – Marek

1

RGB는 16 진수 형식을 사용합니다. 정수 값이 있으면 hexa로 변환하십시오.

46

:

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

이미 문자열을 처리하지 않고 정수 값을 처리 할 수 ​​이쪽으로. 반면에 rgb 색상을 나타내는 문자열이 필요한 경우 Pankaj Kumar의 답변이 가장 좋습니다. 나는 이것이 누군가에게 유용하기를 희망한다.

+0

정말 대단합니다. 감사합니다 – 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)); 
} 
관련 문제