贝塞尔曲线简单实现
贝塞尔曲线这里我大概描述一下他是个什么玩意儿,平时在下载文件或者是App的时候大家都见过类似水波纹的动态图片吧,随着下载的越多,水涨的越高,就是这么个东西
效果图,但是最终效果我们要的是它蓝色部分要像水一样慢慢升高啊,最终充满整个屏幕
实现过程
其实系统已经为我们写好了贝塞尔曲线的算法,这里只需要我们传入对应的参数就可以,贝塞尔曲线它还有三阶和二阶
分别是
cubicTo(float x1, float y1, float x2, float y2,
float x3, float y3)
rCubicTo(float x1, float y1, float x2, float y2,
float x3, float y3)
先建一个自定义类继承自View,重写它的构造方法
既然我们要绘制,都要先有画笔,设置它的颜色尽量设置为海蓝色
初始化画笔
private void init(Context context) {
paint = new Paint();
paint.setColor(Color.parseColor("#009FCC"));
paint.setStyle(Paint.Style.FILL);
path = new Path();
}
然后我们开始画啦,如何绘制水波纹
图呢我就画了这个图,大家凑活着看吧,图不重要,其中的矩形方块就是我们的手机屏幕啊,波浪线就是水波纹的效果,一段水波纹是曲线AD,我们只需要让这段曲线不断的滚动就实现了水波纹动画。曲线AD我们可以用贝塞尔曲线分别画出曲线AC和曲线CD,我们之所以从屏幕外开始画是因为水波纹要不断的波动要确保任何时刻都能看到水波纹,所以我们需要在屏幕前后及屏幕内画满水波纹
/**
* 波纹的长度
*/
private final static int WAVE_LENGTH = 1500;
/**
* 波纹的高度
*/
private final static int WAVE_HEGHT = 100;
/**
* 起始点y坐标
*/
pri