Android PathEffect

 要理解PathEffect,先来看着一张比较直观的图,来了解一下什么是PathEffect,如图(1)所示。

                                                                                      图(1)PathEffect

PathEffect就是指,用各种笔触效果来绘制一个路径。Android系统提供了如图(1)中展示的几种绘制PathEffect的方式,从上到下依次是:

没效果、CornerPathEffect、DiscretePathEffect、DashPathEffect、PathDashPathEffect、ComposePathEffect。

● CornerPathEffect

非常好理解,就是将拐角处变得圆滑,具体圆滑的程度,则由参数决定。

● DiscretePathEffect

使用这个效果之后,线段就会产生许多杂点。

● DashPathEffect

显然,这个效果可以用来绘制虚线,用一个数组来设置各个点之间的间隔。此后绘制虚线时就重复这样的间隔进行绘制,另一个参数phase则用来控制绘制时数组的一个偏移量,通常可以通过设置值来实现路径的动态效果。

● PathDashPathEffect

这个相效果与前面的DashPathEffect类似,只不过它的功能更加强大,可以设置显示点的图形,即方形点的虚线、圆形点的虚线。

● ComposePathEffect

如果没出都只能实现一种路径的特殊效果,那就显得太单调了。Android提供了一种更加灵活的方式——通过ComposePathEffect来组合PathEffect,这个方法的功能就是将任意两种路径特性组合起来形成一个新的效果。

有了以上的了解,来看看图(1)中的效果是如何实现的。

首先,需要生成一个Path,这里使用随机数来生成一些随机的点并形成一条路径,代码如下所示。

        mPath.moveTo(0,0);
        for (int i = 0;i<=30;i++){
            mPath.lineTo(i*35,(float) (Math.random()*100));
        }

接下来,可以在onDraw()方法中通过不同的PathEffect来绘制这些Path了,代码如下所示。

        mEffects[0] = null;
        mEffects[1] = new CornerPathEffect(30);
        mEffects[2] = new DiscretePathEffect(3.0F,5.0F);
        mEffects[3] = new DashPathEffect(new float[]{20,10,5,10},0);
        Path path = new Path();
        path.addRect(0,0,8,8,Path.Direction.CCW);
        mEffects[4] = new PathDashPathEffect(path,12,0,PathDashPathEffect.Style.ROTATE);
        mEffects[5] = new ComposePathEffect(mEffects[3],mEffects[1]);
        for (int i = 0;i<mEffects.length;i++){
            mPaint.setPathEffect(mEffects[i]);
            canvas.drawPath(mPath,mPaint);
            canvas.translate(0,200);
        }

没绘制一个Path,就将画布平移,从而让各种PathEffect依次绘制出来。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值