ShinnyYang_ - 简书 (jianshu.com)
一、概念
1、先讲一下什么是贝塞尔曲线
在数学的数值分析领域中,贝赛尔曲线(Bézier曲线)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。
2、贝塞尔曲线的目的又是什么呢
利用贝塞尔曲线,我们能实现平滑的手势轨迹效果 ,还有比如说很多酷炫的效果基本也是有贝塞尔曲线来实现的,或者也可以说是形变的动画,举个小例子 QQ未读消息的拖拽球就是贝塞尔曲线实现的,说了一些想必你们也不是很明白, 那好下面我们来看效果图 看看对比,我们仔细的点开图片去看会发现第一张画出来的那个线条看起来是非常的圆润的,而第二张图片的那个线条看起来就有很多角,对第一张就是拿贝塞尔曲线实现的,想必现在你们会多多少少明白了很多。
3、Path类中的四个方法与贝赛尔曲线相关,如下:
//二阶贝赛尔 public void quadTo(float x1, float y1, float x2, float y2) public void rQuadTo(float dx1, float dy1, float dx2, float dy2) //三阶贝赛尔 public void cubicTo(float x1, float y1, float x2, float y2,float x3, float y3) public void rCubicTo(float x1, float y1, float x2, float y2,float x3, float y3)
在我们本篇文章中用到的方法就是第一个 quadTo()方法。
二、invalidate与postInvalidate方法的详细介绍
1、invalidate
该方法的调用会引起View树的重绘,常用于内部调用(比如 setV