
RadialGradient 是 Shader 的另一种实现,它的含义是放射渐变,即它会像一个放射源一样,从一个点开始向外扩散,从一种颜色变成另一种颜色。
7.6.1 双色渐变
RadialGradient 有两个构造函数,分别能完成双色渐变和多色渐变。双色渐变的构造函数如下:
- centerX:渐变中心点X坐标。
- centerY:渐变中心点Y坐标。
- radius:渐变半径。
- centerColor:渐变的起始颜色,即渐变中心点的颜色,取值类型必须是八位的0xAARRGGBB色值!透明底Alpha值不能省略,不然不会显示出颜色。
- edgeColor:渐变结束时的颜色,即渐变圆边缘的颜色,同样,取值类型必须是八位的0xAARRGGBB色值。
- TileMode:与我们前面讲的各个Shader一样,用于指定当控件区域大于指定的渐变区域时,空白区域的颜色填充方式。
示例:
效果如下图所示。

7.6.2 多色渐变
|
|
- int[] colors:表示所需要的渐变颜色数组。
+float[] stops:表示每个渐变颜色所在的位置百分点,取值 0~1,数量必须与 colors 数组保持一致,不然直接 crash。一般第一个数值取 0,最后一个数值取 1,比如,取一个位置数组:{0.2,0.5,0.8},起始点是0.2百分比位置,结束点是0.8百分比位置,而 0~0.2 百分比位置和 0.8~1.0 百分比的位置都是没有指定颜色的。这些位置的颜色就是根据我们指定的 TileMode 空白区域填充模式来自行填充。但有时效果我们是不可控的。所以,为了方便起见,建议大家 stop 数组的起始和终止数值设为 0 和 1。
示例:
效果图如下:

7.6.3 TileMode 填充模式
在 RadialGradient 构造函数中,只有一个 TileMode 参数,这说明当填充空白区域时,X 轴和 Y 轴使用同一种填充模式。而不能像 BitmapShader 那样分别指定 X 轴与 Y 轴的填充参数。
分别设置填充模式为:TileMode.CLAMP、TileMode.MIRROR、TileMode.REPEAT。



示例代码:
7.6.4 示例:水波纹按钮效果

|
|
