引用具有修改的alpha的颜色资源

时间:2016-03-31 16:19:03

标签: android xml colors resources

有没有办法在xml资源文件中引用具有修改后的alpha值的颜色资源?我正在寻找的是这样的:

<!-- base color -->
<color name="myColor">#19AEE0</color>
<!-- redefined color with alpha - not particularly elegant -->
<color bane="myColor2">#8019AEE0</color>
<!-- referenced color with alpha -->
<color name="myColorTransparent" alpha="0.5">@color/myColor</color>

我知道这可以通过编程方式轻松完成,但在为同一颜色定义多个透明度值时,以声明方式执行此操作会更清晰,更易读。

2 个答案:

答案 0 :(得分:1)

可以使用以下代码完成:

<color name="myColorTransparent">#ff333333</color>

第一个字母是alpha值。查看here以获取所有有效值的列表。
最后六个是您的标准十六进制颜色代码。

答案 1 :(得分:1)

可能为时已晚,但是我希望这对遇到此问题的任何人都可以有所帮助。

使用颜色强调点搜索了可绘制波纹的特定情况后,我发现可以借助<selector>来完成。

添加color资源文件夹(如果不存在)并在那里创建一个新文件,其基本名称将用作颜色资源。例如,将其命名为my_color_transparent.xml。然后,粘贴以下内容。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:color="@color/myColor"
        android:alpha=".5" />
</selector>

这时,您可以通过XML或像往常一样以编程方式(例如@color/my_color_transparent文件夹中的颜色)将其引用为values

注意: android:alpha属性被用作遮罩,因此alpha乘以android:color属性中指定的颜色的alpha。例如,如果@color/myColor的不透明度为20%,并且android:alpha设置为.5,那么@color/my_color_transparent的不透明度为10%。