Android中PathEffect的应用

2016-12-19  本文已影响424人  卖梦想的男孩

PathEffect

PathEffect is the base class for objects in the Paint that affect the geometry of a drawing primitive before it is transformed by the canvas' matrix and drawn.
PathEffect一般是需要配合Paint来使用,会在Canvas的变换操作之前影响绘画的效果。

PathEffect本身是没有实现什么效果的,只是一个简单的基类,不过android.graphics提供了集中常见的效果,系统为了高效的实现不同效果,它们的实现都封装在native中。

1.默认效果

默认效果 三条笔直的直线

2.CornerPathEffect

mPaint.setPathEffect(new CornerPathEffect(16));
转折点明显圆润起来

3.DashPathEffect

mPaint.setPathEffect(new DashPathEffect(new float[]{8,4,16,4},6));
错落有致的虚线

4.DiscretePathEffect

mPaint.setPathEffect(new DiscretePathEffect(16,16));
随机偏移效果

5.PathDashPathEffect

PathDashPathEffect(Path shape, float advance, float phase,Style style)

mPaint.setPathEffect(new PathDashPathEffect(mRectItem, 16, 36, PathDashPathEffect.Style.TRANSLATE));
用小菱形做虚线

6.ComposePathEffect

先应用inner效果,再应用outer效果,等于outer(inner(path)
ComposePathEffect(PathEffect outerpe, PathEffect innerpe)

mPaint.setPathEffect(new ComposePathEffect(
        new CornerPathEffect(24), 
       new DiscretePathEffect(16,16)
));
圆角+离线效果

7.ComposePathEffect

两个效果相加 ,等于first(path) + second(path)
蛋疼的是还没能组合出理想的效果
SumPathEffect(PathEffect first, PathEffect second)

mPaint.setPathEffect(new SumPathEffect(
     new PathDashPathEffect(mCircleItem, 12, 0, PathDashPathEffect.Style.TRANSLATE), 
     new DiscretePathEffect(16,24)
));
Path虚线+离散路径效果
上一篇下一篇

猜你喜欢

热点阅读