在Android矢量图资源中,path标签的fillAlpha属性用于控制当前路径填充区域的透明度,是调整矢量图显示效果的重要参数,不需要额外编写Java或Kotlin代码,直接在XML文件中配置即可生效。
fillAlpha属性基本说明
fillAlpha是Android vector drawable中<path>标签的可选属性,专门用来设置路径填充颜色的透明度,仅对当前path的填充区域生效,不会影响描边或者其他路径的显示效果。
属性取值规则
fillAlpha的取值为浮点型数值,取值范围是0.0到1.0,具体含义如下:
- 0.0:填充区域完全透明,看不到填充颜色
- 1.0:填充区域完全不透明,显示完整的填充颜色
- 0.0到1.0之间的数值:对应不同透明程度,数值越小透明度越高
基础使用示例
下面是一个完整的vector XML示例,其中两个path分别设置了不同的fillAlpha值,用来展示透明度的差异:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="100"
android:viewportHeight="100">
<!-- 完全不透明的红色圆形填充 -->
<path
android:pathData="M50,20 A30,30 0 1,1 50,80 A30,30 0 1,1 50,20"
android:fillColor="#FF0000"
android:fillAlpha="1.0" />
<!-- 半透明的蓝色矩形填充 -->
<path
android:pathData="M20,20 L80,20 L80,80 L20,80 Z"
android:fillColor="#0000FF"
android:fillAlpha="0.5" />
</vector>
上述代码中,第一个圆形的填充颜色是红色,fillAlpha为1.0,显示完全不透明;第二个矩形的填充颜色是蓝色,fillAlpha为0.5,会呈现半透明效果,红色圆形会透过半透明矩形显示出来。
常见使用场景
叠加显示效果
当需要多个矢量图形叠加,且希望上层图形不遮挡下层内容时,可以给上层的path设置小于1.0的fillAlpha值,实现自然的叠加过渡效果。
状态切换提示
在按钮的按下、禁用等状态切换时,可以动态修改path的fillAlpha值,比如禁用状态下将fillAlpha设置为0.3,直观提示用户当前不可操作。
渐变替代方案
如果不需要复杂的渐变效果,仅需要简单的透明度变化,可以通过多个不同fillAlpha的path叠加,模拟出近似渐变的显示效果,减少代码复杂度。
注意事项
fillAlpha仅对填充区域生效,如果path没有设置<code>android:fillColor</code>属性,那么fillAlpha不会产生任何视觉效果。如果需要调整描边的透明度,应该使用<code>android:strokeAlpha</code>属性,不要混淆两个属性的作用范围。
另外,fillAlpha的优先级高于fillColor中携带的透明度信息,比如fillColor设置为#80FF0000(本身带50%透明度),同时fillAlpha设置为0.5,那么最终的填充透明度是0.5乘以0.5,也就是25%的透明度,计算方式是两者相乘得到最终效果。