欢迎使用CSDN-markdown编辑器

项目效果图

废话不多说,在开始讲解之前,先看下最终实现的效果。

效果一:

仿支付宝支付成功效果

效果二:

这两个项目都是使用Path和PathMeature配合完成的,由其他项目改造而来

项目一是七叔写的,我对代码进行了大量改造。

项目二是不小心搜到的,然后进行了改造,原文请戳这里

本文代码请到这里下载

PathMeasure介绍

PathMeasure这个类确实是不太常见的,关于这个类的介绍也是甚少,那么这个类是用来干嘛的呢?主要其实是配合Path,来计算Path里面点的坐标的,或者是给一个范围,来截取Path其中的一部分的。

这么说,你肯定也迷糊,咱们先简单看一下有哪些方法,然后根据案例来进行讲解更好一些。

构造方法有两个,很好理解,不多解释。

PathMeasure()
PathMeasure(Path path, boolean forceClosed)
1
2
重点看下常用方法:

float getLength() 返回当前contour(解释为轮廓不太恰当,我觉得更像是笔画)的长度,也就是这一个Path有多长
boolean getPosTan(float distance, float[] pos, float[] tan) 传入一个距离distance(0<=distance<=getLength()),然后会计算当前距离的坐标点和切线,注意,pos会自动填充上坐标,这个方法很重要
boolean getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo) 传入一个开始和结束距离,然后会返回介于这之间的Path,在这里就是dst,他会被填充上内容,这个方法很重要
boolean nextContour() 移动到下一个笔画,如果你的Path是由多个笔画组成的话,那么就可以使用这个方法
void setPath(Path path, boolean forceClosed)这个方法也比较重要,用来设置新的Path对象的,算是对第一个构造函数的一个补充
仿支付宝实现原理解析

下面,我将介绍一下如何实现下面的这个效果

你可能感兴趣的:(欢迎使用CSDN-markdown编辑器)