我知道我可以通过添加十六进制的alpha通道(#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 :(得分:3)
您无法在xml中执行动态不透明度。但是你可以在java方面动态地应用alpha。
使用此方法将alpha应用于您的颜色。
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);
}
现在通过调用方法
获取alpha颜色blueWithAlpha = getColorWithAlpha(darkBlue, 120);
120是你的alpha级别
Alpha级别必须介于0到225之间
现在将颜色应用于按钮
mButton.setBackgroundColor(blueWithAlpha);