Android绘制一条宽度逐渐变大的路径

1.介绍

  • 先看一下效果图

用过电脑版印象笔记演示功能的应该知道这个效果,现在想在手机上实现一下,当然这个是最终的目标,这篇只是介绍实现过程中的一步 —— 绘制一条宽度逐渐变大的路径

2.实现

2.1完成图

这里写图片描述

2.2思路

把一条路径分成很多段,每段path首尾相连,然后依次设置每一段path的宽度,把这些path存储在一个集合中,最后依次绘制出来。

这种方法实现的问题主要是如果截取的段太少,在拐角处显示不圆滑,锯齿严重,所以定义了DEFAULT_SEGMENT_LENGTH来控制截取长度,长度越小,锯齿度越小,拐角处越圆滑。对于这个问题,如有更好的思路,请告诉我。

2.3把一条path分成多段path的方法

这里要使用到PathMeasure,PathMeasure的getSegment方法就是获取一段path,

public boolean getSegment (float startD, float stopD, Path dst, boolean startWithMoveTo)

startD 表示从path某个长度位置开始
stopD 表示某个长度位置结束
dst 表示截取后的path
startWithMoveTo 表示这个截取的path开始位置是否移动到截取的开始位置,false的话,path开始点位置是(0,0),这里需要设置为true,不然达不到首尾相连的效果

对于path长度的获取,PathMeasure有相应的方法getLength();

2.4截取路径的方法实现

/**
     * 截取path
     * @param path
     */
    private void getPaths(Path path){
        PathMeasure pm = new PathMeasure(path, false);
        float length = pm.getLength();
        int segmentSize = (int) Math.ceil(length / DEFAULT_SEGMENT_LENGTH);
        Path ps = null;
        PathSegment pe = null;
        int nowSize = pathSegments.size();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值