一、开篇
这个博客主要是学习自定义控件的时候,然后模仿了一个app上转圈圈的自定义视图,感觉很有意思
然后再看了pathmeasure后就有感而发,打算利用pathmeasure实现这个的控件的功能
二、运行结果
三、原理和细节吧
这个过程可以看成两个:1、圆弧不断变大,2、圆弧不断变小(好像有点奇怪),增加的时候,就是以后一端为基点,而变小的时候就以前一端为基点。然后再一次循环后,下一次就最后一次小圆弧的一段做为下次的起点。
关于pathmeasure的部分可以去看[GcsSloop的这个博客]
我这就是简单的利用了两个动画,能看出来是这样。然后一次循环就画一次path,然后通过pathmeasure来选值。
path.addArc(rectF,pathstart,359.9f);
这里主要就一个重要点,为什么这里要359.9,GcsSloop的博客上也这样,我一开始没在意,然后写的360,然后发现每次循环的起点都是0度,一开始以为是measure还是和一开始的path关联而没用和新的path关联,然后发现不是这样。
然后我试了试其他的180,270发现都正常运行,这样的话,在我看来,如果写出360的话,那就是可能自动默认成0度开始,而不是我们设置的起点,哎,动手才发现有很多问题。所以后来改成359.9,path的起点就可以正常了,而且基本上可以是个整圆,更何况我这里的一个循环没有跑出一个整圆。
其他的逻辑就没有很复杂的地方了,主要是自己加深对pathmeasure的理解吧。
下面附上源码地址:github传送门