自定义控件之贝赛尔曲线实现手势轨迹

本文介绍了贝塞尔曲线的概念及其在实现手势轨迹平滑效果中的应用。通过对比展示了贝塞尔曲线如何带来圆润的线条,并详细讲解了Android中与贝塞尔曲线相关的`Path`类的`quadTo()`方法。此外,还探讨了`invalidate`与`postInvalidate`在View重绘中的区别和使用场景。最后提供了一个简单的自定义View代码示例,展示如何结合触摸事件和贝塞尔曲线绘制手势路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值