반응형
Java / Android color int의 알파 바이트 조작
Android 색상 (캔버스에 그리기 위해)로 사용중인 Java에 int가있는 경우 해당 int의 알파 구성 요소를 어떻게 조작합니까? 예를 들어이 작업을 수행해야합니까?
int myOpaqueColor = 0xFFFFFF;
float factor = 0;
int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor);
//myTransparentColor should now = 0x00FFFFFF;
이상적으로 factor
는 바이트를 정적 값으로 설정하는 것보다 첫 번째 바이트에 무엇이든지 곱하는 것이 좋습니다 .
색상 클래스를 확인하십시오 .
코드는 다음과 같이 보일 것입니다.
int color = 0xFFFFFFFF;
int transparent = Color.argb(0, Color.red(color), Color.green(color), Color.blue(color));
따라서 방법은 다음과 같다.
@ColorInt
public static int adjustAlpha(@ColorInt int color, float factor) {
int alpha = Math.round(Color.alpha(color) * factor);
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
return Color.argb(alpha, red, green, blue);
}
그런 다음이를 호출하여 투명도를 50 %로 설정합니다.
int halfTransparentColor = adjustAlpha(0xFFFFFFFF, 0.5f);
색상 클래스를 사용하는 것은 비트 조작을 직접 수행하고 이미 수행 한 것보다 조금 더 자체 문서화라고 생각합니다.
사용 ColorUtils # setAlphaComponent을 안드로이드 지원 -V4에.
의 안드로이드 지원 -V4 :
int alpha = 85; //between 0-255
@ColorInt
int alphaColor = ColorUtils.setAlphaComponent(Color.Red, alpha);
대안은 다음과 가변합니다.
int myOpaqueColor = 0xffffffff;
byte factor = 20;// 0-255;
int color = ( factor << 24 ) | ( myOpaqueColor & 0x00ffffff );
또는 float 사용 :
int myOpaqueColor = 0xffffffff;
float factor = 0.7f;// 0-1;
int color = ( (int) ( factor * 255.0f ) << 24 ) | ( myOpaqueColor & 0x00ffffff);
비트 값을 변경하여 모든 채널을 사용할 수 있습니다 24
.
public final static byte ALPHA_CHANNEL = 24;
public final static byte RED_CHANNEL = 16;
public final static byte GREEN_CHANNEL = 8;
public final static byte BLUE_CHANNEL = 0;
// using:
byte red = 0xff;
byte green = 0xff;
byte blue = 0xff;
byte alpha = 0xff;
int color = ( alpha << ALPHA_CHANNEL ) | ( red << RED_CHANNEL ) | ( green << GREEN_CHANNEL ) | ( blue << BLUE_CHANNEL );// 0xffffffff
이 질문에 직접 답하는 것이 좋습니다. View와 Drawable은 원하는 작업을 수행 할 수있는 setAlpha (float alpha) 메소드가있는 것을 기억하는 것이 좋습니다. 또는 view.getBackground (). setAlpha ()를 시도 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/15319635/manipulate-alpha-bytes-of-java-android-color-int
반응형
'ProgramingTip' 카테고리의 다른 글
PHP 배열의 각 항목에 접두사 추가 (0) | 2020.11.12 |
---|---|
Javascript에서 '/'및 '/ g'내부의 변수로 많이에 대한 전역 대체를 수행해야할까요? (0) | 2020.11.12 |
UITextview의 줄 수 제한 (0) | 2020.11.12 |
iOS에서 작동하지 않는 jQuery 클릭 이벤트 (0) | 2020.11.12 |
설치를 설치를 때 Nokogiri 'Gem 기본 확장을 빌드하지' (0) | 2020.11.12 |