1、setShader
Paint对象的setShader函数,我的感觉是设置一种方式来填充图形。
可以设置为渐变,代码如下:
- Paint paint=new Paint(); //定义一个Paint
- Shader mShader = new LinearGradient(0,0,40,60,new int[] {Color.RED,Color.GREEN,Color.BLUE},null,Shader.TileMode.REPEAT);
- //新建一个线性渐变,前两个参数是渐变开始的点坐标,第三四个参数是渐变结束的点的坐标。连接这2个点就拉出一条渐变线了,玩过PS的都懂。然后那个数组是渐变的颜色。下一个参数是渐变颜色的分布,如果为空,每个颜色就是均匀分布的。最后是模式,这里设置的是循环渐变
- paint.setShader(mShader);
Shader可以有以下几种:
bitmapShader 位图平铺
linearGradient 线性渐变
radialGradient 圆形渐变
sweepGradient 角度渐变
composeShader 组合效果(组合以上几种)
2、setShadowLayer
设置了这个之后,再画出来的图形后面,会有一个阴影
- paint.setShaderLayer(15,10,10,Color.GRAY); //第一个参数是阴影扩散半径,紧接着的2个参数是阴影在X和Y方向的偏移量,最后一个参数是颜色
但是这里有个问题,在画bitmap的时候,如果设置了shadowLayer,画出来的图形并不会有阴影,而是2个bitmap叠加在一起。也就是说,他的阴影层也和他本身一样。根据分析,因该是bitmap也被设置成了阴影层。暂时还没找到比较好的在图下面添加阴影的办法。
3、Path的6种效果
CornerPathEffect 在路径的转折处是圆角,构造参数为圆角半径
DiscretePathEffect 不规则的锯齿线(类似心电图)
构造参数:
第一个是小三角的开口宽度(心电图每个波之间的宽度)
一个是偏移量(心电图高度)
DashPathEffect 虚线
构造参数:
第一个是一个数组,数组长度必须>=2,数组的值定义了宽度,比如 {20,10,5,10},意思就是第一个实线段长20,他后面的空白长10,然后又是一个长5的实线段,然后是长度10的空白。
第二个参数说是偏移量,没发现具体作用
PathDashPathEffect 类似上面一个,不过是由path图形组成的线段(如由三角形组成的线段,正方形组成的线段)。
构造参数:
第一个参数是一个path,由他定义图形。
第二个是间距
第三个和上面一样
第四个是变换方式,有PathDashPathEffect.Style.TRANSLATE,ROTATE,MORPH三种。第一个就是直接把图形摆出路径,第二个会依据路径旋转,第三个是依据路径自动变形
ComposePathEffect 把两个上面其他的方式组合起来
构造参数:
第一个是一个effect
第二个还是一个effect
SumPathEffect 把两个其他方法加起来,和上面类似,差别不好描述。。