java.lang.Object | |
↳ | android.graphics.PathEffect |
Known Direct Subclasses
ComposePathEffect,
CornerPathEffect,
DashPathEffect,
DiscretePathEffect,
PathDashPathEffect,
SumPathEffect
Path的辅助类,测量path的长度,做动画的时候很有用
1.CornerPathEffect
CornerPathEffect则可以将路径的转角变得圆滑,CornerPathEffect的构造方法只接受一个参数radius,意思就是转角处的圆滑程度。
没有效果的样子:
设置路径效果后,路径转角处得到了圆角的处理
2.DiscretePathEffect
DiscretePathEffect(离散路径效果)相对来说则稍微复杂点,其会在路径上绘制很多“杂点”的突出来模拟一种类似生锈铁丝的效果。 其构造方法有两个参数:
3.DashPathEffect
它的效果相对与上面两种路径效果来说要略显复杂,其虽说也是包含了两个参数: 第一个参数是一个浮点型的数组,浮点型数组中元素个数大于等于2 偶数位表示实线的长度,奇数位表示虚线(空白)的长度 比如 float[] {20, 10},20定义了我们第一条实线的长度,而10则表示第一条虚线的长度,如果此时数组后面不再有数据则重复第一个数以此往复循环,整条线就成了[20,10,20,10,20,10…………………………]这么一个状态。 当然如果你想要对每个实线和虚线进行设置,你可以这样: mEffects[3] = new DashPathEffect(new float[] {20, 10, 50, 5, 100, 30, 10, 5}, mPhase); 第二个参数(phase)我称之为偏移值,动态改变其值会让路径产生动画的效果。 比如float[] {20, 10},如果phase==0,画笔在画的时候第一条的实线的偏移为0,如果phase==12,画笔在画的时候第一条的实线的偏移为12,感觉就是20长度的实线被截掉12,用后面的8作为开始。
我们偏移50,也就是说第一个实线的长度为50-50==0,说紧接着就是距离为10的虚线
我们利用这个偏移量可以做出好玩的动画 4.PathDashPathEffect PathDashPathEffect和DashPathEffect是类似的,不同的是PathDashPathEffect可以让我们自己定义路径虚线的样式
我们用属性动画控制
5.ComposePathEffect和SumPathEffect ComposePathEffect和SumPathEffect都可以用来组合两种路径效果,就是把两种效果二合一。唯一不同的是组合的方式: ComposePathEffect(PathEffect outerpe, PathEffect innerpe)会先将路径变成innerpe的效果,再去复合outerpe的路径效果,即:outerpe(innerpe(Path)); SumPathEffect(PathEffect first, PathEffect second)则会把两种路径效果加起来再作用于路径。 |