2016-08-10 3 views
0

16 진수 (#AARRGGBB)의 알파 채널을 추가하여 불투명도를 설정할 수 있음을 알고 있지만, 내 colors.xml에서 불투명도를 추가하지 않으려는 값을 사용하려면 어떻게해야합니까?색상 자원에 불투명도를 설정하는 방법은 무엇입니까?

예를 들어, 나는 같은 내 colors.xml에 # 074EB2의 어두운 블루 컬러를 사용

<color name="DarkBlue">#074EB2</color> 

지금, 나는 테두리가 사용자 정의 버튼 배경을 가지고있다. 경계선에이 진한 파란색 색상을 사용하고 싶지만 불투명도를 추가해야합니다. 버튼 모양은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
    <stroke android:width="1dp" android:color="@color/DarkBlue"/> 
    <corners android:radius="2dp"/> 
</shape> 

어떻게 불투명도를 추가 할 수 있습니까? 불투명도가있는 colors.xml에 새 값을 추가해야합니까? 즉 <color name="DarkBlueTransparent">#80074EB2</color>? 이 문제점은 확장 성이 없다는 것입니다.이 색상이 80 % 불투명 한 다른 곳을 가지고 있다면 어떨까요? 90 %? 내 colors.xml 파일은 내가 원하는 것을 얼마나 투명하게하는지 다른 값으로 폭발 할 것입니다.

+0

더 많은 리소스를 만들거나 필요한만큼 컨테이너의 불투명도를 설정하십시오. – Shaishav

+0

"내 colors.xml 파일은 내가 원하는 것을 투명하게하기 위해 다른 값으로 폭발 할 것입니다." 정말? 당신은 정말 다양한 색상에 너무 많은 투명도 수준이 필요합니까? DarkBlue70Percent 및 DarkBlue71Percent와 같은가요? – Salem

+0

과장 되긴하지만 포인트를 얻습니다. –

답변

1

xml에서 동적 불투명도를 수행 할 수 없습니다. 하지만 자바 측에서 동적으로 알파를 적용 할 수 있습니다.

이 방법을 사용하여 색상에 알파를 적용합니다. 지금

public static int getColorWithAlpha(int yourColor, int alpha) { 
    int red = Color.red(yourColor); 
    int blue = Color.blue(yourColor); 
    int green = Color.green(yourColor); 
    return Color.argb(alpha, red, green, blue); 
} 

방법

blueWithAlpha = getColorWithAlpha(darkBlue, 120); 

(120)를 호출하여 알파 색상을 얻을하면 알파 수준

입니다

알파 수준해야한다

225-0 사이

은 이제 버튼에 색상을 적용합니다.

mButton.setBackgroundColor(blueWithAlpha); 
관련 문제