各位看官们,大家好,上一回中咱们说的例子是"使用圆弧绘制正弦波",这一回咱们介绍的例子是"绘制正弦波总结"。闲话休提,言归正转,让我们一起Talk Android吧!
看官们,本章回主要是对前面章回内容的总结,同时分享编程的经验,下面是具体的内容,请大家参考:
总结介绍
我们在绘制正弦波时是通过路径进行的绘制的,先是给路径中添加关键点,把点连成线,这样就形成了圆弧。绘制过程关键点的数量比较多,代码比较繁杂,因此有了优化代码的想法:减少关键点的数量。
当关键点减少到一定数量后就不能再减少了,优化就遇到了瓶颈,于是更换一种方法继续优化,新方法就是使用圆弧代替关键点。相当于直接使用线去画图,而不是使用点去画图。这种方式相当于从面向过程编程进化到了面向对象编程。
直接使用点绘制
在路径中添加大量的关键点,添加的点越多弧度效果越好。这是最开始使用的方式,其缺点就是点的数量太多,代码有些繁杂。
使用点和圆角效果绘制
在路径中添加少量的关键点,然后使用画笔的圆角效果,这样不需要太多的关键点就可以达到弧度效果。这是第一步的优化。与最开始使用的方式相比,可以减少五分之一的关键点数量。注意:要调整好圆角的弧度,不然波形效果也不明显。
使用点和面绘制
在路径中添加部分关键点,先画出部分波形,然后旋转画布画出剩下的波形,这里的画布可以看作是面,点和面结合减少了二分之一的关键点数量。
这种优化就是我们在前面博客中提到的一阶优化。在此基础上进行了二阶优化,减少了四分之三的关键点的数量,详细的优化过程我们就介绍了,大家可以查看前面博客中的内容。
使用线绘制
路径中的关键点数量在优化的方法下不断减少,但是减少到一定数量后就不能再减少了。因此就会遇到优化瓶颈,为了解决瓶颈问题,我们使用了新的方法来绘制:使用圆弧绘制。详细内容可以参考上一篇博客。这里的圆弧可以看作是线,使用点绘制和使用线绘制是不同的思路。
经验分享
我们解决问题时首先要找到解决方案,然后再针对解决方案进行优化,优化时一定就明白从哪个角度去优化,也就是说要有整体的优化思路。
比如在路径中添加关键点就可以画出正弦波形,这可以看作是一种解决方案。不过此方案有些缺点,我们需要对它做优化,优化的思路就是减少关键点的数量,我们通过画笔圆角做了第一次优化,又通过点面结合的方式做了两次优化:一阶优化和二阶优化。还有一个三阶优化没有介绍,不过按照此思路优化下去会出现瓶颈。
遇到瓶颈后就要找到产生瓶颈的原因,然后用更换思路的方式进行优化进而突破瓶颈。
比如我们使用圆弧绘制时就是发现关键点的数量无法减少了,因此使用线代替点来绘制波形,这就想出了使用圆弧绘制的方法。
使用圆弧画正弦波有种车到山前必有路的感觉,它的背后使用了编程中的面向对象思想:添加关键点是面向过程,而把点组成
线就是面向对象。这便是一种包含在程序中的编程思想,或者说编程哲学。
最后我想说的是:
在编程中我们需要不断地优化程序,不断地提高程序效率。如果走到了尽头,那么就换一种新思路继续优化。
阅读建议
绘制正弦波形一共写了三篇文章,它们是一个整体,如行云流水般顺畅。因为我是一气呵成写完的,一直写到凌晨才结束,总担心思路断开后不好再接上。在此,我建议看官们把这三篇文章放在一起去看,这样可以收到更好的效果。这三篇文章中有一篇文章中是收费的,只需要订阅我的收费专栏就可以,提前大家做个说明。
看官们,关于Android中"绘制正弦波总结"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!